]> rtime.felk.cvut.cz Git - pes-rpp/rpp-lib.git/blob - rpp/include/hal/spi_resp_transl.h
Merge branches 'master' and 'rm48/master'
[pes-rpp/rpp-lib.git] / rpp / include / hal / spi_resp_transl.h
1 /**
2  *
3  * @file spi_resp_transl.h
4  *
5  * @copyright Copyright (C) 2012-2013 Czech Technical University in Prague
6  *
7  * @author Michal Horn <hornmich@fel.cvut.cz>
8  */
9
10 #ifndef SPI_RESP_TRANSL_H_
11 #define SPI_RESP_TRANSL_H_
12
13 //#include "hal_port_def.h"
14 //#include "cmdproc_utils.h"
15 #include "hal/hal.h"
16
17 #define NUM_SPI_DEVICES 7
18 #define DIN_NUM_GLOB_FD     24
19 #define LOUT_NUM_GLOB_FD    28
20 #define DAC_NUM_GLOB_FD     1
21 #define FRAY_NUM_GLOB_FD    12
22 #define HBR_NUM_STATREG_FD  14
23 #define HBR_NUM_APPLREG1_FD 15
24 #define HBR_NUM_APPLREG2_FD 13
25 #define HBR_NUM_APPLREG3_FD 16
26 #define HBR_NUM_DIADDR0_FD 10
27 #define HBR_NUM_DIADDR1_FD 9
28 #define HBR_NUM_DIADDR2_FD 9
29 #define HBR_NUM_DIADDR3_FD 16
30
31 #define DIN_NUM_CMD_D   1
32 #define LOUT_NUM_CMD_D  1
33 #define DAC_NUM_CMD_D   1
34 #define FRAY_NUM_CMD_D  1
35 #define HBR_NUM_CMD_D   12
36
37 #define MAX_NUM_ROWS    32
38
39 /*masked fields macros*/
40 //#define __val2mfld(mask,val) (((mask)&~((mask)<<1))*(val)&(mask))
41 //#define __mfld2val(mask,val) (((val)&(mask))/((mask)&~((mask)<<1)))
42
43
44 typedef struct spitr_field_desc_st {
45         const char *field_name;
46         uint32_t mask;
47 } spitr_field_desc_t;
48
49 typedef struct spitr_cmd_map_st {
50         uint32_t cmd_msk;
51         uint32_t command;
52         const spitr_field_desc_t *field_desc;
53         uint32_t num_fields;
54 } spitr_cmd_map_t;
55
56 typedef struct spitr_name_map_st {
57         const char *spi_name;
58         const spitr_cmd_map_t *cmd_map;
59         uint32_t num_cmd;
60 } spitr_name_map_t;
61
62 typedef struct spitr_reg_translate_table_row_st {
63         const char *field_name;
64         uint32_t value;
65 } spitr_reg_translate_table_row_t;
66
67 typedef struct spitr_reg_translate_table_st {
68         spitr_reg_translate_table_row_t row[MAX_NUM_ROWS];
69         uint32_t num_rows;
70 } spitr_reg_translate_table_t;
71
72
73 const spitr_cmd_map_t *get_spi_cmd_map(const char *spi_port_name, int len, uint32_t *num_cmdDesc);
74 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);
75 int spitr_fill_tr_table(const spitr_field_desc_t *fd, uint32_t num_fields, uint32_t value, spitr_reg_translate_table_t *table);
76
77 #endif /* SPI_RESP_TRANSL_H_ */