Home | History | Annotate | Download | only in gw_ventana
      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