3 * @file spi_resp_transl.h
5 * @copyright Copyright (C) 2012-2013 Czech Technical University in Prague
7 * @author Michal Horn <hornmich@fel.cvut.cz>
10 #ifndef SPI_RESP_TRANSL_H_
11 #define SPI_RESP_TRANSL_H_
13 #define NUM_SPI_DEVICES 7
14 #define DIN_NUM_GLOB_FD 24
15 #define LOUT_NUM_GLOB_FD 28
16 #define DAC_NUM_GLOB_FD 1
17 #define FRAY_NUM_GLOB_FD 12
18 #define HBR_NUM_STATREG_FD 14
19 #define HBR_NUM_APPLREG1_FD 15
20 #define HBR_NUM_APPLREG2_FD 13
21 #define HBR_NUM_APPLREG3_FD 16
22 #define HBR_NUM_DIADDR0_FD 10
23 #define HBR_NUM_DIADDR1_FD 9
24 #define HBR_NUM_DIADDR2_FD 9
25 #define HBR_NUM_DIADDR3_FD 16
27 #define DIN_NUM_CMD_D 1
28 #define LOUT_NUM_CMD_D 1
29 #define DAC_NUM_CMD_D 1
30 #define FRAY_NUM_CMD_D 1
31 #define HBR_NUM_CMD_D 12
33 #define MAX_NUM_ROWS 32
35 /*masked fields macros*/
36 //#define __val2mfld(mask,val) (((mask)&~((mask)<<1))*(val)&(mask))
37 //#define __mfld2val(mask,val) (((val)&(mask))/((mask)&~((mask)<<1)))
40 typedef struct spitr_field_desc_st {
41 const char *field_name;
45 typedef struct spitr_cmd_map_st {
48 const spitr_field_desc_t *field_desc;
52 typedef struct spitr_name_map_st {
54 const spitr_cmd_map_t *cmd_map;
58 typedef struct spitr_reg_translate_table_row_st {
59 const char *field_name;
61 } spitr_reg_translate_table_row_t;
63 typedef struct spitr_reg_translate_table_st {
64 spitr_reg_translate_table_row_t row[MAX_NUM_ROWS];
66 } spitr_reg_translate_table_t;
69 const spitr_cmd_map_t *get_spi_cmd_map(const char *spi_port_name, int len, uint32_t *num_cmdDesc);
70 const spitr_field_desc_t *get_spi_field_desc(const spitr_cmd_map_t *cmd_map, uint32_t num_cmd, uint32_t cmd, uint32_t *num_fdDesc);
71 int spitr_fill_tr_table(const spitr_field_desc_t *fd, uint32_t num_fields, uint32_t value, spitr_reg_translate_table_t *table);
73 #endif /* SPI_RESP_TRANSL_H_ */