xref: /openbmc/qemu/hw/audio/pl041.h (revision ca3d87d4c84032f19478010b5604cac88b045c25)
147b43a1fSPaolo Bonzini /*
247b43a1fSPaolo Bonzini  * Arm PrimeCell PL041 Advanced Audio Codec Interface
347b43a1fSPaolo Bonzini  *
447b43a1fSPaolo Bonzini  * Copyright (c) 2011
547b43a1fSPaolo Bonzini  * Written by Mathieu Sonet - www.elasticsheep.com
647b43a1fSPaolo Bonzini  *
747b43a1fSPaolo Bonzini  * This code is licensed under the GPL.
847b43a1fSPaolo Bonzini  *
947b43a1fSPaolo Bonzini  * *****************************************************************
1047b43a1fSPaolo Bonzini  */
1147b43a1fSPaolo Bonzini 
1247b43a1fSPaolo Bonzini #ifndef HW_PL041_H
1347b43a1fSPaolo Bonzini #define HW_PL041_H
1447b43a1fSPaolo Bonzini 
1547b43a1fSPaolo Bonzini /* Register file */
1647b43a1fSPaolo Bonzini #define REGISTER(name, offset) uint32_t name;
1747b43a1fSPaolo Bonzini typedef struct {
1847b43a1fSPaolo Bonzini     #include "pl041.hx"
1947b43a1fSPaolo Bonzini } pl041_regfile;
2047b43a1fSPaolo Bonzini #undef REGISTER
2147b43a1fSPaolo Bonzini 
2247b43a1fSPaolo Bonzini /* Register addresses */
2347b43a1fSPaolo Bonzini #define REGISTER(name, offset) PL041_##name = offset,
2447b43a1fSPaolo Bonzini enum {
2547b43a1fSPaolo Bonzini     #include "pl041.hx"
2647b43a1fSPaolo Bonzini 
2747b43a1fSPaolo Bonzini     PL041_periphid0 = 0xFE0,
2847b43a1fSPaolo Bonzini     PL041_periphid1 = 0xFE4,
2947b43a1fSPaolo Bonzini     PL041_periphid2 = 0xFE8,
3047b43a1fSPaolo Bonzini     PL041_periphid3 = 0xFEC,
3147b43a1fSPaolo Bonzini     PL041_pcellid0  = 0xFF0,
3247b43a1fSPaolo Bonzini     PL041_pcellid1  = 0xFF4,
3347b43a1fSPaolo Bonzini     PL041_pcellid2  = 0xFF8,
3447b43a1fSPaolo Bonzini     PL041_pcellid3  = 0xFFC,
3547b43a1fSPaolo Bonzini };
3647b43a1fSPaolo Bonzini #undef REGISTER
3747b43a1fSPaolo Bonzini 
3847b43a1fSPaolo Bonzini /* Register bits */
3947b43a1fSPaolo Bonzini 
4047b43a1fSPaolo Bonzini /* IEx */
4147b43a1fSPaolo Bonzini #define TXCIE           (1 << 0)
4247b43a1fSPaolo Bonzini #define RXTIE           (1 << 1)
4347b43a1fSPaolo Bonzini #define TXIE            (1 << 2)
4447b43a1fSPaolo Bonzini #define RXIE            (1 << 3)
4547b43a1fSPaolo Bonzini #define RXOIE           (1 << 4)
4647b43a1fSPaolo Bonzini #define TXUIE           (1 << 5)
4747b43a1fSPaolo Bonzini #define RXTOIE          (1 << 6)
4847b43a1fSPaolo Bonzini 
4947b43a1fSPaolo Bonzini /* TXCRx */
5047b43a1fSPaolo Bonzini #define TXEN            (1 << 0)
5147b43a1fSPaolo Bonzini #define TXSLOT1         (1 << 1)
5247b43a1fSPaolo Bonzini #define TXSLOT2         (1 << 2)
5347b43a1fSPaolo Bonzini #define TXSLOT3         (1 << 3)
5447b43a1fSPaolo Bonzini #define TXSLOT4         (1 << 4)
5547b43a1fSPaolo Bonzini #define TXCOMPACT       (1 << 15)
5647b43a1fSPaolo Bonzini #define TXFEN           (1 << 16)
5747b43a1fSPaolo Bonzini 
5847b43a1fSPaolo Bonzini #define TXSLOT_MASK_BIT (1)
5947b43a1fSPaolo Bonzini #define TXSLOT_MASK     (0xFFF << TXSLOT_MASK_BIT)
6047b43a1fSPaolo Bonzini 
6147b43a1fSPaolo Bonzini #define TSIZE_MASK_BIT  (13)
6247b43a1fSPaolo Bonzini #define TSIZE_MASK      (0x3 << TSIZE_MASK_BIT)
6347b43a1fSPaolo Bonzini 
6447b43a1fSPaolo Bonzini #define TSIZE_16BITS    (0x0 << TSIZE_MASK_BIT)
6547b43a1fSPaolo Bonzini #define TSIZE_18BITS    (0x1 << TSIZE_MASK_BIT)
6647b43a1fSPaolo Bonzini #define TSIZE_20BITS    (0x2 << TSIZE_MASK_BIT)
6747b43a1fSPaolo Bonzini #define TSIZE_12BITS    (0x3 << TSIZE_MASK_BIT)
6847b43a1fSPaolo Bonzini 
6947b43a1fSPaolo Bonzini /* SRx */
7047b43a1fSPaolo Bonzini #define RXFE         (1 << 0)
7147b43a1fSPaolo Bonzini #define TXFE         (1 << 1)
7247b43a1fSPaolo Bonzini #define RXHF         (1 << 2)
7347b43a1fSPaolo Bonzini #define TXHE         (1 << 3)
7447b43a1fSPaolo Bonzini #define RXFF         (1 << 4)
7547b43a1fSPaolo Bonzini #define TXFF         (1 << 5)
7647b43a1fSPaolo Bonzini #define RXBUSY       (1 << 6)
7747b43a1fSPaolo Bonzini #define TXBUSY       (1 << 7)
7847b43a1fSPaolo Bonzini #define RXOVERRUN    (1 << 8)
7947b43a1fSPaolo Bonzini #define TXUNDERRUN   (1 << 9)
8047b43a1fSPaolo Bonzini #define RXTIMEOUT    (1 << 10)
8147b43a1fSPaolo Bonzini #define RXTOFE       (1 << 11)
8247b43a1fSPaolo Bonzini 
8347b43a1fSPaolo Bonzini /* ISRx */
8447b43a1fSPaolo Bonzini #define TXCINTR      (1 << 0)
8547b43a1fSPaolo Bonzini #define RXTOINTR     (1 << 1)
8647b43a1fSPaolo Bonzini #define TXINTR       (1 << 2)
8747b43a1fSPaolo Bonzini #define RXINTR       (1 << 3)
8847b43a1fSPaolo Bonzini #define ORINTR       (1 << 4)
8947b43a1fSPaolo Bonzini #define URINTR       (1 << 5)
9047b43a1fSPaolo Bonzini #define RXTOFEINTR   (1 << 6)
9147b43a1fSPaolo Bonzini 
9247b43a1fSPaolo Bonzini /* SLFR */
9347b43a1fSPaolo Bonzini #define SL1RXBUSY    (1 << 0)
9447b43a1fSPaolo Bonzini #define SL1TXBUSY    (1 << 1)
9547b43a1fSPaolo Bonzini #define SL2RXBUSY    (1 << 2)
9647b43a1fSPaolo Bonzini #define SL2TXBUSY    (1 << 3)
9747b43a1fSPaolo Bonzini #define SL12RXBUSY   (1 << 4)
9847b43a1fSPaolo Bonzini #define SL12TXBUSY   (1 << 5)
9947b43a1fSPaolo Bonzini #define SL1RXVALID   (1 << 6)
10047b43a1fSPaolo Bonzini #define SL1TXEMPTY   (1 << 7)
10147b43a1fSPaolo Bonzini #define SL2RXVALID   (1 << 8)
10247b43a1fSPaolo Bonzini #define SL2TXEMPTY   (1 << 9)
10347b43a1fSPaolo Bonzini #define SL12RXVALID  (1 << 10)
10447b43a1fSPaolo Bonzini #define SL12TXEMPTY  (1 << 11)
10547b43a1fSPaolo Bonzini #define RAWGPIOINT   (1 << 12)
10647b43a1fSPaolo Bonzini #define RWIS         (1 << 13)
10747b43a1fSPaolo Bonzini 
10847b43a1fSPaolo Bonzini /* MAINCR */
10947b43a1fSPaolo Bonzini #define AACIFE       (1 << 0)
11047b43a1fSPaolo Bonzini #define LOOPBACK     (1 << 1)
11147b43a1fSPaolo Bonzini #define LOWPOWER     (1 << 2)
11247b43a1fSPaolo Bonzini #define SL1RXEN      (1 << 3)
11347b43a1fSPaolo Bonzini #define SL1TXEN      (1 << 4)
11447b43a1fSPaolo Bonzini #define SL2RXEN      (1 << 5)
11547b43a1fSPaolo Bonzini #define SL2TXEN      (1 << 6)
11647b43a1fSPaolo Bonzini #define SL12RXEN     (1 << 7)
11747b43a1fSPaolo Bonzini #define SL12TXEN     (1 << 8)
11847b43a1fSPaolo Bonzini #define DMAENABLE    (1 << 9)
11947b43a1fSPaolo Bonzini 
12047b43a1fSPaolo Bonzini /* INTCLR */
12147b43a1fSPaolo Bonzini #define WISC         (1 << 0)
12247b43a1fSPaolo Bonzini #define RXOEC1       (1 << 1)
12347b43a1fSPaolo Bonzini #define RXOEC2       (1 << 2)
12447b43a1fSPaolo Bonzini #define RXOEC3       (1 << 3)
12547b43a1fSPaolo Bonzini #define RXOEC4       (1 << 4)
12647b43a1fSPaolo Bonzini #define TXUEC1       (1 << 5)
12747b43a1fSPaolo Bonzini #define TXUEC2       (1 << 6)
12847b43a1fSPaolo Bonzini #define TXUEC3       (1 << 7)
12947b43a1fSPaolo Bonzini #define TXUEC4       (1 << 8)
13047b43a1fSPaolo Bonzini #define RXTOFEC1     (1 << 9)
13147b43a1fSPaolo Bonzini #define RXTOFEC2     (1 << 10)
13247b43a1fSPaolo Bonzini #define RXTOFEC3     (1 << 11)
13347b43a1fSPaolo Bonzini #define RXTOFEC4     (1 << 12)
13447b43a1fSPaolo Bonzini 
135*175de524SMarkus Armbruster #endif /* HW_PL041_H */
136