Skip to content
Snippets Groups Projects
core.h 1.51 KiB
Newer Older
Federico Vaga's avatar
Federico Vaga committed
/*
 * SPDX-License-Identifier: LGPL-3.0-or-later
 * Copyright (C) 2020 CERN (www.cern.ch)
 * Author: Federico Vaga <federico.vaga@cern.ch>
 */

#ifndef _FMC_CORE_H
#define _FMC_CORE_H

#include <stddef.h>
#include <stdbool.h>
Federico Vaga's avatar
Federico Vaga committed
#include <sys/types.h>
Federico Vaga's avatar
Federico Vaga committed
const char *fmc_version_get(void);

struct fmc_tkn;

#define FMC_ID_INVALID 0xFFFFFFFF

unsigned int *fmc_carrier_id_list_get(void);
void fmc_carrier_id_list_put(unsigned int *id_list);
unsigned int *fmc_slot_id_list_get(struct fmc_tkn *tkn);
void fmc_slot_id_list_put(unsigned int *id_list);

struct fmc_tkn *fmc_carrier_open(unsigned int carrier_id);
void fmc_carrier_close(struct fmc_tkn *tkn);
int fmc_carrier_name(struct fmc_tkn *tkn, char *buf, size_t count);

bool fmc_slot_is_present(struct fmc_tkn *tkn, unsigned int slot_n);
bool fmc_slot_is_fru_valid(struct fmc_tkn *tkn, unsigned int slot_n);
int fmc_slot_geo_address(struct fmc_tkn *tkn, unsigned int slot_n,
                         unsigned int *ga);
int fmc_slot_eeprom_type_get(struct fmc_tkn *tkn, unsigned int slot_n,
			     char *str, size_t max_len);
int fmc_slot_eeprom_type_set(struct fmc_tkn *tkn, unsigned int slot_n,
Federico Vaga's avatar
Federico Vaga committed
                             const char *str, size_t max_len);
int fmc_slot_eeprom_size(struct fmc_tkn *tkn, unsigned int slot_n,
			 unsigned int *size);
Federico Vaga's avatar
Federico Vaga committed
int fmc_slot_eeprom_read(struct fmc_tkn *tkn, unsigned int slot_n,
			 char *buf, size_t len, off_t offset);
int fmc_slot_eeprom_write(struct fmc_tkn *tkn, unsigned int slot_n,
			  const char *buf, size_t len, off_t offset);
Federico Vaga's avatar
Federico Vaga committed
#endif /* _FMC_CORE_H */