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
84 #define ADI_NO_WAIT 0x00000000
85 #define ADI_WAIT_FOR_ACK 0x00000004
86 #define ADI_SPEED_2 0x00000000
87 #define ADI_SPEED_4 0x00000001
88 #define ADI_SPEED_8 0x00000002
89 #define ADI_SPEED_16 0x00000003
90 #define ADI_CONFIG_MASK 0x00000007
97 #define ADI_PROTECT 0x00000080
98 #define ADI_ACK 0x00000001
99 #define ADI_SYNC 0x00000000
107 #ifdef DRIVERLIB_DEBUG
122 ADIBaseValid(uint32_t ui32Base)
166 ASSERT(ADIBaseValid(ui32Base));
175 HWREGB(ui32Base + ui32Reg) = ui8Val;
216 ASSERT(ADIBaseValid(ui32Base));
225 HWREGH(ui32Base + (ui32Reg & 0xFE)) = ui16Val;
265 ASSERT(ADIBaseValid(ui32Base));
274 HWREG(ui32Base + (ui32Reg & 0xFC)) = ui32Val;
299 __STATIC_INLINE uint32_t
305 ASSERT(ADIBaseValid(ui32Base));
314 return(HWREGB(ui32Base + ui32Reg));
342 __STATIC_INLINE uint32_t
348 ASSERT(ADIBaseValid(ui32Base));
357 return(HWREGH(ui32Base + (ui32Reg & 0xFE)));
383 __STATIC_INLINE uint32_t
389 ASSERT(ADIBaseValid(ui32Base));
398 return(HWREG(ui32Base + (ui32Reg & 0xFC)));
435 uint32_t ui32RegOffset;
440 ASSERT(ADIBaseValid(ui32Base));
447 ui32RegOffset = ADI_O_SET;
455 HWREGB(ui32Base + ui32RegOffset + ui32Reg) = ui8Val;
492 uint32_t ui32RegOffset;
497 ASSERT(ADIBaseValid(ui32Base));
504 ui32RegOffset = ADI_O_SET;
512 HWREGH(ui32Base + ui32RegOffset + (ui32Reg & 0xFE)) = ui16Val;
549 uint32_t ui32RegOffset;
554 ASSERT(ADIBaseValid(ui32Base));
561 ui32RegOffset = ADI_O_SET;
569 HWREG(ui32Base + ui32RegOffset + (ui32Reg & 0xFC)) = ui32Val;
606 uint32_t ui32RegOffset;
611 ASSERT(ADIBaseValid(ui32Base));
618 ui32RegOffset = ADI_O_CLR;
626 HWREGB(ui32Base + ui32RegOffset + ui32Reg) = ui8Val;
663 uint32_t ui32RegOffset;
668 ASSERT(ADIBaseValid(ui32Base));
675 ui32RegOffset = ADI_O_CLR;
683 HWREGH(ui32Base + ui32RegOffset + (ui32Reg & 0xFE)) = ui16Val;
720 uint32_t ui32RegOffset;
725 ASSERT(ADIBaseValid(ui32Base));
732 ui32RegOffset = ADI_O_CLR;
740 HWREG(ui32Base + ui32RegOffset + (ui32Reg & 0xFC)) = ui32Val;
779 uint8_t ui8Mask, uint8_t ui8Val)
781 uint32_t ui32RegOffset;
786 ASSERT(ADIBaseValid(ui32Base));
789 ASSERT(!(ui8Mask & 0xF0));
795 ui32RegOffset = ADI_O_MASK4B + (ui32Reg << 1) + (bWriteHigh ? 1 : 0);
803 HWREGB(ui32Base + ui32RegOffset) = (ui8Mask << 4) | ui8Val;
839 uint32_t ui32RegOffset;
844 ASSERT(ADIBaseValid(ui32Base));
846 ASSERT(!(ui16Val & 0xFF00));
847 ASSERT(!(ui16Mask & 0xFF00));
853 ui32RegOffset = ADI_O_MASK8B + (ui32Reg << 1);
861 HWREGH(ui32Base + ui32RegOffset) = (ui16Mask << 8) | ui16Val;
898 uint32_t ui32RegOffset;
903 ASSERT(ADIBaseValid(ui32Base));
905 ASSERT(!(ui32Val & 0xFFFF0000));
906 ASSERT(!(ui32Mask & 0xFFFF0000));
912 ui32RegOffset = ADI_O_MASK16B + ((ui32Reg << 1) & 0xFC);
920 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.