williamr@4: // Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). williamr@4: // All rights reserved. williamr@4: // This component and the accompanying materials are made available williamr@4: // under the terms of the License "Eclipse Public License v1.0" williamr@4: // which accompanies this distribution, and is available williamr@4: // at the URL "http://www.eclipse.org/legal/epl-v10.html". williamr@4: // williamr@4: // Initial Contributors: williamr@4: // Nokia Corporation - initial contribution. williamr@4: // williamr@4: // Contributors: williamr@4: // williamr@4: // Description: williamr@4: // omap3530/assp/inc/omap3530_hardware_base.h williamr@4: // Linear base addresses for hardware peripherals on the beagle board. williamr@4: // This file is part of the Beagle Base port williamr@4: // williamr@4: williamr@4: #ifndef OMAP3530_HARDWARE_BASE_H__ williamr@4: # define OMAP3530_HARDWARE_BASE_H__ williamr@4: williamr@4: #include // for TPhysAddr, AsspRegister williamr@4: #include williamr@4: williamr@4: namespace TexasInstruments williamr@4: { williamr@4: williamr@4: namespace Omap3530 williamr@4: { williamr@4: williamr@4: /** williamr@4: Define constants for the various physical address blocks used on the OMAP3530 williamr@4: */ williamr@4: enum TPhysicalAddresses williamr@4: { williamr@4: KKiloByte = 1024, williamr@4: KMegaByte = (1024 * KKiloByte), williamr@4: KL4_Core_PhysicalBase = 0x48000000, williamr@4: KL4_Core_PhysicalSize = (4 * KMegaByte), williamr@4: KL4_Core_PhysicalEnd = (KL4_Core_PhysicalBase + KL4_Core_PhysicalSize), williamr@4: williamr@4: KL4_WakeUp_PhysicalBase = 0x48300000, williamr@4: KL4_WakeUp_PhysicalSize = (256 * KKiloByte ), williamr@4: KL4_WakeUp_PhysicalEnd = (KL4_WakeUp_PhysicalBase + KL4_WakeUp_PhysicalSize), williamr@4: williamr@4: KL4_Per_PhysicalBase = 0x49000000, williamr@4: KL4_Per_PhysicalSize = (1 * KMegaByte), williamr@4: KL4_Per_PhysicalEnd = (KL4_Per_PhysicalBase + KL4_Per_PhysicalSize), williamr@4: williamr@4: KL4_Sgx_PhysicalBase = 0x50000000, williamr@4: KL4_Sgx_PhysicalSize = (64 * KKiloByte), williamr@4: KL4_Sgx_PhysicalEnd = (KL4_Sgx_PhysicalBase + KL4_Sgx_PhysicalSize), williamr@4: williamr@4: KL4_Emu_PhysicalBase = 0x54000000, williamr@4: KL4_Emu_PhysicalSize = (8 * KMegaByte), williamr@4: KL4_Emu_PhysicalEnd = (KL4_Emu_PhysicalBase + KL4_Emu_PhysicalSize), williamr@4: williamr@4: KL3_Control_PhysicalBase = 0x68000000, williamr@4: KL3_Control_PhysicalSize = (1 * KMegaByte), williamr@4: KL3_Control_PhysicalEnd = (KL3_Control_PhysicalBase + KL3_Control_PhysicalSize), williamr@4: williamr@4: KL3_Gpmc_PhysicalBase = 0x6e000000, williamr@4: KL3_Gpmc_PhysicalSize = (1 * KMegaByte), williamr@4: KL3_Gpmc_PhysicalEnd = (KL3_Gpmc_PhysicalBase + KL3_Gpmc_PhysicalSize) williamr@4: } ; williamr@4: williamr@4: /** williamr@4: Define constants for the virtual address mappings used on the OMAP3530 williamr@4: */ williamr@4: enum TLinearAddresses williamr@4: { williamr@4: KL4_Core_LinearBase = 0xC6000000, williamr@4: KL4_Core_LinearSize = KL4_Core_PhysicalSize, williamr@4: KL4_Core_LinearEnd = (KL4_Core_LinearBase + KL4_Core_LinearSize), williamr@4: williamr@4: KL4_WakeUp_LinearBase = (KL4_Core_LinearBase + (KL4_WakeUp_PhysicalBase - KL4_Core_PhysicalBase)), williamr@4: KL4_WakeUp_LinearSize = KL4_WakeUp_PhysicalSize, williamr@4: KL4_WakeUp_LinearEnd = (KL4_WakeUp_LinearBase + KL4_WakeUp_LinearSize), williamr@4: williamr@4: KL4_Per_LinearBase = KL4_Core_LinearEnd, williamr@4: KL4_Per_LinearSize = KL4_Per_PhysicalSize, williamr@4: KL4_Per_LinearEnd = (KL4_Per_LinearBase + KL4_Per_LinearSize), williamr@4: williamr@4: KL4_Sgx_LinearBase = KL4_Per_LinearEnd, williamr@4: KL4_Sgx_LinearSize = KL4_Sgx_PhysicalSize, williamr@4: KL4_Sgx_LinearEnd = (KL4_Sgx_LinearBase + KL4_Sgx_LinearSize), williamr@4: williamr@4: KL4_Emu_LinearBase = KL4_Sgx_LinearBase + KMegaByte, williamr@4: KL4_Emu_LinearSize = KL4_Emu_PhysicalSize, williamr@4: KL4_Emu_LinearEnd = (KL4_Emu_LinearBase + KL4_Emu_LinearSize), williamr@4: williamr@4: KL3_Control_LinearBase = KL4_Emu_LinearEnd, williamr@4: KL3_Control_LinearSize = KL3_Control_PhysicalSize, williamr@4: KL3_Control_LinearEnd = (KL3_Control_LinearBase + KL3_Control_LinearSize), williamr@4: williamr@4: KL3_Gpmc_LinearBase = KL3_Control_LinearEnd, williamr@4: KL3_Gpmc_LinearSize = KL3_Gpmc_PhysicalSize, williamr@4: KL3_Gpmc_LinearEnd = (KL3_Gpmc_LinearBase + KL3_Gpmc_LinearSize) williamr@4: } ; williamr@4: williamr@4: /** williamr@4: A template to provide the virtual address of a given physical address. williamr@4: @example williamr@4: @code williamr@4: enum TTimerBaseAddress williamr@4: { williamr@4: KGPTIMER1_Base = Omap3530HwBase::TVirtual<0x48318000>::Value, williamr@4: } ; williamr@4: */ williamr@4: template williamr@4: struct TVirtual williamr@4: { williamr@4: enum TConstants williamr@4: { williamr@4: KIsL4Core = ((aDdReSs >= KL4_Core_PhysicalBase) && (aDdReSs < KL4_Core_PhysicalEnd)), williamr@4: KIsL4WakeUp = ((aDdReSs >= KL4_WakeUp_PhysicalBase) && (aDdReSs < KL4_WakeUp_PhysicalEnd)), // Subset of L4Core williamr@4: KIsL4Per = ((aDdReSs >= KL4_Per_PhysicalBase) && (aDdReSs < KL4_Per_PhysicalEnd)), williamr@4: KIsL4Sgx = ((aDdReSs >= KL4_Sgx_PhysicalBase) && (aDdReSs < KL4_Sgx_PhysicalEnd)), williamr@4: KIsL4Emu = ((aDdReSs >= KL4_Emu_PhysicalBase) && (aDdReSs < KL4_Emu_PhysicalEnd)), williamr@4: KIsL3Control = ((aDdReSs >= KL3_Control_PhysicalBase) && (aDdReSs < KL3_Control_PhysicalEnd)), williamr@4: KIsL3Gpmc = ((aDdReSs >= KL3_Gpmc_PhysicalBase) && (aDdReSs < KL3_Gpmc_PhysicalEnd)), williamr@4: KIsConvertable = (KIsL4Core || KIsL4Per || KIsL4Sgx || KIsL4Emu || KIsL3Control || KIsL3Gpmc), williamr@4: KIsMapped = (KIsL4Core || KIsL4Per || KIsL4Sgx || KIsL4Emu || KIsL3Control || KIsL3Gpmc), williamr@4: KOffset = ((KIsL4Core) ? (aDdReSs - KL4_Core_PhysicalBase) williamr@4: : ((KIsL4Per) ? (aDdReSs - KL4_Per_PhysicalBase) williamr@4: : ((KIsL4Sgx) ? (aDdReSs - KL4_Sgx_PhysicalBase) williamr@4: : ((KIsL4Emu) ? (aDdReSs - KL4_Emu_PhysicalBase) williamr@4: : ((KIsL3Control) ? (aDdReSs - KL3_Control_PhysicalBase) williamr@4: : ((KIsL3Gpmc) ? (aDdReSs - KL3_Gpmc_PhysicalBase) williamr@4: : (0))))))), williamr@4: // TODO: Change to give compile time error if address not mapped williamr@4: KLinearBase = ((KIsL4Core) ? (KL4_Core_LinearBase) williamr@4: : ((KIsL4Per) ? (KL4_Per_LinearBase) williamr@4: : ((KIsL4Sgx) ? (KL4_Sgx_LinearBase) williamr@4: : ((KIsL4Emu) ? (KL4_Emu_LinearBase) williamr@4: : ((KIsL3Control) ? (KL3_Control_LinearBase) williamr@4: : ((KIsL3Gpmc) ? (KL3_Gpmc_LinearBase) williamr@4: : (0))))))), williamr@4: /** williamr@4: Returns the Linear address mapping for a specific Physical address williamr@4: */ williamr@4: Value = (KLinearBase + KOffset) williamr@4: } ; williamr@4: } ; williamr@4: williamr@4: template williamr@4: struct TLinearCheck williamr@4: { williamr@4: enum TConstants williamr@4: { williamr@4: KIsL4Core = ((aDdReSs >= KL4_Core_LinearBase) && (aDdReSs < KL4_Core_LinearEnd)), williamr@4: KIsL4Per = ((aDdReSs >= KL4_Per_LinearBase) && (aDdReSs < KL4_Per_LinearEnd)), williamr@4: KIsL4Sgx = ((aDdReSs >= KL4_Sgx_LinearBase) && (aDdReSs < KL4_Sgx_LinearEnd)), williamr@4: KIsL4Emu = ((aDdReSs >= KL4_Emu_LinearBase) && (aDdReSs < KL4_Emu_LinearEnd)), williamr@4: KIsL3Control = ((aDdReSs >= KL3_Control_LinearBase) && (aDdReSs < KL3_Control_LinearBase)), williamr@4: KIsL3Gpmc = ((aDdReSs >= KL3_Gpmc_LinearBase) && (aDdReSs < KL3_Gpmc_LinearBase)), williamr@4: KIsMapped = (KIsL4Core || KIsL4Per || KIsL4Sgx || KIsL4Emu || KIsL3Control || KIsL3Gpmc) williamr@4: } ; williamr@4: } ; williamr@4: williamr@4: # ifdef __MEMMODEL_MULTIPLE__ williamr@4: const TUint KL4_Core = KL4_Core_LinearBase; // KPrimaryIOBase williamr@4: const TUint KL4_Per = KL4_Per_LinearBase; williamr@4: const TUint KSgx = KL4_Sgx_LinearBase; williamr@4: const TUint KL4_Emu = KL4_Emu_LinearBase; williamr@4: const TUint KL3_Control = KL3_Control_LinearBase; williamr@4: const TUint KL3_Gpmc = KL3_Gpmc_LinearBase; williamr@4: //const TUint KIva2_2Ss = KL4_Core + 0x01910000; williamr@4: //const TUint KL3ControlRegisters = KL4_Core + 0x04910000; williamr@4: //const TUint KSmsRegisters = KL4_Core + 0x05910000; williamr@4: //const TUint KSdrcRegisters = KL4_Core + 0x06910000; williamr@4: //const TUint KGpmcRegisters = KL4_Core + 0x07910000; williamr@4: williamr@4: //#elif __MEMMODEL_FLEXIBLE__ williamr@4: // define flexible memery model hw base addresses williamr@4: williamr@4: # else // unknown memery model williamr@4: # error hardware_base.h: Constants may need changing williamr@4: # endif // memory model williamr@4: williamr@4: // Register Access types. williamr@4: williamr@4: typedef TUint32 TRegValue; williamr@4: typedef TUint32 TRegValue32; williamr@4: typedef TUint16 TRegValue16; williamr@4: typedef TUint8 TRegValue8; williamr@4: williamr@4: /** williamr@4: An interface template for read-only registers. williamr@4: */ williamr@4: template williamr@4: class TReg32_R williamr@4: { williamr@4: public : williamr@4: static inline TRegValue Read() williamr@4: { williamr@4: __ASSERT_COMPILE((TLinearCheck
::KIsMapped)) ; williamr@4: return AsspRegister::Read32(aDdReSs) ; williamr@4: } williamr@4: } ; williamr@4: williamr@4: template williamr@4: class TReg16_R williamr@4: { williamr@4: public : williamr@4: static inline TRegValue16 Read() williamr@4: { williamr@4: __ASSERT_COMPILE((TLinearCheck
::KIsMapped)) ; williamr@4: return AsspRegister::Read16(aDdReSs) ; williamr@4: } williamr@4: } ; williamr@4: williamr@4: template williamr@4: class TReg8_R williamr@4: { williamr@4: public : williamr@4: static inline TRegValue8 Read() williamr@4: { williamr@4: __ASSERT_COMPILE((TLinearCheck
::KIsMapped)) ; williamr@4: return AsspRegister::Read8(aDdReSs) ; williamr@4: } williamr@4: } ; williamr@4: williamr@4: /** williamr@4: An interface template for read-write registers. williamr@4: */ williamr@4: template williamr@4: class TReg32_RW : public TReg32_R
williamr@4: { williamr@4: public : williamr@4: static inline void Write(const TRegValue aValue) williamr@4: { williamr@4: __ASSERT_COMPILE((TLinearCheck
::KIsMapped)) ; williamr@4: AsspRegister::Write32(aDdReSs, aValue) ; williamr@4: } williamr@4: static inline void Modify(const TRegValue aClearMask, const TRegValue aSetMask) williamr@4: { williamr@4: __ASSERT_COMPILE((TLinearCheck
::KIsMapped)) ; williamr@4: AsspRegister::Modify32(aDdReSs, aClearMask, aSetMask) ; williamr@4: } williamr@4: } ; williamr@4: williamr@4: template williamr@4: class TReg16_RW : public TReg16_R
williamr@4: { williamr@4: public : williamr@4: static inline void Write(const TRegValue16 aValue) williamr@4: { williamr@4: __ASSERT_COMPILE((TLinearCheck
::KIsMapped)) ; williamr@4: AsspRegister::Write16(aDdReSs, aValue) ; williamr@4: } williamr@4: static inline void Modify(const TRegValue16 aClearMask, const TRegValue16 aSetMask) williamr@4: { williamr@4: __ASSERT_COMPILE((TLinearCheck
::KIsMapped)) ; williamr@4: AsspRegister::Modify16(aDdReSs, aClearMask, aSetMask) ; williamr@4: } williamr@4: } ; williamr@4: williamr@4: template williamr@4: class TReg8_RW : public TReg8_R
williamr@4: { williamr@4: public : williamr@4: static inline void Write(const TRegValue8 aValue) williamr@4: { williamr@4: __ASSERT_COMPILE((TLinearCheck
::KIsMapped)) ; williamr@4: AsspRegister::Write8(aDdReSs, aValue) ; williamr@4: } williamr@4: static inline void Modify(const TRegValue8 aClearMask, const TRegValue8 aSetMask) williamr@4: { williamr@4: __ASSERT_COMPILE((TLinearCheck
::KIsMapped)) ; williamr@4: AsspRegister::Modify8(aDdReSs, aClearMask, aSetMask) ; williamr@4: } williamr@4: } ; williamr@4: williamr@4: /** williamr@4: An interface template for write-only registers. williamr@4: */ williamr@4: template williamr@4: class TReg32_W williamr@4: { williamr@4: public : williamr@4: static inline void Write(const TRegValue aValue) williamr@4: { williamr@4: __ASSERT_COMPILE((TLinearCheck
::KIsMapped)) ; williamr@4: AsspRegister::Write32(aDdReSs, aValue) ; williamr@4: } williamr@4: } ; williamr@4: williamr@4: template williamr@4: class TReg16_W williamr@4: { williamr@4: public : williamr@4: static inline void Write(const TRegValue16 aValue) williamr@4: { williamr@4: __ASSERT_COMPILE((TLinearCheck
::KIsMapped)) ; williamr@4: AsspRegister::Write16(aDdReSs, aValue) ; williamr@4: } williamr@4: } ; williamr@4: williamr@4: template williamr@4: class TReg8_W williamr@4: { williamr@4: public : williamr@4: static inline void Write(const TRegValue8 aValue) williamr@4: { williamr@4: __ASSERT_COMPILE((TLinearCheck
::KIsMapped)) ; williamr@4: AsspRegister::Write8(aDdReSs, aValue) ; williamr@4: } williamr@4: } ; williamr@4: williamr@4: /** Class for registers that have dynamic base address */ williamr@4: template williamr@4: class TDynReg8_R williamr@4: { williamr@4: public : williamr@4: static inline TRegValue8 Read( const T& aOwner ) williamr@4: { williamr@4: return AsspRegister::Read8( aOwner.Base() + OfFsEt ) ; williamr@4: } williamr@4: } ; williamr@4: williamr@4: template williamr@4: class TDynReg16_R williamr@4: { williamr@4: public : williamr@4: static inline TRegValue16 Read( const T& aOwner ) williamr@4: { williamr@4: return AsspRegister::Read16( aOwner.Base() + OfFsEt ) ; williamr@4: } williamr@4: } ; williamr@4: williamr@4: template williamr@4: class TDynReg32_R williamr@4: { williamr@4: public : williamr@4: static inline TRegValue32 Read( const T& aOwner ) williamr@4: { williamr@4: return AsspRegister::Read32( aOwner.Base() + OfFsEt ) ; williamr@4: } williamr@4: } ; williamr@4: williamr@4: williamr@4: template williamr@4: class TDynReg8_RW : public TDynReg8_R williamr@4: { williamr@4: public : williamr@4: static inline void Write( T& aOwner, const TRegValue8 aValue) williamr@4: { williamr@4: AsspRegister::Write8( aOwner.Base() + OfFsEt, aValue) ; williamr@4: } williamr@4: static inline void Modify( T& aOwner, const TRegValue8 aClearMask, const TRegValue8 aSetMask) williamr@4: { williamr@4: AsspRegister::Modify8( aOwner.Base() + OfFsEt, aClearMask, aSetMask) ; williamr@4: } williamr@4: } ; williamr@4: williamr@4: template williamr@4: class TDynReg16_RW : public TDynReg16_R williamr@4: { williamr@4: public : williamr@4: static inline void Write( T& aOwner, const TRegValue16 aValue) williamr@4: { williamr@4: AsspRegister::Write16( aOwner.Base() + OfFsEt, aValue) ; williamr@4: } williamr@4: static inline void Modify( T& aOwner, const TRegValue16 aClearMask, const TRegValue16 aSetMask) williamr@4: { williamr@4: AsspRegister::Modify16( aOwner.Base() + OfFsEt, aClearMask, aSetMask) ; williamr@4: } williamr@4: } ; williamr@4: williamr@4: template williamr@4: class TDynReg32_RW : public TDynReg32_R williamr@4: { williamr@4: public : williamr@4: static inline void Write( T& aOwner, const TRegValue32 aValue) williamr@4: { williamr@4: AsspRegister::Write32( aOwner.Base() + OfFsEt, aValue) ; williamr@4: } williamr@4: static inline void Modify( T& aOwner, const TRegValue32 aClearMask, const TRegValue32 aSetMask) williamr@4: { williamr@4: AsspRegister::Modify32( aOwner.Base() + OfFsEt, aClearMask, aSetMask) ; williamr@4: } williamr@4: } ; williamr@4: williamr@4: template williamr@4: class TDynReg8_W williamr@4: { williamr@4: public : williamr@4: static inline void Write( T& aOwner, const TRegValue8 aValue) williamr@4: { williamr@4: AsspRegister::Write8( aOwner.Base() + OfFsEt, aValue) ; williamr@4: } williamr@4: static inline void Modify( T& aOwner, const TRegValue8 aClearMask, const TRegValue8 aSetMask) williamr@4: { williamr@4: AsspRegister::Modify8( aOwner.Base() + OfFsEt, aClearMask, aSetMask) ; williamr@4: } williamr@4: } ; williamr@4: williamr@4: template williamr@4: class TDynReg16_W williamr@4: { williamr@4: public : williamr@4: static inline void Write( T& aOwner, const TRegValue16 aValue) williamr@4: { williamr@4: AsspRegister::Write16( aOwner.Base() + OfFsEt, aValue) ; williamr@4: } williamr@4: static inline void Modify( T& aOwner, const TRegValue16 aClearMask, const TRegValue16 aSetMask) williamr@4: { williamr@4: AsspRegister::Modify16( aOwner.Base() + OfFsEt, aClearMask, aSetMask) ; williamr@4: } williamr@4: } ; williamr@4: williamr@4: template williamr@4: class TDynReg32_W williamr@4: { williamr@4: public : williamr@4: static inline void Write( T& aOwner, const TRegValue32 aValue) williamr@4: { williamr@4: AsspRegister::Write32( aOwner.Base() + OfFsEt, aValue) ; williamr@4: } williamr@4: static inline void Modify( T& aOwner, const TRegValue32 aClearMask, const TRegValue32 aSetMask) williamr@4: { williamr@4: AsspRegister::Modify32( aOwner.Base() + OfFsEt, aClearMask, aSetMask) ; williamr@4: } williamr@4: } ; williamr@4: williamr@4: /** williamr@4: An Null class for when no register access is required. williamr@4: */ williamr@4: class TNull_Reg williamr@4: { williamr@4: public : williamr@4: static inline TRegValue Read() williamr@4: { williamr@4: return 0 ; williamr@4: } williamr@4: static inline void Write(const TRegValue) williamr@4: { williamr@4: } williamr@4: static inline void Modify(const TRegValue, const TRegValue) williamr@4: { williamr@4: } williamr@4: } ; williamr@4: williamr@4: template williamr@4: class TBit williamr@4: { williamr@4: public : williamr@4: enum TConstants williamr@4: { williamr@4: KValue = (1 << aBiTpOsItIoN) williamr@4: } ; williamr@4: } ; williamr@4: williamr@4: template williamr@4: class TBitFieldBase williamr@4: { williamr@4: public : williamr@4: enum TConstants williamr@4: { williamr@4: KShift = aBiTpOsItIoN, williamr@4: KValueMask = (TBit::KValue - 1), williamr@4: KFieldMask = (KValueMask << KShift), williamr@4: KValueMax = KValueMask williamr@4: } ; williamr@4: } ; williamr@4: williamr@4: template williamr@4: class TBitFieldValue : public TBitFieldBase williamr@4: { williamr@4: public : williamr@4: using TBitFieldBase::KShift ; williamr@4: using TBitFieldBase::KValueMask ; williamr@4: using TBitFieldBase::KFieldMask ; williamr@4: using TBitFieldBase::KValueMax ; williamr@4: williamr@4: enum TValues williamr@4: { williamr@4: KValue = ((KValueMask & aVaLuE) << KShift) williamr@4: } ; williamr@4: } ; williamr@4: williamr@4: template williamr@4: class TBitField : public TBitFieldBase williamr@4: { williamr@4: using TBitFieldBase::KShift ; williamr@4: using TBitFieldBase::KValueMask ; williamr@4: using TBitFieldBase::KFieldMask ; williamr@4: using TBitFieldBase::KValueMax ; williamr@4: public : williamr@4: template williamr@4: class TConstVal : public TBitFieldValue williamr@4: { williamr@4: public : williamr@4: using TBitFieldValue::KValue ; williamr@4: } ; williamr@4: williamr@4: inline TBitField(const TRegValue aValue) williamr@4: : iValue((KValueMask & aValue) << KShift) {} williamr@4: williamr@4: inline TBitField(const TRegValue * aValuePtr) williamr@4: : iValue(KFieldMask & *aValuePtr) {} williamr@4: williamr@4: template williamr@4: inline TBitField(const TReg32_R
& aReg) williamr@4: : iValue(KFieldMask & aReg.Read()) {} williamr@4: williamr@4: inline TRegValue Value() const {return (KValueMask & (iValue >> KShift)) ;} williamr@4: williamr@4: inline TRegValue RegField() const {return (iValue) ;} williamr@4: williamr@4: private : williamr@4: TRegValue iValue ; williamr@4: } ; williamr@4: williamr@4: template williamr@4: class TSingleBitField : public TBitField williamr@4: { williamr@4: public : williamr@4: enum TConstants williamr@4: { williamr@4: KOff = 0, williamr@4: KOn = (1 << aBiTpOsItIoN), williamr@4: KClear = KOff, williamr@4: KSet = KOn, williamr@4: KMask = KOn, williamr@4: } ; williamr@4: } ; williamr@4: williamr@4: } ; // namespace Omap3530 williamr@4: williamr@4: } ; // namespace TexasInstruments williamr@4: williamr@4: williamr@4: namespace TI = TexasInstruments ; williamr@4: williamr@4: namespace OMAP3530 = TexasInstruments::Omap3530 ; williamr@4: williamr@4: namespace Omap3530HwBase = TexasInstruments::Omap3530 ; williamr@4: williamr@4: // **** TEST CODE **** williamr@4: //# define HEADER_OMAP3530_HARDWARE_BASE_H_DO_COMPILE_TIME_CHECK_TESTS 1 williamr@4: # ifdef HEADER_OMAP3530_HARDWARE_BASE_H_DO_COMPILE_TIME_CHECK_TESTS williamr@4: inline void CompileTimeChecks(void) williamr@4: { williamr@4: __ASSERT_COMPILE((Omap3530HwBase::TVirtual<0x48318000>::KIsL4Core)) ; williamr@4: __ASSERT_COMPILE((TI::Omap3530::TVirtual<0x48318000>::KIsL4WakeUp)) ; williamr@4: __ASSERT_COMPILE((!Omap3530HwBase::TVirtual<0x48318000>::KIsL4Emu)) ; williamr@4: __ASSERT_COMPILE((!Omap3530HwBase::TVirtual<0x0000FFFF>::KIsConvertable)) ; williamr@4: __ASSERT_COMPILE((Omap3530HwBase::TLinearCheck< Omap3530HwBase::TVirtual<0x48318000>::Value >::KIsMapped)) ; williamr@4: __ASSERT_COMPILE((!Omap3530HwBase::TLinearCheck< Omap3530HwBase::TVirtual<0x0000FFFF>::Value >::KIsMapped)) ; williamr@4: const TLinAddr mapped(Omap3530HwBase::TVirtual<0x48318000>::Value) ; williamr@4: const TLinAddr unmapped(Omap3530HwBase::TVirtual<0x0000FFFF>::Value) ; williamr@4: __ASSERT_COMPILE((Omap3530HwBase::TLinearCheck< mapped >::KIsMapped)) ; williamr@4: __ASSERT_COMPILE((!Omap3530HwBase::TLinearCheck< unmapped >::KIsMapped)) ; williamr@4: __ASSERT_COMPILE((0)) ; // Prove that testing is happening williamr@4: } williamr@4: # endif williamr@4: williamr@4: const TUint KSetNone = 0; williamr@4: const TUint KSetAll = 0xffffffff; williamr@4: const TUint KClearNone = 0; williamr@4: const TUint KClearAll = 0xffffffff; williamr@4: const TUint KHOmapClkULPD48Mhz = 48000000; williamr@4: williamr@4: #endif // !OMAP3530_HARDWARE_BASE_H__ williamr@4: williamr@4: williamr@4: