]> git.karo-electronics.de Git - oswald.git/blobdiff - metawatch/F5xx_F6xx_Core_Lib/HAL_TLV.h
Power saving changes, add new fonts, bitmaps and screens
[oswald.git] / metawatch / F5xx_F6xx_Core_Lib / HAL_TLV.h
diff --git a/metawatch/F5xx_F6xx_Core_Lib/HAL_TLV.h b/metawatch/F5xx_F6xx_Core_Lib/HAL_TLV.h
new file mode 100644 (file)
index 0000000..9b616c3
--- /dev/null
@@ -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 */