c80dfa1f7a3fb269113a3025df4971ac9f3ca9af
[platform/kernel/u-boot.git] / board / gateworks / gw_ventana / ventana_eeprom.h
1 /* SPDX-License-Identifier: GPL-2.0+ */
2 /*
3  * Copyright (C) 2013 Gateworks Corporation
4  */
5
6 #ifndef _VENTANA_EEPROM_
7 #define _VENTANA_EEPROM_
8
9 struct ventana_board_info {
10         u8 mac0[6];          /* 0x00: MAC1 */
11         u8 mac1[6];          /* 0x06: MAC2 */
12         u8 res0[12];         /* 0x0C: reserved */
13         u32 serial;          /* 0x18: Serial Number (read only) */
14         u8 res1[4];          /* 0x1C: reserved */
15         u8 mfgdate[4];       /* 0x20: MFG date (read only) */
16         u8 res2[7];          /* 0x24 */
17         /* sdram config */
18         u8 sdram_size;       /* 0x2B: (16 << n) MB */
19         u8 sdram_speed;      /* 0x2C: (33.333 * n) MHz */
20         u8 sdram_width;      /* 0x2D: (8 << n) bit */
21         /* cpu config */
22         u8 cpu_speed;        /* 0x2E: (33.333 * n) MHz */
23         u8 cpu_type;         /* 0x2F: 7=imx6q, 8=imx6dl */
24         u8 model[16];        /* 0x30: model string */
25         /* FLASH config */
26         u8 nand_flash_size;  /* 0x40: (8 << (n-1)) MB */
27         u8 spi_flash_size;   /* 0x41: (4 << (n-1)) MB */
28
29         /* Config1: SoC Peripherals */
30         u8 config[8];        /* 0x42: loading options */
31
32         u8 res3[4];          /* 0x4A */
33
34         u8 chksum[2];        /* 0x4E */
35 };
36
37 /* config bits */
38 enum {
39         EECONFIG_ETH0,
40         EECONFIG_ETH1,
41         EECONFIG_HDMI_OUT,
42         EECONFIG_SATA,
43         EECONFIG_PCIE,
44         EECONFIG_SSI0,
45         EECONFIG_SSI1,
46         EECONFIG_LCD,
47         EECONFIG_LVDS0,
48         EECONFIG_LVDS1,
49         EECONFIG_USB0,
50         EECONFIG_USB1,
51         EECONFIG_SD0,
52         EECONFIG_SD1,
53         EECONFIG_SD2,
54         EECONFIG_SD3,
55         EECONFIG_UART0,
56         EECONFIG_UART1,
57         EECONFIG_UART2,
58         EECONFIG_UART3,
59         EECONFIG_UART4,
60         EECONFIG_IPU0,
61         EECONFIG_IPU1,
62         EECONFIG_FLEXCAN,
63         EECONFIG_MIPI_DSI,
64         EECONFIG_MIPI_CSI,
65         EECONFIG_TZASC0,
66         EECONFIG_TZASC1,
67         EECONFIG_I2C0,
68         EECONFIG_I2C1,
69         EECONFIG_I2C2,
70         EECONFIG_VPU,
71         EECONFIG_CSI0,
72         EECONFIG_CSI1,
73         EECONFIG_CAAM,
74         EECONFIG_MEZZ,
75         EECONFIG_RES1,
76         EECONFIG_RES2,
77         EECONFIG_RES3,
78         EECONFIG_RES4,
79         EECONFIG_ESPCI0,
80         EECONFIG_ESPCI1,
81         EECONFIG_ESPCI2,
82         EECONFIG_ESPCI3,
83         EECONFIG_ESPCI4,
84         EECONFIG_ESPCI5,
85         EECONFIG_RES5,
86         EECONFIG_RES6,
87         EECONFIG_GPS,
88         EECONFIG_SPIFL0,
89         EECONFIG_SPIFL1,
90         EECONFIG_GSPBATT,
91         EECONFIG_HDMI_IN,
92         EECONFIG_VID_OUT,
93         EECONFIG_VID_IN,
94         EECONFIG_NAND,
95         EECONFIG_RES8,
96         EECONFIG_RES9,
97         EECONFIG_RES10,
98         EECONFIG_RES11,
99         EECONFIG_RES12,
100         EECONFIG_RES13,
101         EECONFIG_RES14,
102         EECONFIG_RES15,
103 };
104
105 enum {
106         GW54proto, /* original GW5400-A prototype */
107         GW51xx,
108         GW52xx,
109         GW53xx,
110         GW54xx,
111         GW551x,
112         GW552x,
113         GW553x,
114         GW560x,
115         GW5903,
116         GW5904,
117         GW5905,
118         GW5906,
119         GW5907,
120         GW5908,
121         GW_UNKNOWN,
122         GW_BADCRC,
123 };
124
125 /* config items */
126 struct ventana_eeprom_config {
127         const char *name;       /* name of item */
128         const char *dtalias;    /* name of dt node to remove if not set */
129         int bit;                /* bit within config */
130 };
131
132 extern struct ventana_eeprom_config econfig[];
133 extern struct ventana_board_info ventana_info;
134
135 int read_eeprom(int bus, struct ventana_board_info *);
136
137 #endif