#ifndef __BCM63XX_TAG_H
#define __BCM63XX_TAG_H

#define IMAGE_LEN 10                   /* Length of Length Field */
#define ADDRESS_LEN 12                 /* Length of Address field */

struct bcm_tag {
	unsigned char tagVersion[4];                            // Version of the image tag
	unsigned char sig_1[20];                                // Company Line 1
	unsigned char sig_2[14];                                // Company Line 2
	unsigned char chipid[6];                                        // Chip this image is for
	unsigned char boardid[16];                              // Board name
	unsigned char big_endian[2];                             // Map endianness -- 1 BE 0 LE
	unsigned char totalLength[IMAGE_LEN];           //Total length of image
	unsigned char cfeAddress[ADDRESS_LEN];  // Address in memory of CFE
	unsigned char cfeLength[IMAGE_LEN];             // Size of CFE
	unsigned char rootAddress[ADDRESS_LEN];         // Address in memory of rootfs
	unsigned char rootLength[IMAGE_LEN];            // Size of rootfs
	unsigned char kernelAddress[ADDRESS_LEN];       // Address in memory of kernel
	unsigned char kernelLength[IMAGE_LEN];  // Size of kernel
	unsigned char dualImage[2];                             // Unused at present
	unsigned char inactiveFlag[2];                  // Unused at present
	unsigned char reserved1[74];                            // Reserved area not in use
	unsigned char imageCRC[4];                              // CRC32 of images
	unsigned char reserved2[16];                            // Unused at present
	unsigned char headerCRC[4];                             // CRC32 of header excluding tagVersion
	unsigned char reserved3[16];                            // Unused at present
};

#endif /* __BCM63XX_TAG_H */
