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