64 #include <inc/hw_types.h>
65 #include <inc/hw_memmap.h>
66 #include <inc/hw_ddi.h>
67 #include <inc/hw_aux_smph.h>
85 #define DDI32RegWrite NOROM_DDI32RegWrite
86 #define DDI16BitWrite NOROM_DDI16BitWrite
87 #define DDI16BitfieldWrite NOROM_DDI16BitfieldWrite
88 #define DDI16BitRead NOROM_DDI16BitRead
89 #define DDI16BitfieldRead NOROM_DDI16BitfieldRead
97 #define DDI_SLAVE_REGS 64
105 #define DDI_PROTECT 0x00000080
106 #define DDI_ACK 0x00000001
107 #define DDI_SYNC 0x00000000
144 case 1: HWREGB(nAddr) = (uint8_t)nData;
break;
145 case 2: HWREGH(nAddr) = (uint16_t)nData;
break;
146 case 4:
default: HWREG(nAddr) = nData;
break;
168 __STATIC_INLINE uint32_t
177 case 1: nRet = HWREGB(nAddr);
break;
178 case 2: nRet = HWREGH(nAddr);
break;
179 case 4:
default: nRet = HWREG(nAddr);
break;
189 #ifdef DRIVERLIB_DEBUG
207 DDIBaseValid(uint32_t ui32Base)
230 __STATIC_INLINE uint32_t
236 ASSERT(DDIBaseValid(ui32Base));
270 uint32_t ui32RegOffset;
275 ASSERT(DDIBaseValid(ui32Base));
282 ui32RegOffset = DDI_O_SET;
311 uint32_t ui32RegOffset;
316 ASSERT(DDIBaseValid(ui32Base));
323 ui32RegOffset = DDI_O_CLR;
360 uint16_t ui16Mask, uint16_t ui16Val)
362 uint32_t ui32RegOffset;
367 ASSERT(DDIBaseValid(ui32Base));
369 ASSERT(!(ui16Val & 0xFF00));
370 ASSERT(!(ui16Mask & 0xFF00));
376 ui32RegOffset = DDI_O_MASK8B + (ui32Reg << 1) + (ui32Byte << 1);
413 uint32_t ui32Mask, uint32_t ui32Val)
415 uint32_t ui32RegOffset;
420 ASSERT(DDIBaseValid(ui32Base));
422 ASSERT(!(ui32Val & 0xFFFF0000));
423 ASSERT(!(ui32Mask & 0xFFFF0000));
429 ui32RegOffset = DDI_O_MASK16B + (ui32Reg << 1) + (bWriteHigh ? 4 : 0);
458 extern void DDI32RegWrite(uint32_t ui32Base, uint32_t ui32Reg, uint32_t ui32Val);
479 extern void DDI16BitWrite(uint32_t ui32Base, uint32_t ui32Reg,
480 uint32_t ui32Mask, uint32_t ui32WrData);
503 uint32_t ui32Mask, uint32_t ui32Shift,
520 extern uint16_t
DDI16BitRead(uint32_t ui32Base, uint32_t ui32Reg,
542 uint32_t ui32Mask, uint32_t ui32Shift);
550 #if !defined(DRIVERLIB_NOROM) && !defined(DOXYGEN)
552 #ifdef ROM_DDI32RegWrite
554 #define DDI32RegWrite ROM_DDI32RegWrite
556 #ifdef ROM_DDI16BitWrite
558 #define DDI16BitWrite ROM_DDI16BitWrite
560 #ifdef ROM_DDI16BitfieldWrite
561 #undef DDI16BitfieldWrite
562 #define DDI16BitfieldWrite ROM_DDI16BitfieldWrite
564 #ifdef ROM_DDI16BitRead
566 #define DDI16BitRead ROM_DDI16BitRead
568 #ifdef ROM_DDI16BitfieldRead
569 #undef DDI16BitfieldRead
570 #define DDI16BitfieldRead ROM_DDI16BitfieldRead
static void DDI8SetValBit(uint32_t ui32Base, uint32_t ui32Reg, uint32_t ui32Byte, uint16_t ui16Mask, uint16_t ui16Val)
Set a value on any 8 bits inside a 32 bit register in the DDI slave.
void DDI16BitWrite(uint32_t ui32Base, uint32_t ui32Reg, uint32_t ui32Mask, uint32_t ui32WrData)
Write a single bit using a 16-bit maskable write.
static void DDI32BitsSet(uint32_t ui32Base, uint32_t ui32Reg, uint32_t ui32Val)
Set specific bits in a DDI slave register.
static uint32_t AuxAdiDdiSafeRead(uint32_t nAddr, uint32_t nSize)
Safely read from AUX ADI/DDI interfaces using a semaphore.
uint16_t DDI16BitRead(uint32_t ui32Base, uint32_t ui32Reg, uint32_t ui32Mask)
Read a bit via the DDI using 16-bit read.
void DDI16BitfieldWrite(uint32_t ui32Base, uint32_t ui32Reg, uint32_t ui32Mask, uint32_t ui32Shift, uint16_t ui32Data)
Write a bit field via the DDI using 16-bit maskable write.
uint16_t DDI16BitfieldRead(uint32_t ui32Base, uint32_t ui32Reg, uint32_t ui32Mask, uint32_t ui32Shift)
Read a bitfield via the DDI using 16-bit read.
uint32_t CPUcpsid(void)
Disable all external interrupts.
static void DDI16SetValBit(uint32_t ui32Base, uint32_t ui32Reg, bool bWriteHigh, uint32_t ui32Mask, uint32_t ui32Val)
Set a value on any 16 bits inside a 32 bit register aligned on a half-word boundary in the DDI slave...
static uint32_t DDI32RegRead(uint32_t ui32Base, uint32_t ui32Reg)
Read the value in a 32 bit register.
uint32_t CPUcpsie(void)
Enable all external interrupts.
void DDI32RegWrite(uint32_t ui32Base, uint32_t ui32Reg, uint32_t ui32Val)
Write a 32 bit value to a register in the DDI slave.
static void DDI32BitsClear(uint32_t ui32Base, uint32_t ui32Reg, uint32_t ui32Val)
Clear specific bits in a 32 bit DDI register.
static void AuxAdiDdiSafeWrite(uint32_t nAddr, uint32_t nData, uint32_t nSize)
Safely write to AUX ADI/DDI interfaces using a semaphore.