diff options
Diffstat (limited to 'src/mainboard/siemens/mc_tcu3/modhwinfo.h')
-rw-r--r-- | src/mainboard/siemens/mc_tcu3/modhwinfo.h | 170 |
1 files changed, 170 insertions, 0 deletions
diff --git a/src/mainboard/siemens/mc_tcu3/modhwinfo.h b/src/mainboard/siemens/mc_tcu3/modhwinfo.h new file mode 100644 index 0000000000..6eb8f05ce6 --- /dev/null +++ b/src/mainboard/siemens/mc_tcu3/modhwinfo.h @@ -0,0 +1,170 @@ +/* + * This file is part of the coreboot project. + * + * Copyright (C) 2014 Siemens AG + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; version 2 of the License. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#ifndef _MODHWINFO_H_ +#define _MODHWINFO_H_ + +#include <types.h> + +#define LEN_MAGIC_NUM 8 +#define LEN_MLFB 20 +#define LEN_SERIAL_NUM 16 +#define LEN_HW_REVISION 2 +#define LEN_MAC_ADDRESS 6 +#define LEN_SPD 128 +#define NUMBER_OF_MAC_ADDR 4 +#define LEN_EDID 128 +#define LEN_MAIN_HWINFO 509 +#define LEN_SHORT_INFO 289 +#define LEN_EDID_INFO 181 +#define NEXT_OFFSET_HWINFO 476 +#define NEXT_OFFSET_SIB 260 +#define NEXT_OFFSET_EDID 176 +#define HWI_LEN_OFFSET 12 + +/* Define some masks and values */ +#define SIB_HWINIT_IDX 0x0e +#define SIB_COLOR_6BIT 0x00 +#define SIB_COLOR_8BIT 0x01 +#define SIB_COLOR_10BIT 0x02 +#define SIB_DISP_CON_IDX 0x16 +#define SIB_LVDS_SINGLE_LANE 0x00 +#define SIB_LVDS_DUAL_LANE 0x05 + +struct PhysDevStruc { + u8 bustype; + u8 devfn; + u16 bus; +} __attribute__ ((packed)); + + +struct hwinfo { +// Offset 0x0 + char magicNumber[LEN_MAGIC_NUM]; +// Offset 0x08 + u8 versionID[4]; +// Offset 0x0c + u16 length; +// Offset 0x0e + char BGR_Name[128]; +//Offset 0x8e + char MLFB[LEN_MLFB]; +// Offset 0xa2 + u8 uniqueNumber[16]; +// Offset 0xb2 + u8 fill_1[12]; +// Offset 0xbe + u8 hwRevision[LEN_HW_REVISION]; +//Offset 0xc0 + u8 macAddress1[LEN_MAC_ADDRESS]; + u8 numOfAuxMacAddr1; + u8 fill_2; +//Offset 0xc8 + u8 macAddress2[LEN_MAC_ADDRESS]; + u8 numOfAuxMacAddr2; + u8 fill_3; +//Offset 0xd0 + u8 macAddress3[LEN_MAC_ADDRESS]; + u8 numOfAuxMacAddr3; + u8 fill_4; +//Offset 0xd8 + u8 macAddress4[LEN_MAC_ADDRESS]; + u8 numOfAuxMacAddr4; + u8 fill_5; +// Offset 0xe0 + u8 SPD[LEN_SPD]; +// Offset 0x160 + u8 fill_6[88]; +// Offset 0x1b8 + u32 featureFlags; +// Offset 0x1bc + u8 fill_7[4]; +// Offset 0x1c0 + u32 biosFlags; +// Offset 0x1c4 + u8 fill_8[8]; +//Offset 0x1cc + struct PhysDevStruc etherDev[NUMBER_OF_MAC_ADDR]; +// Offset 0x1dc + s32 nextInfoOffset; +// Offset 0x1e0 + u8 fill_9[4]; +// Offset 0x1e4 + u32 portRTC; +// Offset 0x1e8 + u8 typeRTC; +// Offset 0x1e9 + u8 fill_10[20]; +} __attribute__ ((packed)); + +struct shortinfo { +// Offset 0x0 + char magicNumber[LEN_MAGIC_NUM]; +// Offset 0x08 + u8 versionID[4]; +// Offset 0x0c + u16 length; +// Offset 0x0e + char BGR_Name[128]; +//Offset 0x8e + char MLFB[LEN_MLFB]; +// Offset 0xa2 + u8 uniqueNumber[26]; +// Offset 0xbc + u8 fill_1[12]; +//Offset 0xc8 + u8 hwRevision[2]; +// Offset 0xca + u8 fill_2[18]; +// Offset 0xdc + u8 panelFeatures[32]; +// Offset 0xfc + u8 fill_3[8]; +// Offset 0x104 + s32 nextInfoOffset; +// Offset 0x108 + u8 fill_4[25]; +} __attribute__ ((packed)); + +struct edidinfo { +// Offset 0x0 + char magicNumber[LEN_MAGIC_NUM]; +// Offset 0x08 + u8 versionID[4]; +// Offset 0x0c + u16 length; +// Offset 0x0e + u8 fill_1[2]; +// Offset 0x10 + u8 edid[LEN_EDID]; +// Offset 0x90 + u8 fill_2[32]; +// Offset 0xb0 + s32 nextInfoOffset; +// Offset 0xb4 + u8 fill_3; +} __attribute__ ((packed)); + +u8* get_first_linked_block(char *filename, u8 **starting_adr); +struct hwinfo* get_hwinfo(char *filename); +struct shortinfo* get_shortinfo(char *filename); +struct edidinfo* get_edidinfo(char *filename); +enum cb_err mainboard_get_mac_address(u16 bus, u8 devfn, u8 mac[6]); + +#endif /* _MODHWINFO_H_ */ |