hc
2024-12-19 9370bb92b2d16684ee45cf24e879c93c509162da
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
/****************************************************************************/
 
/*
 *    m54xxpci.h -- ColdFire 547x and 548x PCI bus support
 *
 *    (C) Copyright 2011,  Greg Ungerer <gerg@uclinux.org>
 *
 * This file is subject to the terms and conditions of the GNU General Public
 * License.  See the file COPYING in the main directory of this archive
 * for more details.
 */
 
/****************************************************************************/
#ifndef    M54XXPCI_H
#define    M54XXPCI_H
/****************************************************************************/
 
/*
 *    The core set of PCI support registers are mapped into the MBAR region.
 */
#define    PCIIDR        (CONFIG_MBAR + 0xb00)    /* PCI device/vendor ID */
#define    PCISCR        (CONFIG_MBAR + 0xb04)    /* PCI status/command */
#define    PCICCRIR    (CONFIG_MBAR + 0xb08)    /* PCI class/revision */
#define    PCICR1        (CONFIG_MBAR + 0xb0c)    /* PCI configuration 1 */
#define    PCIBAR0        (CONFIG_MBAR + 0xb10)    /* PCI base address 0 */
#define    PCIBAR1        (CONFIG_MBAR + 0xb14)    /* PCI base address 1 */
#define    PCICCPR        (CONFIG_MBAR + 0xb28)    /* PCI cardbus CIS pointer */
#define    PCISID        (CONFIG_MBAR + 0xb2c)    /* PCI subsystem IDs */
#define    PCIERBAR    (CONFIG_MBAR + 0xb30)    /* PCI expansion ROM */
#define    PCICPR        (CONFIG_MBAR + 0xb34)    /* PCI capabilities pointer */
#define    PCICR2        (CONFIG_MBAR + 0xb3c)    /* PCI configuration 2 */
 
#define    PCIGSCR        (CONFIG_MBAR + 0xb60)    /* Global status/control */
#define    PCITBATR0    (CONFIG_MBAR + 0xb64)    /* Target base translation 0 */
#define    PCITBATR1    (CONFIG_MBAR + 0xb68)    /* Target base translation 1 */
#define    PCITCR        (CONFIG_MBAR + 0xb6c)    /* Target control */
#define    PCIIW0BTAR    (CONFIG_MBAR + 0xb70)    /* Initiator window 0 */
#define    PCIIW1BTAR    (CONFIG_MBAR + 0xb74)    /* Initiator window 1 */
#define    PCIIW2BTAR    (CONFIG_MBAR + 0xb78)    /* Initiator window 2 */
#define    PCIIWCR        (CONFIG_MBAR + 0xb80)    /* Initiator window config */
#define    PCIICR        (CONFIG_MBAR + 0xb84)    /* Initiator control */
#define    PCIISR        (CONFIG_MBAR + 0xb88)    /* Initiator status */
#define    PCICAR        (CONFIG_MBAR + 0xbf8)    /* Configuration address */
 
#define    PCITPSR        (CONFIG_MBAR + 0x8400)    /* TX packet size */
#define    PCITSAR        (CONFIG_MBAR + 0x8404)    /* TX start address */
#define    PCITTCR        (CONFIG_MBAR + 0x8408)    /* TX transaction control */
#define    PCITER        (CONFIG_MBAR + 0x840c)    /* TX enables */
#define    PCITNAR        (CONFIG_MBAR + 0x8410)    /* TX next address */
#define    PCITLWR        (CONFIG_MBAR + 0x8414)    /* TX last word */
#define    PCITDCR        (CONFIG_MBAR + 0x8418)    /* TX done counts */
#define    PCITSR        (CONFIG_MBAR + 0x841c)    /* TX status */
#define    PCITFDR        (CONFIG_MBAR + 0x8440)    /* TX FIFO data */
#define    PCITFSR        (CONFIG_MBAR + 0x8444)    /* TX FIFO status */
#define    PCITFCR        (CONFIG_MBAR + 0x8448)    /* TX FIFO control */
#define    PCITFAR        (CONFIG_MBAR + 0x844c)    /* TX FIFO alarm */
#define    PCITFRPR    (CONFIG_MBAR + 0x8450)    /* TX FIFO read pointer */
#define    PCITFWPR    (CONFIG_MBAR + 0x8454)    /* TX FIFO write pointer */
 
