summaryrefslogtreecommitdiff
path: root/src/mainboard/siemens/mc_tcu3/modhwinfo.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/mainboard/siemens/mc_tcu3/modhwinfo.h')
-rw-r--r--src/mainboard/siemens/mc_tcu3/modhwinfo.h170
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_ */