64 #include <inc/hw_types.h>
65 #include <inc/hw_uart.h>
66 #include <inc/hw_memmap.h>
67 #include <inc/hw_ints.h>
68 #include <inc/hw_adi.h>
77 #define ADI_SLAVE_REGS 16
85 #define ADI_PROTECT 0x00000080
86 #define ADI_ACK 0x00000001
87 #define ADI_SYNC 0x00000000
95 #ifdef DRIVERLIB_DEBUG
110 ADIBaseValid(uint32_t ui32Base)
154 ASSERT(ADIBaseValid(ui32Base));
163 HWREGB(ui32Base + ui32Reg) = ui8Val;
204 ASSERT(ADIBaseValid(ui32Base));
213 HWREGH(ui32Base + (ui32Reg & 0xFE)) = ui16Val;
253 ASSERT(ADIBaseValid(ui32Base));
262 HWREG(ui32Base + (ui32Reg & 0xFC)) = ui32Val;
287 __STATIC_INLINE uint32_t
293 ASSERT(ADIBaseValid(ui32Base));
302 return(HWREGB(ui32Base + ui32Reg));
330 __STATIC_INLINE uint32_t
336 ASSERT(ADIBaseValid(ui32Base));
345 return(HWREGH(ui32Base + (ui32Reg & 0xFE)));
371 __STATIC_INLINE uint32_t
377 ASSERT(ADIBaseValid(ui32Base));
386 return(HWREG(ui32Base + (ui32Reg & 0xFC)));
423 uint32_t ui32RegOffset;
428 ASSERT(ADIBaseValid(ui32Base));
435 ui32RegOffset = ADI_O_SET;
443 HWREGB(ui32Base + ui32RegOffset + ui32Reg) = ui8Val;
480 uint32_t ui32RegOffset;
485 ASSERT(ADIBaseValid(ui32Base));
492 ui32RegOffset = ADI_O_SET;
500 HWREGH(ui32Base + ui32RegOffset + (ui32Reg & 0xFE)) = ui16Val;
537 uint32_t ui32RegOffset;
542 ASSERT(ADIBaseValid(ui32Base));
549 ui32RegOffset = ADI_O_SET;
557 HWREG(ui32Base + ui32RegOffset + (ui32Reg & 0xFC)) = ui32Val;
594 uint32_t ui32RegOffset;
599 ASSERT(ADIBaseValid(ui32Base));
606 ui32RegOffset = ADI_O_CLR;
614 HWREGB(ui32Base + ui32RegOffset + ui32Reg) = ui8Val;
651 uint32_t ui32RegOffset;
656 ASSERT(ADIBaseValid(ui32Base));
663 ui32RegOffset = ADI_O_CLR;
671 HWREGH(ui32Base + ui32RegOffset + (ui32Reg & 0xFE)) = ui16Val;
708 uint32_t ui32RegOffset;
713 ASSERT(ADIBaseValid(ui32Base));
720 ui32RegOffset = ADI_O_CLR;
728 HWREG(ui32Base + ui32RegOffset + (ui32Reg & 0xFC)) = ui32Val;
767 uint8_t ui8Mask, uint8_t ui8Val)
769 uint32_t ui32RegOffset;
774 ASSERT(ADIBaseValid(ui32Base));
777 ASSERT(!(ui8Mask & 0xF0));
783 ui32RegOffset = ADI_O_MASK4B + (ui32Reg << 1) + (bWriteHigh ? 1 : 0);
791 HWREGB(ui32Base + ui32RegOffset) = (ui8Mask << 4) | ui8Val;
827 uint32_t ui32RegOffset;
832 ASSERT(ADIBaseValid(ui32Base));
834 ASSERT(!(ui16Val & 0xFF00));
835 ASSERT(!(ui16Mask & 0xFF00));
841 ui32RegOffset = ADI_O_MASK8B + (ui32Reg << 1);
849 HWREGH(ui32Base + ui32RegOffset) = (ui16Mask << 8) | ui16Val;
886 uint32_t ui32RegOffset;
891 ASSERT(ADIBaseValid(ui32Base));
893 ASSERT(!(ui32Val & 0xFFFF0000));
894 ASSERT(!(ui32Mask & 0xFFFF0000));
900 ui32RegOffset = ADI_O_MASK16B + ((ui32Reg << 1) & 0xFC);
908 HWREG(ui32Base + ui32RegOffset) = (ui32Mask << 16) | ui32Val;
static void ADI8BitsClear(uint32_t ui32Base, uint32_t ui32Reg, uint8_t ui8Val)
Clear specific bits in an 8 bit ADI register.
static void ADI16SetValBit(uint32_t ui32Base, uint32_t ui32Reg, uint32_t ui32Mask, uint32_t ui32Val)
Set a value on any bits inside an 2 x 8 bit register aligned on a half-word (byte) boundary in the AD...
static uint32_t ADI32RegRead(uint32_t ui32Base, uint32_t ui32Reg)
Read the value in a 32 bit register.
static void ADI16BitsClear(uint32_t ui32Base, uint32_t ui32Reg, uint16_t ui16Val)
Clear specific bits in two 8 bit ADI register.
static void ADI16BitsSet(uint32_t ui32Base, uint32_t ui32Reg, uint16_t ui16Val)
Set specific bits in 2 x 8 bit ADI slave registers.
static uint32_t AuxAdiDdiSafeRead(uint32_t nAddr, uint32_t nSize)
Safely read from AUX ADI/DDI interfaces using a semaphore.
static void ADI8RegWrite(uint32_t ui32Base, uint32_t ui32Reg, uint8_t ui8Val)
Write an 8 bit value to a register in an ADI slave.
static uint32_t ADI8RegRead(uint32_t ui32Base, uint32_t ui32Reg)
Read the value of an 8 bit register in the ADI slave.
static void ADI4SetValBit(uint32_t ui32Base, uint32_t ui32Reg, bool bWriteHigh, uint8_t ui8Mask, uint8_t ui8Val)
Set a value on any 4 bits inside an 8 bit register in the ADI slave.
static void ADI16RegWrite(uint32_t ui32Base, uint32_t ui32Reg, uint16_t ui16Val)
Write a 16 bit value to 2 registers in the ADI slave.
static void ADI8SetValBit(uint32_t ui32Base, uint32_t ui32Reg, uint16_t ui16Mask, uint16_t ui16Val)
Set a value on any bits inside an 8 bit register in the ADI slave.
static void ADI32BitsSet(uint32_t ui32Base, uint32_t ui32Reg, uint32_t ui32Val)
Set specific bits in 4 x 8 bit ADI slave registers.
static void ADI8BitsSet(uint32_t ui32Base, uint32_t ui32Reg, uint8_t ui8Val)
Set specific bits in a single 8 bit ADI register.
static uint32_t ADI16RegRead(uint32_t ui32Base, uint32_t ui32Reg)
Read the value in a 16 bit register.
static void ADI32BitsClear(uint32_t ui32Base, uint32_t ui32Reg, uint32_t ui32Val)
Clear specific bits in four 8 bit ADI register.
static void AuxAdiDdiSafeWrite(uint32_t nAddr, uint32_t nData, uint32_t nSize)
Safely write to AUX ADI/DDI interfaces using a semaphore.
static void ADI32RegWrite(uint32_t ui32Base, uint32_t ui32Reg, uint32_t ui32Val)
Write a 32 bit value to 4 registers in the ADI slave.