diff -r 000000000000 -r 6663340f3fc9 omap3530/assp/inc/omap3530_timer.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/omap3530/assp/inc/omap3530_timer.h Thu Oct 15 12:59:54 2009 +0100 @@ -0,0 +1,817 @@ +// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). +// All rights reserved. +// This component and the accompanying materials are made available +// under the terms of the License "Eclipse Public License v1.0" +// which accompanies this distribution, and is available +// at the URL "http://www.eclipse.org/legal/epl-v10.html". +// +// Initial Contributors: +// Nokia Corporation - initial contribution. +// +// Contributors: +// +// Description: +// /omap3530/assp/inc/omap3530_timer.h +// + +#ifndef HEADER_OMAP3530_TIMER_H_INCLUDED +# define HEADER_OMAP3530_TIMER_H_INCLUDED + +/** +@file + omap3530_timer.h header file +This file provides timer handling for the omap3530 timers +@publishedAll +@released +*/ + +#include +#include + +namespace TexasInstruments + { + + namespace Omap3530 + { + + + namespace GPTimer + { + + namespace TIOCP_CFG + { + /** + 0 AUTOIDLE Internal L4 interface clock gating strategy 0 + 0x0: L4 interface clock is free-running. + 0x1: Automatic L4 interface clock gating strategy isapplied, based on the L4 interface activity. + */ + typedef TSingleBitField<0> T_AUTOIDLE ; + + /** + 1 SOFTRESET Software reset. This bit is automatically reset by the RW 0 hardware. During reads, it always returns 0. + 0x0: Normal mode + 0x1: The module is reset. + */ + typedef TSingleBitField<1> T_SOFTRESET ; + + /** + 2 ENAWAKEUP Wake-up feature global control RW 0 + 0x0: No wake-up line assertion in idle mode + 0x1: Wake-up line assertion enabled in smart-idle mode + */ + typedef TSingleBitField<2> T_ENAWAKEUP ; + + /** + 4:3 IDLEMODE Power management, req/ack control RW 0x0 + 0x0: Force-idle. An idle request is acknowledged unconditionally. + 0x1: No-idle. An idle request is never acknowledged. + 0x2: Smart-idle. Acknowledgement to an idle request is given based on the internal activity of the module. + 0x3: Reserved. Do not use. + */ + class T_IDLEMODE : public TBitField<3, 2> + { + public : + enum TConstants + { + KForceIdle = TConstVal<0>::KValue, + KNoIdle = TConstVal<1>::KValue, + KSmartIdle = TConstVal<2>::KValue + } ; + } ; + + /** + 5 EMUFREE Emulation mode RW 0 + 0x0: Timer counter frozen in emulation + 0x1: Timer counter free-running in emulation + */ + typedef TSingleBitField<5> T_EMUFREE ; + + /** + 9:8 CLOCKACTIVITY Clock activity during wakeup mode period: RW 0x0 + 0x0: L4 interface and Functional clocks can be switched off. + 0x1: L4 interface clock is maintained during wake-up period; Functional clock can be switched off. + 0x2: L4 interface clock can be switched off; Functional clock is maintained during wake-up period. + 0x3: L4 interface and Functional clocks are maintained during wake-up period. + */ + class T_CLOCKACTIVITY : public TBitField<8, 2> + { + public : + enum TConstants + { + KMaintainNeither = TConstVal<0>::KValue, + KMaintainIfClock = TConstVal<1>::KValue, + KMaintainFuncClock = TConstVal<2>::KValue, + KMaintainBoth = TConstVal<3>::KValue + } ; + } ; + + } ; // namespace TIOCP_CFG + + namespace TISTAT + { + /** + 0 RESETDONE Internal reset monitoring R 0 + 0x0: Internal module reset is ongoing. + 0x1: Reset completed + */ + typedef TSingleBitField<0> T_RESETDONE ; + + } ; // namespace TISTAT + + namespace TISR + { + /** + 0 MAT_IT_FLAG Pending match interrupt status RW 0 + Read 0x0: No match interrupt pending + Write 0x0: Status unchanged + Read 0x1: Match interrupt pending + Write 0x1: Status bit cleared + */ + typedef TSingleBitField<0> T_MAT_IT_FLAG ; + + /** + 1 OVF_IT_FLAG Pending overflow interrupt status RW 0 + Read 0x0: No overflow interrupt pending + Write 0x0: Status unchanged + Read 0x1: Overflow interrupt pending + Write 0x1: Status bit cleared + */ + typedef TSingleBitField<1> T_OVF_IT_FLAG ; + + /** + 2 TCAR_IT_FLAG Pending capture interrupt status RW 0 + Read 0x0: No capture interrupt event pending + Write 0x0: Status unchanged + Read 0x1: Capture interrupt event pending + Write 0x1: Status bit cleared + */ + typedef TSingleBitField<2> T_TCAR_IT_FLAG ; + + } ; // namespace TISR + + namespace TIER + { + /** + 0 MAT_IT_ENA Enable match interrupt RW 0 + 0x0: Disable match interrupt. + 0x1: Enable match interrupt. + */ + typedef TSingleBitField<0> T_MAT_IT_ENA ; + + /** + 1 OVF_IT_ENA Enable overflow interrupt RW 0 + 0x0: Disable overflow interrupt. + 0x1: Enable overflow interrupt. + */ + typedef TSingleBitField<1> T_OVF_IT_ENA ; + + /** + 2 TCAR_IT_ENA Enable capture interrupt RW 0 + 0x0: Disable capture interrupt. + 0x1: Enable capture interrupt. + */ + typedef TSingleBitField<2> T_TCAR_IT_ENA ; + + } ; // namespace TIER + + namespace TWER + { + /** + 0 MAT_WUP_ENA Enable match wake-up RW 0 + 0x0: Disable match wake-up. + 0x1: Enable match wake-up. + */ + typedef TSingleBitField<0> T_MAT_WUP_ENA ; + + /** + 1 OVF_WUP_ENA Enable overflow wake-up RW 0 + 0x0: Disable overflow wake-up. + 0x1: Enable overflow wake-up. + */ + typedef TSingleBitField<1> T_OVF_WUP_ENA ; + + /** + 2 TCAR_WUP_ENA Enable capture wake-up RW 0 + 0x0: Disable capture wake-up. + 0x1: Enable capture wake-up. + */ + typedef TSingleBitField<2> T_TCAR_WUP_ENA ; + + } ; // namespace TWER + + namespace TCLR + { + /** + 0 ST Start/stop timer control RW 0 + 0x0: Stop the timer + 0x1: Start the timer + */ + typedef TSingleBitField<0> T_ST ; + + /** + 1 AR Autoreload mode RW 0 + 0x0: One-shot mode overflow + 0x1: Autoreload mode overflow + */ + typedef TSingleBitField<1> T_AR ; + + /** + 4:2 PTV Trigger output mode + 0x0: The timer counter is prescaled with the value: RW 0x0 + 2(PTV+1). Example: PTV = 3, counter increases value (if started) after 16 functional clock periods. + */ + class T_PTV : public TBitField<2, 3> + { + public : + enum TConstants + { + KPS_2 = TConstVal<0>::KValue, + KPS_4 = TConstVal<1>::KValue, + KPS_8 = TConstVal<2>::KValue, + KPS_16 = TConstVal<3>::KValue, + KPS_32 = TConstVal<4>::KValue, + KPS_64 = TConstVal<5>::KValue, + KPS_128 = TConstVal<6>::KValue, + KPS_256 = TConstVal<7>::KValue + } ; + } ; + + /** + 5 PRE Prescaler enable RW 0 + 0x0: Prescaler disabled + 0x1: Prescaler enabled + */ + typedef TSingleBitField<5> T_PRE ; + + /** + 6 CE Compare enable RW 0 + 0x0: Compare disabled + 0x1: Compare enabled + */ + typedef TSingleBitField<6> T_CE ; + + /** + 7 SCPWM Pulse-width-modulation output pin default setting when RW 0 + counter is stopped or trigger output mode is set to no trigger. + 0x0: Default value of PWM_out output: 0 + 0x1: Default value of PWM_out output: 1 + */ + typedef TSingleBitField<7> T_SCPWM ; + + /** + 9:8 TCM Transition capture mode RW 0x0 + 0x0: No capture + 0x1: Capture on rising edges of EVENT_CAPTURE pin. + 0x2: Capture on falling edges of EVENT_CAPTURE pin. + 0x3: Capture on both edges of EVENT_CAPTURE pin. + */ + class T_TCM : public TBitField<8, 2> + { + public : + enum TConstants + { + KNoCapture = TConstVal<0>::KValue, + KRisingEdge = TConstVal<1>::KValue, + KFallingEdge = TConstVal<2>::KValue, + KBothEdges = TConstVal<3>::KValue + } ; + } ; + + /** + 11:10 TRG Trigger output mode RW 0x0 + 0x0: No trigger + 0x1: Overflow trigger + 0x2: Overflow and match trigger + 0x3: Reserved + */ + class T_IDLEMODE : public TBitField<10, 2> + { + public : + enum TConstants + { + KNoTrigger = TConstVal<0>::KValue, + KOverflow = TConstVal<1>::KValue, + KOverflowAndMatch = TConstVal<2>::KValue + } ; + } ; + + /** + 12 PT Pulse or toggle select bit RW 0 + 0x0: Pulse modulation + 0x1: Toggle modulation + */ + typedef TSingleBitField<12> T_PT ; + + /** + 13 CAPT_MODE Capture mode select bit (first/second) RW 0 + 0x0: Capture the first enabled capture event in TCAR1. + 0x1: Capture the second enabled capture event in TCAR2. + */ + typedef TSingleBitField<13> T_CAPT_MODE ; + + /** + 14 GPO_CFG PWM output/event detection input pin direction control: RW 0 + 0x0: Configures the pin as an output (needed when PWM mode is required) + 0x1: Configures the pin as an input (needed when capture mode is required) + */ + typedef TSingleBitField<14> T_GPO_CFG ; + + } ; // namespace TCLR + + namespace TWPS + { + /** + 0 W_PEND_TCLR Write pending for register GPT_TCLR R 0 + 0x0: Control register write not pending + 0x1: Control register write pending + */ + typedef TSingleBitField<0> T_W_PEND_TCLR ; + + /** + 1 W_PEND_TCRR Write pending for register GPT_TCRR R 0 + 0x0: Counter register write not pending + 0x1: Counter register write pending + */ + typedef TSingleBitField<1> T_W_PEND_TCRR ; + + /** + 2 W_PEND_TLDR Write pending for register GPT_TLDR R 0 + 0x0: Load register write not pending + 0x1: Load register write pending + */ + typedef TSingleBitField<2> T_W_PEND_TLDR ; + + /** + 3 W_PEND_TTGR Write pending for register GPT_TTGR R 0 + 0x0: Trigger register write not pending + 0x1: Trigger register write pending + */ + typedef TSingleBitField<3> T_W_PEND_TTGR ; + + /** + 4 W_PEND_TMAR Write pending for register GPT_TMAR R 0 + 0x0: Match register write not pending + 0x1: Match register write pending + */ + typedef TSingleBitField<4> T_W_PEND_TMAR; + + /** + 5 W_PEND_TPIR Write pending for register GPT_TPIR R 0 + Reserved for instances 3, 4, 5, 6, 7, 8, 9, 11, 12 Read returns reset value. R 0 + 0x0: Positive increment register write not pending + 0x1: Positive increment register write pending + */ + typedef TSingleBitField<5> T_W_PEND_TPIR ; + + /** + 6 W_PEND_TNIR Write pending for register GPT_TNIR R 0 + 0x0: Negative increment register write not pending + 0x1: Negative increment register write pending + Reserved for instances 3, 4, 5, 6, 7, 8, 9, 11, 12 Read returns reset value. R 0 + */ + typedef TSingleBitField<6> T_W_PEND_TNIR ; + + /** + 7 W_PEND_TCVR Write pending for register GPT_TCVR R 0 + 0x0: Counter value register write not pending + 0x1: Counter value register write pending + Reserved for instances 3, 4, 5, 6, 7, 8, 9, 11, 12 Read returns reset value. R 0 + */ + typedef TSingleBitField<7> T_W_PEND_TCVR ; + + /** + 8 W_PEND_TOCR Write pending for register GPT_TOCR R 0 + 0x0: Overflow counter register write not pending + 0x1: Overflow counter register write pending + Reserved for instances 3, 4, 5, 6, 7, 8, 9, 11, 12 Read returns reset value. R 0 + */ + typedef TSingleBitField<8> T_W_PEND_TOCR ; + + /** + 9 W_PEND_TOWR Write pending for register GPT_TOWR R 0 + 0x0: Overflow wrapping register write not pending + 0x1: Overflow wrapping register write pending + Reserved for instances 3, 4, 5, 6, 7, 8, 9, 11, 12 Read returns reset value. R 0 + */ + typedef TSingleBitField<9> T_W_PEND_TOWR ; + + } ; // namespace TWPS + + namespace TSICR + { + /** + 1 SFT Reset software functional registers. This bit is automatically reset RW 0 + by the hardware. During reads, it always returns 0. + 0x0: Normal functional mode + 0x1: The functional registers are reset. + */ + typedef TSingleBitField<1> T_SFT ; + + /** + 2 POSTED Posted mode selection RW 1 + 0x0: Non-posted mode selected + 0x1: Posted mode selected + */ + typedef TSingleBitField<2> T_POSTED ; + + } ; // namespace TSICR + + namespace TOCR + { + /** + 23:0 OVF_COUNTER_VALUE The number of overflow events. RW 0x00000000 + */ + class T_OVF_COUNTER_VALUE : public TBitField<0, 24> + { + public : + enum TConstants + { + } ; + } ; + + } ; // namespace TOCR + + namespace TOWR + { + /** + 23:0 OVF_WRAPPING_VALUE The number of masked interrupts. RW 0x00000000 + */ + class T_OVF_WRAPPING_VALUE : public TBitField<0, 24> + { + public : + enum TConstants + { + } ; + } ; + + } ; // namespace TOWR + + enum TBaseAddress + { + KGPTIMER1_Base = TVirtual<0x48318000>::Value, + KGPTIMER2_Base = TVirtual<0x49032000>::Value, + KGPTIMER3_Base = TVirtual<0x49034000>::Value, + KGPTIMER4_Base = TVirtual<0x49036000>::Value, + KGPTIMER5_Base = TVirtual<0x49038000>::Value, + KGPTIMER6_Base = TVirtual<0x4903A000>::Value, + KGPTIMER7_Base = TVirtual<0x4903C000>::Value, + KGPTIMER8_Base = TVirtual<0x4903E000>::Value, + KGPTIMER9_Base = TVirtual<0x49040000>::Value, + KGPTIMER10_Base = TVirtual<0x48086000>::Value, + KGPTIMER11_Base = TVirtual<0x48088000>::Value, + KGPTIMER12_Base = TVirtual<0x48304000>::Value, + } ; + + enum TTimerNumber + { + EGpTimer1, + EGpTimer2, + EGpTimer3, + EGpTimer4, + EGpTimer5, + EGpTimer6, + EGpTimer7, + EGpTimer8, + EGpTimer9, + EGpTimer10, + EGpTimer11, + EGpTimer12 + }; + + typedef void (*TTimerIsr)(TAny*) ; + + template + struct TTimerTraits + { + } ; + + template<> + struct TTimerTraits + { + enum TraitValues + { + KBaseAddress = KGPTIMER1_Base, + KIrq = EOmap3530_IRQ37_GPT1_IRQ, + KClockSelMask = TSingleBitField<7>::KMask, + KClockSelValue = TSingleBitField<7>::KOn, + } ; + } ; + + template<> + struct TTimerTraits + { + enum TraitValues + { + KBaseAddress = KGPTIMER2_Base, + KIrq = EOmap3530_IRQ38_GPT2_IRQ, + } ; + } ; + + template<> + struct TTimerTraits + { + enum TraitValues + { + KBaseAddress = KGPTIMER3_Base, + KIrq = EOmap3530_IRQ39_GPT3_IRQ, + } ; + } ; + + template<> + struct TTimerTraits + { + enum TraitValues + { + KBaseAddress = KGPTIMER4_Base, + KIrq = EOmap3530_IRQ40_GPT4_IRQ, + } ; + } ; + + template<> + struct TTimerTraits + { + enum TraitValues + { + KBaseAddress = KGPTIMER5_Base, + KIrq = EOmap3530_IRQ41_GPT5_IRQ, + } ; + } ; + + template<> + struct TTimerTraits + { + enum TraitValues + { + KBaseAddress = KGPTIMER6_Base, + KIrq = EOmap3530_IRQ42_GPT6_IRQ, + } ; + } ; + + template<> + struct TTimerTraits + { + enum TraitValues + { + KBaseAddress = KGPTIMER7_Base, + KIrq = EOmap3530_IRQ43_GPT7_IRQ, + } ; + } ; + + template<> + struct TTimerTraits + { + enum TraitValues + { + KBaseAddress = KGPTIMER8_Base, + KIrq = EOmap3530_IRQ44_GPT8_IRQ, + } ; + } ; + + template<> + struct TTimerTraits + { + enum TraitValues + { + KBaseAddress = KGPTIMER9_Base, + KIrq = EOmap3530_IRQ45_GPT9_IRQ, + } ; + } ; + + template<> + struct TTimerTraits + { + enum TraitValues + { + KBaseAddress = KGPTIMER10_Base, + KIrq = EOmap3530_IRQ46_GPT10_IRQ, + } ; + } ; + + template<> + struct TTimerTraits + { + enum TraitValues + { + KBaseAddress = KGPTIMER11_Base, + KIrq = EOmap3530_IRQ47_GPT11_IRQ, + } ; + } ; + + template<> + struct TTimerTraits + { + enum TraitValues + { + KBaseAddress = KGPTIMER12_Base, + KIrq = EOmap3530_IRQ95_GPT12_IRQ, + KClockSelReg = 0, + KClockSelMask = 0, + KClockSel32K = 0, + KClockSelSys = 0, + KClockSelValue = KClockSel32K + } ; + } ; + + /** + An interface template for OMAP3530 General Purpose timer functionality. + */ + template + class TGPT + { + protected : + enum TRegisterOffsets + { + KTIOCP_CFG_Offset = 0x010, + KTISTAT_Offset = 0x014, + KTISR_Offset = 0x018, + KTIER_Offset = 0x01C, + KTWER_Offset = 0x020, + KTCLR_Offset = 0x024, + KTCRR_Offset = 0x028, + KTLDR_Offset = 0x02C, + KTTGR_Offset = 0x030, + KTWPS_Offset = 0x034, + KTMAR_Offset = 0x038, + KTCAR1_Offset = 0x03C, + KTSICR_Offset = 0x040, + KTCAR2_Offset = 0x044 + } ; + enum TConstants + { + KHz = 1000, + KClockInputFrequency = 32768, + } ; + + public : + static inline TOmap3530_IRQ Irq() + { + return TOmap3530_IRQ(TTimerTraits::KIrq) ; + } + static inline TBool CanWriteTCLR() + { + return (0 == (iTWPS.Read() & TWPS::T_W_PEND_TCLR::KOn)) ; + } + static inline TBool CanWriteTCRR() + { + return (0 == (iTWPS.Read() & TWPS::T_W_PEND_TCRR::KOn)) ; + } + static inline TBool CanWriteTLDR() + { + return (0 == (iTWPS.Read() & TWPS::T_W_PEND_TLDR::KOn)) ; + } + static inline TBool CanWriteTTGR() + { + return (0 == (iTWPS.Read() & TWPS::T_W_PEND_TTGR::KOn)) ; + } + static inline TBool CanWriteTMAR() + { + return (0 == (iTWPS.Read() & TWPS::T_W_PEND_TMAR::KOn)) ; + } + static inline void Reset() + { + iTIOCP_CFG.Write(TIOCP_CFG::T_SOFTRESET::KOn) ; + } + static inline TBool ResetComplete() + { + return (TISTAT::T_RESETDONE::KOn & iTISTAT.Read()) ; + } + static inline TBool WriteOutstanding() + { + return (iTWPS.Read()) ; + } + + public : + static TReg32_RW<(TTimerTraits::KBaseAddress + KTIOCP_CFG_Offset)> iTIOCP_CFG ; + static TReg32_R<(TTimerTraits::KBaseAddress + KTISTAT_Offset)> iTISTAT ; + static TReg32_RW<(TTimerTraits::KBaseAddress + KTISR_Offset)> iTISR ; + static TReg32_RW<(TTimerTraits::KBaseAddress + KTIER_Offset)> iTIER ; + static TReg32_RW<(TTimerTraits::KBaseAddress + KTWER_Offset)> iTWER ; + static TReg32_RW<(TTimerTraits::KBaseAddress + KTCLR_Offset)> iTCLR ; + static TReg32_RW<(TTimerTraits::KBaseAddress + KTCRR_Offset)> iTCRR ; + static TReg32_RW<(TTimerTraits::KBaseAddress + KTLDR_Offset)> iTLDR ; + static TReg32_RW<(TTimerTraits::KBaseAddress + KTTGR_Offset)> iTTGR ; + static TReg32_R<(TTimerTraits::KBaseAddress + KTWPS_Offset)> iTWPS ; + static TReg32_RW<(TTimerTraits::KBaseAddress + KTMAR_Offset)> iTMAR ; + static TReg32_R<(TTimerTraits::KBaseAddress + KTCAR1_Offset)> iTCAR1 ; + static TReg32_RW<(TTimerTraits::KBaseAddress + KTSICR_Offset)> iTSICR ; + static TReg32_R<(TTimerTraits::KBaseAddress + KTCAR2_Offset)> iTCAR2 ; + } ; // class TGPTi + + /** + + An interface template for OMAP3530 Microsecond aligned timer functionality. + Encapsulates the extra registers provided for timers 1, 2 and 10. + */ + template + class TMsSyncTimer : public TGPT + { + using TGPT::iTWPS ; + using TGPT::iTLDR ; + + protected : + enum TRegisterOffsets + { + KTPIR_Offset = 0x048, + KTNIR_Offset = 0x04C, + KTCVR_Offset = 0x050, + KTOCR_Offset = 0x054, + KTOWR_Offset = 0x058 + } ; + + public : + enum TRegisterValues + { + KInitialLoad = 0xFFFFFFE0, + KInitialPIR = 0x38A40, + KInitialNIR = 0xFFF44800 + } ; + + static inline TBool CanWriteTPIR() + { + return (0 == (iTWPS.Read() & TWPS::T_W_PEND_TPIR::KOn)) ; + } + static inline TBool CanWriteTNIR() + { + return (0 == (iTWPS.Read() & TWPS::T_W_PEND_TNIR::KOn)) ; + } + static inline TBool CanWriteTCVR() + { + return (0 == (iTWPS.Read() & TWPS::T_W_PEND_TCVR::KOn)) ; + } + static inline TBool CanWriteTOCR() + { + return (0 == (iTWPS.Read() & TWPS::T_W_PEND_TOCR::KOn)) ; + } + static inline TBool CanWriteTOWR() + { + return (0 == (iTWPS.Read() & TWPS::T_W_PEND_TOWR::KOn)) ; + } + + static inline void ConfigureFor1Ms() + { + iTLDR.Write( KInitialLoad ); + iTPIR.Write( KInitialPIR ); + iTNIR.Write( KInitialNIR ); + } + + public : + static TReg32_RW<(TTimerTraits::KBaseAddress + KTPIR_Offset)> iTPIR ; + static TReg32_RW<(TTimerTraits::KBaseAddress + KTNIR_Offset)> iTNIR ; + static TReg32_RW<(TTimerTraits::KBaseAddress + KTCVR_Offset)> iTCVR ; + static TReg32_RW<(TTimerTraits::KBaseAddress + KTOCR_Offset)> iTOCR ; + static TReg32_RW<(TTimerTraits::KBaseAddress + KTOWR_Offset)> iTOWR ; + } ; // class TMsSyncTimer + + + } // namespage GPTimer + + typedef GPTimer::TMsSyncTimer TGpTimer1 ; + typedef GPTimer::TMsSyncTimer TGpTimer2 ; + typedef GPTimer::TGPT TGpTimer3 ; + typedef GPTimer::TGPT TGpTimer4 ; + typedef GPTimer::TGPT TGpTimer5 ; + typedef GPTimer::TGPT TGpTimer6 ; + typedef GPTimer::TGPT TGpTimer7 ; + typedef GPTimer::TGPT TGpTimer8 ; + typedef GPTimer::TGPT TGpTimer9 ; + typedef GPTimer::TMsSyncTimer TGpTimer10 ; + typedef GPTimer::TGPT TGpTimer11 ; + typedef GPTimer::TGPT TGpTimer12 ; + + + /** + An interface template for OMAP3530 32-KHz aligned timer functionality. + */ + class T32KhzSyncTimer + { + protected : + enum TRegisterAddress + { + KREG_32KSYNCNT_SYSCONFIG = TVirtual<0x48320004>::Value, + KREG_32KSYNCNT_CR = TVirtual<0x48320010>::Value + } ; + + public : + static TReg32_RW iSysConfig ; + static TReg32_R iCR ; + + private : + } ; // class TMsSyncTimer + + } // namespace Omap3530 + + } // namespace TexasInstruments + + +// **** TEST CODE **** +//# define HEADER_OMAP3530_TIMER_H_DO_COMPILE_TIME_CHECK_TESTS 1 +# ifdef HEADER_OMAP3530_TIMER_H_DO_COMPILE_TIME_CHECK_TESTS + inline void CompileTimeChecks(void) + { + __ASSERT_COMPILE((TI::Omap3530::GPTimer::TIOCP_CFG::T_IDLEMODE::KSmartIdle == (2 << 3))) ; + __ASSERT_COMPILE((TI::Omap3530::GPTimer::TIOCP_CFG::T_CLOCKACTIVITY::KMaintainIfClock == (1 << 8))) ; + __ASSERT_COMPILE((TI::Omap3530::GPTimer::KGPTIMER1_Base == (0xC6318000))) ; + __ASSERT_COMPILE((0)) ; // Prove that testing is happening + } +# endif +#endif /* ndef HEADER_OMAP3530_TIMER_H_INCLUDED */