1 /* SPDX-License-Identifier: GPL-2.0+ */
2 /*
3  * Copyright 2021 Gateworks Corporation
4  */
5 
6 #ifndef _GSC_H_
7 #define _GSC_H_
8 
9 /* I2C slave addresses */
10 #define GSC_SC_ADDR             0x20
11 #define GSC_RTC_ADDR            0x68
12 #define GSC_HWMON_ADDR          0x29
13 #define GSC_EEPROM_ADDR         0x51
14 
15 struct venice_board_info {
16 	u8 mac[6];		/* 0x00: MAC base */
17 	char equiv_dts[16];	/* 0x06: equivalent device-tree */
18 	u8 res0[2];	/* 0x16: reserved */
19 	u32 serial;	/* 0x18: Serial Number */
20 	u8 res1[4];	/* 0x1C: reserved */
21 	u8 mfgdate[4];	/* 0x20: MFG date */
22 	u8 macno;		/* 0x24: number of mac addrs */
23 	u8 res2[6];	/* 0x25 */
24 	u8 sdram_size;	/* 0x2B: (16 << n) MB */
25 	u8 sdram_speed;	/* 0x2C: (33.333 * n) MHz */
26 	u8 sdram_width;	/* 0x2D: (8 << n) bit */
27 	u8 res3[2];	/* 0x2E */
28 	char model[16];		/* 0x30: model string */
29 	u8 res4[14];	/* 0x40 */
30 	u8 chksum[2];	/* 0x4E */
31 };
32 
33 int gsc_init(int quiet);
34 int gsc_hwmon(void);
35 const char *gsc_get_model(void);
36 const char *gsc_get_dtb_name(int level, char *buf, int len);
37 int gsc_getmac(int index, uint8_t *enetaddr);
38 
39 #endif
40