X-Git-Url: https://git.karo-electronics.de/?p=oswald.git;a=blobdiff_plain;f=metawatch%2FF5xx_F6xx_Core_Lib%2FHAL_TLV.h;fp=metawatch%2FF5xx_F6xx_Core_Lib%2FHAL_TLV.h;h=9b616c30a2321be6c2833aa219bb91c3d02c8bd5;hp=0000000000000000000000000000000000000000;hb=1b5790095c23913d02531727e47b79af3568e0b1;hpb=3e320aaa4175a0ed469581f1dea2eac35b390878 diff --git a/metawatch/F5xx_F6xx_Core_Lib/HAL_TLV.h b/metawatch/F5xx_F6xx_Core_Lib/HAL_TLV.h new file mode 100644 index 0000000..9b616c3 --- /dev/null +++ b/metawatch/F5xx_F6xx_Core_Lib/HAL_TLV.h @@ -0,0 +1,226 @@ +/******************************************************************************* + * + * HAL_TLV.c + * Provides Functions to Read the TLV Data Section of the MSP430 Devices + * + * + * Copyright (C) 2010 Texas Instruments Incorporated - http://www.ti.com/ + * + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the + * distribution. + * + * Neither the name of Texas Instruments Incorporated nor the names of + * its contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * Updated: Version 2.0 01/17/2011 + * + ******************************************************************************/ + +#ifndef HAL_TLV_H +#define HAL_TLV_H + +/******************************************************************************* + * Device Descriptors - Fixed Memory Locations + ******************************************************************************/ +#define DEVICE_ID_0 (0x1A04) +#define DEVICE_ID_1 (0x1A05) + +/******************************************************************************* + * Data Types + ******************************************************************************/ +struct s_TLV_Die_Record { + unsigned char die_record[10]; +}; + +struct s_TLV_ADC_Cal_Data { + unsigned int adc_gain_factor; + unsigned int adc_offset; + unsigned int adc_ref15_30_temp; + unsigned int adc_ref15_85_temp; + unsigned int adc_ref20_30_temp; + unsigned int adc_ref20_85_temp; + unsigned int adc_ref25_30_temp; + unsigned int adc_ref25_85_temp; +}; + +struct s_TLV_Timer_D_Cal_Data { + unsigned int TDH0CTL1_64; + unsigned int TDH0CTL1_128; + unsigned int TDH0CTL1_200; + unsigned int TDH0CTL1_256; +}; + +struct s_TLV_REF_Cal_Data { + unsigned int ref_ref15; + unsigned int ref_ref20; + unsigned int adc_ref25; +}; + +/******************************************************************************* + * Tag Defines + ******************************************************************************/ +#define TLV_LDTAG (0x01) /* Legacy descriptor (1xx, 2xx, + 4xx families) */ +#define TLV_PDTAG (0x02) /* Peripheral discovery descriptor */ +#define TLV_Reserved3 (0x03) /* Future usage */ +#define TLV_Reserved4 (0x04) /* Future usage */ +#define TLV_BLANK (0x05) /* Blank descriptor */ +#define TLV_Reserved6 (0x06) /* Future usage */ +#define TLV_Reserved7 (0x07) /* Serial Number */ +#define TLV_DIERECORD (0x08) /* Die Record */ +#define TLV_ADCCAL (0x11) /* ADC12 calibration */ +#define TLV_ADC12CAL (0x11) /* ADC12 calibration */ +#define TLV_ADC10CAL (0x13) /* ADC10 calibration */ +#define TLV_REFCAL (0x12) /* REF calibration */ +#define TLV_TIMER_D_CAL (0x15) /* Timer_Dx calibration */ +#define TLV_TAGEXT (0xFE) /* Tag extender */ +#define TLV_TAGEND (0xFF) /* Tag End of Table */ + +/******************************************************************************* + * Peripheral Defines + ******************************************************************************/ +#define TLV_PID_NO_MODULE (0x00) /* No Module */ +#define TLV_PID_PORTMAPPING (0x10) /* Port Mapping */ +#define TLV_PID_MSP430CPUXV2 (0x23) /* MSP430CPUXV2 */ +#define TLV_PID_JTAG (0x09) /* JTAG */ +#define TLV_PID_SBW (0x0F) /* SBW */ +#define TLV_PID_EEM_XS (0x02) /* EEM X-Small */ +#define TLV_PID_EEM_S (0x03) /* EEM Small */ +#define TLV_PID_EEM_M (0x04) /* EEM Medium */ +#define TLV_PID_EEM_L (0x05) /* EEM Large */ +#define TLV_PID_PMM (0x30) /* PMM */ +#define TLV_PID_PMM_FR (0x32) /* PMM FRAM */ +#define TLV_PID_FCTL (0x39) /* Flash */ +#define TLV_PID_CRC16 (0x3C) /* CRC16 */ +#define TLV_PID_CRC16_RB (0x3D) /* CRC16 Reverse */ +#define TLV_PID_WDT_A (0x40) /* WDT_A */ +#define TLV_PID_SFR (0x41) /* SFR */ +#define TLV_PID_SYS (0x42) /* SYS */ +#define TLV_PID_RAMCTL (0x44) /* RAMCTL */ +#define TLV_PID_DMA_1 (0x46) /* DMA 1 */ +#define TLV_PID_DMA_3 (0x47) /* DMA 3 */ +#define TLV_PID_UCS (0x48) /* UCS */ +#define TLV_PID_DMA_6 (0x4A) /* DMA 6 */ +#define TLV_PID_DMA_2 (0x4B) /* DMA 2 */ +#define TLV_PID_PORT1_2 (0x51) /* Port 1 + 2 / A */ +#define TLV_PID_PORT3_4 (0x52) /* Port 3 + 4 / B */ +#define TLV_PID_PORT5_6 (0x53) /* Port 5 + 6 / C */ +#define TLV_PID_PORT7_8 (0x54) /* Port 7 + 8 / D */ +#define TLV_PID_PORT9_10 (0x55) /* Port 9 + 10 / E */ +#define TLV_PID_PORT11_12 (0x56) /* Port 11 + 12 / F */ +#define TLV_PID_PORTU (0x5E) /* Port U */ +#define TLV_PID_PORTJ (0x5F) /* Port J */ +#define TLV_PID_TA2 (0x60) /* Timer A2 */ +#define TLV_PID_TA3 (0x61) /* Timer A1 */ +#define TLV_PID_TA5 (0x62) /* Timer A5 */ +#define TLV_PID_TA7 (0x63) /* Timer A7 */ +#define TLV_PID_TB3 (0x65) /* Timer B3 */ +#define TLV_PID_TB5 (0x66) /* Timer B5 */ +#define TLV_PID_TB7 (0x67) /* Timer B7 */ +#define TLV_PID_RTC (0x68) /* RTC */ +#define TLV_PID_BT_RTC (0x69) /* BT + RTC */ +#define TLV_PID_BBS (0x6A) /* Battery Backup Switch */ +#define TLV_PID_RTC_B (0x6B) /* RTC_B */ +#define TLV_PID_TD2 (0x6C) /* Timer D2 */ +#define TLV_PID_TD3 (0x6D) /* Timer D1 */ +#define TLV_PID_TD5 (0x6E) /* Timer D5 */ +#define TLV_PID_TD7 (0x6F) /* Timer D7 */ +#define TLV_PID_TEC (0x70) /* Imer Event Control */ +#define TLV_PID_RTC_C (0x71) /* RTC_C */ +#define TLV_PID_AES (0x80) /* AES */ +#define TLV_PID_MPY16 (0x84) /* MPY16 */ +#define TLV_PID_MPY32 (0x85) /* MPY32 */ +#define TLV_PID_MPU (0x86) /* MPU */ +#define TLV_PID_USCI_AB (0x90) /* USCI_AB */ +#define TLV_PID_USCI_A (0x91) /* USCI_A */ +#define TLV_PID_USCI_B (0x92) /* USCI_B */ +#define TLV_PID_EUSCI_A (0x94) /* eUSCI_A */ +#define TLV_PID_EUSCI_B (0x95) /* eUSCI_B */ +#define TLV_PID_REF (0xA0) /* Shared Reference */ +#define TLV_PID_COMP_B (0xA8) /* COMP_B */ +#define TLV_PID_COMP_D (0xA9) /* COMP_D */ +#define TLV_PID_USB (0x98) /* USB */ +#define TLV_PID_LCD_B (0xB1) /* LCD_B */ +#define TLV_PID_LCD_C (0xB2) /* LCD_C */ +#define TLV_PID_DAC12_A (0xC0) /* DAC12_A */ +#define TLV_PID_SD16_B_1 (0xC8) /* SD16_B 1 Channel */ +#define TLV_PID_SD16_B_2 (0xC9) /* SD16_B 2 Channel */ +#define TLV_PID_SD16_B_3 (0xCA) /* SD16_B 3 Channel */ +#define TLV_PID_SD16_B_4 (0xCB) /* SD16_B 4 Channel */ +#define TLV_PID_SD16_B_5 (0xCC) /* SD16_B 5 Channel */ +#define TLV_PID_SD16_B_6 (0xCD) /* SD16_B 6 Channel */ +#define TLV_PID_SD16_B_7 (0xCE) /* SD16_B 7 Channel */ +#define TLV_PID_SD16_B_8 (0xCF) /* SD16_B 8 Channel */ +#define TLV_PID_ADC12_A (0xD1) /* ADC12_A */ +#define TLV_PID_ADC10_A (0xD3) /* ADC10_A */ +#define TLV_PID_ADC10_B (0xD4) /* ADC10_B */ +#define TLV_PID_SD16_A (0xD8) /* SD16_A */ +#define TLV_PID_TI_BSL (0xFC) /* BSL */ + +/******************************************************************************* + * \brief Get Information out of the TLV Table + * + * \param tag Tag of the TLV entry + * \param instance Instance of the Tag of the TLV entry + * \param *length return: Length of the information if found + * \param **data_address return: start pointer of Data + ******************************************************************************/ +void Get_TLV_Info(unsigned char tag, unsigned char instance, unsigned char *length, + unsigned int **data_address); + +/******************************************************************************* + * \brief Get Device Type out of the TLV Table + * + * \return Device dependent value + ******************************************************************************/ +unsigned int Get_Device_Type(void); + +/******************************************************************************* + * \brief Get Memory Info out of the TLV Table + * + * \param instance Index of the Instance [0..] + * \return Memory Data found + ******************************************************************************/ +unsigned int Get_TLV_Memory(unsigned char instance); + +/******************************************************************************* + * \brief Get Peripheral Info out of the TLV Table + * + * \param tag Tag of the TLV entry + * \param instance Index of the Instance [0..] + * \return Peripheral Data found + ******************************************************************************/ +unsigned int Get_TLV_Peripheral(unsigned char tag, unsigned char instance); + +/******************************************************************************* + * \brief Get Interrupt Info out of the TLV Table + * + * \param tag Tag of the TLV entry + * \return Interrupt Data found + ******************************************************************************/ +unsigned char Get_TLV_Interrupt(unsigned char tag); + +#endif /* HAL_TLV_H */