| /* |
| * Arm PrimeCell PL041 Advanced Audio Codec Interface |
| * |
| * Copyright (c) 2011 |
| * Written by Mathieu Sonet - www.elasticsheep.com |
| * |
| * This code is licensed under the GPL. |
| * |
| * ***************************************************************** |
| */ |
| |
| #ifndef HW_PL041_H |
| #define HW_PL041_H |
| |
| /* Register file */ |
| #define REGISTER(name, offset) uint32_t name; |
| typedef struct { |
| #include "pl041.hx" |
| } pl041_regfile; |
| #undef REGISTER |
| |
| /* Register addresses */ |
| #define REGISTER(name, offset) PL041_##name = offset, |
| enum { |
| #include "pl041.hx" |
| |
| PL041_periphid0 = 0xFE0, |
| PL041_periphid1 = 0xFE4, |
| PL041_periphid2 = 0xFE8, |
| PL041_periphid3 = 0xFEC, |
| PL041_pcellid0 = 0xFF0, |
| PL041_pcellid1 = 0xFF4, |
| PL041_pcellid2 = 0xFF8, |
| PL041_pcellid3 = 0xFFC, |
| }; |
| #undef REGISTER |
| |
| /* Register bits */ |
| |
| /* IEx */ |
| #define TXCIE (1 << 0) |
| #define RXTIE (1 << 1) |
| #define TXIE (1 << 2) |
| #define RXIE (1 << 3) |
| #define RXOIE (1 << 4) |
| #define TXUIE (1 << 5) |
| #define RXTOIE (1 << 6) |
| |
| /* TXCRx */ |
| #define TXEN (1 << 0) |
| #define TXSLOT1 (1 << 1) |
| #define TXSLOT2 (1 << 2) |
| #define TXSLOT3 (1 << 3) |
| #define TXSLOT4 (1 << 4) |
| #define TXCOMPACT (1 << 15) |
| #define TXFEN (1 << 16) |
| |
| #define TXSLOT_MASK_BIT (1) |
| #define TXSLOT_MASK (0xFFF << TXSLOT_MASK_BIT) |
| |
| #define TSIZE_MASK_BIT (13) |
| #define TSIZE_MASK (0x3 << TSIZE_MASK_BIT) |
| |
| #define TSIZE_16BITS (0x0 << TSIZE_MASK_BIT) |
| #define TSIZE_18BITS (0x1 << TSIZE_MASK_BIT) |
| #define TSIZE_20BITS (0x2 << TSIZE_MASK_BIT) |
| #define TSIZE_12BITS (0x3 << TSIZE_MASK_BIT) |
| |
| /* SRx */ |
| #define RXFE (1 << 0) |
| #define TXFE (1 << 1) |
| #define RXHF (1 << 2) |
| #define TXHE (1 << 3) |
| #define RXFF (1 << 4) |
| #define TXFF (1 << 5) |
| #define RXBUSY (1 << 6) |
| #define TXBUSY (1 << 7) |
| #define RXOVERRUN (1 << 8) |
| #define TXUNDERRUN (1 << 9) |
| #define RXTIMEOUT (1 << 10) |
| #define RXTOFE (1 << 11) |
| |
| /* ISRx */ |
| #define TXCINTR (1 << 0) |
| #define RXTOINTR (1 << 1) |
| #define TXINTR (1 << 2) |
| #define RXINTR (1 << 3) |
| #define ORINTR (1 << 4) |
| #define URINTR (1 << 5) |
| #define RXTOFEINTR (1 << 6) |
| |
| /* SLFR */ |
| #define SL1RXBUSY (1 << 0) |
| #define SL1TXBUSY (1 << 1) |
| #define SL2RXBUSY (1 << 2) |
| #define SL2TXBUSY (1 << 3) |
| #define SL12RXBUSY (1 << 4) |
| #define SL12TXBUSY (1 << 5) |
| #define SL1RXVALID (1 << 6) |
| #define SL1TXEMPTY (1 << 7) |
| #define SL2RXVALID (1 << 8) |
| #define SL2TXEMPTY (1 << 9) |
| #define SL12RXVALID (1 << 10) |
| #define SL12TXEMPTY (1 << 11) |
| #define RAWGPIOINT (1 << 12) |
| #define RWIS (1 << 13) |
| |
| /* MAINCR */ |
| #define AACIFE (1 << 0) |
| #define LOOPBACK (1 << 1) |
| #define LOWPOWER (1 << 2) |
| #define SL1RXEN (1 << 3) |
| #define SL1TXEN (1 << 4) |
| #define SL2RXEN (1 << 5) |
| #define SL2TXEN (1 << 6) |
| #define SL12RXEN (1 << 7) |
| #define SL12TXEN (1 << 8) |
| #define DMAENABLE (1 << 9) |
| |
| /* INTCLR */ |
| #define WISC (1 << 0) |
| #define RXOEC1 (1 << 1) |
| #define RXOEC2 (1 << 2) |
| #define RXOEC3 (1 << 3) |
| #define RXOEC4 (1 << 4) |
| #define TXUEC1 (1 << 5) |
| #define TXUEC2 (1 << 6) |
| #define TXUEC3 (1 << 7) |
| #define TXUEC4 (1 << 8) |
| #define RXTOFEC1 (1 << 9) |
| #define RXTOFEC2 (1 << 10) |
| #define RXTOFEC3 (1 << 11) |
| #define RXTOFEC4 (1 << 12) |
| |
| #endif /* HW_PL041_H */ |