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 GW_UNKNOWN, 118 GW_BADCRC, 119 }; 120 121 /* config items */ 122 struct ventana_eeprom_config { 123 const char *name; /* name of item */ 124 const char *dtalias; /* name of dt node to remove if not set */ 125 int bit; /* bit within config */ 126 }; 127 128 extern struct ventana_eeprom_config econfig[]; 129 extern struct ventana_board_info ventana_info; 130 131 int read_eeprom(int bus, struct ventana_board_info *); 132 133 #endif 134