blob: 2354205e72a466146cf82d635bf494c045baa1a3 [file] [log] [blame]
Tom Rini10e47792018-05-06 17:58:06 -04001/* SPDX-License-Identifier: GPL-2.0+ */
Tim Harvey552c3582014-03-06 07:46:30 -08002/*
3 * Copyright (C) 2013 Gateworks Corporation
Tim Harvey552c3582014-03-06 07:46:30 -08004 */
5
6#ifndef _VENTANA_EEPROM_
7#define _VENTANA_EEPROM_
8
Tim Harvey41377852022-04-13 09:29:16 -07009#define BOARD_EEPROM_BUSNO 0
10#define BOARD_EEPROM_ADDR 0x51
11
Tim Harvey552c3582014-03-06 07:46:30 -080012struct ventana_board_info {
13 u8 mac0[6]; /* 0x00: MAC1 */
14 u8 mac1[6]; /* 0x06: MAC2 */
15 u8 res0[12]; /* 0x0C: reserved */
16 u32 serial; /* 0x18: Serial Number (read only) */
17 u8 res1[4]; /* 0x1C: reserved */
18 u8 mfgdate[4]; /* 0x20: MFG date (read only) */
19 u8 res2[7]; /* 0x24 */
20 /* sdram config */
Tim Harveya61d0212014-04-02 22:10:48 -070021 u8 sdram_size; /* 0x2B: (16 << n) MB */
22 u8 sdram_speed; /* 0x2C: (33.333 * n) MHz */
23 u8 sdram_width; /* 0x2D: (8 << n) bit */
Tim Harvey552c3582014-03-06 07:46:30 -080024 /* cpu config */
Tim Harveya61d0212014-04-02 22:10:48 -070025 u8 cpu_speed; /* 0x2E: (33.333 * n) MHz */
26 u8 cpu_type; /* 0x2F: 7=imx6q, 8=imx6dl */
Tim Harvey552c3582014-03-06 07:46:30 -080027 u8 model[16]; /* 0x30: model string */
28 /* FLASH config */
Tim Harveya61d0212014-04-02 22:10:48 -070029 u8 nand_flash_size; /* 0x40: (8 << (n-1)) MB */
30 u8 spi_flash_size; /* 0x41: (4 << (n-1)) MB */
Tim Harvey552c3582014-03-06 07:46:30 -080031
32 /* Config1: SoC Peripherals */
33 u8 config[8]; /* 0x42: loading options */
34
35 u8 res3[4]; /* 0x4A */
36
37 u8 chksum[2]; /* 0x4E */
38};
39
40/* config bits */
41enum {
42 EECONFIG_ETH0,
43 EECONFIG_ETH1,
44 EECONFIG_HDMI_OUT,
45 EECONFIG_SATA,
46 EECONFIG_PCIE,
47 EECONFIG_SSI0,
48 EECONFIG_SSI1,
49 EECONFIG_LCD,
50 EECONFIG_LVDS0,
51 EECONFIG_LVDS1,
52 EECONFIG_USB0,
53 EECONFIG_USB1,
54 EECONFIG_SD0,
55 EECONFIG_SD1,
56 EECONFIG_SD2,
57 EECONFIG_SD3,
58 EECONFIG_UART0,
59 EECONFIG_UART1,
60 EECONFIG_UART2,
61 EECONFIG_UART3,
62 EECONFIG_UART4,
63 EECONFIG_IPU0,
64 EECONFIG_IPU1,
65 EECONFIG_FLEXCAN,
66 EECONFIG_MIPI_DSI,
67 EECONFIG_MIPI_CSI,
68 EECONFIG_TZASC0,
69 EECONFIG_TZASC1,
70 EECONFIG_I2C0,
71 EECONFIG_I2C1,
72 EECONFIG_I2C2,
73 EECONFIG_VPU,
74 EECONFIG_CSI0,
75 EECONFIG_CSI1,
76 EECONFIG_CAAM,
77 EECONFIG_MEZZ,
78 EECONFIG_RES1,
79 EECONFIG_RES2,
80 EECONFIG_RES3,
81 EECONFIG_RES4,
82 EECONFIG_ESPCI0,
83 EECONFIG_ESPCI1,
84 EECONFIG_ESPCI2,
85 EECONFIG_ESPCI3,
86 EECONFIG_ESPCI4,
87 EECONFIG_ESPCI5,
88 EECONFIG_RES5,
89 EECONFIG_RES6,
90 EECONFIG_GPS,
91 EECONFIG_SPIFL0,
92 EECONFIG_SPIFL1,
93 EECONFIG_GSPBATT,
94 EECONFIG_HDMI_IN,
95 EECONFIG_VID_OUT,
96 EECONFIG_VID_IN,
97 EECONFIG_NAND,
98 EECONFIG_RES8,
99 EECONFIG_RES9,
100 EECONFIG_RES10,
101 EECONFIG_RES11,
102 EECONFIG_RES12,
103 EECONFIG_RES13,
104 EECONFIG_RES14,
105 EECONFIG_RES15,
106};
107
Tim Harvey0dccde72014-06-02 16:13:25 -0700108enum {
109 GW54proto, /* original GW5400-A prototype */
110 GW51xx,
111 GW52xx,
112 GW53xx,
113 GW54xx,
Tim Harveyb6de3b22015-04-08 12:54:45 -0700114 GW551x,
Tim Harvey50581832014-08-20 23:35:14 -0700115 GW552x,
Tim Harvey892068c2016-05-24 11:03:58 -0700116 GW553x,
Tim Harvey659441b2017-03-17 07:31:02 -0700117 GW560x,
Tim Harvey5852a332019-02-04 13:10:58 -0800118 GW5901,
119 GW5902,
Tim Harvey4533c902017-03-17 07:32:21 -0700120 GW5903,
Tim Harvey63537792017-03-17 07:30:38 -0700121 GW5904,
Tim Harveya2d24c92019-02-04 13:10:50 -0800122 GW5905,
Tim Harveyb7c48a92019-02-04 13:10:54 -0800123 GW5906,
Tim Harvey83cad802019-02-04 13:10:55 -0800124 GW5907,
Tim Harveyc2625402019-02-04 13:10:56 -0800125 GW5908,
Tim Harvey2df50462019-02-04 13:10:57 -0800126 GW5909,
Tim Harvey08aec662021-07-24 10:40:42 -0700127 GW5910,
Tim Harveyd67ad6e2021-07-24 10:40:43 -0700128 GW5912,
Tim Harveyb7c9f362021-07-24 10:40:44 -0700129 GW5913,
Tim Harvey0dccde72014-06-02 16:13:25 -0700130 GW_UNKNOWN,
Tim Harvey0da2c522014-08-07 22:35:45 -0700131 GW_BADCRC,
132};
133
134/* config items */
135struct ventana_eeprom_config {
136 const char *name; /* name of item */
137 const char *dtalias; /* name of dt node to remove if not set */
138 int bit; /* bit within config */
Tim Harvey0dccde72014-06-02 16:13:25 -0700139};
140
Tim Harvey0da2c522014-08-07 22:35:45 -0700141extern struct ventana_eeprom_config econfig[];
142extern struct ventana_board_info ventana_info;
Tim Harvey41377852022-04-13 09:29:16 -0700143extern int board_type;
144
145int read_eeprom(struct ventana_board_info *info);
Tim Harvey0da2c522014-08-07 22:35:45 -0700146
Tim Harvey41377852022-04-13 09:29:16 -0700147/*
148 * I2C transactions to the GSC are done via these functions which
149 * perform retries in the case of a busy GSC NAK'ing the transaction
150 */
151int gsc_i2c_read(uchar chip, uint addr, int alen, uchar *buf, int len);
152int gsc_i2c_write(uchar chip, uint addr, int alen, uchar *buf, int len);
153const char *gsc_get_dtb_name(int level, char *buf, int sz);
154struct udevice *i2c_get_dev(int busno, int slave);
155const char *eeprom_get_model(void);
Tim Harvey0dccde72014-06-02 16:13:25 -0700156
Tim Harvey552c3582014-03-06 07:46:30 -0800157#endif