nxdrvlinux/libcifx/Toolkit/Common/HilscherDefinitions/Hil_BootParameter.h

220 lines
9.1 KiB
C
Raw Normal View History

/**************************************************************************************
Copyright (c) Hilscher Gesellschaft fuer Systemautomation mbH. All Rights Reserved.
***************************************************************************************
  $HeadURL: https://subversion01/svn/HilscherDefinitions/netXFirmware/Headers/tags/20230403-00/includes/Hil_BootParameter.h $: *//*!
\file Hil_BootParameter.h
Structure definition for the boot parameter data for the netX90 and netX4000.
**************************************************************************************/
#ifndef HIL_BOOTPARAMETER_H_
#define HIL_BOOTPARAMETER_H_
#include <stdint.h>
#include "Hil_Compiler.h"
/*------------------------------------------------------------*/
/*! Boot Parameter Data Header and Footer */
/*------------------------------------------------------------*/
#define HIL_BOOT_PARAM_HEADER_TOKEN 0xAA5511EE
#define HIL_BOOT_PARAM_FOOTER_TOKEN 0xEE1155AA
#define HIL_BOOT_PARAM_VERSION 2
/*------------------------------------------------------------*/
/*! Boot Parameter Data Header */
/*------------------------------------------------------------*/
typedef __HIL_PACKED_PRE struct __HIL_PACKED_POST HIL_BOOT_PARAM_HEADER_Ttag
{
/*! Start token of the HIL_BOOT_PARAM_T. */
uint32_t ulStart;
/*! Size of the boot parameter structure HIL_BOOT_PARAM_T.
* \note This includes the Header and Footer */
uint32_t ulSize;
/*! Version of the HIL_BOOT_PARAM_T structure. */
uint16_t usVersion;
} HIL_BOOT_PARAM_HEADER_T;
/*------------------------------------------------------------*/
/*! Boot Parameter Data Footer */
/*------------------------------------------------------------*/
typedef __HIL_PACKED_PRE struct __HIL_PACKED_POST HIL_BOOT_PARAM_FOOTER_Ttag
{
/*! End token of the HIL_BOOT_PARAM_T. */
uint32_t ulEnd;
} HIL_BOOT_PARAM_FOOTER_T;
/*------------------------------------------------------------*/
/*! Hardware information */
/*------------------------------------------------------------*/
#define HIL_BOOT_PARAM_HW_DEV_ID_MAX 0x09 /*!< Max. device ID/slot number */
typedef __HIL_PACKED_PRE struct __HIL_PACKED_POST HIL_BOOT_PARAM_HARDWARE_INFORMATION_Ttag
{
/*! Hardware assembly options for XC units.
* Hardware which is equipped for the related XC units (0-3). Possible values are defined
* in the dual port memory definitions (see HIL_HW_ASSEMBLY_*). */
uint16_t ausHwOptionXc[4];
/*! Hardware assembly options for xPIC units.
* Hardware which is equipped for the related communication side xPIC units (0-3). On
* netX90 the "Com xPIC" is located in option 0 all other options are not used. Possible
* values are defined in the dual port memory definitions (see HIL_HW_ASSEMBLY_*). */
uint16_t ausHwOptionsXpic[4];
/*! Rotary switch number. */
uint8_t bDevIdNumber;
/*! COM UART available. */
uint8_t bComUartAvailable;
/*! Hardware config (HWC) version. */
uint8_t bHwcVersion;
/*! Information about PIO pins (for netANALYZER). */
uint8_t bHwcPio;
/*! Information about GPIO pins (for netANALYZER). */
uint16_t usHwcGpio;
/*! Reserved field.
* \note Currently not used set to 0 */
uint8_t abReserved1[10];
} HIL_BOOT_PARAM_HARDWARE_INFORMATION_T;
/*------------------------------------------------------------*/
/*! DPM information */
/*------------------------------------------------------------*/
#define HIL_BOOT_PARAM_DPM_MODE_NONE 0x00 /*!< No DPM configuration */
#define HIL_BOOT_PARAM_DPM_MODE_SPM0 0x01 /*!< SPM0 is configured */
#define HIL_BOOT_PARAM_DPM_MODE_SPM1 0x02 /*!< SPM1 is configured */
#define HIL_BOOT_PARAM_DPM_MODE_SPM2 0x03 /*!< SPM0 and SPM1 are configured */
#define HIL_BOOT_PARAM_DPM_MODE_DPM 0x04 /*!< DPM is configured */
#define HIL_BOOT_PARAM_DPM_MODE_IDPM0 0x05 /*!< iDPM0 is configured */
#define HIL_BOOT_PARAM_DPM_MODE_IDPM1 0x06 /*!< iDPM1 is configured */
#define HIL_BOOT_PARAM_DPM_MODE_PCIE 0x07 /*!< iDPM via PCIe is configured */
#define HIL_BOOT_PARAM_DPM_MODE_IDPM0SPM0 0x08 /*!< iDPM0 and SPM0 */
typedef __HIL_PACKED_PRE struct __HIL_PACKED_POST HIL_BOOT_PARAM_DPM_INFORMATION_Ttag
{
/*! DPM boot mode.
* DPM interface configuration. */
uint8_t bDpmMode;
uint8_t bReserved;
} HIL_BOOT_PARAM_DPM_INFORMATION_T;
/*------------------------------------------------------------*/
/*! SDRAM information */
/*------------------------------------------------------------*/
#define HIL_BOOT_PARAM_SDRAM_TYPE_NONE 0
#define HIL_BOOT_PARAM_SDRAM_TYPE_HIFMEM 1
#define HIL_BOOT_PARAM_SDRAM_TYPE_EXTMEM 2
typedef __HIL_PACKED_PRE struct __HIL_PACKED_POST HIL_BOOT_PARAM_SDRAM_INFORMATION_Ttag
{
/*! SDRAM Type: HIFMEM or EXTMEM. */
uint8_t bType;
/*! SDRAM size in MB. */
uint8_t bSize;
} HIL_BOOT_PARAM_SDRAM_INFORMATION_T;
/*------------------------------------------------------------*/
/*! SQI information */
/*------------------------------------------------------------*/
#define HIL_BOOT_PARAM_SQI_BASE_NONE 0x00
#define HIL_BOOT_PARAM_SQI_BASE_0 0x01
#define HIL_BOOT_PARAM_SQI_BASE_1 0x02
#define HIL_BOOT_PARAM_SQI_XIP_NONE 0x00
#define HIL_BOOT_PARAM_SQI_XIP 0x01
typedef __HIL_PACKED_PRE struct __HIL_PACKED_POST HIL_BOOT_PARAM_SQI_Ttag
{
uint8_t bSqiBase; /*!< SQI base register */
uint8_t bSqiXip; /*!< XIP supported */
} HIL_BOOT_PARAM_SQI_T;
/*------------------------------------------------------------*/
/*! FLASH information */
/*------------------------------------------------------------*/
/* Quad enable requirements (JEDEC Table 15) */
#define HIL_BOOT_PARAM_FLASH_QER_TYPE_1 0x01 /* 001b */
#define HIL_BOOT_PARAM_FLASH_QER_TYPE_2 0x02 /* 010b */
#define HIL_BOOT_PARAM_FLASH_QER_TYPE_3 0x03 /* 011b */
#define HIL_BOOT_PARAM_FLASH_QER_TYPE_4 0x04 /* 100b */
#define HIL_BOOT_PARAM_FLASH_QER_TYPE_5 0x05 /* 101b */
#define HIL_BOOT_PARAM_FLASH_QER_TYPE_6 0x06 /* 110b */
/* 0-4-4 Mode Entry Method (JEDEC Table 15) */
#define HIL_BOOT_PARAM_FLASH_ENTRY_TYPE_1 0x01 /* xxx1b */
#define HIL_BOOT_PARAM_FLASH_ENTRY_TYPE_2 0x02 /* xx1xb */
/* 0-4-4 Mode Exit Method (JEDEC Table 15) */
#define HIL_BOOT_PARAM_FLASH_EXIT_TYPE_1 0x01 /* xx_xxx1b */
#define HIL_BOOT_PARAM_FLASH_EXIT_TYPE_2 0x02 /* xx_1xxxb */
/* Status Register Polling Device Busy (JEDEC Table 14) */
#define HIL_BOOT_PARAM_FLASH_POLL_TYPE_1 0x01 /* xx_xx1xb */
#define HIL_BOOT_PARAM_FLASH_POLL_TYPE_2 0x02 /* xx_xxx1b */
typedef __HIL_PACKED_PRE struct __HIL_PACKED_POST HIL_BOOT_PARAM_FLASH_INFORMATION_Ttag
{
uint8_t bWriteEnable; /*!< Write enable instruction */
uint8_t bPageProgram; /*!< Page program instruction */
uint8_t bSectorErase; /*!< Sector erase instruction */
uint8_t bRead; /*!< Read data instruction */
uint8_t bQuadRead; /*!< Fast read quad I/O instruction */
uint8_t bReadStatus1; /*!< Read status register 1 instruction */
uint8_t bWriteStatus1; /*!< Write status register 1 instruction */
uint8_t bReadStatus2; /*!< Read status register 2 instruction */
uint8_t bWriteStatus2; /*!< Write status register 2 instruction */
uint8_t bFreqMHz; /*!< SPI FIFO Frequency */
uint8_t bAddrBytes; /*!< Number of address bytes */
uint8_t bQERType; /*!< Quad enable requirements type */
uint8_t bEntryType; /*!< Sequence to enter 0-4-4 mode */
uint8_t bExitType; /*!< Sequence to exit 0-4-4 mode */
uint8_t bPollingMethod; /*!< Polling mode */
uint8_t bSpiFifoMode; /*!< 0 = Mode 0, ..., 3 = Mode 3, others reserved */
uint32_t ulPageSize; /*!< Page size in bytes */
uint32_t ulSectorSize; /*!< Sector size in bytes */
uint32_t ulSectorCount; /*!< Number of sectors */
uint32_t ulSqiRomCfg; /*!< netX SqiRomCfg configuration */
} HIL_BOOT_PARAM_FLASH_INFORMATION_T;
/*------------------------------------------------------------*/
/*! Boot Parameter Data Structure */
/*------------------------------------------------------------*/
typedef __HIL_PACKED_PRE struct __HIL_PACKED_POST HIL_BOOT_PARAM_DATA_Ttag
{
HIL_BOOT_PARAM_HARDWARE_INFORMATION_T tHardwareInfo;
HIL_BOOT_PARAM_DPM_INFORMATION_T tDpmInfo;
HIL_BOOT_PARAM_SDRAM_INFORMATION_T tSdramInfo;
HIL_BOOT_PARAM_SQI_T tSqiInfo;
HIL_BOOT_PARAM_FLASH_INFORMATION_T tFlashInfo;
} HIL_BOOT_PARAM_DATA_T;
/*------------------------------------------------------------*/
/*! Boot Parameter Structure */
/*------------------------------------------------------------*/
typedef __HIL_PACKED_PRE struct __HIL_PACKED_POST HIL_BOOT_PARAM_Ttag
{
HIL_BOOT_PARAM_HEADER_T tHeader;
HIL_BOOT_PARAM_DATA_T tData;
HIL_BOOT_PARAM_FOOTER_T tFooter;
} HIL_BOOT_PARAM_T;
#endif /* HIL_BOOTPARAMETER_H_ */