From 188e89a929d0767dc4efdda0bd06855aa044fa4e Mon Sep 17 00:00:00 2001 From: Jean Minet Date: Tue, 28 Aug 2018 10:57:37 +0200 Subject: [PATCH 1/6] start cleaning Alpha250 FSBL --- boards/alpha250/patches/fsbl/AtmelAtsha204a.c | 8 +- boards/alpha250/patches/fsbl/ErrorCodes.h | 20 - boards/alpha250/patches/fsbl/GlobalTypes.h | 56 -- boards/alpha250/patches/fsbl/I2cInterface.c | 6 +- .../patches/fsbl/InterruptController.c | 1 - boards/alpha250/patches/fsbl/ModuleEeprom.c | 581 ++---------------- boards/alpha250/patches/fsbl/ModuleEeprom.h | 53 +- .../alpha250/patches/fsbl/StandardIncludes.h | 13 +- .../alpha250/patches/fsbl/SystemDefinitions.h | 52 +- boards/alpha250/patches/fsbl/TimerInterface.c | 34 - boards/alpha250/patches/fsbl/TimerInterface.h | 37 -- .../patches/fsbl/TimerInterfaceVariables.h | 36 -- .../alpha250/patches/fsbl/UtilityFunctions.h | 39 -- boards/alpha250/patches/fsbl/fsbl_hooks.c | 89 +-- boards/alpha250/patches/fsbl/readme.txt | 6 - 15 files changed, 73 insertions(+), 958 deletions(-) delete mode 100644 boards/alpha250/patches/fsbl/GlobalTypes.h delete mode 100644 boards/alpha250/patches/fsbl/TimerInterface.c delete mode 100644 boards/alpha250/patches/fsbl/TimerInterface.h delete mode 100644 boards/alpha250/patches/fsbl/TimerInterfaceVariables.h delete mode 100644 boards/alpha250/patches/fsbl/readme.txt diff --git a/boards/alpha250/patches/fsbl/AtmelAtsha204a.c b/boards/alpha250/patches/fsbl/AtmelAtsha204a.c index 5dd85a969..a1952da6e 100644 --- a/boards/alpha250/patches/fsbl/AtmelAtsha204a.c +++ b/boards/alpha250/patches/fsbl/AtmelAtsha204a.c @@ -14,7 +14,7 @@ #include "AtmelAtsha204a.h" #include "I2cInterface.h" -#include "TimerInterface.h" +#include "sleep.h" #include "UtilityFunctions.h" @@ -170,8 +170,8 @@ EN_RESULT AtmelAtsha204a_Wake(bool verifyDeviceIsAtmelAtsha204a) I2cWrite(0, 0, EI2cSubAddressMode_OneByte, (uint8_t*)&dummyWriteData, 0); - // Wait for the device to wake up. - SleepMilliseconds(ATMEL_ATSHA204A_WAKE_TIME_MILLISECONDS); + // Wait for the device to wake up. + usleep(1000*ATMEL_ATSHA204A_WAKE_TIME_MILLISECONDS); if (verifyDeviceIsAtmelAtsha204a) { @@ -588,7 +588,7 @@ EN_RESULT AtmelAtsha204a_Read(EReadSizeSelect_t sizeSelect, #ifndef _DEBUG // Wait for the read command to be processed. - SleepMilliseconds(ATMEL_ATSHA204A_READ_EXECUTION_TIME_MILLISECONDS); + usleep(1000*ATMEL_ATSHA204A_READ_EXECUTION_TIME_MILLISECONDS); #endif // Read the response. diff --git a/boards/alpha250/patches/fsbl/ErrorCodes.h b/boards/alpha250/patches/fsbl/ErrorCodes.h index a5af3251b..e2a45f925 100644 --- a/boards/alpha250/patches/fsbl/ErrorCodes.h +++ b/boards/alpha250/patches/fsbl/ErrorCodes.h @@ -130,25 +130,6 @@ typedef enum EN_RESULT } while (0) -#if SYSTEM == XILINX_MICROBLAZE -/** - * This macro is used to handle errors in calls to the Xilinx Microblaze driver functions. - */ -#define RETURN_IF_XILINX_CALL_FAILED(x, returnCode) \ - do \ - { \ - int _status = x; \ - if (_status != XST_SUCCESS) \ - { \ - return returnCode; \ - } \ - } while (0) -#endif - -#if SYSTEM == XILINX_ARM_SOC -/** - * This macro is used to handle errors in calls to the Xilinx Microblaze driver functions. - */ #define RETURN_IF_XILINX_CALL_FAILED(x, returnCode) \ do \ { \ @@ -158,4 +139,3 @@ typedef enum EN_RESULT return returnCode; \ } \ } while (0) -#endif diff --git a/boards/alpha250/patches/fsbl/GlobalTypes.h b/boards/alpha250/patches/fsbl/GlobalTypes.h deleted file mode 100644 index c292015cf..000000000 --- a/boards/alpha250/patches/fsbl/GlobalTypes.h +++ /dev/null @@ -1,56 +0,0 @@ - -#pragma once - -#include "SystemDefinitions.h" - -//------------------------------------------------------------------------------------------------- -// Use correct header for types -// This is different for the target platform because uboot implements types in lib/linux/types.h -//------------------------------------------------------------------------------------------------- -#if SYSTEM == XILINX_MICROBLAZE -#include -#elif SYSTEM == XILINX_ARM_SOC -#include -#elif SYSTEM == ALTERA_NIOS -#include - - -#ifndef FALSE -#define FALSE 0 -#endif - -#ifndef TRUE -#define TRUE 1 -#endif - - -#elif SYSTEM == ALTERA_ARM_SOC -#include -#elif SYSTEM == UBOOT -#include - -typedef s8 int8_t; -typedef u8 uint8_t; - -typedef s16 int16_t; -typedef u16 uint16_t; - -typedef s32 int32_t; -typedef u32 uint32_t; - -typedef s64 int64_t; -typedef u64 uint64_t; - -#define true 1 -#define false 0 -#endif - -#ifndef __cplusplus -#define bool char -#define true 1 -#define false 0 -#endif - -#ifndef NULL -#define NULL ((void *)0) -#endif diff --git a/boards/alpha250/patches/fsbl/I2cInterface.c b/boards/alpha250/patches/fsbl/I2cInterface.c index b2e023793..8b24a42c2 100644 --- a/boards/alpha250/patches/fsbl/I2cInterface.c +++ b/boards/alpha250/patches/fsbl/I2cInterface.c @@ -12,9 +12,9 @@ #include "I2cInterfaceVariables.h" #include "SystemDefinitions.h" #include "UtilityFunctions.h" -#include "TimerInterface.h" #include "InterruptController.h" #include "ErrorCodes.h" +#include "sleep.h" //------------------------------------------------------------------------------------------------- // Constants @@ -200,7 +200,7 @@ EN_RESULT I2cWrite_NoSubAddress(uint8_t deviceAddress, const uint8_t* pWriteBuff while ((g_i2cTransmissionInProgress && !g_i2cSlaveNack) || (XIicPs_BusIsBusy(&g_XIicPsInstance))) { - SleepMilliseconds(1); + usleep(1000); timeout++; if (timeout > 100) { @@ -303,7 +303,7 @@ EN_RESULT I2cRead_NoSubAddress(uint8_t deviceAddress, uint8_t* pReadBuffer, uint unsigned int timeout = 0; while (g_i2cReceiveInProgress && !g_i2cSlaveNack) { - SleepMilliseconds(1); + usleep(1000); timeout++; if (timeout > 1000) { diff --git a/boards/alpha250/patches/fsbl/InterruptController.c b/boards/alpha250/patches/fsbl/InterruptController.c index f83557d20..7fe1477ac 100644 --- a/boards/alpha250/patches/fsbl/InterruptController.c +++ b/boards/alpha250/patches/fsbl/InterruptController.c @@ -10,7 +10,6 @@ #include "InterruptController.h" #include "I2cInterfaceVariables.h" -#include "TimerInterfaceVariables.h" #include #include diff --git a/boards/alpha250/patches/fsbl/ModuleEeprom.c b/boards/alpha250/patches/fsbl/ModuleEeprom.c index c4b89ee5d..3900fbff2 100644 --- a/boards/alpha250/patches/fsbl/ModuleEeprom.c +++ b/boards/alpha250/patches/fsbl/ModuleEeprom.c @@ -38,21 +38,15 @@ typedef enum } EEepromDevice_t; + + + /// Array of all possible EEPROM device addresses const uint8_t EEPROM_DEVICE_ADDRESSES[3] = { EEepromDevice_MaximDs28cn01_0, EEepromDevice_MaximDs28cn01_1, EEepromDevice_AtmelAtsha204a }; /// EEPROM device type for the detected EEPROM EEepromDevice_t g_EepromDeviceType; -/// Communications mode register address -#define DS28CN01_REGISTER_ADDRESS_COMMUNICATION_MODE 0xA8 - -/// Communication mode register value for I2C mode -#define DS28CN01_REGISTER_VALUE_COMMUNICATION_MODE_I2C 0x00 - -/// Flag to indicate if config properties have been read. -bool g_configPropertiesRead = false; - /// Module serial number uint32_t g_moduleSerialNumber; @@ -67,76 +61,6 @@ uint64_t g_macAddress; // Function definitions //------------------------------------------------------------------------------------------------- -/** - * \brief Test if a recognised EEPROM device is present at the given I2C device address. - * - * @param eepromI2cAddress The device address - * @param[out] pDeviceIsPresent True if a device is detected - * @return Result code - */ -EN_RESULT IsEepromPresentAtDeviceAddress(uint8_t eepromI2cAddress, bool* pDeviceIsPresent) -{ - if (pDeviceIsPresent == NULL) - { - return EN_ERROR_NULL_POINTER; - } - - // Perform any config/wake functions that are required for the device to be detected. - switch (eepromI2cAddress) - { - case EEepromDevice_MaximDs28cn01_0: - case EEepromDevice_MaximDs28cn01_1: - { - // The Maxim DS28CN01 EEPROM needs to be switched into I2C mode by writing a zero to the communication mode - // register. - uint8_t communicationModeBuffer = DS28CN01_REGISTER_VALUE_COMMUNICATION_MODE_I2C; - if (EN_FAILED(I2cWrite(eepromI2cAddress, - DS28CN01_REGISTER_ADDRESS_COMMUNICATION_MODE, - EI2cSubAddressMode_OneByte, - (uint8_t*)&communicationModeBuffer, - sizeof(communicationModeBuffer)))) - { - *pDeviceIsPresent = false; - return EN_SUCCESS; - } - - // Try to read from address 0 to see if the device responds. - uint8_t readBuffer; - if (EN_FAILED( - I2cRead(eepromI2cAddress, 0, EI2cSubAddressMode_OneByte, sizeof(readBuffer), (uint8_t*)&readBuffer))) - { - *pDeviceIsPresent = false; - } - else - { - *pDeviceIsPresent = true; - } - - break; - } - case EEepromDevice_AtmelAtsha204a: - { - // Send the wake token, and verify that the response confirms the device is an Atmel ATSHA204A. - if (EN_FAILED(AtmelAtsha204a_Wake(true))) - { - *pDeviceIsPresent = false; - } - else - { - *pDeviceIsPresent = true; - AtmelAtsha204a_Sleep(); - } - - break; - } - default: - break; - } - - return EN_SUCCESS; -} - - /** * \brief Determine which type of EEPROM device is on the module. * @@ -144,165 +68,86 @@ EN_RESULT IsEepromPresentAtDeviceAddress(uint8_t eepromI2cAddress, bool* pDevice */ EN_RESULT DetermineEepromType() { - unsigned int addressCount = sizeof(EEPROM_DEVICE_ADDRESSES) / sizeof(EEPROM_DEVICE_ADDRESSES[0]); - unsigned int addressIndex = 0; - for (addressIndex = 0; addressIndex < addressCount; addressIndex++) - { - bool devicePresentAtI2cAddress = false; - uint8_t deviceAddress = EEPROM_DEVICE_ADDRESSES[addressIndex]; - EN_RETURN_IF_FAILED(IsEepromPresentAtDeviceAddress(deviceAddress, &devicePresentAtI2cAddress)); - - if (devicePresentAtI2cAddress) - { - g_EepromDeviceType = (EEepromDevice_t)deviceAddress; - break; - } - } - + g_EepromDeviceType = (EEepromDevice_t)EEepromDevice_AtmelAtsha204a; return EN_SUCCESS; } EN_RESULT Eeprom_Initialise() { - EN_RETURN_IF_FAILED(DetermineEepromType()); - + DetermineEepromType(); return EN_SUCCESS; } EN_RESULT Eeprom_ReadBasicModuleInfo() { - switch (g_EepromDeviceType) - { - case EEepromDevice_MaximDs28cn01_0: - case EEepromDevice_MaximDs28cn01_1: - { - // Get the serial number - uint8_t readBuffer[4]; - EN_RETURN_IF_FAILED(I2cRead(g_EepromDeviceType, - MODULE_INFO_ADDRESS_SERIAL_NUMBER, - EI2cSubAddressMode_OneByte, - 4, - (uint8_t*)&readBuffer)); - - g_moduleSerialNumber = ByteArrayToUnsignedInt32((uint8_t*)&readBuffer); - - // Product number - EN_RETURN_IF_FAILED(I2cRead(g_EepromDeviceType, - MODULE_INFO_ADDRESS_PRODUCT_NUMBER, - EI2cSubAddressMode_OneByte, - 4, - (uint8_t*)&readBuffer)); - - uint32_t productNumber = ByteArrayToUnsignedInt32((uint8_t*)&readBuffer); - g_productNumberInfo = ParseProductNumber(productNumber); - - // MAC address - uint8_t macAddressBuffer[6]; - EN_RETURN_IF_FAILED(I2cRead(g_EepromDeviceType, - MODULE_INFO_ADDRESS_MAC_ADDRESS, - EI2cSubAddressMode_OneByte, - 6, - (uint8_t*)&macAddressBuffer)); - - g_macAddress = ByteArrayToUnsignedInt64((uint8_t*)&macAddressBuffer); - - break; - } - case EEepromDevice_AtmelAtsha204a: - { - uint8_t readBuffer[4]; - uint16_t encodedAddress = 0; - - // Config data is stored in slot 0 of the OTP zone. - uint8_t slotIndex = 0; + uint8_t readBuffer[4]; + uint16_t encodedAddress = 0; - // Serial number - uint8_t serialNumberWordOffset = (MODULE_INFO_ADDRESS_SERIAL_NUMBER / 4); + // Config data is stored in slot 0 of the OTP zone. + uint8_t slotIndex = 0; - #if _DEBUG == 1 - EN_PRINTF("Reading module serial number..\r\n"); - #endif + // Serial number + uint8_t serialNumberWordOffset = (MODULE_INFO_ADDRESS_SERIAL_NUMBER / 4); - EN_RETURN_IF_FAILED( - AtmelAtsha204a_EncodeAddress(EZoneSelect_Otp, slotIndex, serialNumberWordOffset, &encodedAddress)); + EN_RETURN_IF_FAILED( + AtmelAtsha204a_EncodeAddress(EZoneSelect_Otp, slotIndex, serialNumberWordOffset, &encodedAddress)); - EN_RETURN_IF_FAILED( - AtmelAtsha204a_Read(EReadSizeSelect_4Bytes, EZoneSelect_Otp, encodedAddress, (uint8_t*)&readBuffer)); + EN_RETURN_IF_FAILED( + AtmelAtsha204a_Read(EReadSizeSelect_4Bytes, EZoneSelect_Otp, encodedAddress, (uint8_t*)&readBuffer)); - g_moduleSerialNumber = ByteArrayToUnsignedInt32((uint8_t*)&readBuffer); + g_moduleSerialNumber = ByteArrayToUnsignedInt32((uint8_t*)&readBuffer); - #if _DEBUG == 1 - EN_PRINTF("Serial number = %d\r\n", g_moduleSerialNumber); - #endif - // Product number - #if _DEBUG == 1 - EN_PRINTF("Reading module product number..\r\n"); - #endif - uint8_t productNumberWordOffset = (MODULE_INFO_ADDRESS_PRODUCT_NUMBER / 4); + // Product number - EN_RETURN_IF_FAILED( - AtmelAtsha204a_EncodeAddress(EZoneSelect_Otp, slotIndex, productNumberWordOffset, &encodedAddress)); + uint8_t productNumberWordOffset = (MODULE_INFO_ADDRESS_PRODUCT_NUMBER / 4); - EN_RETURN_IF_FAILED( - AtmelAtsha204a_Read(EReadSizeSelect_4Bytes, EZoneSelect_Otp, encodedAddress, (uint8_t*)&readBuffer)); + EN_RETURN_IF_FAILED( + AtmelAtsha204a_EncodeAddress(EZoneSelect_Otp, slotIndex, productNumberWordOffset, &encodedAddress)); - uint32_t productNumber = ByteArrayToUnsignedInt32((uint8_t*)&readBuffer); - g_productNumberInfo = ParseProductNumber(productNumber); + EN_RETURN_IF_FAILED( + AtmelAtsha204a_Read(EReadSizeSelect_4Bytes, EZoneSelect_Otp, encodedAddress, (uint8_t*)&readBuffer)); - #if _DEBUG == 1 - EN_PRINTF("Product number = 0x%x\r\n", productNumber); - #endif + uint32_t productNumber = ByteArrayToUnsignedInt32((uint8_t*)&readBuffer); + g_productNumberInfo = ParseProductNumber(productNumber); + // MAC address - we need to split this into 2 4-byte reads. + uint8_t macAddressBuffer1[4]; + uint8_t macAddressBuffer2[4]; + uint8_t macAddressWordOffset = (MODULE_INFO_ADDRESS_MAC_ADDRESS / 4); - #if _DEBUG == 1 - EN_PRINTF("Reading module MAC address..\r\n"); - #endif + EN_RETURN_IF_FAILED( + AtmelAtsha204a_EncodeAddress(EZoneSelect_Otp, slotIndex, macAddressWordOffset, &encodedAddress)); - // MAC address - we need to split this into 2 4-byte reads. - uint8_t macAddressBuffer1[4]; - uint8_t macAddressBuffer2[4]; - uint8_t macAddressWordOffset = (MODULE_INFO_ADDRESS_MAC_ADDRESS / 4); + EN_RETURN_IF_FAILED( + AtmelAtsha204a_Read(EReadSizeSelect_4Bytes, EZoneSelect_Otp, encodedAddress, (uint8_t*)&macAddressBuffer1)); - EN_RETURN_IF_FAILED( - AtmelAtsha204a_EncodeAddress(EZoneSelect_Otp, slotIndex, macAddressWordOffset, &encodedAddress)); + EN_RETURN_IF_FAILED( + AtmelAtsha204a_EncodeAddress(EZoneSelect_Otp, slotIndex, macAddressWordOffset + 1, &encodedAddress)); - EN_RETURN_IF_FAILED( - AtmelAtsha204a_Read(EReadSizeSelect_4Bytes, EZoneSelect_Otp, encodedAddress, (uint8_t*)&macAddressBuffer1)); + EN_RETURN_IF_FAILED( + AtmelAtsha204a_Read(EReadSizeSelect_4Bytes, EZoneSelect_Otp, encodedAddress, (uint8_t*)&macAddressBuffer2)); - EN_RETURN_IF_FAILED( - AtmelAtsha204a_EncodeAddress(EZoneSelect_Otp, slotIndex, macAddressWordOffset + 1, &encodedAddress)); + uint8_t fullMacAddressBuffer[6]; - EN_RETURN_IF_FAILED( - AtmelAtsha204a_Read(EReadSizeSelect_4Bytes, EZoneSelect_Otp, encodedAddress, (uint8_t*)&macAddressBuffer2)); - - uint8_t fullMacAddressBuffer[6]; - - unsigned int byteIndex = 0; - for (byteIndex = 0; byteIndex < 4; byteIndex++) - { - fullMacAddressBuffer[byteIndex] = macAddressBuffer1[byteIndex]; - } - - for (byteIndex = 4; byteIndex < 6; byteIndex++) - { - fullMacAddressBuffer[byteIndex] = macAddressBuffer2[byteIndex - 4]; - } + unsigned int byteIndex = 0; + for (byteIndex = 0; byteIndex < 4; byteIndex++) + { + fullMacAddressBuffer[byteIndex] = macAddressBuffer1[byteIndex]; + } - g_macAddress = ByteArrayToUnsignedInt64((uint8_t*)&fullMacAddressBuffer); + for (byteIndex = 4; byteIndex < 6; byteIndex++) + { + fullMacAddressBuffer[byteIndex] = macAddressBuffer2[byteIndex - 4]; + } - break; - } - default: - break; - } + g_macAddress = ByteArrayToUnsignedInt64((uint8_t*)&fullMacAddressBuffer); return EN_SUCCESS; } - EN_RESULT Eeprom_GetModuleInfo(uint32_t* pSerialNumber, ProductNumberInfo_t* pProductNumberInfo, uint64_t* pMacAddress) @@ -321,340 +166,8 @@ EN_RESULT Eeprom_GetModuleInfo(uint32_t* pSerialNumber, return EN_SUCCESS; } - -/** - * \brief Read the module config info from EEPROM. - * - * @param configDataSizeBytes The number of bytes to read - * @param[out] pConfigData Pointer to buffer to receive the config data - * @return Result code - */ -EN_RESULT Eeprom_GetModuleConfigData(uint8_t* pConfigData) -{ - if (pConfigData == NULL) - { - return EN_ERROR_NULL_POINTER; - } - - switch (g_EepromDeviceType) - { - case EEepromDevice_MaximDs28cn01_0: - case EEepromDevice_MaximDs28cn01_1: - { - EN_RETURN_IF_FAILED(I2cRead(g_EepromDeviceType, - CONFIG_PROPERTIES_START_ADDRESS, - EI2cSubAddressMode_OneByte, - CONFIG_PROPERTIES_LENGTH_BYTES, - pConfigData)); - break; - } - case EEepromDevice_AtmelAtsha204a: - { - uint8_t required4ByteReads = DivideRoundUp(CONFIG_PROPERTIES_LENGTH_BYTES, 4); - uint8_t transferBytesRemaining = CONFIG_PROPERTIES_LENGTH_BYTES; - - uint8_t readIndex = 0; - for (readIndex = 0; readIndex < required4ByteReads; readIndex++) - { - uint16_t encodedAddress = 0; - uint8_t configDataWordOffset = (CONFIG_PROPERTIES_START_ADDRESS / 4) + readIndex; - - EN_RETURN_IF_FAILED( - AtmelAtsha204a_EncodeAddress(EZoneSelect_Otp, 0, configDataWordOffset, &encodedAddress)); - - uint8_t readBuffer[4]; - EN_RETURN_IF_FAILED( - AtmelAtsha204a_Read(EReadSizeSelect_4Bytes, EZoneSelect_Otp, encodedAddress, (uint8_t*)&readBuffer)); - - // Copy the read bytes to the output buffer. - uint8_t dataBytesToCopy = min(4, transferBytesRemaining); - - uint8_t byteIndex = 0; - uint8_t byteOffset = readIndex * 4; - for (byteIndex = 0; byteIndex < dataBytesToCopy; byteIndex++) - { - pConfigData[byteOffset + byteIndex] = readBuffer[byteIndex]; - } - - transferBytesRemaining -= 4; - } - - break; - } - default: - break; - } - - return EN_SUCCESS; -} - - -/** - * \brief Parse a raw byte vector of module configution information to the relevant properties. - * - * This function takes an array of ModuleConfigProperty_t structs, which should be selected - * according to module type, and sets the value and valueAsStored elements according the parsed - * info from the raw data. The assumption is made that the first byte of the raw byte array is - * the byte read from the config data start address. - * - * @param pRawConfigData Pointer to array of raw config data - * @param configDataStartAddress The config data start address in EEPROM - * @param configPropertyCount The number of config properties for the module - * @param[out] pPropertyArray Pointer to array of parsed config properties - */ -EN_RESULT ParseByteVectorToModuleConfig(const uint8_t* pRawConfigData) -{ - if (pRawConfigData == NULL) - { - return EN_ERROR_NULL_POINTER; - } - - unsigned int propertyIndex = 0; - for (propertyIndex = 0; propertyIndex < CONFIG_PROPERTY_COUNT; propertyIndex++) - { - ModuleConfigProperty_t* pConfigProperty = &g_pConfigProperties[propertyIndex]; - - uint8_t byteIndex = pConfigProperty->address - CONFIG_PROPERTIES_START_ADDRESS; - uint8_t configByte = pRawConfigData[byteIndex]; - pConfigProperty->valueAsStored = - ExtractBitRange(configByte, pConfigProperty->endBit, pConfigProperty->startBit); - -#if _DEBUG == 1 - EN_PRINTF(" %s: Value = %d\r\n", pConfigProperty->description, pConfigProperty->valueAsStored); - EN_PRINTF(" %s: Max value = %d\r\n", pConfigProperty->description, pConfigProperty->maxValue); - EN_PRINTF(" %s: Min value = %d\r\n", pConfigProperty->description, pConfigProperty->minValue); -#endif - - // Check that the value is in range. - if (pConfigProperty->valueAsStored < pConfigProperty->minValue || - pConfigProperty->valueAsStored > pConfigProperty->maxValue) - { - EN_PRINTF(" %s: Out of Range - Value equals = 0x%x\r\n", pConfigProperty->description, pConfigProperty->valueAsStored); - return EN_ERROR_MODULE_CONFIG_PROPERTY_VALUE_OUT_OF_RANGE; - } - - if (pConfigProperty->resolution != 0) - { - pConfigProperty->value = (uint32_t)pConfigProperty->resolution << (pConfigProperty->valueAsStored - 1); - } - else - { - pConfigProperty->value = pConfigProperty->valueAsStored; - } - } - - return EN_SUCCESS; -} - - -void Eeprom_PrintModuleConfig() -{ - if (g_pConfigProperties == NULL) - { - return; - } - - unsigned int propertyIndex = 0; - for (propertyIndex = 0; propertyIndex < CONFIG_PROPERTY_COUNT; propertyIndex++) - { - const ModuleConfigProperty_t* pConfigProperty = &g_pConfigProperties[propertyIndex]; - -#if _DEBUG == 1 - EN_PRINTF(" %s: Address = 0x%x\r\n", pConfigProperty->description, pConfigProperty->address); - EN_PRINTF(" %s: Bit length = %d\r\n", pConfigProperty->description, pConfigProperty->lengthBits); - EN_PRINTF(" %s: Start bit = %d\r\n", pConfigProperty->description, pConfigProperty->startBit); - EN_PRINTF(" %s: End bit = %d\r\n", pConfigProperty->description, pConfigProperty->endBit); - EN_PRINTF(" %s: Max value = %d\r\n", pConfigProperty->description, pConfigProperty->maxValue); - EN_PRINTF(" %s: Min value = %d\r\n", pConfigProperty->description, pConfigProperty->minValue); - EN_PRINTF(" %s: Resolution = %d\r\n", pConfigProperty->description, pConfigProperty->resolution); - EN_PRINTF(" %s: Value as stored = %d\r\n", pConfigProperty->description, pConfigProperty->valueAsStored); - EN_PRINTF(" %s: Value = %d\r\n", pConfigProperty->description, pConfigProperty->value); -#endif - - if (pConfigProperty->keyValueCount != 0 && pConfigProperty->pValueKey != NULL) - { - uint8_t keyValueIndex = 0; - for (keyValueIndex = 0; keyValueIndex < pConfigProperty->keyValueCount; keyValueIndex++) - { - if (pConfigProperty->pValueKey[keyValueIndex].value == pConfigProperty->valueAsStored) - { - EN_PRINTF(" %-30s%s\r\n", - pConfigProperty->description, - pConfigProperty->pValueKey[keyValueIndex].meaning); - break; - } - } - } - else - { - EN_PRINTF(" %-30s%d\r\n", pConfigProperty->description, pConfigProperty->value); - } - } -} - - -/** - * \brief Read and parse module configuration data from the module EEPROM. - * - * Note that it is assumed all config data is stored contiguously. - * - * @param printConfigInformation True to print configuration info - * @return A result code - */ -EN_RESULT Eeprom_ReadModuleConfig() -{ - uint8_t rawConfigData[CONFIG_PROPERTIES_LENGTH_BYTES]; - EN_RESULT result = Eeprom_GetModuleConfigData((uint8_t*)&rawConfigData); - - if (EN_FAILED(result)) - { - EN_PRINTF("Failed to read module configuration, error code 0x%x\r\n", result); - return result; - } - - EN_RETURN_IF_FAILED(ParseByteVectorToModuleConfig((uint8_t*)&rawConfigData)); - - g_configPropertiesRead = true; - - return EN_SUCCESS; -} - - -EN_RESULT Eeprom_GetModuleConfigProperty(uint8_t propertyIndex, ModuleConfigProperty_t* pConfigProperty) -{ - if (pConfigProperty == NULL) - { - return EN_ERROR_NULL_POINTER; - } - - if (propertyIndex > CONFIG_PROPERTY_COUNT - 1) - { - return EN_ERROR_INVALID_MODULE_CONFIG_PROPERTY_INDEX; - } - - if (!g_configPropertiesRead) - { - return EN_ERROR_MODULE_CONFIG_PROPERTIES_NOT_YET_READ; - } - - pConfigProperty = &g_pConfigProperties[propertyIndex]; - - return EN_SUCCESS; -} - - -EN_RESULT Eeprom_GetModuleConfigPropertyValue(uint8_t propertyIndex, uint32_t* pPropertyValue) -{ - if (pPropertyValue == NULL) - { - return EN_ERROR_NULL_POINTER; - } - - if (propertyIndex > CONFIG_PROPERTY_COUNT - 1) - { - return EN_ERROR_INVALID_MODULE_CONFIG_PROPERTY_INDEX; - } - - if (!g_configPropertiesRead) - { - return EN_ERROR_MODULE_CONFIG_PROPERTIES_NOT_YET_READ; - } - - *pPropertyValue = g_pConfigProperties[propertyIndex].value; - - return EN_SUCCESS; -} - - -EN_RESULT Eeprom_GetModuleConfigPropertyDescription(uint8_t propertyIndex, char* pDescription) -{ - if (pDescription == NULL) - { - return EN_ERROR_NULL_POINTER; - } - - if (propertyIndex > CONFIG_PROPERTY_COUNT - 1) - { - return EN_ERROR_INVALID_MODULE_CONFIG_PROPERTY_INDEX; - } - - if (!g_configPropertiesRead) - { - return EN_ERROR_MODULE_CONFIG_PROPERTIES_NOT_YET_READ; - } - - uint8_t characterIndex = 0; - for (characterIndex = 0; characterIndex < CONFIGURATION_PROPERTY_NAME_MAXLENGTH_CHARACTERS; characterIndex++) - { - *(pDescription + characterIndex) = g_pConfigProperties[propertyIndex].description[characterIndex]; - - // Break at the null terminator. - if (g_pConfigProperties[propertyIndex].description[characterIndex] == '\0') - { - break; - } - } - - return EN_SUCCESS; -} - -EN_RESULT Eeprom_GetModuleConfigPropertKeyedValue(uint8_t propertyIndex, char* pKeyedValue) -{ - if (pKeyedValue == NULL) - { - return EN_ERROR_NULL_POINTER; - } - - if (propertyIndex > CONFIG_PROPERTY_COUNT - 1) - { - return EN_ERROR_INVALID_MODULE_CONFIG_PROPERTY_INDEX; - } - - if (!g_configPropertiesRead) - { - return EN_ERROR_MODULE_CONFIG_PROPERTIES_NOT_YET_READ; - } - - ModuleConfigProperty_t* pConfigProperty = &g_pConfigProperties[propertyIndex]; - - if (pConfigProperty->keyValueCount != 0 && pConfigProperty->pValueKey != NULL) - { - uint8_t keyValueIndex = 0; - for (keyValueIndex = 0; keyValueIndex < pConfigProperty->keyValueCount; keyValueIndex++) - { - if (pConfigProperty->pValueKey[keyValueIndex].value == pConfigProperty->valueAsStored) - { - uint8_t characterIndex = 0; - for (characterIndex = 0; characterIndex < CONFIGURATION_PROPERTY_NAME_MAXLENGTH_CHARACTERS; characterIndex++) - { - *(pKeyedValue + characterIndex) = pConfigProperty->pValueKey[keyValueIndex].meaning[characterIndex]; - - // Break at the null terminator. - if (pConfigProperty->pValueKey[keyValueIndex].meaning[characterIndex] == '\0') - { - break; - } - } - - break; - } - } - } - else - { - return EN_ERROR_MODULE_CONFIG_PROPERTY_DOES_NOT_HAVE_VALUE_KEY; - } - - return EN_SUCCESS; - -} - - EN_RESULT Eeprom_Read() { EN_RETURN_IF_FAILED(Eeprom_ReadBasicModuleInfo()); - - EN_RETURN_IF_FAILED(Eeprom_ReadModuleConfig()); - return EN_SUCCESS; } diff --git a/boards/alpha250/patches/fsbl/ModuleEeprom.h b/boards/alpha250/patches/fsbl/ModuleEeprom.h index e5f1bd677..95e7d9f15 100644 --- a/boards/alpha250/patches/fsbl/ModuleEeprom.h +++ b/boards/alpha250/patches/fsbl/ModuleEeprom.h @@ -14,6 +14,7 @@ #include "ModuleConfigConstants.h" #include "StandardIncludes.h" +#define MODULE_INFO_ADDRESS_MAC_ADDRESS 0x10 //------------------------------------------------------------------------------------------------- // EEPROM function declarations @@ -53,55 +54,3 @@ EN_RESULT Eeprom_Read(); EN_RESULT Eeprom_GetModuleInfo(uint32_t* pSerialNumber, ProductNumberInfo_t* pProductNumberInfo, uint64_t* pMacAddress); - - - -/** - * \brief Print the module configuration properties. - */ -void Eeprom_PrintModuleConfig(); - - -/** - * \brief Get the ModuleConfigProperty_t struct containing all information on a given - * module configuration property. - * - * @param propertyIndex Zero-based property index - * @param[out] pConfigProperty Pointer to receive property - * @return Result code - */ -EN_RESULT Eeprom_GetModuleConfigProperty(uint8_t propertyIndex, ModuleConfigProperty_t* pConfigProperty); - - -/** - * \brief Get the value of a configuration property. For properties which have a resolution, this function - * will return the interpreted value; for all other properties, the value as stored in EEPROM will be returned. - * - * @param propertyIndex Zero-based property index - * @param[out] pPropertyValue Pointer to receive property value - * @return Result code - */ -EN_RESULT Eeprom_GetModuleConfigPropertyValue(uint8_t propertyIndex, uint32_t* pPropertyValue); - - -/** - * \brief Get a property description. - * - * @param propertyIndex Zero-based property index - * @param[out] pDescription Pointer to receive description - * @return Result code - */ -EN_RESULT Eeprom_GetModuleConfigPropertyDescription(uint8_t propertyIndex, char* pDescription); - - -/** - * \brief Get a property keyed value. Valid only for properties which have key values (e.g. - * a stored value of 0 in the "Temperature grade" property has the keyed value "Commercial". - * For properties which do not have value key, an empty string is returned. - * - * @param propertyIndex Zero-based property index - * @param[out] pKeyedValue Pointer to receive keyed value string - * @return Result code - */ -EN_RESULT Eeprom_GetModuleConfigPropertKeyedValue(uint8_t propertyIndex, char* pKeyedValue); - diff --git a/boards/alpha250/patches/fsbl/StandardIncludes.h b/boards/alpha250/patches/fsbl/StandardIncludes.h index 2def39399..0074ffcdf 100644 --- a/boards/alpha250/patches/fsbl/StandardIncludes.h +++ b/boards/alpha250/patches/fsbl/StandardIncludes.h @@ -2,4 +2,15 @@ #include "SystemDefinitions.h" #include "ErrorCodes.h" -#include "GlobalTypes.h" + +#include + +#ifndef __cplusplus +#define bool char +#define true 1 +#define false 0 +#endif + +#ifndef NULL +#define NULL ((void *)0) +#endif diff --git a/boards/alpha250/patches/fsbl/SystemDefinitions.h b/boards/alpha250/patches/fsbl/SystemDefinitions.h index cd945488d..3660d0f95 100644 --- a/boards/alpha250/patches/fsbl/SystemDefinitions.h +++ b/boards/alpha250/patches/fsbl/SystemDefinitions.h @@ -5,57 +5,19 @@ #pragma once - -//------------------------------------------------------------------------------------------------- -// System type options -//------------------------------------------------------------------------------------------------- - -#define XILINX_MICROBLAZE 0 -#define XILINX_ARM_SOC 1 -#define ALTERA_NIOS 2 -#define ALTERA_ARM_SOC 3 -#define UBOOT 4 - - //------------------------------------------------------------------------------------------------- // System clock frequency //------------------------------------------------------------------------------------------------- #define SYSTEM_CLOCK_FREQUENCY_HZ 100000000 -//------------------------------------------------------------------------------------------------- -// Project definitons -//------------------------------------------------------------------------------------------------- - -#define MODULE_TESTING 0 -#define REFERENCE_DESIGN 1 - -#define PROJECT MODULE_TEST - //------------------------------------------------------------------------------------------------- // Printf definitions //------------------------------------------------------------------------------------------------- -#if SYSTEM == XILINX_MICROBLAZE -#include "xil_printf.h" -#define EN_PRINTF xil_printf -#define EN_FLUSH fflush(stdout) -#elif SYSTEM == XILINX_ARM_SOC #include "xil_printf.h" #define EN_FLUSH fflush(stdout) #define EN_PRINTF xil_printf -#elif SYSTEM == ALTERA_NIOS -#define EN_PRINTF printf -#define EN_FLUSH alt_dcache_flush_all() -#elif SYSTEM == ALTERA_ARM_SOC -#include "uart0_support.h" -#define EN_PRINTF uart0_printf -#define EN_FLUSH fflush(stdout) -#elif SYSTEM == UBOOT -#define EN_PRINTF printf -#define EN_FLUSH fflush(stdout) -#endif - //------------------------------------------------------------------------------------------------- // Module type definitions @@ -71,16 +33,4 @@ #define MERCURY_SA1 7 #define MERCURY_ZX1 8 #define MERCURY_ZX5 9 -#define MERCURY_SA2 10 - - -//------------------------------------------------------------------------------------------------- -// Base board definitions -//------------------------------------------------------------------------------------------------- - -#define MARS_STARTER 0 -#define MERCURY_STARTER 1 -#define MARS_PM3 2 -#define MERCURY_PE1 3 -#define MARS_EB1 4 - +#define MERCURY_SA2 10 \ No newline at end of file diff --git a/boards/alpha250/patches/fsbl/TimerInterface.c b/boards/alpha250/patches/fsbl/TimerInterface.c deleted file mode 100644 index d02737637..000000000 --- a/boards/alpha250/patches/fsbl/TimerInterface.c +++ /dev/null @@ -1,34 +0,0 @@ -/** \file TimerFunctions.c - * Implementation file for timer functions. - * \author Garry Jeromson - * \date 22.06.2015 - * - * Copyright (c) 2015 Enclustra GmbH, Switzerland. - * All rights reserved. - */ - -//------------------------------------------------------------------------------------------------- -// Includes -//------------------------------------------------------------------------------------------------- - -#include "TimerInterface.h" -#include "TimerInterfaceVariables.h" -#include "sleep.h" - -//------------------------------------------------------------------------------------------------- -// Global variable definitions -//------------------------------------------------------------------------------------------------- - -//------------------------------------------------------------------------------------------------- -// Function definitions -//------------------------------------------------------------------------------------------------- - -EN_RESULT InitialiseTimer() -{ - return EN_SUCCESS; -} - -void SleepMilliseconds(uint32_t milliseconds) -{ - usleep(1000 * milliseconds); -} diff --git a/boards/alpha250/patches/fsbl/TimerInterface.h b/boards/alpha250/patches/fsbl/TimerInterface.h deleted file mode 100644 index a04aee830..000000000 --- a/boards/alpha250/patches/fsbl/TimerInterface.h +++ /dev/null @@ -1,37 +0,0 @@ -/** \file TimerInterface.h - * \brief Header file for generic timer function declarations. - * \author Garry Jeromson - * \date 07.07.15 - */ - -#pragma once - -//------------------------------------------------------------------------------------------------- -// Includes -//------------------------------------------------------------------------------------------------- - -#include "StandardIncludes.h" - - -//------------------------------------------------------------------------------------------------- -// Function declarations -//------------------------------------------------------------------------------------------------- - -/** - * \brief Perform any required initialisation for the timer. - * - * @returns Result code - */ -EN_RESULT InitialiseTimer(); - - -/** - * \brief Sleep for the defined number of milliseconds. - * - * Note that if the hardware is not working for some reason, this function may get stuck in - * an infinite loop. - * - * @param milliseconds The number of milliseconds to sleep for - */ -void SleepMilliseconds(uint32_t milliseconds); - diff --git a/boards/alpha250/patches/fsbl/TimerInterfaceVariables.h b/boards/alpha250/patches/fsbl/TimerInterfaceVariables.h deleted file mode 100644 index 06cc6afe7..000000000 --- a/boards/alpha250/patches/fsbl/TimerInterfaceVariables.h +++ /dev/null @@ -1,36 +0,0 @@ -/** \file TimerInterfaceVariables.h -* Header file for timer functions. -* \author Garry Jeromson -* \date 22.06.2015 -* -* Copyright (c) 2015 Enclustra GmbH, Switzerland. -* All rights reserved. -*/ - -#pragma once - -//------------------------------------------------------------------------------------------------- -// Includes -//------------------------------------------------------------------------------------------------- - -#include "StandardIncludes.h" - -#include - -//------------------------------------------------------------------------------------------------- -// Definitions and constants -//------------------------------------------------------------------------------------------------- - -// no defines needed for Xilinx SOC - -//------------------------------------------------------------------------------------------------- -// Global variable declarations -//------------------------------------------------------------------------------------------------- - -// no defines needed for Xilinx SOC - - - - - - diff --git a/boards/alpha250/patches/fsbl/UtilityFunctions.h b/boards/alpha250/patches/fsbl/UtilityFunctions.h index b9c5b4dc8..3aae5e332 100644 --- a/boards/alpha250/patches/fsbl/UtilityFunctions.h +++ b/boards/alpha250/patches/fsbl/UtilityFunctions.h @@ -18,45 +18,6 @@ // Function declarations //------------------------------------------------------------------------------------------------- -/** - * \brief Convert decimal to binary coded decimal. - * - * @param decimal Decimal input - * @return Corresponding binary coded decimal value - */ -static inline uint8_t ConvertDecimalToBinaryCodedDecimal(int decimal) -{ - return ((decimal / 10) << 4) + (decimal % 10); -} - - -/** - * \brief Convert binary coded decimal to decimal. - * - * @param bcd Binary coded decimal - * @return Corresponding decimal value - */ -static int ConvertBinaryCodedDecimalToDecimal(uint8_t bcd) -{ - return ((bcd >> 4) * 10) + bcd % 16; -} - - -/** - * Simple sleep function. - * - * @param value Cycles to sleep for. - */ -static inline void Sleep(int value) -{ - volatile int i = 0; - while (value--) - { - i++; - } -} - - /** * \brief Convert a little-endian byte array to a 32-bit unsigned int. * diff --git a/boards/alpha250/patches/fsbl/fsbl_hooks.c b/boards/alpha250/patches/fsbl/fsbl_hooks.c index 8add61823..663e39acd 100644 --- a/boards/alpha250/patches/fsbl/fsbl_hooks.c +++ b/boards/alpha250/patches/fsbl/fsbl_hooks.c @@ -65,14 +65,13 @@ #include "I2cInterface.h" #include "InterruptController.h" #include "ModuleEeprom.h" -#include "TimerInterface.h" /************************** Variable Definitions *****************************/ /************************** Function Prototypes ******************************/ -static int ConfigEthPhy(void); +static int GetMacAddress(void); /****************************************************************************** @@ -152,11 +151,11 @@ u32 FsblHookBeforeHandoff(void) * Errors to be stored in the status variable and returned */ - Status = ConfigEthPhy(); + Status = GetMacAddress(); if (Status != XST_SUCCESS) { - fsbl_printf(DEBUG_GENERAL,"Error configuring PHY\r\n"); + fsbl_printf(DEBUG_GENERAL,"Error getting MAC Address\r\n"); } else { - fsbl_printf(DEBUG_GENERAL,"PHY configured\r\n"); + fsbl_printf(DEBUG_GENERAL,"MAC address retrieved\r\n"); } return XST_SUCCESS; @@ -194,8 +193,6 @@ void FsblHookFallback(void) EN_RESULT InitaliseSystem() { - EN_RETURN_IF_FAILED(InitialiseTimer()); - EN_RETURN_IF_FAILED(InitialiseI2cInterface()); EN_RETURN_IF_FAILED(SetupInterruptSystem()); @@ -216,7 +213,7 @@ EN_RESULT InitaliseSystem() * ****************************************************************************/ -static int ConfigEthPhy(void) +static int GetMacAddress(void) { if (EN_FAILED(InitaliseSystem())) @@ -279,82 +276,6 @@ static int ConfigEthPhy(void) for(i=0; i< strlen(ethaddr)+1; i++) Xil_Out8(0xFFFFFC00+i, ethaddr[i]); - - Config = XEmacPs_LookupConfig(XPAR_XEMACPS_0_DEVICE_ID); - - Status = XEmacPs_CfgInitialize(EmacPsInstancePtr, Config, - Config->BaseAddress); - - if (Status != XST_SUCCESS) { - fsbl_printf(DEBUG_INFO,"Error in initialize\r\n"); - return XST_FAILURE; - } - - /* - * Set the MAC address - */ - Status = XEmacPs_SetMacAddress(EmacPsInstancePtr, EmacPsMAC, 1); - if (Status != XST_SUCCESS) { - fsbl_printf(DEBUG_INFO,"Error setting MAC address\r\n"); - return XST_FAILURE; - } - - XEmacPs_SetMdioDivisor(EmacPsInstancePtr, MDC_DIV_224); - - // detect PHY - PhyAddr = 3; - XEmacPs_PhyRead(EmacPsInstancePtr, PhyAddr, 0x3, (u16*)&PhyData); // read value - PhyType = (PhyData >> 4); - - // enabling RGMII delays - if (PhyType == 0x162){ // KSZ9031 - fsbl_printf(DEBUG_GENERAL,"Detected KSZ9031 Ethernet PHY\n\r"); - //Ctrl Delay - u16 RxCtrlDelay=7; // 0..15, default 7 - u16 TxCtrlDelay=7; // 0..15, default 7 - XEmacPs_PhyWrite(EmacPsInstancePtr, PhyAddr, 0xD, 0x0002); - XEmacPs_PhyWrite(EmacPsInstancePtr, PhyAddr, 0xE, 0x0004); // Reg 0x4 - XEmacPs_PhyWrite(EmacPsInstancePtr, PhyAddr, 0xD, 0x4002); - XEmacPs_PhyWrite(EmacPsInstancePtr, PhyAddr, 0xE, (TxCtrlDelay+(RxCtrlDelay<<4))); - //Data Delay - u16 RxDataDelay=7; // 0..15, default 7 - u16 TxDataDelay=7; // 0..15, default 7 - XEmacPs_PhyWrite(EmacPsInstancePtr, PhyAddr, 0xD, 0x0002); - XEmacPs_PhyWrite(EmacPsInstancePtr, PhyAddr, 0xE, 0x0005); // Reg 0x5 - XEmacPs_PhyWrite(EmacPsInstancePtr, PhyAddr, 0xD, 0x4002); - XEmacPs_PhyWrite(EmacPsInstancePtr, PhyAddr, 0xE, (RxDataDelay+(RxDataDelay << 4)+(RxDataDelay << 8)+(RxDataDelay << 12))); - XEmacPs_PhyWrite(EmacPsInstancePtr, PhyAddr, 0xD, 0x0002); - XEmacPs_PhyWrite(EmacPsInstancePtr, PhyAddr, 0xE, 0x0006); // Reg 0x6 - XEmacPs_PhyWrite(EmacPsInstancePtr, PhyAddr, 0xD, 0x4002); - XEmacPs_PhyWrite(EmacPsInstancePtr, PhyAddr, 0xE, (TxDataDelay+(TxDataDelay << 4)+(TxDataDelay << 8)+(TxDataDelay << 12))); - //Clock Delay - u16 RxClockDelay=31; // 0..31, default 15 - u16 TxClockDelay=31; // 0..31, default 15 - XEmacPs_PhyWrite(EmacPsInstancePtr, PhyAddr, 0xD, 0x0002); - XEmacPs_PhyWrite(EmacPsInstancePtr, PhyAddr, 0xE, 0x0008); // Reg 0x8 RGMII Clock Pad Skew - XEmacPs_PhyWrite(EmacPsInstancePtr, PhyAddr, 0xD, 0x4002); - XEmacPs_PhyWrite(EmacPsInstancePtr, PhyAddr, 0xE, (RxClockDelay+(TxClockDelay<<5))); - } else if (PhyType == 0x161){ // KSZ9021 - fsbl_printf(DEBUG_GENERAL,"Detected KSZ9021 Ethernet PHY\n\r"); - XEmacPs_PhyWrite(EmacPsInstancePtr, PhyAddr, 0xB, 0x8104); // write Reg 0x104 - XEmacPs_PhyWrite(EmacPsInstancePtr, PhyAddr, 0xC, 0xF0F0); // set write data - XEmacPs_PhyWrite(EmacPsInstancePtr, PhyAddr, 0xB, 0x8105); // write Reg 0x105 - XEmacPs_PhyWrite(EmacPsInstancePtr, PhyAddr, 0xC, 0x0000); // set write data - } - - // Issue a reset to phy - Status = XEmacPs_PhyRead(EmacPsInstancePtr, PhyAddr, 0x0, &PhyData); - PhyData |= 0x8000; - Status = XEmacPs_PhyWrite(EmacPsInstancePtr, PhyAddr, 0x0, PhyData); - for (i=0; i<100000; i++); - Status |= XEmacPs_PhyRead(EmacPsInstancePtr, PhyAddr, 0x0, &PhyData); - if (Status != XST_SUCCESS) - { - fsbl_printf(DEBUG_GENERAL,"Error reset phy \n\r"); - return -1; - } else { - return 0; - } } diff --git a/boards/alpha250/patches/fsbl/readme.txt b/boards/alpha250/patches/fsbl/readme.txt deleted file mode 100644 index d8efdc686..000000000 --- a/boards/alpha250/patches/fsbl/readme.txt +++ /dev/null @@ -1,6 +0,0 @@ -Copy these files to the generated FSBL to configure the ISL12020M RTC and the Micrel KSZ9031 Ethernet PYH at boot. -Further the following libraries are needed: -- all_i2c_devices -- all_interfaces -- system_definitions -- xilinx_soc_interfaces From ceebeb75e5ea3040452d7e222c7e04af287795a7 Mon Sep 17 00:00:00 2001 From: Jean Minet Date: Tue, 28 Aug 2018 11:24:32 +0200 Subject: [PATCH 2/6] continue cleaning fsbl --- boards/alpha250/patches/fsbl/AtmelAtsha204a.c | 29 +- boards/alpha250/patches/fsbl/ErrorCodes.h | 12 +- boards/alpha250/patches/fsbl/I2cInterface.c | 80 ---- .../patches/fsbl/ModuleConfigConstants.c | 253 ----------- .../patches/fsbl/ModuleConfigConstants.h | 407 +----------------- .../patches/fsbl/ModuleConfigValueKeys.c | 315 -------------- boards/alpha250/patches/fsbl/ModuleEeprom.c | 29 -- boards/alpha250/patches/fsbl/ModuleEeprom.h | 10 - .../alpha250/patches/fsbl/StandardIncludes.h | 1 - .../alpha250/patches/fsbl/SystemDefinitions.h | 36 -- .../alpha250/patches/fsbl/UtilityFunctions.h | 37 +- boards/alpha250/patches/fsbl/fsbl_hooks.c | 39 +- 12 files changed, 29 insertions(+), 1219 deletions(-) delete mode 100644 boards/alpha250/patches/fsbl/ModuleConfigConstants.c delete mode 100644 boards/alpha250/patches/fsbl/ModuleConfigValueKeys.c delete mode 100644 boards/alpha250/patches/fsbl/SystemDefinitions.h diff --git a/boards/alpha250/patches/fsbl/AtmelAtsha204a.c b/boards/alpha250/patches/fsbl/AtmelAtsha204a.c index a1952da6e..a4fe81dd4 100644 --- a/boards/alpha250/patches/fsbl/AtmelAtsha204a.c +++ b/boards/alpha250/patches/fsbl/AtmelAtsha204a.c @@ -164,10 +164,6 @@ EN_RESULT AtmelAtsha204a_Wake(bool verifyDeviceIsAtmelAtsha204a) // Required data bytes to fulfil tWLO: 1 (8 bits, 8 clocks @ 100kHz, 80us) uint8_t dummyWriteData = 0x00; -#ifdef _DEBUG - EN_PRINTF("Attempting to wake Atmel ATSHA204A device...\r\n"); -#endif - I2cWrite(0, 0, EI2cSubAddressMode_OneByte, (uint8_t*)&dummyWriteData, 0); // Wait for the device to wake up. @@ -195,7 +191,7 @@ EN_RESULT AtmelAtsha204a_Wake(bool verifyDeviceIsAtmelAtsha204a) if (expectedResponse != actualResponse) { - EN_PRINTF("Received response code %x %x %x %x when trying to wake Atmel ATSHA204A \r\n", + xil_printf("Received response code %x %x %x %x when trying to wake Atmel ATSHA204A \r\n", readBuffer[0], readBuffer[1], readBuffer[2], @@ -205,10 +201,6 @@ EN_RESULT AtmelAtsha204a_Wake(bool verifyDeviceIsAtmelAtsha204a) } } -#ifdef _DEBUG - EN_PRINTF("Atmel ATSHA204A device woken.\r\n"); -#endif - return EN_SUCCESS; } @@ -393,7 +385,7 @@ EN_RESULT AtmelAtsha20a4_CheckResponseCrc(const uint8_t* pResponse) if (receivedCrc != expectedCrc) { - EN_PRINTF("Atmel ATSHA204 CRC error: expected 0x%x, received 0x%x\r\n", expectedCrc, receivedCrc); + xil_printf("Atmel ATSHA204 CRC error: expected 0x%x, received 0x%x\r\n", expectedCrc, receivedCrc); return EN_ERROR_ATSHA204A_INVALID_RESPONSE_CRC; } @@ -428,27 +420,27 @@ EN_RESULT AtmelAtsha20a4_CheckCommandResponseBlock(const uint8_t* pResponseBlock case EStatusCode_InvalidMac: { - EN_PRINTF("Atmel ATSHA204A error - invalid MAC\r\n"); + xil_printf("Atmel ATSHA204A error - invalid MAC\r\n"); return EN_ERROR_ATSHA204A_INVALID_MAC; } case EStatusCode_ParseError: { - EN_PRINTF("Atmel ATSHA204A error - parse error\r\n"); + xil_printf("Atmel ATSHA204A error - parse error\r\n"); return EN_ERROR_ATSHA204A_PARSE_ERROR; } case EStatusCode_ExecutionError: { - EN_PRINTF("Atmel ATSHA204A error - execution error\r\n"); + xil_printf("Atmel ATSHA204A error - execution error\r\n"); return EN_ERROR_ATSHA204A_EXECUTION_ERROR; } case EStatusCode_AfterWake: { - EN_PRINTF("Atmel ATSHA204A error - first command after wake\r\n"); + xil_printf("Atmel ATSHA204A error - first command after wake\r\n"); return EN_ERROR_ATSHA204A_FIRST_COMMAND_AFTER_WAKE; } case EStatusCode_IoError: { - EN_PRINTF("Atmel ATSHA204A error - CRC or other IO error\r\n"); + xil_printf("Atmel ATSHA204A error - CRC or other IO error\r\n"); return EN_ERROR_ATSHA204A_IO_ERROR; } default: @@ -574,13 +566,6 @@ EN_RESULT AtmelAtsha204a_Read(EReadSizeSelect_t sizeSelect, break; } -#ifdef _DEBUG - EN_PRINTF("Atmel ATSHA204A: reading %d bytes from zone %d, encoded address %d\r\n", - sizeSelect, - zoneSelect, - encodedAddress); -#endif - uint8_t commandPacket[7]; AtmelAtsha204a_ConstructCommandPacket(ECommand_Read, zone, encodedAddress, 0, NULL, (uint8_t*)&commandPacket); diff --git a/boards/alpha250/patches/fsbl/ErrorCodes.h b/boards/alpha250/patches/fsbl/ErrorCodes.h index e2a45f925..e2e7c272d 100644 --- a/boards/alpha250/patches/fsbl/ErrorCodes.h +++ b/boards/alpha250/patches/fsbl/ErrorCodes.h @@ -9,14 +9,6 @@ #pragma once - -//------------------------------------------------------------------------------------------------- -// Includes -//------------------------------------------------------------------------------------------------- - -#include "SystemDefinitions.h" - - //------------------------------------------------------------------------------------------------- // Error code definitions //------------------------------------------------------------------------------------------------- @@ -92,7 +84,7 @@ typedef enum EN_RESULT #define EN_PRINT_ERROR(status, message) \ do \ { \ - EN_PRINTF("Error, status code 0x%x: %s\r\n", status, message); \ \ + xil_printf("Error, status code 0x%x: %s\r\n", status, message); \ \ } while (0) @@ -124,7 +116,7 @@ typedef enum EN_RESULT EN_RESULT _status = status; \ if (EN_FAILED(_status)) \ { \ - EN_PRINTF("Error: %s (status code = 0x%x)\r\n", message, status); \ + xil_printf("Error: %s (status code = 0x%x)\r\n", message, status); \ return _status; \ } \ } while (0) diff --git a/boards/alpha250/patches/fsbl/I2cInterface.c b/boards/alpha250/patches/fsbl/I2cInterface.c index 8b24a42c2..e4f643d6a 100644 --- a/boards/alpha250/patches/fsbl/I2cInterface.c +++ b/boards/alpha250/patches/fsbl/I2cInterface.c @@ -10,7 +10,6 @@ #include "I2cInterface.h" #include "I2cInterfaceVariables.h" -#include "SystemDefinitions.h" #include "UtilityFunctions.h" #include "InterruptController.h" #include "ErrorCodes.h" @@ -59,78 +58,24 @@ void StatusHandler(void* InstancePtr, int event) if (event & XIICPS_EVENT_COMPLETE_RECV) { g_i2cReceiveInProgress = false; - -#ifdef _DEBUG - EN_PRINTF("Event = receive complete\r\n"); -#endif } if (event & XIICPS_EVENT_COMPLETE_SEND) { g_i2cTransmissionInProgress = false; - -#ifdef _DEBUG - EN_PRINTF("Event = send complete\r\n"); -#endif } if ((event & XIICPS_EVENT_SLAVE_RDY) == 0) { - g_transmissionErrorCount++; - -#ifdef _DEBUG - EN_PRINTF("Data received with error\n\r"); -#endif } if (event & XIICPS_EVENT_NACK) { g_i2cSlaveNack = true; - -#ifdef _DEBUG - EN_PRINTF("Event = NACK received\r\n"); -#endif - } - -#ifdef _DEBUG - if (event & XIICPS_EVENT_TIME_OUT) - { - EN_PRINTF("Event = timeout\r\n"); } - if (event & XIICPS_EVENT_ERROR) - { - EN_PRINTF("Event = error\r\n"); - } - - if (event & XIICPS_EVENT_ARB_LOST) - { - EN_PRINTF("Event = arbitration lost\r\n"); - } - - if (event & XIICPS_EVENT_SLAVE_RDY) - { - EN_PRINTF("Event = slave ready\r\n"); - } - - if (event & XIICPS_EVENT_RX_OVR) - { - EN_PRINTF("Event = receive overflow\r\n"); - } - - if (event & XIICPS_EVENT_TX_OVR) - { - EN_PRINTF("Event = transmit overflow\r\n"); - } - - if (event & XIICPS_EVENT_RX_UNF) - { - EN_PRINTF("Event = receive underflow\r\n"); - } - -#endif } EN_RESULT InitialiseI2cInterface() @@ -178,10 +123,6 @@ EN_RESULT I2cWrite_NoSubAddress(uint8_t deviceAddress, const uint8_t* pWriteBuff return EN_ERROR_INVALID_ARGUMENT; } -#ifdef _DEBUG - xil_printf("I2C: Writing %d bytes to device address 0x%x\r\n", numberOfBytesToWrite, deviceAddress); -#endif - // Wait for bus to become idle while (XIicPs_BusIsBusy(&g_XIicPsInstance)) { @@ -204,21 +145,12 @@ EN_RESULT I2cWrite_NoSubAddress(uint8_t deviceAddress, const uint8_t* pWriteBuff timeout++; if (timeout > 100) { -#ifdef _DEBUG - xil_printf( - "Error: I2C timeout when writing %d bytes to device 0x%x\r\n", numberOfBytesToWrite, deviceAddress); -#endif - return EN_ERROR_I2C_WRITE_TIMEOUT; } } if (g_i2cSlaveNack) { -#ifdef _DEBUG - xil_printf("NACK received from I2C slave at address 0x%x\n\r", deviceAddress); -#endif - return EN_ERROR_I2C_SLAVE_NACK; } @@ -281,10 +213,6 @@ EN_RESULT I2cRead_NoSubAddress(uint8_t deviceAddress, uint8_t* pReadBuffer, uint return EN_ERROR_INVALID_ARGUMENT; } -#ifdef _DEBUG - xil_printf("I2C: Reading %d bytes from device address 0x%x\r\n", numberOfBytesToRead, deviceAddress); -#endif - // Wait for bus to become idle while (XIicPs_BusIsBusy(&g_XIicPsInstance)) { @@ -307,20 +235,12 @@ EN_RESULT I2cRead_NoSubAddress(uint8_t deviceAddress, uint8_t* pReadBuffer, uint timeout++; if (timeout > 1000) { -#ifdef _DEBUG - xil_printf( - "Error: I2C timeout when receiving %d bytes from device 0x%x\r\n", numberOfBytesToRead, deviceAddress); -#endif return EN_ERROR_I2C_READ_TIMEOUT; } } if (g_i2cSlaveNack) { -#ifdef _DEBUG - xil_printf("NACK received from I2C slave at address 0x%x\n\r", deviceAddress); -#endif - return EN_ERROR_I2C_SLAVE_NACK; } diff --git a/boards/alpha250/patches/fsbl/ModuleConfigConstants.c b/boards/alpha250/patches/fsbl/ModuleConfigConstants.c deleted file mode 100644 index 6a6aea9bc..000000000 --- a/boards/alpha250/patches/fsbl/ModuleConfigConstants.c +++ /dev/null @@ -1,253 +0,0 @@ -#include "ModuleConfigConstants.h" - - - -//------------------------------------------------------------------------------------------------- -// Mars AX3 -//------------------------------------------------------------------------------------------------- - -#if TARGET_MODULE == MARS_AX3 - -char MARS_AX3_MODULE_NAME[MAX_MODULE_NAME_LENGTH_CHARACTERS] = "Mars AX3"; -ModuleConfigProperty_t MARS_AX3_CONFIG_PROPERTIES[MARS_AX3_PROPERTY_COUNT] = { -{ "FPGA type\0", 0x08, 4, 4, 7, 1, 4, 0, 4, (ModulePropertyValueKey_t*)&MARS_AX3_FPGA_TYPE_VALUE_KEY, 0, 0 }, -{ "FPGA speed grade\0", 0x08, 4, 0, 3, 1, 3, 0, 0, NULL, 0, 0 }, -{ "Temperature grade\0", 0x09, 1, 7, 7, 0, 1, 0, 2, (ModulePropertyValueKey_t*)&MARS_AX3_TEMPERATURE_GRADE_VALUE_KEY, 0, 0 }, -{ "Power grade\0", 0x09, 1, 6, 6, 0, 1, 0, 2, (ModulePropertyValueKey_t*)&MARS_AX3_POWER_GRADE_VALUE_KEY, 0, 0 }, -{ "Ethernet port count\0", 0x09, 2, 4, 5, 0, 2, 0, 0, NULL, 0, 0 }, -{ "Ethernet speed\0", 0x09, 1, 3, 3, 0, 1, 0, 2, (ModulePropertyValueKey_t*)&MARS_AX3_ETHERNET_SPEED_VALUE_KEY, 0, 0 }, -{ "Real-time clock equipped\0", 0x09, 1, 2, 2, 0, 1, 0, 2, (ModulePropertyValueKey_t*)&MARS_AX3_REAL_TIME_CLOCK_EQUIPPED_VALUE_KEY, 0, 0 }, -{ "USB device port count\0", 0x0A, 2, 0, 1, 0, 3, 0, 0, NULL, 0, 0 }, -{ "DDR3 RAM size (MB)\0", 0x0B, 4, 4, 7, 0, 15, 8, 0, NULL, 0, 0 }, -{ "SPI flash size (MB)\0", 0x0B, 4, 0, 3, 0, 15, 1, 0, NULL, 0, 0 } }; -ModuleConfigProperty_t* g_pConfigProperties = (ModuleConfigProperty_t*)&MARS_AX3_CONFIG_PROPERTIES; -#endif - - -//------------------------------------------------------------------------------------------------- -// Mars MX1 -//------------------------------------------------------------------------------------------------- - -#if TARGET_MODULE == MARS_MX1 - -char MARS_MX1_MODULE_NAME[MAX_MODULE_NAME_LENGTH_CHARACTERS] = "Mars MX1"; -ModuleConfigProperty_t MARS_MX1_CONFIG_PROPERTIES[MARS_MX1_PROPERTY_COUNT] = { -{ "FPGA type\0", 0x08, 4, 4, 7, 0, 3, 0, 4, (ModulePropertyValueKey_t*)&MARS_MX1_FPGA_TYPE_VALUE_KEY, 0, 0 }, -{ "FPGA speed grade\0", 0x08, 4, 0, 3, 1, 3, 0, 0, NULL, 0, 0 }, -{ "Temperature grade\0", 0x09, 1, 7, 7, 0, 1, 0, 2, (ModulePropertyValueKey_t*)&MARS_MX1_TEMPERATURE_GRADE_VALUE_KEY, 0, 0 }, -{ "Power grade\0", 0x09, 1, 6, 6, 0, 1, 0, 2, (ModulePropertyValueKey_t*)&MARS_MX1_POWER_GRADE_VALUE_KEY, 0, 0 }, -{ "Ethernet port count\0", 0x09, 2, 4, 5, 0, 2, 0, 0, NULL, 0, 0 }, -{ "Ethernet speed\0", 0x09, 1, 3, 3, 0, 1, 0, 2, (ModulePropertyValueKey_t*)&MARS_MX1_ETHERNET_SPEED_VALUE_KEY, 0, 0 }, -{ "Real-time clock equipped\0", 0x09, 1, 2, 2, 0, 1, 0, 2, (ModulePropertyValueKey_t*)&MARS_MX1_REAL_TIME_CLOCK_EQUIPPED_VALUE_KEY, 0, 0 }, -{ "Current monitor equipped\0", 0x09, 1, 1, 1, 0, 1, 0, 2, (ModulePropertyValueKey_t*)&MARS_MX1_CURRENT_MONITOR_EQUIPPED_VALUE_KEY, 0, 0 }, -{ "USB device port count\0", 0x0A, 2, 0, 1, 0, 3, 0, 0, NULL, 0, 0 }, -{ "DDR2 RAM size (MB)\0", 0x0B, 4, 4, 7, 0, 15, 8, 0, NULL, 0, 0 }, -{ "SPI flash size (MB)\0", 0x0B, 4, 0, 3, 0, 15, 1, 0, NULL, 0, 0 } }; -ModuleConfigProperty_t* g_pConfigProperties = (ModuleConfigProperty_t*)&MARS_MX1_CONFIG_PROPERTIES; -#endif - - -//------------------------------------------------------------------------------------------------- -// Mars MX2 -//------------------------------------------------------------------------------------------------- - -#if TARGET_MODULE == MARS_MX2 - -char MARS_MX2_MODULE_NAME[MAX_MODULE_NAME_LENGTH_CHARACTERS] = "Mars MX2"; -ModuleConfigProperty_t MARS_MX2_CONFIG_PROPERTIES[MARS_MX2_PROPERTY_COUNT] = { -{ "FPGA type\0", 0x08, 4, 4, 7, 0, 1, 0, 2, (ModulePropertyValueKey_t*)&MARS_MX2_FPGA_TYPE_VALUE_KEY, 0, 0 }, -{ "FPGA speed grade\0", 0x08, 4, 0, 3, 1, 3, 0, 0, NULL, 0, 0 }, -{ "Temperature grade\0", 0x09, 1, 7, 7, 0, 1, 0, 2, (ModulePropertyValueKey_t*)&MARS_MX2_TEMPERATURE_GRADE_VALUE_KEY, 0, 0 }, -{ "Power grade\0", 0x09, 1, 6, 6, 0, 1, 0, 2, (ModulePropertyValueKey_t*)&MARS_MX2_POWER_GRADE_VALUE_KEY, 0, 0 }, -{ "Ethernet port count\0", 0x09, 2, 4, 5, 0, 2, 0, 0, NULL, 0, 0 }, -{ "Ethernet speed\0", 0x09, 1, 3, 3, 0, 1, 0, 2, (ModulePropertyValueKey_t*)&MARS_MX2_ETHERNET_SPEED_VALUE_KEY, 0, 0 }, -{ "Real-time clock equipped\0", 0x09, 1, 2, 2, 0, 1, 0, 2, (ModulePropertyValueKey_t*)&MARS_MX2_REAL_TIME_CLOCK_EQUIPPED_VALUE_KEY, 0, 0 }, -{ "Current monitor equipped\0", 0x09, 1, 1, 1, 0, 1, 0, 2, (ModulePropertyValueKey_t*)&MARS_MX2_CURRENT_MONITOR_EQUIPPED_VALUE_KEY, 0, 0 }, -{ "USB device port count\0", 0x0A, 2, 0, 1, 0, 3, 0, 0, NULL, 0, 0 }, -{ "DDR2 RAM size (MB)\0", 0x0B, 4, 4, 7, 0, 15, 8, 0, NULL, 0, 0 }, -{ "SPI flash size (MB)\0", 0x0B, 4, 0, 3, 0, 15, 1, 0, NULL, 0, 0 } }; -ModuleConfigProperty_t* g_pConfigProperties = (ModuleConfigProperty_t*)&MARS_MX2_CONFIG_PROPERTIES; -#endif - - -//------------------------------------------------------------------------------------------------- -// Mars ZX2 -//------------------------------------------------------------------------------------------------- - -#if TARGET_MODULE == MARS_ZX2 - -char MARS_ZX2_MODULE_NAME[MAX_MODULE_NAME_LENGTH_CHARACTERS] = "Mars ZX2"; -ModuleConfigProperty_t MARS_ZX2_CONFIG_PROPERTIES[MARS_ZX2_PROPERTY_COUNT] = { -{ "SoC type\0", 0x08, 4, 4, 7, 0, 1, 0, 2, (ModulePropertyValueKey_t*)&MARS_ZX2_SOC_TYPE_VALUE_KEY, 0, 0 }, -{ "SoC speed grade\0", 0x08, 4, 0, 3, 1, 3, 0, 0, NULL, 0, 0 }, -{ "Temperature grade\0", 0x09, 1, 7, 7, 0, 1, 0, 2, (ModulePropertyValueKey_t*)&MARS_ZX2_TEMPERATURE_GRADE_VALUE_KEY, 0, 0 }, -{ "Power grade\0", 0x09, 1, 6, 6, 0, 1, 0, 2, (ModulePropertyValueKey_t*)&MARS_ZX2_POWER_GRADE_VALUE_KEY, 0, 0 }, -{ "Ethernet port count\0", 0x09, 2, 4, 5, 0, 2, 0, 0, NULL, 0, 0 }, -{ "Ethernet speed\0", 0x09, 1, 3, 3, 0, 1, 0, 2, (ModulePropertyValueKey_t*)&MARS_ZX2_ETHERNET_SPEED_VALUE_KEY, 0, 0 }, -{ "Real-time clock equipped\0", 0x09, 1, 2, 2, 0, 1, 0, 2, (ModulePropertyValueKey_t*)&MARS_ZX2_REAL_TIME_CLOCK_EQUIPPED_VALUE_KEY, 0, 0 }, -{ "USB device port count\0", 0x0A, 2, 0, 1, 0, 3, 0, 0, NULL, 0, 0 }, -{ "DDR3 RAM size (MB)\0", 0x0B, 4, 4, 7, 0, 15, 8, 0, NULL, 0, 0 }, -{ "SPI flash size (MB)\0", 0x0B, 4, 0, 3, 0, 15, 1, 0, NULL, 0, 0 } }; -ModuleConfigProperty_t* g_pConfigProperties = (ModuleConfigProperty_t*)&MARS_ZX2_CONFIG_PROPERTIES; -#endif - - -//------------------------------------------------------------------------------------------------- -// Mars ZX3 -//------------------------------------------------------------------------------------------------- - -#if TARGET_MODULE == MARS_ZX3 - -char MARS_ZX3_MODULE_NAME[MAX_MODULE_NAME_LENGTH_CHARACTERS] = "Mars ZX3"; -ModuleConfigProperty_t MARS_ZX3_CONFIG_PROPERTIES[MARS_ZX3_PROPERTY_COUNT] = { -{ "SoC type\0", 0x08, 4, 4, 7, 0, 1, 0, 2, (ModulePropertyValueKey_t*)&MARS_ZX3_SOC_TYPE_VALUE_KEY, 0, 0 }, -{ "SoC speed grade\0", 0x08, 4, 0, 3, 1, 3, 0, 0, NULL, 0, 0 }, -{ "Temperature grade\0", 0x09, 1, 7, 7, 0, 1, 0, 2, (ModulePropertyValueKey_t*)&MARS_ZX3_TEMPERATURE_GRADE_VALUE_KEY, 0, 0 }, -{ "Power grade\0", 0x09, 1, 6, 6, 0, 1, 0, 2, (ModulePropertyValueKey_t*)&MARS_ZX3_POWER_GRADE_VALUE_KEY, 0, 0 }, -{ "Ethernet port count\0", 0x09, 2, 4, 5, 0, 2, 0, 0, NULL, 0, 0 }, -{ "Ethernet speed\0", 0x09, 1, 3, 3, 0, 1, 0, 2, (ModulePropertyValueKey_t*)&MARS_ZX3_ETHERNET_SPEED_VALUE_KEY, 0, 0 }, -{ "Real-time clock equipped\0", 0x09, 1, 2, 2, 0, 1, 0, 2, (ModulePropertyValueKey_t*)&MARS_ZX3_REAL_TIME_CLOCK_EQUIPPED_VALUE_KEY, 0, 0 }, -{ "USB device port count\0", 0x0A, 2, 0, 1, 0, 3, 0, 0, NULL, 0, 0 }, -{ "DDR3 RAM size (MB)\0", 0x0B, 4, 4, 7, 0, 15, 8, 0, NULL, 0, 0 }, -{ "SPI flash size (MB)\0", 0x0B, 4, 0, 3, 0, 15, 1, 0, NULL, 0, 0 }, -{ "NAND flash size (MB)\0", 0x0C, 4, 0, 3, 0, 15, 1, 0, NULL, 0, 0 } }; -ModuleConfigProperty_t* g_pConfigProperties = (ModuleConfigProperty_t*)&MARS_ZX3_CONFIG_PROPERTIES; -#endif - - -//------------------------------------------------------------------------------------------------- -// Mercury CA1 -//------------------------------------------------------------------------------------------------- - -#if TARGET_MODULE == MERCURY_CA1 - -char MERCURY_CA1_MODULE_NAME[MAX_MODULE_NAME_LENGTH_CHARACTERS] = "Mercury CA1"; -ModuleConfigProperty_t MERCURY_CA1_CONFIG_PROPERTIES[MERCURY_CA1_PROPERTY_COUNT] = { -{ "FPGA type\0", 0x08, 4, 4, 7, 0, 4, 0, 5, (ModulePropertyValueKey_t*)&MERCURY_CA1_FPGA_TYPE_VALUE_KEY, 0, 0 }, -{ "FPGA speed grade\0", 0x08, 4, 0, 3, 6, 8, 0, 0, NULL, 0, 0 }, -{ "Temperature grade\0", 0x09, 1, 7, 7, 0, 1, 0, 2, (ModulePropertyValueKey_t*)&MERCURY_CA1_TEMPERATURE_GRADE_VALUE_KEY, 0, 0 }, -{ "Power grade\0", 0x09, 1, 6, 6, 0, 1, 0, 2, (ModulePropertyValueKey_t*)&MERCURY_CA1_POWER_GRADE_VALUE_KEY, 0, 0 }, -{ "Ethernet port count\0", 0x09, 2, 4, 5, 0, 2, 0, 0, NULL, 0, 0 }, -{ "Ethernet speed\0", 0x09, 1, 3, 3, 0, 1, 0, 2, (ModulePropertyValueKey_t*)&MERCURY_CA1_ETHERNET_SPEED_VALUE_KEY, 0, 0 }, -{ "Real-time clock equipped\0", 0x09, 1, 2, 2, 0, 1, 0, 2, (ModulePropertyValueKey_t*)&MERCURY_CA1_REAL_TIME_CLOCK_EQUIPPED_VALUE_KEY, 0, 0 }, -{ "Current monitor equipped\0", 0x09, 1, 1, 1, 0, 1, 0, 2, (ModulePropertyValueKey_t*)&MERCURY_CA1_CURRENT_MONITOR_EQUIPPED_VALUE_KEY, 0, 0 }, -{ "USB device port count\0", 0x0A, 2, 0, 1, 0, 3, 0, 0, NULL, 0, 0 }, -{ "DDR2 RAM size (MB)\0", 0x0B, 4, 4, 7, 0, 15, 8, 0, NULL, 0, 0 }, -{ "SPI flash size (MB)\0", 0x0B, 4, 0, 3, 0, 15, 1, 0, NULL, 0, 0 } }; -ModuleConfigProperty_t* g_pConfigProperties = (ModuleConfigProperty_t*)&MERCURY_CA1_CONFIG_PROPERTIES; -#endif - - -//------------------------------------------------------------------------------------------------- -// Mercury KX1 -//------------------------------------------------------------------------------------------------- - -#if TARGET_MODULE == MERCURY_KX1 - -char MERCURY_KX1_MODULE_NAME[MAX_MODULE_NAME_LENGTH_CHARACTERS] = "Mercury KX1"; -ModuleConfigProperty_t MERCURY_KX1_CONFIG_PROPERTIES[MERCURY_KX1_PROPERTY_COUNT] = { -{ "FPGA type\0", 0x08, 4, 4, 7, 0, 5, 0, 6, (ModulePropertyValueKey_t*)&MERCURY_KX1_FPGA_TYPE_VALUE_KEY, 0, 0 }, -{ "FPGA speed grade\0", 0x08, 4, 0, 3, 1, 3, 0, 0, NULL, 0, 0 }, -{ "Temperature grade\0", 0x09, 1, 7, 7, 0, 1, 0, 2, (ModulePropertyValueKey_t*)&MERCURY_KX1_TEMPERATURE_GRADE_VALUE_KEY, 0, 0 }, -{ "Power grade\0", 0x09, 1, 6, 6, 0, 1, 0, 2, (ModulePropertyValueKey_t*)&MERCURY_KX1_POWER_GRADE_VALUE_KEY, 0, 0 }, -{ "Ethernet port count\0", 0x09, 2, 4, 5, 0, 2, 0, 0, NULL, 0, 0 }, -{ "Ethernet speed\0", 0x09, 1, 3, 3, 0, 1, 0, 2, (ModulePropertyValueKey_t*)&MERCURY_KX1_ETHERNET_SPEED_VALUE_KEY, 0, 0 }, -{ "Real-time clock equipped\0", 0x09, 1, 2, 2, 0, 1, 0, 2, (ModulePropertyValueKey_t*)&MERCURY_KX1_REAL_TIME_CLOCK_EQUIPPED_VALUE_KEY, 0, 0 }, -{ "USB device port count\0", 0x0A, 2, 0, 1, 0, 3, 0, 0, NULL, 0, 0 }, -{ "DDR3 RAM size (MB)\0", 0x0B, 4, 4, 7, 0, 15, 8, 0, NULL, 0, 0 }, -{ "SPI flash size (MB)\0", 0x0B, 4, 0, 3, 0, 15, 1, 0, NULL, 0, 0 }, -{ "Secondary DDR3 RAM size (MB)\0", 0x0C, 4, 0, 3, 0, 15, 2, 0, NULL, 0, 0 } }; -ModuleConfigProperty_t* g_pConfigProperties = (ModuleConfigProperty_t*)&MERCURY_KX1_CONFIG_PROPERTIES; -#endif - - -//------------------------------------------------------------------------------------------------- -// Mercury SA1 -//------------------------------------------------------------------------------------------------- - -#if TARGET_MODULE == MERCURY_SA1 - -char MERCURY_SA1_MODULE_NAME[MAX_MODULE_NAME_LENGTH_CHARACTERS] = "Mercury SA1"; -ModuleConfigProperty_t MERCURY_SA1_CONFIG_PROPERTIES[MERCURY_SA1_PROPERTY_COUNT] = { -{ "SoC type\0", 0x08, 4, 4, 7, 0, 2, 0, 3, (ModulePropertyValueKey_t*)&MERCURY_SA1_SOC_TYPE_VALUE_KEY, 0, 0 }, -{ "SoC speed grade\0", 0x08, 4, 0, 3, 6, 8, 0, 0, NULL, 0, 0 }, -{ "Temperature grade\0", 0x09, 1, 7, 7, 0, 1, 0, 2, (ModulePropertyValueKey_t*)&MERCURY_SA1_TEMPERATURE_GRADE_VALUE_KEY, 0, 0 }, -{ "Power grade\0", 0x09, 1, 6, 6, 0, 1, 0, 2, (ModulePropertyValueKey_t*)&MERCURY_SA1_POWER_GRADE_VALUE_KEY, 0, 0 }, -{ "Ethernet port count\0", 0x09, 2, 4, 5, 0, 1, 0, 0, NULL, 0, 0 }, -{ "Ethernet speed\0", 0x09, 1, 3, 3, 0, 1, 0, 2, (ModulePropertyValueKey_t*)&MERCURY_SA1_ETHERNET_SPEED_VALUE_KEY, 0, 0 }, -{ "Real-time clock equipped\0", 0x09, 1, 2, 2, 0, 1, 0, 2, (ModulePropertyValueKey_t*)&MERCURY_SA1_REAL_TIME_CLOCK_EQUIPPED_VALUE_KEY, 0, 0 }, -{ "USB port count\0", 0x0A, 2, 0, 1, 0, 1, 0, 0, NULL, 0, 0 }, -{ "DDR3L RAM size (MB)\0", 0x0B, 4, 4, 7, 0, 9, 8, 0, NULL, 0, 0 }, -{ "SPI flash size (MB)\0", 0x0B, 4, 0, 3, 0, 15, 1, 0, NULL, 0, 0 } }; -ModuleConfigProperty_t* g_pConfigProperties = (ModuleConfigProperty_t*)&MERCURY_SA1_CONFIG_PROPERTIES; -#endif - - -//------------------------------------------------------------------------------------------------- -// Mercury SA2 -//------------------------------------------------------------------------------------------------- - -#if TARGET_MODULE == MERCURY_SA2 - -char MERCURY_SA2_MODULE_NAME[MAX_MODULE_NAME_LENGTH_CHARACTERS] = "Mercury+ SA2"; -ModuleConfigProperty_t MERCURY_SA2_CONFIG_PROPERTIES[MERCURY_SA2_PROPERTY_COUNT] = { -{ "SoC type\0", 0x08, 4, 4, 7, 0, 0, 0, 1, (ModulePropertyValueKey_t*)&MERCURY_SA2_SOC_TYPE_VALUE_KEY, 0, 0 }, -{ "SoC speed grade\0", 0x08, 4, 0, 3, 6, 8, 0, 0, NULL, 0, 0 }, -{ "Temperature grade\0", 0x09, 1, 7, 7, 0, 1, 0, 2, (ModulePropertyValueKey_t*)&MERCURY_SA2_TEMPERATURE_GRADE_VALUE_KEY, 0, 0 }, -{ "Power grade\0", 0x09, 1, 6, 6, 0, 1, 0, 2, (ModulePropertyValueKey_t*)&MERCURY_SA2_POWER_GRADE_VALUE_KEY, 0, 0 }, -{ "Fast Ethernet port count\0", 0x09, 2, 4, 5, 0, 2, 0, 0, NULL, 0, 0 }, -{ "Gigabit Ethernet port count\0", 0x09, 1, 3, 3, 0, 1, 0, 0, NULL, 0, 0 }, -{ "Real-time clock equipped\0", 0x09, 1, 2, 2, 0, 1, 0, 2, (ModulePropertyValueKey_t*)&MERCURY_SA2_REAL_TIME_CLOCK_EQUIPPED_VALUE_KEY, 0, 0 }, -{ "USB 2.0 port count\0", 0x0A, 1, 1, 1, 0, 1, 0, 0, NULL, 0, 0 }, -{ "USB 3.0 port count\0", 0x0A, 1, 0, 0, 0, 1, 0, 0, NULL, 0, 0 }, -{ "DDR3L RAM size (MB)\0", 0x0B, 4, 4, 7, 0, 9, 8, 0, NULL, 0, 0 }, -{ "SPI flash size (MB)\0", 0x0B, 4, 0, 3, 0, 15, 1, 0, NULL, 0, 0 } }; -ModuleConfigProperty_t* g_pConfigProperties = (ModuleConfigProperty_t*)&MERCURY_SA2_CONFIG_PROPERTIES; -#endif - - -//------------------------------------------------------------------------------------------------- -// Mercury ZX1 -//------------------------------------------------------------------------------------------------- - -#if TARGET_MODULE == MERCURY_ZX1 - -char MERCURY_ZX1_MODULE_NAME[MAX_MODULE_NAME_LENGTH_CHARACTERS] = "Mercury ZX1"; -ModuleConfigProperty_t MERCURY_ZX1_CONFIG_PROPERTIES[MERCURY_ZX1_PROPERTY_COUNT] = { -{ "SoC type\0", 0x08, 4, 4, 7, 0, 2, 0, 3, (ModulePropertyValueKey_t*)&MERCURY_ZX1_SOC_TYPE_VALUE_KEY, 0, 0 }, -{ "SoC speed grade\0", 0x08, 4, 0, 3, 1, 3, 0, 0, NULL, 0, 0 }, -{ "Temperature grade\0", 0x09, 1, 7, 7, 0, 1, 0, 2, (ModulePropertyValueKey_t*)&MERCURY_ZX1_TEMPERATURE_GRADE_VALUE_KEY, 0, 0 }, -{ "Power grade\0", 0x09, 1, 6, 6, 0, 1, 0, 2, (ModulePropertyValueKey_t*)&MERCURY_ZX1_POWER_GRADE_VALUE_KEY, 0, 0 }, -{ "Gigabit Ethernet port count\0", 0x09, 2, 4, 5, 0, 2, 0, 0, NULL, 0, 0 }, -{ "Fast Ethernet port count\0", 0x09, 2, 2, 3, 0, 2, 0, 0, NULL, 0, 0 }, -{ "Real-time clock equipped\0", 0x09, 1, 1, 1, 0, 1, 0, 2, (ModulePropertyValueKey_t*)&MERCURY_ZX1_REAL_TIME_CLOCK_EQUIPPED_VALUE_KEY, 0, 0 }, -{ "USB device port count\0", 0x0A, 2, 0, 1, 0, 3, 0, 0, NULL, 0, 0 }, -{ "DDR3L RAM (PS) size (MB)\0", 0x0B, 4, 4, 7, 0, 8, 8, 0, NULL, 0, 0 }, -{ "DDR3L RAM (PL) size (MB)\0", 0x0B, 4, 0, 3, 0, 6, 8, 0, NULL, 0, 0 }, -{ "SPI flash size (MB)\0", 0x0C, 4, 4, 7, 0, 7, 1, 0, NULL, 0, 0 }, -{ "NAND flash size (MB)\0", 0x0C, 4, 0, 3, 0, 15, 8, 0, NULL, 0, 0 } }; -ModuleConfigProperty_t* g_pConfigProperties = (ModuleConfigProperty_t*)&MERCURY_ZX1_CONFIG_PROPERTIES; -#endif - - -//------------------------------------------------------------------------------------------------- -// Mercury ZX5 -//------------------------------------------------------------------------------------------------- - -#if TARGET_MODULE == MERCURY_ZX5 - -char MERCURY_ZX5_MODULE_NAME[MAX_MODULE_NAME_LENGTH_CHARACTERS] = "Mercury ZX5"; -ModuleConfigProperty_t MERCURY_ZX5_CONFIG_PROPERTIES[MERCURY_ZX5_PROPERTY_COUNT] = { -{ "SoC type\0", 0x08, 4, 4, 7, 0, 1, 0, 2, (ModulePropertyValueKey_t*)&MERCURY_ZX5_SOC_TYPE_VALUE_KEY, 0, 0 }, -{ "SoC speed grade\0", 0x08, 4, 0, 3, 1, 3, 0, 0, NULL, 0, 0 }, -{ "Temperature grade\0", 0x09, 1, 7, 7, 0, 1, 0, 2, (ModulePropertyValueKey_t*)&MERCURY_ZX5_TEMPERATURE_GRADE_VALUE_KEY, 0, 0 }, -{ "Power grade\0", 0x09, 1, 6, 6, 0, 1, 0, 2, (ModulePropertyValueKey_t*)&MERCURY_ZX5_POWER_GRADE_VALUE_KEY, 0, 0 }, -{ "Ethernet port count\0", 0x09, 2, 4, 5, 0, 1, 0, 0, NULL, 0, 0 }, -{ "Ethernet speed\0", 0x09, 1, 3, 3, 0, 1, 0, 2, (ModulePropertyValueKey_t*)&MERCURY_ZX5_ETHERNET_SPEED_VALUE_KEY, 0, 0 }, -{ "Real-time clock equipped\0", 0x09, 1, 2, 2, 0, 1, 0, 2, (ModulePropertyValueKey_t*)&MERCURY_ZX5_REAL_TIME_CLOCK_EQUIPPED_VALUE_KEY, 0, 0 }, -{ "USB device port count\0", 0x0A, 2, 0, 1, 0, 1, 0, 0, NULL, 0, 0 }, -{ "DDR3L RAM size (MB)\0", 0x0B, 4, 4, 7, 0, 15, 8, 0, NULL, 0, 0 }, -{ "SPI flash size (MB)\0", 0x0B, 4, 0, 3, 0, 15, 1, 0, NULL, 0, 0 }, -{ "NAND flash size (MB)\0", 0x0C, 4, 0, 3, 0, 15, 1, 0, NULL, 0, 0 } }; -ModuleConfigProperty_t* g_pConfigProperties = (ModuleConfigProperty_t*)&MERCURY_ZX5_CONFIG_PROPERTIES; -#endif diff --git a/boards/alpha250/patches/fsbl/ModuleConfigConstants.h b/boards/alpha250/patches/fsbl/ModuleConfigConstants.h index d4137bd38..185597631 100644 --- a/boards/alpha250/patches/fsbl/ModuleConfigConstants.h +++ b/boards/alpha250/patches/fsbl/ModuleConfigConstants.h @@ -1,9 +1,3 @@ -/** \file ModuleConfigConstants.h - * \brief Addresses and constants for all module config data stored in module EEPROM. - * Note that this file is automatically generated from EepromMemoryMaps.xml. - * \date 07.01.15 - */ - #pragma once @@ -13,21 +7,9 @@ // Definitions, typedefs and constants //------------------------------------------------------------------------------------------------- - -#define PRODUCT_FAMILY_CODE_MARS_MX1 0x0320 -#define PRODUCT_FAMILY_CODE_MARS_MX2 0x0321 -#define PRODUCT_FAMILY_CODE_MERCURY_CA1 0x0322 -#define PRODUCT_FAMILY_CODE_MARS_ZX2 0x0329 -#define PRODUCT_FAMILY_CODE_MARS_ZX3 0x0323 -#define PRODUCT_FAMILY_CODE_MARS_AX3 0x0324 -#define PRODUCT_FAMILY_CODE_MERCURY_KX1 0x0325 -#define PRODUCT_FAMILY_CODE_MERCURY_SA1 0x0326 -#define PRODUCT_FAMILY_CODE_MERCURY_SA2 0x032A -#define PRODUCT_FAMILY_CODE_MERCURY_ZX1 0x0327 -#define PRODUCT_FAMILY_CODE_MERCURY_ZX5 0x0328 -#define MODULE_INFO_ADDRESS_SERIAL_NUMBER 0x00 #define MODULE_INFO_ADDRESS_PRODUCT_NUMBER 0x04 #define MODULE_INFO_ADDRESS_MAC_ADDRESS 0x10 +#define MODULE_INFO_ADDRESS_SERIAL_NUMBER 0x00 /// Mask defining the position of the product family code in the 32-bit product number. #define PRODUCT_FAMILY_CODE_MASK 0xFFFF0000 @@ -40,12 +22,6 @@ /// Mask defining the position of the product revision number in the 32-bit product number. #define REVISION_NUMBER_MASK 0x000000FF - - -#define MAX_MODULE_NAME_LENGTH_CHARACTERS 32 -#define CONFIGURATION_PROPERTY_NAME_MAXLENGTH_CHARACTERS 64 - - /// Struct for constituent product number elements. typedef struct ProductNumberInfo_t { @@ -54,61 +30,6 @@ typedef struct ProductNumberInfo_t uint8_t revisionNumber; } ProductNumberInfo_t; - -typedef struct -{ - uint8_t value; - char meaning[CONFIGURATION_PROPERTY_NAME_MAXLENGTH_CHARACTERS]; -} ModulePropertyValueKey_t; - - -/** - * \brief Struct used for module config properties. - * - * Note that the valueAsStored and value fields are not constant; these values - * are calculated when the module EEPROM config data is read and parsed using - * Eeprom_ReadModuleConfig(). - */ -typedef struct -{ - /// Description of the configuration property; i.e. "FPGA type" - const char description[CONFIGURATION_PROPERTY_NAME_MAXLENGTH_CHARACTERS]; - - /// The address where the config property is stored in EEPROM - const uint8_t address; - - /// The length of the stored property, in bits - const uint8_t lengthBits; - - /// Zero-based start bit of the stored property, in the byte where it's stored - const uint8_t startBit; - - /// Zero-based end bit of the stored property, in the byte where it's stored - const uint8_t endBit; - - /// Minimum value for the property - const uint8_t minValue; - - /// Maximum value for the property - const uint8_t maxValue; - - /// Resolution for memory sizes; this is zero for other properties - const uint8_t resolution; - - /// The number of keyed values (i.e. raw values which have corresponding text values) - const uint8_t keyValueCount; - - /// Pointer to array of keyed values - const ModulePropertyValueKey_t* pValueKey; - - /// The value of the property, as stored in EEPROM - uint8_t valueAsStored; - - /// The value of the property, translated when a resolution is present - uint32_t value; -} ModuleConfigProperty_t; - - /** * \brief Parse a raw 32-bit product number to its constituent parts. * @@ -125,329 +46,3 @@ static inline ProductNumberInfo_t ParseProductNumber(uint32_t productNumber) return productNumberInfo; } - -//------------------------------------------------------------------------------------------------- -// Global variables -//------------------------------------------------------------------------------------------------- - -/// Pointer to array of configuration properties. -extern ModuleConfigProperty_t* g_pConfigProperties; - -//------------------------------------------------------------------------------------------------- -// Mars AX3 -//------------------------------------------------------------------------------------------------- - -#if TARGET_MODULE == MARS_AX3 -extern char MARS_AX3_MODULE_NAME[]; -extern ModuleConfigProperty_t MARS_AX3_CONFIG_PROPERTIES[]; -extern const ModulePropertyValueKey_t MARS_AX3_FPGA_TYPE_VALUE_KEY[]; -extern const ModulePropertyValueKey_t MARS_AX3_TEMPERATURE_GRADE_VALUE_KEY[]; -extern const ModulePropertyValueKey_t MARS_AX3_POWER_GRADE_VALUE_KEY[]; -extern const ModulePropertyValueKey_t MARS_AX3_ETHERNET_SPEED_VALUE_KEY[]; -extern const ModulePropertyValueKey_t MARS_AX3_REAL_TIME_CLOCK_EQUIPPED_VALUE_KEY[]; -#define MARS_AX3_MAX_CONFIG_PROPERTY_NAME_LENGTH_CHARACTERS 25 -#define MARS_AX3_CONFIG_PROPERTIES_LENGTH_BYTES 4 -#define MARS_AX3_CONFIG_PROPERTIES_START_ADDRESS 0x00000008 -#define MARS_AX3_PROPERTY_COUNT 10 -#define MARS_AX3_CONFIG_PROPERTY_INDEX_FPGA_TYPE 0 -#define MARS_AX3_CONFIG_PROPERTY_INDEX_FPGA_SPEED_GRADE 1 -#define MARS_AX3_CONFIG_PROPERTY_INDEX_TEMPERATURE_GRADE 2 -#define MARS_AX3_CONFIG_PROPERTY_INDEX_POWER_GRADE 3 -#define MARS_AX3_CONFIG_PROPERTY_INDEX_ETHERNET_PORT_COUNT 4 -#define MARS_AX3_CONFIG_PROPERTY_INDEX_ETHERNET_SPEED 5 -#define MARS_AX3_CONFIG_PROPERTY_INDEX_REAL_TIME_CLOCK_EQUIPPED 6 -#define MARS_AX3_CONFIG_PROPERTY_INDEX_USB_DEVICE_PORT_COUNT 7 -#define MARS_AX3_CONFIG_PROPERTY_INDEX_DDR3_RAM_SIZE_MB 8 -#define MARS_AX3_CONFIG_PROPERTY_INDEX_SPI_FLASH_SIZE_MB 9 -#endif - -//------------------------------------------------------------------------------------------------- -// Mars MX1 -//------------------------------------------------------------------------------------------------- - -#if TARGET_MODULE == MARS_MX1 -extern char MARS_MX1_MODULE_NAME[]; -extern ModuleConfigProperty_t MARS_MX1_CONFIG_PROPERTIES[]; -extern const ModulePropertyValueKey_t MARS_MX1_FPGA_TYPE_VALUE_KEY[]; -extern const ModulePropertyValueKey_t MARS_MX1_TEMPERATURE_GRADE_VALUE_KEY[]; -extern const ModulePropertyValueKey_t MARS_MX1_POWER_GRADE_VALUE_KEY[]; -extern const ModulePropertyValueKey_t MARS_MX1_ETHERNET_SPEED_VALUE_KEY[]; -extern const ModulePropertyValueKey_t MARS_MX1_REAL_TIME_CLOCK_EQUIPPED_VALUE_KEY[]; -extern const ModulePropertyValueKey_t MARS_MX1_CURRENT_MONITOR_EQUIPPED_VALUE_KEY[]; -#define MARS_MX1_MAX_CONFIG_PROPERTY_NAME_LENGTH_CHARACTERS 25 -#define MARS_MX1_CONFIG_PROPERTIES_LENGTH_BYTES 4 -#define MARS_MX1_CONFIG_PROPERTIES_START_ADDRESS 0x00000008 -#define MARS_MX1_PROPERTY_COUNT 11 -#define MARS_MX1_CONFIG_PROPERTY_INDEX_FPGA_TYPE 0 -#define MARS_MX1_CONFIG_PROPERTY_INDEX_FPGA_SPEED_GRADE 1 -#define MARS_MX1_CONFIG_PROPERTY_INDEX_TEMPERATURE_GRADE 2 -#define MARS_MX1_CONFIG_PROPERTY_INDEX_POWER_GRADE 3 -#define MARS_MX1_CONFIG_PROPERTY_INDEX_ETHERNET_PORT_COUNT 4 -#define MARS_MX1_CONFIG_PROPERTY_INDEX_ETHERNET_SPEED 5 -#define MARS_MX1_CONFIG_PROPERTY_INDEX_REAL_TIME_CLOCK_EQUIPPED 6 -#define MARS_MX1_CONFIG_PROPERTY_INDEX_CURRENT_MONITOR_EQUIPPED 7 -#define MARS_MX1_CONFIG_PROPERTY_INDEX_USB_DEVICE_PORT_COUNT 8 -#define MARS_MX1_CONFIG_PROPERTY_INDEX_DDR2_RAM_SIZE_MB 9 -#define MARS_MX1_CONFIG_PROPERTY_INDEX_SPI_FLASH_SIZE_MB 10 -#endif - -//------------------------------------------------------------------------------------------------- -// Mars MX2 -//------------------------------------------------------------------------------------------------- - -#if TARGET_MODULE == MARS_MX2 -extern char MARS_MX2_MODULE_NAME[]; -extern ModuleConfigProperty_t MARS_MX2_CONFIG_PROPERTIES[]; -extern const ModulePropertyValueKey_t MARS_MX2_FPGA_TYPE_VALUE_KEY[]; -extern const ModulePropertyValueKey_t MARS_MX2_TEMPERATURE_GRADE_VALUE_KEY[]; -extern const ModulePropertyValueKey_t MARS_MX2_POWER_GRADE_VALUE_KEY[]; -extern const ModulePropertyValueKey_t MARS_MX2_ETHERNET_SPEED_VALUE_KEY[]; -extern const ModulePropertyValueKey_t MARS_MX2_REAL_TIME_CLOCK_EQUIPPED_VALUE_KEY[]; -extern const ModulePropertyValueKey_t MARS_MX2_CURRENT_MONITOR_EQUIPPED_VALUE_KEY[]; -#define MARS_MX2_MAX_CONFIG_PROPERTY_NAME_LENGTH_CHARACTERS 25 -#define MARS_MX2_CONFIG_PROPERTIES_LENGTH_BYTES 4 -#define MARS_MX2_CONFIG_PROPERTIES_START_ADDRESS 0x00000008 -#define MARS_MX2_PROPERTY_COUNT 11 -#define MARS_MX2_CONFIG_PROPERTY_INDEX_FPGA_TYPE 0 -#define MARS_MX2_CONFIG_PROPERTY_INDEX_FPGA_SPEED_GRADE 1 -#define MARS_MX2_CONFIG_PROPERTY_INDEX_TEMPERATURE_GRADE 2 -#define MARS_MX2_CONFIG_PROPERTY_INDEX_POWER_GRADE 3 -#define MARS_MX2_CONFIG_PROPERTY_INDEX_ETHERNET_PORT_COUNT 4 -#define MARS_MX2_CONFIG_PROPERTY_INDEX_ETHERNET_SPEED 5 -#define MARS_MX2_CONFIG_PROPERTY_INDEX_REAL_TIME_CLOCK_EQUIPPED 6 -#define MARS_MX2_CONFIG_PROPERTY_INDEX_CURRENT_MONITOR_EQUIPPED 7 -#define MARS_MX2_CONFIG_PROPERTY_INDEX_USB_DEVICE_PORT_COUNT 8 -#define MARS_MX2_CONFIG_PROPERTY_INDEX_DDR2_RAM_SIZE_MB 9 -#define MARS_MX2_CONFIG_PROPERTY_INDEX_SPI_FLASH_SIZE_MB 10 -#endif - -//------------------------------------------------------------------------------------------------- -// Mars ZX2 -//------------------------------------------------------------------------------------------------- - -#if TARGET_MODULE == MARS_ZX2 -extern char MARS_ZX2_MODULE_NAME[]; -extern ModuleConfigProperty_t MARS_ZX2_CONFIG_PROPERTIES[]; -extern const ModulePropertyValueKey_t MARS_ZX2_SOC_TYPE_VALUE_KEY[]; -extern const ModulePropertyValueKey_t MARS_ZX2_TEMPERATURE_GRADE_VALUE_KEY[]; -extern const ModulePropertyValueKey_t MARS_ZX2_POWER_GRADE_VALUE_KEY[]; -extern const ModulePropertyValueKey_t MARS_ZX2_ETHERNET_SPEED_VALUE_KEY[]; -extern const ModulePropertyValueKey_t MARS_ZX2_REAL_TIME_CLOCK_EQUIPPED_VALUE_KEY[]; -#define MARS_ZX2_MAX_CONFIG_PROPERTY_NAME_LENGTH_CHARACTERS 25 -#define MARS_ZX2_CONFIG_PROPERTIES_LENGTH_BYTES 4 -#define MARS_ZX2_CONFIG_PROPERTIES_START_ADDRESS 0x00000008 -#define MARS_ZX2_PROPERTY_COUNT 10 -#define MARS_ZX2_CONFIG_PROPERTY_INDEX_SOC_TYPE 0 -#define MARS_ZX2_CONFIG_PROPERTY_INDEX_SOC_SPEED_GRADE 1 -#define MARS_ZX2_CONFIG_PROPERTY_INDEX_TEMPERATURE_GRADE 2 -#define MARS_ZX2_CONFIG_PROPERTY_INDEX_POWER_GRADE 3 -#define MARS_ZX2_CONFIG_PROPERTY_INDEX_ETHERNET_PORT_COUNT 4 -#define MARS_ZX2_CONFIG_PROPERTY_INDEX_ETHERNET_SPEED 5 -#define MARS_ZX2_CONFIG_PROPERTY_INDEX_REAL_TIME_CLOCK_EQUIPPED 6 -#define MARS_ZX2_CONFIG_PROPERTY_INDEX_USB_DEVICE_PORT_COUNT 7 -#define MARS_ZX2_CONFIG_PROPERTY_INDEX_DDR3_RAM_SIZE_MB 8 -#define MARS_ZX2_CONFIG_PROPERTY_INDEX_SPI_FLASH_SIZE_MB 9 -#endif - -//------------------------------------------------------------------------------------------------- -// Mars ZX3 -//------------------------------------------------------------------------------------------------- - -#if TARGET_MODULE == MARS_ZX3 -extern char MARS_ZX3_MODULE_NAME[]; -extern ModuleConfigProperty_t MARS_ZX3_CONFIG_PROPERTIES[]; -extern const ModulePropertyValueKey_t MARS_ZX3_SOC_TYPE_VALUE_KEY[]; -extern const ModulePropertyValueKey_t MARS_ZX3_TEMPERATURE_GRADE_VALUE_KEY[]; -extern const ModulePropertyValueKey_t MARS_ZX3_POWER_GRADE_VALUE_KEY[]; -extern const ModulePropertyValueKey_t MARS_ZX3_ETHERNET_SPEED_VALUE_KEY[]; -extern const ModulePropertyValueKey_t MARS_ZX3_REAL_TIME_CLOCK_EQUIPPED_VALUE_KEY[]; -#define MARS_ZX3_MAX_CONFIG_PROPERTY_NAME_LENGTH_CHARACTERS 25 -#define MARS_ZX3_CONFIG_PROPERTIES_LENGTH_BYTES 5 -#define MARS_ZX3_CONFIG_PROPERTIES_START_ADDRESS 0x00000008 -#define MARS_ZX3_PROPERTY_COUNT 11 -#define MARS_ZX3_CONFIG_PROPERTY_INDEX_SOC_TYPE 0 -#define MARS_ZX3_CONFIG_PROPERTY_INDEX_SOC_SPEED_GRADE 1 -#define MARS_ZX3_CONFIG_PROPERTY_INDEX_TEMPERATURE_GRADE 2 -#define MARS_ZX3_CONFIG_PROPERTY_INDEX_POWER_GRADE 3 -#define MARS_ZX3_CONFIG_PROPERTY_INDEX_ETHERNET_PORT_COUNT 4 -#define MARS_ZX3_CONFIG_PROPERTY_INDEX_ETHERNET_SPEED 5 -#define MARS_ZX3_CONFIG_PROPERTY_INDEX_REAL_TIME_CLOCK_EQUIPPED 6 -#define MARS_ZX3_CONFIG_PROPERTY_INDEX_USB_DEVICE_PORT_COUNT 7 -#define MARS_ZX3_CONFIG_PROPERTY_INDEX_DDR3_RAM_SIZE_MB 8 -#define MARS_ZX3_CONFIG_PROPERTY_INDEX_SPI_FLASH_SIZE_MB 9 -#define MARS_ZX3_CONFIG_PROPERTY_INDEX_NAND_FLASH_SIZE_MB 10 -#endif - -//------------------------------------------------------------------------------------------------- -// Mercury CA1 -//------------------------------------------------------------------------------------------------- - -#if TARGET_MODULE == MERCURY_CA1 -extern char MERCURY_CA1_MODULE_NAME[]; -extern ModuleConfigProperty_t MERCURY_CA1_CONFIG_PROPERTIES[]; -extern const ModulePropertyValueKey_t MERCURY_CA1_FPGA_TYPE_VALUE_KEY[]; -extern const ModulePropertyValueKey_t MERCURY_CA1_TEMPERATURE_GRADE_VALUE_KEY[]; -extern const ModulePropertyValueKey_t MERCURY_CA1_POWER_GRADE_VALUE_KEY[]; -extern const ModulePropertyValueKey_t MERCURY_CA1_ETHERNET_SPEED_VALUE_KEY[]; -extern const ModulePropertyValueKey_t MERCURY_CA1_REAL_TIME_CLOCK_EQUIPPED_VALUE_KEY[]; -extern const ModulePropertyValueKey_t MERCURY_CA1_CURRENT_MONITOR_EQUIPPED_VALUE_KEY[]; -#define MERCURY_CA1_MAX_CONFIG_PROPERTY_NAME_LENGTH_CHARACTERS 25 -#define MERCURY_CA1_CONFIG_PROPERTIES_LENGTH_BYTES 4 -#define MERCURY_CA1_CONFIG_PROPERTIES_START_ADDRESS 0x00000008 -#define MERCURY_CA1_PROPERTY_COUNT 11 -#define MERCURY_CA1_CONFIG_PROPERTY_INDEX_FPGA_TYPE 0 -#define MERCURY_CA1_CONFIG_PROPERTY_INDEX_FPGA_SPEED_GRADE 1 -#define MERCURY_CA1_CONFIG_PROPERTY_INDEX_TEMPERATURE_GRADE 2 -#define MERCURY_CA1_CONFIG_PROPERTY_INDEX_POWER_GRADE 3 -#define MERCURY_CA1_CONFIG_PROPERTY_INDEX_ETHERNET_PORT_COUNT 4 -#define MERCURY_CA1_CONFIG_PROPERTY_INDEX_ETHERNET_SPEED 5 -#define MERCURY_CA1_CONFIG_PROPERTY_INDEX_REAL_TIME_CLOCK_EQUIPPED 6 -#define MERCURY_CA1_CONFIG_PROPERTY_INDEX_CURRENT_MONITOR_EQUIPPED 7 -#define MERCURY_CA1_CONFIG_PROPERTY_INDEX_USB_DEVICE_PORT_COUNT 8 -#define MERCURY_CA1_CONFIG_PROPERTY_INDEX_DDR2_RAM_SIZE_MB 9 -#define MERCURY_CA1_CONFIG_PROPERTY_INDEX_SPI_FLASH_SIZE_MB 10 -#endif - -//------------------------------------------------------------------------------------------------- -// Mercury KX1 -//------------------------------------------------------------------------------------------------- - -#if TARGET_MODULE == MERCURY_KX1 -extern char MERCURY_KX1_MODULE_NAME[]; -extern ModuleConfigProperty_t MERCURY_KX1_CONFIG_PROPERTIES[]; -extern const ModulePropertyValueKey_t MERCURY_KX1_FPGA_TYPE_VALUE_KEY[]; -extern const ModulePropertyValueKey_t MERCURY_KX1_TEMPERATURE_GRADE_VALUE_KEY[]; -extern const ModulePropertyValueKey_t MERCURY_KX1_POWER_GRADE_VALUE_KEY[]; -extern const ModulePropertyValueKey_t MERCURY_KX1_ETHERNET_SPEED_VALUE_KEY[]; -extern const ModulePropertyValueKey_t MERCURY_KX1_REAL_TIME_CLOCK_EQUIPPED_VALUE_KEY[]; -#define MERCURY_KX1_MAX_CONFIG_PROPERTY_NAME_LENGTH_CHARACTERS 29 -#define MERCURY_KX1_CONFIG_PROPERTIES_LENGTH_BYTES 5 -#define MERCURY_KX1_CONFIG_PROPERTIES_START_ADDRESS 0x00000008 -#define MERCURY_KX1_PROPERTY_COUNT 11 -#define MERCURY_KX1_CONFIG_PROPERTY_INDEX_FPGA_TYPE 0 -#define MERCURY_KX1_CONFIG_PROPERTY_INDEX_FPGA_SPEED_GRADE 1 -#define MERCURY_KX1_CONFIG_PROPERTY_INDEX_TEMPERATURE_GRADE 2 -#define MERCURY_KX1_CONFIG_PROPERTY_INDEX_POWER_GRADE 3 -#define MERCURY_KX1_CONFIG_PROPERTY_INDEX_ETHERNET_PORT_COUNT 4 -#define MERCURY_KX1_CONFIG_PROPERTY_INDEX_ETHERNET_SPEED 5 -#define MERCURY_KX1_CONFIG_PROPERTY_INDEX_REAL_TIME_CLOCK_EQUIPPED 6 -#define MERCURY_KX1_CONFIG_PROPERTY_INDEX_USB_DEVICE_PORT_COUNT 7 -#define MERCURY_KX1_CONFIG_PROPERTY_INDEX_DDR3_RAM_SIZE_MB 8 -#define MERCURY_KX1_CONFIG_PROPERTY_INDEX_SPI_FLASH_SIZE_MB 9 -#define MERCURY_KX1_CONFIG_PROPERTY_INDEX_SECONDARY_DDR3_RAM_SIZE_MB 10 -#endif - -//------------------------------------------------------------------------------------------------- -// Mercury SA1 -//------------------------------------------------------------------------------------------------- - -#if TARGET_MODULE == MERCURY_SA1 -extern char MERCURY_SA1_MODULE_NAME[]; -extern ModuleConfigProperty_t MERCURY_SA1_CONFIG_PROPERTIES[]; -extern const ModulePropertyValueKey_t MERCURY_SA1_SOC_TYPE_VALUE_KEY[]; -extern const ModulePropertyValueKey_t MERCURY_SA1_TEMPERATURE_GRADE_VALUE_KEY[]; -extern const ModulePropertyValueKey_t MERCURY_SA1_POWER_GRADE_VALUE_KEY[]; -extern const ModulePropertyValueKey_t MERCURY_SA1_ETHERNET_SPEED_VALUE_KEY[]; -extern const ModulePropertyValueKey_t MERCURY_SA1_REAL_TIME_CLOCK_EQUIPPED_VALUE_KEY[]; -#define MERCURY_SA1_MAX_CONFIG_PROPERTY_NAME_LENGTH_CHARACTERS 25 -#define MERCURY_SA1_CONFIG_PROPERTIES_LENGTH_BYTES 4 -#define MERCURY_SA1_CONFIG_PROPERTIES_START_ADDRESS 0x00000008 -#define MERCURY_SA1_PROPERTY_COUNT 10 -#define MERCURY_SA1_CONFIG_PROPERTY_INDEX_SOC_TYPE 0 -#define MERCURY_SA1_CONFIG_PROPERTY_INDEX_SOC_SPEED_GRADE 1 -#define MERCURY_SA1_CONFIG_PROPERTY_INDEX_TEMPERATURE_GRADE 2 -#define MERCURY_SA1_CONFIG_PROPERTY_INDEX_POWER_GRADE 3 -#define MERCURY_SA1_CONFIG_PROPERTY_INDEX_ETHERNET_PORT_COUNT 4 -#define MERCURY_SA1_CONFIG_PROPERTY_INDEX_ETHERNET_SPEED 5 -#define MERCURY_SA1_CONFIG_PROPERTY_INDEX_REAL_TIME_CLOCK_EQUIPPED 6 -#define MERCURY_SA1_CONFIG_PROPERTY_INDEX_USB_PORT_COUNT 7 -#define MERCURY_SA1_CONFIG_PROPERTY_INDEX_DDR3L_RAM_SIZE_MB 8 -#define MERCURY_SA1_CONFIG_PROPERTY_INDEX_SPI_FLASH_SIZE_MB 9 -#endif - -//------------------------------------------------------------------------------------------------- -// Mercury SA2 -//------------------------------------------------------------------------------------------------- - -#if TARGET_MODULE == MERCURY_SA2 -extern char MERCURY_SA2_MODULE_NAME[]; -extern ModuleConfigProperty_t MERCURY_SA2_CONFIG_PROPERTIES[]; -extern const ModulePropertyValueKey_t MERCURY_SA2_SOC_TYPE_VALUE_KEY[]; -extern const ModulePropertyValueKey_t MERCURY_SA2_TEMPERATURE_GRADE_VALUE_KEY[]; -extern const ModulePropertyValueKey_t MERCURY_SA2_POWER_GRADE_VALUE_KEY[]; -extern const ModulePropertyValueKey_t MERCURY_SA2_REAL_TIME_CLOCK_EQUIPPED_VALUE_KEY[]; -#define MERCURY_SA2_MAX_CONFIG_PROPERTY_NAME_LENGTH_CHARACTERS 28 -#define MERCURY_SA2_CONFIG_PROPERTIES_LENGTH_BYTES 4 -#define MERCURY_SA2_CONFIG_PROPERTIES_START_ADDRESS 0x00000008 -#define MERCURY_SA2_PROPERTY_COUNT 11 -#define MERCURY_SA2_CONFIG_PROPERTY_INDEX_SOC_TYPE 0 -#define MERCURY_SA2_CONFIG_PROPERTY_INDEX_SOC_SPEED_GRADE 1 -#define MERCURY_SA2_CONFIG_PROPERTY_INDEX_TEMPERATURE_GRADE 2 -#define MERCURY_SA2_CONFIG_PROPERTY_INDEX_POWER_GRADE 3 -#define MERCURY_SA2_CONFIG_PROPERTY_INDEX_FAST_ETHERNET_PORT_COUNT 4 -#define MERCURY_SA2_CONFIG_PROPERTY_INDEX_GIGABIT_ETHERNET_PORT_COUNT 5 -#define MERCURY_SA2_CONFIG_PROPERTY_INDEX_REAL_TIME_CLOCK_EQUIPPED 6 -#define MERCURY_SA2_CONFIG_PROPERTY_INDEX_USB_2_0_PORT_COUNT 7 -#define MERCURY_SA2_CONFIG_PROPERTY_INDEX_USB_3_0_PORT_COUNT 8 -#define MERCURY_SA2_CONFIG_PROPERTY_INDEX_DDR3L_RAM_SIZE_MB 9 -#define MERCURY_SA2_CONFIG_PROPERTY_INDEX_SPI_FLASH_SIZE_MB 10 -#endif - -//------------------------------------------------------------------------------------------------- -// Mercury ZX1 -//------------------------------------------------------------------------------------------------- - -#if TARGET_MODULE == MERCURY_ZX1 -extern char MERCURY_ZX1_MODULE_NAME[]; -extern ModuleConfigProperty_t MERCURY_ZX1_CONFIG_PROPERTIES[]; -extern const ModulePropertyValueKey_t MERCURY_ZX1_SOC_TYPE_VALUE_KEY[]; -extern const ModulePropertyValueKey_t MERCURY_ZX1_TEMPERATURE_GRADE_VALUE_KEY[]; -extern const ModulePropertyValueKey_t MERCURY_ZX1_POWER_GRADE_VALUE_KEY[]; -extern const ModulePropertyValueKey_t MERCURY_ZX1_REAL_TIME_CLOCK_EQUIPPED_VALUE_KEY[]; -#define MERCURY_ZX1_MAX_CONFIG_PROPERTY_NAME_LENGTH_CHARACTERS 28 -#define MERCURY_ZX1_CONFIG_PROPERTIES_LENGTH_BYTES 5 -#define MERCURY_ZX1_CONFIG_PROPERTIES_START_ADDRESS 0x00000008 -#define MERCURY_ZX1_PROPERTY_COUNT 12 -#define MERCURY_ZX1_CONFIG_PROPERTY_INDEX_SOC_TYPE 0 -#define MERCURY_ZX1_CONFIG_PROPERTY_INDEX_SOC_SPEED_GRADE 1 -#define MERCURY_ZX1_CONFIG_PROPERTY_INDEX_TEMPERATURE_GRADE 2 -#define MERCURY_ZX1_CONFIG_PROPERTY_INDEX_POWER_GRADE 3 -#define MERCURY_ZX1_CONFIG_PROPERTY_INDEX_GIGABIT_ETHERNET_PORT_COUNT 4 -#define MERCURY_ZX1_CONFIG_PROPERTY_INDEX_FAST_ETHERNET_PORT_COUNT 5 -#define MERCURY_ZX1_CONFIG_PROPERTY_INDEX_REAL_TIME_CLOCK_EQUIPPED 6 -#define MERCURY_ZX1_CONFIG_PROPERTY_INDEX_USB_DEVICE_PORT_COUNT 7 -#define MERCURY_ZX1_CONFIG_PROPERTY_INDEX_DDR3L_RAM_PS_SIZE_MB 8 -#define MERCURY_ZX1_CONFIG_PROPERTY_INDEX_DDR3L_RAM_PL_SIZE_MB 9 -#define MERCURY_ZX1_CONFIG_PROPERTY_INDEX_SPI_FLASH_SIZE_MB 10 -#define MERCURY_ZX1_CONFIG_PROPERTY_INDEX_NAND_FLASH_SIZE_MB 11 -#endif - -//------------------------------------------------------------------------------------------------- -// Mercury ZX5 -//------------------------------------------------------------------------------------------------- - -#if TARGET_MODULE == MERCURY_ZX5 -extern char MERCURY_ZX5_MODULE_NAME[]; -extern ModuleConfigProperty_t MERCURY_ZX5_CONFIG_PROPERTIES[]; -extern const ModulePropertyValueKey_t MERCURY_ZX5_SOC_TYPE_VALUE_KEY[]; -extern const ModulePropertyValueKey_t MERCURY_ZX5_TEMPERATURE_GRADE_VALUE_KEY[]; -extern const ModulePropertyValueKey_t MERCURY_ZX5_POWER_GRADE_VALUE_KEY[]; -extern const ModulePropertyValueKey_t MERCURY_ZX5_ETHERNET_SPEED_VALUE_KEY[]; -extern const ModulePropertyValueKey_t MERCURY_ZX5_REAL_TIME_CLOCK_EQUIPPED_VALUE_KEY[]; -#define MERCURY_ZX5_MAX_CONFIG_PROPERTY_NAME_LENGTH_CHARACTERS 25 -#define MERCURY_ZX5_CONFIG_PROPERTIES_LENGTH_BYTES 5 -#define MERCURY_ZX5_CONFIG_PROPERTIES_START_ADDRESS 0x00000008 -#define MERCURY_ZX5_PROPERTY_COUNT 11 -#define MERCURY_ZX5_CONFIG_PROPERTY_INDEX_SOC_TYPE 0 -#define MERCURY_ZX5_CONFIG_PROPERTY_INDEX_SOC_SPEED_GRADE 1 -#define MERCURY_ZX5_CONFIG_PROPERTY_INDEX_TEMPERATURE_GRADE 2 -#define MERCURY_ZX5_CONFIG_PROPERTY_INDEX_POWER_GRADE 3 -#define MERCURY_ZX5_CONFIG_PROPERTY_INDEX_ETHERNET_PORT_COUNT 4 -#define MERCURY_ZX5_CONFIG_PROPERTY_INDEX_ETHERNET_SPEED 5 -#define MERCURY_ZX5_CONFIG_PROPERTY_INDEX_REAL_TIME_CLOCK_EQUIPPED 6 -#define MERCURY_ZX5_CONFIG_PROPERTY_INDEX_USB_DEVICE_PORT_COUNT 7 -#define MERCURY_ZX5_CONFIG_PROPERTY_INDEX_DDR3L_RAM_SIZE_MB 8 -#define MERCURY_ZX5_CONFIG_PROPERTY_INDEX_SPI_FLASH_SIZE_MB 9 -#define MERCURY_ZX5_CONFIG_PROPERTY_INDEX_NAND_FLASH_SIZE_MB 10 -#endif - diff --git a/boards/alpha250/patches/fsbl/ModuleConfigValueKeys.c b/boards/alpha250/patches/fsbl/ModuleConfigValueKeys.c deleted file mode 100644 index c226176c1..000000000 --- a/boards/alpha250/patches/fsbl/ModuleConfigValueKeys.c +++ /dev/null @@ -1,315 +0,0 @@ -#include "ModuleConfigConstants.h" - -//------------------------------------------------------------------------------------------------- -// Mars AX3 -//------------------------------------------------------------------------------------------------- - -#if TARGET_MODULE == MARS_AX3 - const ModulePropertyValueKey_t MARS_AX3_FPGA_TYPE_VALUE_KEY[4] = { -{1, "Xilinx Artix-7 XC7A35T\0" }, -{2, "Xilinx Artix-7 XC7A50T\0" }, -{3, "Xilinx Artix-7 XC7A75T\0" }, -{4, "Xilinx Artix-7 XC7A100T\0" } - }; - const ModulePropertyValueKey_t MARS_AX3_TEMPERATURE_GRADE_VALUE_KEY[2] = { -{0, "Commercial\0" }, -{1, "Industrial\0" } - }; - const ModulePropertyValueKey_t MARS_AX3_POWER_GRADE_VALUE_KEY[2] = { -{0, "Normal\0" }, -{1, "Low power\0" } - }; - const ModulePropertyValueKey_t MARS_AX3_ETHERNET_SPEED_VALUE_KEY[2] = { -{0, "Fast\0" }, -{1, "Gigabit\0" } - }; - const ModulePropertyValueKey_t MARS_AX3_REAL_TIME_CLOCK_EQUIPPED_VALUE_KEY[2] = { -{0, "No\0" }, -{1, "Yes\0" } - }; -#endif - -//------------------------------------------------------------------------------------------------- -// Mars MX1 -//------------------------------------------------------------------------------------------------- - -#if TARGET_MODULE == MARS_MX1 - const ModulePropertyValueKey_t MARS_MX1_FPGA_TYPE_VALUE_KEY[4] = { -{0, "Xilinx Spartan-6 XC6SLX9\0" }, -{1, "Xilinx Spartan-6 XC6SLX16\0" }, -{2, "Xilinx Spartan-6 XC6SLX25\0" }, -{3, "Xilinx Spartan-6 XC6SLX45\0" } - }; - const ModulePropertyValueKey_t MARS_MX1_TEMPERATURE_GRADE_VALUE_KEY[2] = { -{0, "Commercial\0" }, -{1, "Industrial\0" } - }; - const ModulePropertyValueKey_t MARS_MX1_POWER_GRADE_VALUE_KEY[2] = { -{0, "Normal\0" }, -{1, "Low power\0" } - }; - const ModulePropertyValueKey_t MARS_MX1_ETHERNET_SPEED_VALUE_KEY[2] = { -{0, "Fast\0" }, -{1, "Gigabit\0" } - }; - const ModulePropertyValueKey_t MARS_MX1_REAL_TIME_CLOCK_EQUIPPED_VALUE_KEY[2] = { -{0, "No\0" }, -{1, "Yes\0" } - }; - const ModulePropertyValueKey_t MARS_MX1_CURRENT_MONITOR_EQUIPPED_VALUE_KEY[2] = { -{0, "No\0" }, -{1, "Yes\0" } - }; -#endif - -//------------------------------------------------------------------------------------------------- -// Mars MX2 -//------------------------------------------------------------------------------------------------- - -#if TARGET_MODULE == MARS_MX2 - const ModulePropertyValueKey_t MARS_MX2_FPGA_TYPE_VALUE_KEY[2] = { -{0, "Xilinx Spartan-6 XC6SLX25T\0" }, -{1, "Xilinx Spartan-6 XC6SLX45T\0" } - }; - const ModulePropertyValueKey_t MARS_MX2_TEMPERATURE_GRADE_VALUE_KEY[2] = { -{0, "Commercial\0" }, -{1, "Industrial\0" } - }; - const ModulePropertyValueKey_t MARS_MX2_POWER_GRADE_VALUE_KEY[2] = { -{0, "Normal\0" }, -{1, "Low power\0" } - }; - const ModulePropertyValueKey_t MARS_MX2_ETHERNET_SPEED_VALUE_KEY[2] = { -{0, "Fast\0" }, -{1, "Gigabit\0" } - }; - const ModulePropertyValueKey_t MARS_MX2_REAL_TIME_CLOCK_EQUIPPED_VALUE_KEY[2] = { -{0, "No\0" }, -{1, "Yes\0" } - }; - const ModulePropertyValueKey_t MARS_MX2_CURRENT_MONITOR_EQUIPPED_VALUE_KEY[2] = { -{0, "No\0" }, -{1, "Yes\0" } - }; -#endif - -//------------------------------------------------------------------------------------------------- -// Mars ZX2 -//------------------------------------------------------------------------------------------------- - -#if TARGET_MODULE == MARS_ZX2 - const ModulePropertyValueKey_t MARS_ZX2_SOC_TYPE_VALUE_KEY[2] = { -{0, "Xilinx Zynq-7000 XC7Z010\0" }, -{1, "Xilinx Zynq-7020 XC7Z020\0" } - }; - const ModulePropertyValueKey_t MARS_ZX2_TEMPERATURE_GRADE_VALUE_KEY[2] = { -{0, "Commercial\0" }, -{1, "Industrial\0" } - }; - const ModulePropertyValueKey_t MARS_ZX2_POWER_GRADE_VALUE_KEY[2] = { -{0, "Normal\0" }, -{1, "Low power\0" } - }; - const ModulePropertyValueKey_t MARS_ZX2_ETHERNET_SPEED_VALUE_KEY[2] = { -{0, "Fast\0" }, -{1, "Gigabit\0" } - }; - const ModulePropertyValueKey_t MARS_ZX2_REAL_TIME_CLOCK_EQUIPPED_VALUE_KEY[2] = { -{0, "No\0" }, -{1, "Yes\0" } - }; -#endif - -//------------------------------------------------------------------------------------------------- -// Mars ZX3 -//------------------------------------------------------------------------------------------------- - -#if TARGET_MODULE == MARS_ZX3 - const ModulePropertyValueKey_t MARS_ZX3_SOC_TYPE_VALUE_KEY[2] = { -{0, "Xilinx Zynq-7020 XC7Z020\0" }, -{1, "Xilinx Zynq-7020 XC7Z020\0" } - }; - const ModulePropertyValueKey_t MARS_ZX3_TEMPERATURE_GRADE_VALUE_KEY[2] = { -{0, "Commercial\0" }, -{1, "Industrial\0" } - }; - const ModulePropertyValueKey_t MARS_ZX3_POWER_GRADE_VALUE_KEY[2] = { -{0, "Normal\0" }, -{1, "Low power\0" } - }; - const ModulePropertyValueKey_t MARS_ZX3_ETHERNET_SPEED_VALUE_KEY[2] = { -{0, "Fast\0" }, -{1, "Gigabit\0" } - }; - const ModulePropertyValueKey_t MARS_ZX3_REAL_TIME_CLOCK_EQUIPPED_VALUE_KEY[2] = { -{0, "No\0" }, -{1, "Yes\0" } - }; -#endif - -//------------------------------------------------------------------------------------------------- -// Mercury CA1 -//------------------------------------------------------------------------------------------------- - -#if TARGET_MODULE == MERCURY_CA1 - const ModulePropertyValueKey_t MERCURY_CA1_FPGA_TYPE_VALUE_KEY[5] = { -{0, "Altera Cyclone IV E30\0" }, -{1, "Altera Cyclone IV E40\0" }, -{2, "Altera Cyclone IV E55\0" }, -{3, "Altera Cyclone IV E75\0" }, -{4, "Altera Cyclone IV E115\0" } - }; - const ModulePropertyValueKey_t MERCURY_CA1_TEMPERATURE_GRADE_VALUE_KEY[2] = { -{0, "Commercial\0" }, -{1, "Industrial\0" } - }; - const ModulePropertyValueKey_t MERCURY_CA1_POWER_GRADE_VALUE_KEY[2] = { -{0, "Normal\0" }, -{1, "Low power\0" } - }; - const ModulePropertyValueKey_t MERCURY_CA1_ETHERNET_SPEED_VALUE_KEY[2] = { -{0, "Fast\0" }, -{1, "Gigabit\0" } - }; - const ModulePropertyValueKey_t MERCURY_CA1_REAL_TIME_CLOCK_EQUIPPED_VALUE_KEY[2] = { -{0, "No\0" }, -{1, "Yes\0" } - }; - const ModulePropertyValueKey_t MERCURY_CA1_CURRENT_MONITOR_EQUIPPED_VALUE_KEY[2] = { -{0, "No\0" }, -{1, "Yes\0" } - }; -#endif - -//------------------------------------------------------------------------------------------------- -// Mercury KX1 -//------------------------------------------------------------------------------------------------- - -#if TARGET_MODULE == MERCURY_KX1 - const ModulePropertyValueKey_t MERCURY_KX1_FPGA_TYPE_VALUE_KEY[6] = { -{0, "Xilinx Kintex-7 XC7K160T-1FBG676C\0" }, -{1, "Xilinx Kintex-7 XC7K325T-1FBG676C\0" }, -{2, "Xilinx Kintex-7 XC7K410T-1FBG676C\0" }, -{3, "Xilinx Kintex-7 XC7K160T-2FFG676I\0" }, -{4, "Xilinx Kintex-7 XC7K325T-2FFG676I\0" }, -{5, "Xilinx Kintex-7 XC7K410T-2FFG676I\0" } - }; - const ModulePropertyValueKey_t MERCURY_KX1_TEMPERATURE_GRADE_VALUE_KEY[2] = { -{0, "Commercial\0" }, -{1, "Industrial\0" } - }; - const ModulePropertyValueKey_t MERCURY_KX1_POWER_GRADE_VALUE_KEY[2] = { -{0, "Normal\0" }, -{1, "Low power\0" } - }; - const ModulePropertyValueKey_t MERCURY_KX1_ETHERNET_SPEED_VALUE_KEY[2] = { -{0, "Fast\0" }, -{1, "Gigabit\0" } - }; - const ModulePropertyValueKey_t MERCURY_KX1_REAL_TIME_CLOCK_EQUIPPED_VALUE_KEY[2] = { -{0, "No\0" }, -{1, "Yes\0" } - }; -#endif - -//------------------------------------------------------------------------------------------------- -// Mercury SA1 -//------------------------------------------------------------------------------------------------- - -#if TARGET_MODULE == MERCURY_SA1 - const ModulePropertyValueKey_t MERCURY_SA1_SOC_TYPE_VALUE_KEY[3] = { -{0, "Altera Cyclone V 5CSEBA2U23\0" }, -{1, "Altera Cyclone V 5CSXFC4C6U23\0" }, -{2, "Altera Cyclone V 5CSXFC6C6U23\0" } - }; - const ModulePropertyValueKey_t MERCURY_SA1_TEMPERATURE_GRADE_VALUE_KEY[2] = { -{0, "Commercial\0" }, -{1, "Industrial\0" } - }; - const ModulePropertyValueKey_t MERCURY_SA1_POWER_GRADE_VALUE_KEY[2] = { -{0, "Normal\0" }, -{1, "Low power\0" } - }; - const ModulePropertyValueKey_t MERCURY_SA1_ETHERNET_SPEED_VALUE_KEY[2] = { -{0, "Fast\0" }, -{1, "Gigabit\0" } - }; - const ModulePropertyValueKey_t MERCURY_SA1_REAL_TIME_CLOCK_EQUIPPED_VALUE_KEY[2] = { -{0, "No\0" }, -{1, "Yes\0" } - }; -#endif - -//------------------------------------------------------------------------------------------------- -// Mercury SA2 -//------------------------------------------------------------------------------------------------- - -#if TARGET_MODULE == MERCURY_SA2 - const ModulePropertyValueKey_t MERCURY_SA2_SOC_TYPE_VALUE_KEY[1] = { -{0, "Altera Cyclone V 5CSTFD6D5F31\0" } - }; - const ModulePropertyValueKey_t MERCURY_SA2_TEMPERATURE_GRADE_VALUE_KEY[2] = { -{0, "Commercial\0" }, -{1, "Industrial\0" } - }; - const ModulePropertyValueKey_t MERCURY_SA2_POWER_GRADE_VALUE_KEY[2] = { -{0, "Normal\0" }, -{1, "Low power\0" } - }; - const ModulePropertyValueKey_t MERCURY_SA2_REAL_TIME_CLOCK_EQUIPPED_VALUE_KEY[2] = { -{0, "No\0" }, -{1, "Yes\0" } - }; -#endif - -//------------------------------------------------------------------------------------------------- -// Mercury ZX1 -//------------------------------------------------------------------------------------------------- - -#if TARGET_MODULE == MERCURY_ZX1 - const ModulePropertyValueKey_t MERCURY_ZX1_SOC_TYPE_VALUE_KEY[3] = { -{0, "Xilinx Zynq-7030 XC7Z030-2FBG676\0" }, -{1, "Xilinx Zynq-7035 XC7Z035-2FBG676\0" }, -{2, "Xilinx Zynq-7045 XC7Z045-2FFG676\0" } - }; - const ModulePropertyValueKey_t MERCURY_ZX1_TEMPERATURE_GRADE_VALUE_KEY[2] = { -{0, "Commercial\0" }, -{1, "Industrial\0" } - }; - const ModulePropertyValueKey_t MERCURY_ZX1_POWER_GRADE_VALUE_KEY[2] = { -{0, "Normal\0" }, -{1, "Low power\0" } - }; - const ModulePropertyValueKey_t MERCURY_ZX1_REAL_TIME_CLOCK_EQUIPPED_VALUE_KEY[2] = { -{0, "No\0" }, -{1, "Yes\0" } - }; -#endif - -//------------------------------------------------------------------------------------------------- -// Mercury ZX5 -//------------------------------------------------------------------------------------------------- - -#if TARGET_MODULE == MERCURY_ZX5 - const ModulePropertyValueKey_t MERCURY_ZX5_SOC_TYPE_VALUE_KEY[2] = { -{0, "Xilinx Zynq-7015 XC7Z015\0" }, -{1, "Xilinx Zynq-7030 XC7Z030\0" } - }; - const ModulePropertyValueKey_t MERCURY_ZX5_TEMPERATURE_GRADE_VALUE_KEY[2] = { -{0, "Commercial\0" }, -{1, "Industrial\0" } - }; - const ModulePropertyValueKey_t MERCURY_ZX5_POWER_GRADE_VALUE_KEY[2] = { -{0, "Normal\0" }, -{1, "Low power\0" } - }; - const ModulePropertyValueKey_t MERCURY_ZX5_ETHERNET_SPEED_VALUE_KEY[2] = { -{0, "Fast\0" }, -{1, "Gigabit\0" } - }; - const ModulePropertyValueKey_t MERCURY_ZX5_REAL_TIME_CLOCK_EQUIPPED_VALUE_KEY[2] = { -{0, "No\0" }, -{1, "Yes\0" } - }; -#endif - diff --git a/boards/alpha250/patches/fsbl/ModuleEeprom.c b/boards/alpha250/patches/fsbl/ModuleEeprom.c index 3900fbff2..3f9446416 100644 --- a/boards/alpha250/patches/fsbl/ModuleEeprom.c +++ b/boards/alpha250/patches/fsbl/ModuleEeprom.c @@ -19,34 +19,6 @@ // Directives, typedefs and constants //------------------------------------------------------------------------------------------------- - -/** - * \brief Enum for EEPROM device types, with I2C addresses assigned as values. - */ -typedef enum -{ - - /// Maxim DS28CN01 - EEepromDevice_MaximDs28cn01_0 = 0x5C, - - /// Maxim DS28CN01 - EEepromDevice_MaximDs28cn01_1 = 0x50, - - /// Atmel ATSHA204A - EEepromDevice_AtmelAtsha204a = 0x64, - -} EEepromDevice_t; - - - - - -/// Array of all possible EEPROM device addresses -const uint8_t EEPROM_DEVICE_ADDRESSES[3] = { EEepromDevice_MaximDs28cn01_0, EEepromDevice_MaximDs28cn01_1, EEepromDevice_AtmelAtsha204a }; - -/// EEPROM device type for the detected EEPROM -EEepromDevice_t g_EepromDeviceType; - /// Module serial number uint32_t g_moduleSerialNumber; @@ -68,7 +40,6 @@ uint64_t g_macAddress; */ EN_RESULT DetermineEepromType() { - g_EepromDeviceType = (EEepromDevice_t)EEepromDevice_AtmelAtsha204a; return EN_SUCCESS; } diff --git a/boards/alpha250/patches/fsbl/ModuleEeprom.h b/boards/alpha250/patches/fsbl/ModuleEeprom.h index 95e7d9f15..02f743576 100644 --- a/boards/alpha250/patches/fsbl/ModuleEeprom.h +++ b/boards/alpha250/patches/fsbl/ModuleEeprom.h @@ -20,16 +20,6 @@ // EEPROM function declarations //------------------------------------------------------------------------------------------------- -/** - * brief Initialise the EEPROM. - * - * This function checks possible module EEPROM I2C device address to determine which kind of - * EEPROM is present. Note that the I2C interface must be initialised before this function is called. - * @return Result code - */ -EN_RESULT Eeprom_Initialise(); - - /** * \brief Read the module EEPROM. * diff --git a/boards/alpha250/patches/fsbl/StandardIncludes.h b/boards/alpha250/patches/fsbl/StandardIncludes.h index 0074ffcdf..0e64a6338 100644 --- a/boards/alpha250/patches/fsbl/StandardIncludes.h +++ b/boards/alpha250/patches/fsbl/StandardIncludes.h @@ -1,6 +1,5 @@ #pragma once -#include "SystemDefinitions.h" #include "ErrorCodes.h" #include diff --git a/boards/alpha250/patches/fsbl/SystemDefinitions.h b/boards/alpha250/patches/fsbl/SystemDefinitions.h deleted file mode 100644 index 3660d0f95..000000000 --- a/boards/alpha250/patches/fsbl/SystemDefinitions.h +++ /dev/null @@ -1,36 +0,0 @@ -/** - * \file SystemDefinitions.h - * \brief This file contains top-level system definitions for module tests and reference designs. - */ - -#pragma once - -//------------------------------------------------------------------------------------------------- -// System clock frequency -//------------------------------------------------------------------------------------------------- - -#define SYSTEM_CLOCK_FREQUENCY_HZ 100000000 - -//------------------------------------------------------------------------------------------------- -// Printf definitions -//------------------------------------------------------------------------------------------------- - -#include "xil_printf.h" -#define EN_FLUSH fflush(stdout) -#define EN_PRINTF xil_printf - -//------------------------------------------------------------------------------------------------- -// Module type definitions -//------------------------------------------------------------------------------------------------- - -#define MARS_MX1 0 -#define MARS_MX2 1 -#define MERCURY_CA1 2 -#define MARS_ZX2 3 -#define MARS_ZX3 4 -#define MARS_AX3 5 -#define MERCURY_KX1 6 -#define MERCURY_SA1 7 -#define MERCURY_ZX1 8 -#define MERCURY_ZX5 9 -#define MERCURY_SA2 10 \ No newline at end of file diff --git a/boards/alpha250/patches/fsbl/UtilityFunctions.h b/boards/alpha250/patches/fsbl/UtilityFunctions.h index 3aae5e332..8fdb54bd7 100644 --- a/boards/alpha250/patches/fsbl/UtilityFunctions.h +++ b/boards/alpha250/patches/fsbl/UtilityFunctions.h @@ -104,39 +104,4 @@ static inline uint16_t ChangeByteOrder(uint16_t InByte) */ #ifndef min #define min(a, b) (((a) < (b)) ? (a) : (b)) -#endif - - -/** - * \brief Function which extracts a range of bits from a 8-bit unsigned integer. - * - * The operation is performed with a series of 2 bitwise logical operations. - * Assuming bits are numbered from LSB = 0 to MSB = 7, the first operation - * shifts the input right by LSB bits, putting the desired bit range LSB in - * the 0th (least significant) bit of the expression. The second operation - * masks off any bits in positions above those designated by the desired - * bit range MSB. - * - * \param input The input 8-bit unsigned integer - * \param bitRangeMSB The MSB position (0..7) of the bit range we wish to extract - * \param bitRangeLSB The LSB position (0..7) of the bit range we wish to extract - * \return An unsigned integer representing the value of the bits bitRangeMSB.. bitRangeLSB - */ -static inline uint8_t ExtractBitRange(uint8_t input, uint8_t bitRangeMSB, uint8_t bitRangeLSB) -{ - if ((bitRangeMSB <= 7) && (bitRangeLSB <= 7) && (bitRangeLSB <= bitRangeMSB)) - { - return (input >> bitRangeLSB) & ~(~0 << (bitRangeMSB - bitRangeLSB + 1)); - } - else - { - return 0; - } -} - - -/// Rounds up result of unsigned integer division, without possibility of overflow. -static inline uint32_t DivideRoundUp(uint32_t numerator, uint32_t denominator) -{ - return 1 + ((numerator - 1) / denominator); -} +#endif \ No newline at end of file diff --git a/boards/alpha250/patches/fsbl/fsbl_hooks.c b/boards/alpha250/patches/fsbl/fsbl_hooks.c index 663e39acd..0ea831eb8 100644 --- a/boards/alpha250/patches/fsbl/fsbl_hooks.c +++ b/boards/alpha250/patches/fsbl/fsbl_hooks.c @@ -234,29 +234,26 @@ static int GetMacAddress(void) char EmacPsMAC[6]; int MacAddrSet = 0; - // Initialise the EEPROM. - if (EN_SUCCEEDED(Eeprom_Initialise())) - { - // Read the EEPROM. - if (EN_SUCCEEDED(Eeprom_Read())) - { - // After reading the EEPROM, the information is stored in its own translation unit - we can - // query it using the EEPROM API functions. - if (EN_SUCCEEDED(Eeprom_GetModuleInfo(&serialNumber, &productNumberInfo, (uint64_t*)&macAddress))){ - fsbl_printf(DEBUG_GENERAL,"MAC address configured successfully from EEPROM\n\r"); - EmacPsMAC[0] = macAddress[5]; - EmacPsMAC[1] = macAddress[4]; - EmacPsMAC[2] = macAddress[3]; - EmacPsMAC[3] = macAddress[2]; - EmacPsMAC[4] = macAddress[1]; - EmacPsMAC[5] = macAddress[0]; - MacAddrSet = 1; - } - + // Read the EEPROM. + if (EN_SUCCEEDED(Eeprom_Read())) + { + // After reading the EEPROM, the information is stored in its own translation unit - we can + // query it using the EEPROM API functions. + if (EN_SUCCEEDED(Eeprom_GetModuleInfo(&serialNumber, &productNumberInfo, (uint64_t*)&macAddress))){ + fsbl_printf(DEBUG_GENERAL,"MAC address configured successfully from EEPROM\n\r"); + EmacPsMAC[0] = macAddress[5]; + EmacPsMAC[1] = macAddress[4]; + EmacPsMAC[2] = macAddress[3]; + EmacPsMAC[3] = macAddress[2]; + EmacPsMAC[4] = macAddress[1]; + EmacPsMAC[5] = macAddress[0]; + MacAddrSet = 1; } - } + + } + if (MacAddrSet == 0){ - EN_PRINTF("Error reading EEPROM, using default MAC address\r\n"); + xil_printf("Error reading EEPROM, using default MAC address\r\n"); EmacPsMAC[0] = 0x00; EmacPsMAC[1] = 0x0a; EmacPsMAC[2] = 0x35; From 8e1cc6a9726bae51adba340ffacea1e04d7902f7 Mon Sep 17 00:00:00 2001 From: Jean Minet Date: Wed, 29 Aug 2018 17:30:42 +0200 Subject: [PATCH 3/6] fix USB in device tree --- boards/alpha250/patches/devicetree.patch | 33 ++++++++++++++++++++---- 1 file changed, 28 insertions(+), 5 deletions(-) diff --git a/boards/alpha250/patches/devicetree.patch b/boards/alpha250/patches/devicetree.patch index 50b66b030..089ecbd03 100644 --- a/boards/alpha250/patches/devicetree.patch +++ b/boards/alpha250/patches/devicetree.patch @@ -1,5 +1,5 @@ -diff -rupN devicetree.old/pcw.dtsi devicetree/pcw.dtsi ---- devicetree.old/pcw.dtsi +diff -rupN devicetree.orig/pcw.dtsi devicetree/pcw.dtsi +--- devicetree.orig/pcw.dtsi +++ devicetree/pcw.dtsi @@ -13,9 +13,11 @@ }; @@ -35,10 +35,33 @@ diff -rupN devicetree.old/pcw.dtsi devicetree/pcw.dtsi }; &uart0 { device_type = "serial"; -diff -rupN devicetree.old/system-top.dts devicetree/system-top.dts ---- devicetree.old/system-top.dts +@@ -62,7 +74,7 @@ + }; + &usb0 { + dr_mode = "host"; +- phy_type = "ulpi"; ++ usb-phy = <&usb_phy0>; + status = "okay"; + }; + &clkc { +diff -rupN devicetree.orig/system-top.dts devicetree/system-top.dts +--- devicetree.orig/system-top.dts +++ devicetree/system-top.dts -@@ -23,8 +23,21 @@ +@@ -14,6 +14,13 @@ + bootargs = "console=ttyPS0,115200 root=/dev/mmcblk0p2 ro rootfstype=ext4 earlyprintk rootwait earlycon"; + stdout-path = "serial0:115200n8"; + }; ++ usb_phy0: phy0 { ++ #phy-cells = <0>; ++ compatible = "ulpi-phy"; ++ reg = <0xe0002000 0x1000>; ++ view-port = <0x0170>; ++ drv-vbus; ++ }; + aliases { + ethernet0 = &gem0; + serial0 = &uart0; +@@ -23,8 +30,21 @@ }; memory { device_type = "memory"; From a17e12bd0fb45ab68ac5efa442497947739f86de Mon Sep 17 00:00:00 2001 From: Jean Minet Date: Wed, 29 Aug 2018 21:26:04 +0200 Subject: [PATCH 4/6] change ulpi-phy to usb-nop-xceiv --- boards/alpha250/patches/devicetree.patch | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/boards/alpha250/patches/devicetree.patch b/boards/alpha250/patches/devicetree.patch index 089ecbd03..d5e058489 100644 --- a/boards/alpha250/patches/devicetree.patch +++ b/boards/alpha250/patches/devicetree.patch @@ -47,16 +47,13 @@ diff -rupN devicetree.orig/pcw.dtsi devicetree/pcw.dtsi diff -rupN devicetree.orig/system-top.dts devicetree/system-top.dts --- devicetree.orig/system-top.dts +++ devicetree/system-top.dts -@@ -14,6 +14,13 @@ +@@ -14,6 +14,10 @@ bootargs = "console=ttyPS0,115200 root=/dev/mmcblk0p2 ro rootfstype=ext4 earlyprintk rootwait earlycon"; stdout-path = "serial0:115200n8"; }; -+ usb_phy0: phy0 { ++ usb_phy0: phy1 { + #phy-cells = <0>; -+ compatible = "ulpi-phy"; -+ reg = <0xe0002000 0x1000>; -+ view-port = <0x0170>; -+ drv-vbus; ++ compatible = "usb-nop-xceiv"; + }; aliases { ethernet0 = &gem0; From ae6dde0fc0d4f5aab97744239b08a1591112b671 Mon Sep 17 00:00:00 2001 From: Jean Minet Date: Wed, 29 Aug 2018 21:28:16 +0200 Subject: [PATCH 5/6] update version to 0.19 --- version | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/version b/version index c5523bd09..1cf0537c3 100644 --- a/version +++ b/version @@ -1 +1 @@ -0.17.0 +0.19.0 From 4458fd5dfc29dfa8409cb9aea53280829d9e04b7 Mon Sep 17 00:00:00 2001 From: Jean Minet Date: Thu, 30 Aug 2018 14:11:16 +0200 Subject: [PATCH 6/6] fix eeprom wake-up delay --- boards/alpha250/patches/fsbl/AtmelAtsha204a.h | 2 +- boards/alpha250/patches/fsbl/ModuleEeprom.c | 19 --- .../patches/fsbl/TargetModuleConfig.h | 134 ------------------ 3 files changed, 1 insertion(+), 154 deletions(-) delete mode 100644 boards/alpha250/patches/fsbl/TargetModuleConfig.h diff --git a/boards/alpha250/patches/fsbl/AtmelAtsha204a.h b/boards/alpha250/patches/fsbl/AtmelAtsha204a.h index a1f21880c..f052e08b6 100644 --- a/boards/alpha250/patches/fsbl/AtmelAtsha204a.h +++ b/boards/alpha250/patches/fsbl/AtmelAtsha204a.h @@ -23,7 +23,7 @@ //------------------------------------------------------------------------------------------------- /// The number of milliseconds it takes for the device to come out of sleep mode -#define ATMEL_ATSHA204A_WAKE_TIME_MILLISECONDS (500) +#define ATMEL_ATSHA204A_WAKE_TIME_MILLISECONDS (10) /// Average time for the read command to complete, after which polling should start #define ATMEL_ATSHA204A_READ_EXECUTION_TIME_MILLISECONDS (1) diff --git a/boards/alpha250/patches/fsbl/ModuleEeprom.c b/boards/alpha250/patches/fsbl/ModuleEeprom.c index 3f9446416..2f076fdfa 100644 --- a/boards/alpha250/patches/fsbl/ModuleEeprom.c +++ b/boards/alpha250/patches/fsbl/ModuleEeprom.c @@ -13,7 +13,6 @@ #include "I2cInterface.h" #include "AtmelAtsha204a.h" #include "UtilityFunctions.h" -#include "TargetModuleConfig.h" //------------------------------------------------------------------------------------------------- // Directives, typedefs and constants @@ -33,24 +32,6 @@ uint64_t g_macAddress; // Function definitions //------------------------------------------------------------------------------------------------- -/** - * \brief Determine which type of EEPROM device is on the module. - * - * @return Result code - */ -EN_RESULT DetermineEepromType() -{ - return EN_SUCCESS; -} - - -EN_RESULT Eeprom_Initialise() -{ - DetermineEepromType(); - return EN_SUCCESS; -} - - EN_RESULT Eeprom_ReadBasicModuleInfo() { uint8_t readBuffer[4]; diff --git a/boards/alpha250/patches/fsbl/TargetModuleConfig.h b/boards/alpha250/patches/fsbl/TargetModuleConfig.h deleted file mode 100644 index 02a050342..000000000 --- a/boards/alpha250/patches/fsbl/TargetModuleConfig.h +++ /dev/null @@ -1,134 +0,0 @@ -#include "ModuleConfigConstants.h" - -//------------------------------------------------------------------------------------------------- -// Mars AX3 -//------------------------------------------------------------------------------------------------- - -#if TARGET_MODULE == MARS_AX3 -#define CONFIG_PROPERTY_COUNT MARS_AX3_PROPERTY_COUNT -#define MODULE_NAME MARS_AX3_MODULE_NAME -#define MAX_CONFIG_PROPERTY_NAME_LENGTH_CHARACTERS MARS_AX3_MAX_CONFIG_PROPERTY_NAME_LENGTH_CHARACTERS -#define CONFIG_PROPERTIES_LENGTH_BYTES MARS_AX3_CONFIG_PROPERTIES_LENGTH_BYTES -#define CONFIG_PROPERTIES_START_ADDRESS MARS_AX3_CONFIG_PROPERTIES_START_ADDRESS -#endif - -//------------------------------------------------------------------------------------------------- -// Mars MX1 -//------------------------------------------------------------------------------------------------- - -#if TARGET_MODULE == MARS_MX1 -#define CONFIG_PROPERTY_COUNT MARS_MX1_PROPERTY_COUNT -#define MODULE_NAME MARS_MX1_MODULE_NAME -#define MAX_CONFIG_PROPERTY_NAME_LENGTH_CHARACTERS MARS_MX1_MAX_CONFIG_PROPERTY_NAME_LENGTH_CHARACTERS -#define CONFIG_PROPERTIES_LENGTH_BYTES MARS_MX1_CONFIG_PROPERTIES_LENGTH_BYTES -#define CONFIG_PROPERTIES_START_ADDRESS MARS_MX1_CONFIG_PROPERTIES_START_ADDRESS -#endif - -//------------------------------------------------------------------------------------------------- -// Mars MX2 -//------------------------------------------------------------------------------------------------- - -#if TARGET_MODULE == MARS_MX2 -#define CONFIG_PROPERTY_COUNT MARS_MX2_PROPERTY_COUNT -#define MODULE_NAME MARS_MX2_MODULE_NAME -#define MAX_CONFIG_PROPERTY_NAME_LENGTH_CHARACTERS MARS_MX2_MAX_CONFIG_PROPERTY_NAME_LENGTH_CHARACTERS -#define CONFIG_PROPERTIES_LENGTH_BYTES MARS_MX2_CONFIG_PROPERTIES_LENGTH_BYTES -#define CONFIG_PROPERTIES_START_ADDRESS MARS_MX2_CONFIG_PROPERTIES_START_ADDRESS -#endif - -//------------------------------------------------------------------------------------------------- -// Mars ZX2 -//------------------------------------------------------------------------------------------------- - -#if TARGET_MODULE == MARS_ZX2 -#define CONFIG_PROPERTY_COUNT MARS_ZX2_PROPERTY_COUNT -#define MODULE_NAME MARS_ZX2_MODULE_NAME -#define MAX_CONFIG_PROPERTY_NAME_LENGTH_CHARACTERS MARS_ZX2_MAX_CONFIG_PROPERTY_NAME_LENGTH_CHARACTERS -#define CONFIG_PROPERTIES_LENGTH_BYTES MARS_ZX2_CONFIG_PROPERTIES_LENGTH_BYTES -#define CONFIG_PROPERTIES_START_ADDRESS MARS_ZX2_CONFIG_PROPERTIES_START_ADDRESS -#endif - -//------------------------------------------------------------------------------------------------- -// Mars ZX3 -//------------------------------------------------------------------------------------------------- - -#if TARGET_MODULE == MARS_ZX3 -#define CONFIG_PROPERTY_COUNT MARS_ZX3_PROPERTY_COUNT -#define MODULE_NAME MARS_ZX3_MODULE_NAME -#define MAX_CONFIG_PROPERTY_NAME_LENGTH_CHARACTERS MARS_ZX3_MAX_CONFIG_PROPERTY_NAME_LENGTH_CHARACTERS -#define CONFIG_PROPERTIES_LENGTH_BYTES MARS_ZX3_CONFIG_PROPERTIES_LENGTH_BYTES -#define CONFIG_PROPERTIES_START_ADDRESS MARS_ZX3_CONFIG_PROPERTIES_START_ADDRESS -#endif - -//------------------------------------------------------------------------------------------------- -// Mercury CA1 -//------------------------------------------------------------------------------------------------- - -#if TARGET_MODULE == MERCURY_CA1 -#define CONFIG_PROPERTY_COUNT MERCURY_CA1_PROPERTY_COUNT -#define MODULE_NAME MERCURY_CA1_MODULE_NAME -#define MAX_CONFIG_PROPERTY_NAME_LENGTH_CHARACTERS MERCURY_CA1_MAX_CONFIG_PROPERTY_NAME_LENGTH_CHARACTERS -#define CONFIG_PROPERTIES_LENGTH_BYTES MERCURY_CA1_CONFIG_PROPERTIES_LENGTH_BYTES -#define CONFIG_PROPERTIES_START_ADDRESS MERCURY_CA1_CONFIG_PROPERTIES_START_ADDRESS -#endif - -//------------------------------------------------------------------------------------------------- -// Mercury KX1 -//------------------------------------------------------------------------------------------------- - -#if TARGET_MODULE == MERCURY_KX1 -#define CONFIG_PROPERTY_COUNT MERCURY_KX1_PROPERTY_COUNT -#define MODULE_NAME MERCURY_KX1_MODULE_NAME -#define MAX_CONFIG_PROPERTY_NAME_LENGTH_CHARACTERS MERCURY_KX1_MAX_CONFIG_PROPERTY_NAME_LENGTH_CHARACTERS -#define CONFIG_PROPERTIES_LENGTH_BYTES MERCURY_KX1_CONFIG_PROPERTIES_LENGTH_BYTES -#define CONFIG_PROPERTIES_START_ADDRESS MERCURY_KX1_CONFIG_PROPERTIES_START_ADDRESS -#endif - -//------------------------------------------------------------------------------------------------- -// Mercury SA1 -//------------------------------------------------------------------------------------------------- - -#if TARGET_MODULE == MERCURY_SA1 -#define CONFIG_PROPERTY_COUNT MERCURY_SA1_PROPERTY_COUNT -#define MODULE_NAME MERCURY_SA1_MODULE_NAME -#define MAX_CONFIG_PROPERTY_NAME_LENGTH_CHARACTERS MERCURY_SA1_MAX_CONFIG_PROPERTY_NAME_LENGTH_CHARACTERS -#define CONFIG_PROPERTIES_LENGTH_BYTES MERCURY_SA1_CONFIG_PROPERTIES_LENGTH_BYTES -#define CONFIG_PROPERTIES_START_ADDRESS MERCURY_SA1_CONFIG_PROPERTIES_START_ADDRESS -#endif - -//------------------------------------------------------------------------------------------------- -// Mercury+ SA2 -//------------------------------------------------------------------------------------------------- - -#if TARGET_MODULE == MERCURY_SA2 -#define CONFIG_PROPERTY_COUNT MERCURY_SA2_PROPERTY_COUNT -#define MODULE_NAME MERCURY_SA2_MODULE_NAME -#define MAX_CONFIG_PROPERTY_NAME_LENGTH_CHARACTERS MERCURY_SA2_MAX_CONFIG_PROPERTY_NAME_LENGTH_CHARACTERS -#define CONFIG_PROPERTIES_LENGTH_BYTES MERCURY_SA2_CONFIG_PROPERTIES_LENGTH_BYTES -#define CONFIG_PROPERTIES_START_ADDRESS MERCURY_SA2_CONFIG_PROPERTIES_START_ADDRESS -#endif - -//------------------------------------------------------------------------------------------------- -// Mercury ZX1 -//------------------------------------------------------------------------------------------------- - -#if TARGET_MODULE == MERCURY_ZX1 -#define CONFIG_PROPERTY_COUNT MERCURY_ZX1_PROPERTY_COUNT -#define MODULE_NAME MERCURY_ZX1_MODULE_NAME -#define MAX_CONFIG_PROPERTY_NAME_LENGTH_CHARACTERS MERCURY_ZX1_MAX_CONFIG_PROPERTY_NAME_LENGTH_CHARACTERS -#define CONFIG_PROPERTIES_LENGTH_BYTES MERCURY_ZX1_CONFIG_PROPERTIES_LENGTH_BYTES -#define CONFIG_PROPERTIES_START_ADDRESS MERCURY_ZX1_CONFIG_PROPERTIES_START_ADDRESS -#endif - -//------------------------------------------------------------------------------------------------- -// Mercury ZX5 -//------------------------------------------------------------------------------------------------- - -#if TARGET_MODULE == MERCURY_ZX5 -#define CONFIG_PROPERTY_COUNT MERCURY_ZX5_PROPERTY_COUNT -#define MODULE_NAME MERCURY_ZX5_MODULE_NAME -#define MAX_CONFIG_PROPERTY_NAME_LENGTH_CHARACTERS MERCURY_ZX5_MAX_CONFIG_PROPERTY_NAME_LENGTH_CHARACTERS -#define CONFIG_PROPERTIES_LENGTH_BYTES MERCURY_ZX5_CONFIG_PROPERTIES_LENGTH_BYTES -#define CONFIG_PROPERTIES_START_ADDRESS MERCURY_ZX5_CONFIG_PROPERTIES_START_ADDRESS -#endif -