summaryrefslogtreecommitdiff
path: root/include/bsp/vpd.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/bsp/vpd.h')
-rw-r--r--include/bsp/vpd.h143
1 files changed, 143 insertions, 0 deletions
diff --git a/include/bsp/vpd.h b/include/bsp/vpd.h
new file mode 100644
index 0000000000..23e49ac9f0
--- /dev/null
+++ b/include/bsp/vpd.h
@@ -0,0 +1,143 @@
+#ifndef PPC_MOTLOAD_VPD_H
+#define PPC_MOTLOAD_VPD_H
+
+/* MotLoad VPD format */
+
+/* Till Straumann, 2005; see copyright notice at the end of this file */
+
+#ifdef __cplusplus
+ extern "C" {
+#endif
+
+/*
+VPD = "MOTOROLA" , { field }
+
+field = type_byte, length_byte, { data }
+*/
+
+/* Known fields so far */
+typedef enum {
+ ProductIdent = 0x01, /* String */
+ AssemblyNumber = 0x02, /* String */
+ SerialNumber = 0x03, /* String */
+ CpuClockHz = 0x05, /* binary (5bytes), 0x01 byte appended to unsigned int */
+ BusClockHz = 0x06, /* binary (5bytes), 0x01 byte appended to unsigned int */
+ EthernetAddr = 0x08, /* binary (7bytes), 0x00 byte appended, 2nd has 0x01 appended */
+ CpuType = 0x09, /* String */
+ EEpromCrc = 0x0a, /* binary (4bytes) */
+ FlashConfig = 0x0b, /* binary */
+ L2CacheConfig = 0x0e, /* binary */
+ VPDRevision = 0x0f, /* binary (4bytes) */
+ L3CacheConfig = 0x19, /* binary */
+ End = 0xff
+} VpdKey;
+
+typedef struct {
+ VpdKey key; /* key for the data item to be read into 'buf' */
+ char instance; /* instance # (starting with 0) - some keys are present more than one time */
+ void *buf; /* pointer to area where the data item is to be stored */
+ int buflen; /* available space in the buffer */
+ char found; /* set by BSP_vpdRetrieveFields() to the original length as found in the PROM */
+} VpdBufRec, *VpdBuf;
+
+
+#define VPD_END { key:End, }
+
+
+/* Scan the VPD EEPROM for a number of fields
+ *
+ * Pass an array of VpdBufRec items. The routine
+ * fills the 'buf'fers for all keys that are found
+ * and sets the 'found' field to the original length
+ * of the data (i.e., as found in the PROM) so that
+ * the routine could be called again with a larger
+ * buffer.
+ *
+ * NOTE: - the array must be terminated by a VPD_END record!
+ * - no CRC check is performed.
+ * - INTERRUPT MANAGEMENT MUST BE FUNCTIONAL
+ *
+ * RETURNS: 0 on success, -1 if any read errors were
+ * encountered or if the "MOTOROLA" header
+ * was not found.
+ */
+int
+BSP_vpdRetrieveFields(VpdBuf data);
+
+/* Example:
+ * Read 2nd ethernet address:
+ *
+ * char enet_addr_2[6];
+ *
+ * VpdBufRec enetVpd [] = {
+ * { key: EthernetAddr, instance: 1, buf: enet_addr_2, buflen: 2},
+ * VPD_END
+ * };
+ *
+ * if ( BSP_vpdRetrieveFields(enetVpd) ) {
+ * error("ethernet address couldn't be read\n");
+ * } else if ( enetVpd[0].found < 6 ) {
+ * error("2nd ethernet address not found in VPD\n");
+ * } else {
+ * use_it(enet_addr_2);
+ * }
+ */
+
+
+/* Simple wrapper if only one field is needed
+ *
+ * RETURNS: original length if key is found, -1 on error or if key is not found
+ */
+int
+BSP_vpdRetrieveKey(VpdKey k, void *buf, int buflen, int instance);
+
+#ifdef __cplusplus
+ }
+#endif
+
+/*
+ * Authorship
+ * ----------
+ * This software ('beatnik' RTEMS BSP for MVME6100 and MVME5500) was
+ * created by Till Straumann <strauman@slac.stanford.edu>, 2005-2007,
+ * Stanford Linear Accelerator Center, Stanford University.
+ *
+ * Acknowledgement of sponsorship
+ * ------------------------------
+ * The 'beatnik' BSP was produced by
+ * the Stanford Linear Accelerator Center, Stanford University,
+ * under Contract DE-AC03-76SFO0515 with the Department of Energy.
+ *
+ * Government disclaimer of liability
+ * ----------------------------------
+ * Neither the United States nor the United States Department of Energy,
+ * nor any of their employees, makes any warranty, express or implied, or
+ * assumes any legal liability or responsibility for the accuracy,
+ * completeness, or usefulness of any data, apparatus, product, or process
+ * disclosed, or represents that its use would not infringe privately owned
+ * rights.
+ *
+ * Stanford disclaimer of liability
+ * --------------------------------
+ * Stanford University makes no representations or warranties, express or
+ * implied, nor assumes any liability for the use of this software.
+ *
+ * Stanford disclaimer of copyright
+ * --------------------------------
+ * Stanford University, owner of the copyright, hereby disclaims its
+ * copyright and all other rights in this software. Hence, anyone may
+ * freely use it for any purpose without restriction.
+ *
+ * Maintenance of notices
+ * ----------------------
+ * In the interest of clarity regarding the origin and status of this
+ * SLAC software, this and all the preceding Stanford University notices
+ * are to remain affixed to any copy or derivative of this software made
+ * or distributed by the recipient and are to be affixed to any copy of
+ * software made or distributed by the recipient that contains a copy or
+ * derivative of this software.
+ *
+ * ------------------ SLAC Software Notices, Set 4 OTT.002a, 2004 FEB 03
+ */
+
+#endif