#define    PCIRPSR        (CONFIG_MBAR + 0x8480)    /* RX packet size */
#define    PCIRSAR        (CONFIG_MBAR + 0x8484)    /* RX start address */
#define    PCIRTCR        (CONFIG_MBAR + 0x8488)    /* RX transaction control */
#define    PCIRER        (CONFIG_MBAR + 0x848c)    /* RX enables */
#define    PCIRNAR        (CONFIG_MBAR + 0x8490)    /* RX next address */
#define    PCIRDCR        (CONFIG_MBAR + 0x8498)    /* RX done counts */
#define    PCIRSR        (CONFIG_MBAR + 0x849c)    /* RX status */
#define    PCIRFDR        (CONFIG_MBAR + 0x84c0)    /* RX FIFO data */
#define    PCIRFSR        (CONFIG_MBAR + 0x84c4)    /* RX FIFO status */
#define    PCIRFCR        (CONFIG_MBAR + 0x84c8)    /* RX FIFO control */
#define    PCIRFAR        (CONFIG_MBAR + 0x84cc)    /* RX FIFO alarm */
#define    PCIRFRPR    (CONFIG_MBAR + 0x84d0)    /* RX FIFO read pointer */
#define    PCIRFWPR    (CONFIG_MBAR + 0x84d4)    /* RX FIFO write pointer */
 
#define    PACR        (CONFIG_MBAR + 0xc00)    /* PCI arbiter control */
#define    PASR        (CONFIG_MBAR + 0xc04)    /* PCI arbiter status */
 
/*
 *    Definitions for the Global status and control register.
 */
#define    PCIGSCR_PE    0x20000000        /* Parity error detected */
#define    PCIGSCR_SE    0x10000000        /* System error detected */
#define    PCIGSCR_XCLKBIN    0x07000000        /* XLB2CLKIN mask */
#define    PCIGSCR_PEE    0x00002000        /* Parity error intr enable */
#define    PCIGSCR_SEE    0x00001000        /* System error intr enable */
#define    PCIGSCR_RESET    0x00000001        /* Reset bit */
 
/*
 *    Bit definitions for the PCICAR configuration address register.
 */
#define    PCICAR_E    0x80000000        /* Enable config space */
#define    PCICAR_BUSN    16            /* Move bus bits */
#define    PCICAR_DEVFNN    8            /* Move devfn bits */
#define    PCICAR_DWORDN    0            /* Move dword bits */
 
/*
 *    The initiator windows hold the memory and IO mapping information.
 *    This macro creates the register values from the desired addresses.
 */
#define    WXBTAR(hostaddr, pciaddr, size)    \
           (((hostaddr) & 0xff000000) | \
           ((((size) - 1) & 0xff000000) >> 8) | \
           (((pciaddr) & 0xff000000) >> 16))
 
#define    PCIIWCR_W0_MEM    0x00000000        /* Window 0 is memory */
#define    PCIIWCR_W0_IO    0x08000000        /* Window 0 is IO */
#define    PCIIWCR_W0_MRD    0x00000000        /* Window 0 memory read */
#define    PCIIWCR_W0_MRDL    0x02000000        /* Window 0 memory read line */
#define    PCIIWCR_W0_MRDM    0x04000000        /* Window 0 memory read mult */
#define    PCIIWCR_W0_E    0x01000000        /* Window 0 enable */
 
#define    PCIIWCR_W1_MEM    0x00000000        /* Window 0 is memory */
#define    PCIIWCR_W1_IO    0x00080000        /* Window 0 is IO */
#define    PCIIWCR_W1_MRD    0x00000000        /* Window 0 memory read */
#define    PCIIWCR_W1_MRDL    0x00020000        /* Window 0 memory read line */
#define    PCIIWCR_W1_MRDM    0x00040000        /* Window 0 memory read mult */
#define    PCIIWCR_W1_E    0x00010000        /* Window 0 enable */
 
/*
 *    Bit definitions for the PCIBATR registers.
 */
#define    PCITBATR0_E    0x00000001        /* Enable window 0 */
#define    PCITBATR1_E    0x00000001        /* Enable window 1 */
 
/*
 *    PCI arbiter support definitions and macros.
 */
#define    PACR_INTMPRI    0x00000001
#define    PACR_EXTMPRI(x)    (((x) & 0x1f) << 1)
#define    PACR_INTMINTE    0x00010000
#define    PACR_EXTMINTE(x) (((x) & 0x1f) << 17)
#define    PACR_PKMD    0x40000000
#define    PACR_DS        0x80000000
 
#define    PCICR1_CL(x)    ((x) & 0xf)        /* Cacheline size field */
#define    PCICR1_LT(x)    (((x) & 0xff) << 8)    /* Latency timer field */
 
/****************************************************************************/
#endif    /* M54XXPCI_H */