Linux Kernel  3.7.1
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
sbe_promformat.h
Go to the documentation of this file.
1 #ifndef _INC_SBE_PROMFORMAT_H_
2 #define _INC_SBE_PROMFORMAT_H_
3 
4 /*-----------------------------------------------------------------------------
5  * sbe_promformat.h - Contents of seeprom used by dvt and manufacturing tests
6  *
7  * Copyright (C) 2002-2005 SBE, Inc.
8  *
9  * This program is free software; you can redistribute it and/or modify
10  * it under the terms of the GNU General Public License as published by
11  * the Free Software Foundation; either version 2 of the License, or
12  * (at your option) any later version.
13  *
14  * This program is distributed in the hope that it will be useful,
15  * but WITHOUT ANY WARRANTY; without even the implied warranty of
16  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17  * GNU General Public License for more details.
18  *
19  * For further information, contact via email: [email protected]
20  * SBE, Inc. San Ramon, California U.S.A.
21  *
22  *-----------------------------------------------------------------------------
23  */
24 
25 
26 /***
27  * PMCC4 SAMPLE EEPROM IMAGE
28  *
29  * eeprom[00]: 01 11 76 07 01 00 a0 d6
30  * eeprom[08]: 22 34 56 3e 5b c1 1c 3e
31  * eeprom[16]: 5b e1 b6 00 00 00 01 00
32  * eeprom[24]: 00 08 46 d3 7b 5e a8 fb
33  * eeprom[32]: f7 ef df bf 7f 55 00 01
34  * eeprom[40]: 02 04 08 10 20 40 80 ff
35  * eeprom[48]: fe fd fb f7 ef df bf 7f
36  *
37  ***/
38 
39 
40 /*------------------------------------------------------------------------
41  * Type 1 Format
42  * byte:
43  * 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
44  * -------------------------------------------------------------------------
45  * 01 11 76 SS SS 00 0A D6 <SERIAL NUM> <Create TIME> <Heatrun TIME>
46  * SBE SUB SERIAL # (BCD) (time_t) (time_t)
47  * ID VENDOR (format) (format)
48  *
49  * 19 20 21 22 23 24 25 26
50  * Heat Run Heat Run
51  * Iterations Errors
52  *------------------------------------------------------------------------
53  *
54  *
55  *
56  * Type 2 Format - Added length, CRC in fixed position
57  * byte:
58  * 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
59  * -------------------------------------------------------------------------
60  * 02 00 1A CC CC CC CC 11 76 07 03 00 0A D6 <SERIAL NUM>
61  * Payload SBE Crc32 SUB System System SERIAL/MAC
62  * Length VENDOR ID ID
63  *
64  * 17 18 19 20 21 22 23 24 25 26 27 28 29 39 31 32
65  * --------------------------------------------------------------------------
66  * <Create TIME> <Heatrun TIME> Heat Run Heat Run
67  * (time_t) (time_t) Iterations Errors
68  *
69  */
70 
71 #define STRUCT_OFFSET(type, symbol) ((long)&(((type *)0)->symbol))
72 
73 /*------------------------------------------------------------------------
74  * Historically different Prom format types.
75  *
76  * For diagnostic and failure purposes, do not create a type 0x00 or a
77  * type 0xff
78  *------------------------------------------------------------------------
79  */
80 #define PROM_FORMAT_Unk (-1)
81 #define PROM_FORMAT_TYPE1 1
82 #define PROM_FORMAT_TYPE2 2
83 
84 
85 /****** bit fields for a type 1 formatted seeprom **************************/
86  typedef struct
87  {
88  char type; /* 0x00 */
89  char Id[2]; /* 0x01-0x02 */
90  char SubId[2]; /* 0x03-0x04 */
91  char Serial[6]; /* 0x05-0x0a */
92  char CreateTime[4]; /* 0x0b-0x0e */
93  char HeatRunTime[4]; /* 0x0f-0x12 */
94  char HeatRunIterations[4]; /* 0x13-0x16 */
95  char HeatRunErrors[4]; /* 0x17-0x1a */
96  char Crc32[4]; /* 0x1b-0x1e */
97  } FLD_TYPE1;
98 
99 
100 /****** bit fields for a type 2 formatted seeprom **************************/
101  typedef struct
102  {
103  char type; /* 0x00 */
104  char length[2]; /* 0x01-0x02 */
105  char Crc32[4]; /* 0x03-0x06 */
106  char Id[2]; /* 0x07-0x08 */
107  char SubId[2]; /* 0x09-0x0a */
108  char Serial[6]; /* 0x0b-0x10 */
109  char CreateTime[4]; /* 0x11-0x14 */
110  char HeatRunTime[4]; /* 0x15-0x18 */
111  char HeatRunIterations[4]; /* 0x19-0x1c */
112  char HeatRunErrors[4]; /* 0x1d-0x20 */
113  } FLD_TYPE2;
114 
115 
116 
117 /***** this union allows us to access the seeprom as an array of bytes ***/
118 /***** or as individual fields ***/
119 
120 #define SBE_EEPROM_SIZE 128
121 #define SBE_MFG_INFO_SIZE sizeof(FLD_TYPE2)
122 
123  typedef union
124  {
125  char bytes[128];
128  } PROMFORMAT;
129 
130 #endif /*** _INC_SBE_PROMFORMAT_H_ ***/