]> git.kernelconcepts.de Git - karo-tx-uboot.git/blob - board/mpl/common/pci_parts.h
Merge branch 'u-boot/master' into u-boot-arm/master
[karo-tx-uboot.git] / board / mpl / common / pci_parts.h
1  /*
2  * (C) Copyright 2001
3  * Denis Peter, MPL AG Switzerland, d.peter@mpl.ch
4  *
5  * SPDX-License-Identifier:     GPL-2.0+
6  */
7 #ifndef _PCI_PARTS_H_
8 #define _PCI_PARTS_H_
9
10
11 /* Board specific file containing:
12  * - PCI Memory Mapping
13  * - PCI IO Mapping
14  * - PCI Interrupt Mapping
15  */
16
17 /* PIP405 PCI INT Routing:
18  *                      IRQ0  VECTOR
19  * PIXX4 IDSEL  = AD16  INTA#  28 (Function 2 USB is INTD# = 31)
20  * VGA   IDSEL  = AD17  INTB#  29
21  * SCSI  IDSEL  = AD18  INTC#  30
22  * PC104 IDSEL0 = AD20  INTA#  28
23  * PC104 IDSEL1 = AD21  INTB#  29
24  * PC104 IDSEL2 = AD22  INTC#  30
25  * PC104 IDSEL3 = AD23  INTD#  31
26  *
27  * busdevfunc = EXXX XXXX BBBB BBBB DDDD DFFF RRRR RR00
28  *              ^         ^         ^     ^   ^
29  *             31        23        15    10   7
30  * E = Enabled
31  * B = Bussnumber
32  * D = Devicenumber (Device0 = AD10)
33  * F = Functionnumber
34  * R = Registernumber
35  *
36  * Device = (busdevfunc>>11) + 10
37  * Vector = devicenumber % 4 + 28
38  *
39  */
40 #define PCI_HIGHEST_ON_BOARD_ID 19
41 /*#define PCI_DEV_NUMBER(x)     (((x>>11) & 0x1f) + 10) */
42 #define PCI_IRQ_VECTOR(x)       ((PCI_DEV(x) + 10) % 4) + 28
43
44
45 /* PCI Device List for PIP405 */
46
47 /* Mapping:
48  * +-------------+------------+------------+--------------------------------+
49  * | PCI MemAddr | PCI IOAddr | Local Addr | Device / Function              |
50  * +-------------+------------+------------+--------------------------------+
51  * |  0x00000000 |            | 0xA0000000 | ISA Memory (hard wired)        |
52  * |  0x00FFFFFF |            | 0xA0FFFFFF |                                |
53  * +-------------+------------+------------+--------------------------------+
54  * |             | 0x00000000 | 0xE8000000 | ISA IO (hard wired)            |
55  * |             | 0x0000FFFF | 0xE800FFFF |                                |
56  * +-------------+------------+------------+--------------------------------+
57  * |  0x80000000 |            | 0x80000000 | VGA Controller Memory          |
58  * |  0x80FFFFFF |            | 0x80FFFFFF |                                |
59  * +-------------+------------+------------+--------------------------------+
60  * |  0x81000000 |            | 0x81000000 | SCSI Controller Memory         |
61  * |  0x81FFFFFF |            | 0x81FFFFFF |                                |
62  * +-------------+------------+------------+--------------------------------+
63  */
64
65 struct pci_pip405_config_entry {
66         int             index;  /* address */
67         unsigned long   val;    /* value */
68         int             width;  /* data size */
69 };
70
71 extern void pci_pip405_write_regs(struct pci_controller *,
72                                   pci_dev_t,
73                                   struct pci_config_table *);
74
75 /* PIIX4 ISA Bridge Function 0 */
76 static struct pci_pip405_config_entry piix4_isa_bridge_f0[] = {
77         {PCI_CFG_PIIX4_SERIRQ,  0xD0,           1}, /* enable Continous SERIRQ Pin */
78         {PCI_CFG_PIIX4_GENCFG,  0x00018041,     4}, /* enable SERIRQs, ISA, PNP, GPI11 */
79         {PCI_CFG_PIIX4_TOM,     0xFE,           1}, /* Top of Memory            */
80         {PCI_CFG_PIIX4_XBCS,    0x02C4,         2}, /* disable all peri CS      */
81         {PCI_CFG_PIIX4_RTCCFG,  0x21,           1}, /* enable RTC               */
82 #if defined(CONFIG_PIP405)
83         {PCI_CFG_PIIX4_MBDMA,   0x82,           1}, /* set MBDMA0 to DMA 2      */
84         {PCI_CFG_PIIX4_MBDMA+1, 0x83,           1}, /* set MBDMA1 to DMA 3      */
85 #endif
86         {PCI_CFG_PIIX4_DLC,     0x0,            1}, /* disable passive release feature */
87         { }                                         /* end of device table      */
88 };
89
90 /* PIIX4 IDE Controller Function 1 */
91 static struct pci_pip405_config_entry piix4_ide_cntrl_f1[] = {
92         {PCI_CFG_PIIX4_BMIBA,   0x0001000,      4}, /* set BMI to a valid address */
93         {PCI_COMMAND,           0x0001,         2}, /* enable IO access */
94 #if !defined(CONFIG_MIP405T)
95         {PCI_CFG_PIIX4_IDETIM,  0x80008000,     4}, /* enable Both IDE channels */
96 #else
97         {PCI_CFG_PIIX4_IDETIM,  0x00008000,     4}, /* enable IDE channel0      */
98 #endif
99         { }                                         /* end of device table      */
100 };
101
102 /* PIIX4 USB Controller Function 2 */
103 static struct pci_pip405_config_entry piix4_usb_cntrl_f2[] = {
104 #if !defined(CONFIG_MIP405T)
105         {PCI_INTERRUPT_LINE,    31,             1}, /* Int vector = 31          */
106         {PCI_BASE_ADDRESS_4,    0x0000E001,     4}, /* Set IO Address to 0xe000 to 0xe01F */
107         {PCI_LATENCY_TIMER,     0x80,           1}, /* Latency Timer 0x80       */
108         {0xC0,                  0x2000,         2}, /* Legacy support           */
109         {PCI_COMMAND,           0x0005,         2}, /* enable IO access and Master */
110 #endif
111         { }                                         /* end of device table      */
112 };
113
114 /* PIIX4 Power Management Function 3 */
115 static struct pci_pip405_config_entry piix4_pmm_cntrl_f3[] = {
116         {PCI_CFG_PIIX4_PMBA,    0x00004000,     4}, /* set PMBA to "valid" value */
117         {PCI_CFG_PIIX4_SMBBA,   0x00005000,     4}, /* set SMBBA to "valid" value */
118         {PCI_CFG_PIIX4_PMMISC,  0x01,           1}, /* enable PMBA IO access    */
119         {PCI_COMMAND,           0x0001,         2}, /* enable IO access */
120         { }                                         /* end of device table      */
121 };
122 /* PPC405 Dummy only used to prevent autosetup on this host bridge */
123 static struct pci_pip405_config_entry ppc405_dummy[] = {
124         { }                                         /* end of device table      */
125 };
126
127 void pci_405gp_setup_vga(struct pci_controller *hose, pci_dev_t dev,
128                          struct pci_config_table *entry);
129
130
131 static struct pci_config_table pci_pip405_config_table[]={
132         {PCI_VENDOR_ID_IBM,                     /* 405 dummy */
133          PCI_DEVICE_ID_IBM_405GP,
134          PCI_ANY_ID,
135          PCI_ANY_ID, PCI_ANY_ID, 0,
136          pci_pip405_write_regs, {(unsigned long) ppc405_dummy}},
137
138         {PCI_VENDOR_ID_INTEL,                   /* PIIX4 ISA Bridge Function 0 */
139          PCI_DEVICE_ID_INTEL_82371AB_0,
140          PCI_ANY_ID,
141          PCI_ANY_ID, PCI_ANY_ID, 0,
142          pci_pip405_write_regs, {(unsigned long) piix4_isa_bridge_f0}},
143
144         {PCI_VENDOR_ID_INTEL,                   /* PIIX4 IDE Controller Function 1 */
145          PCI_DEVICE_ID_INTEL_82371AB,
146          PCI_ANY_ID,
147          PCI_ANY_ID, PCI_ANY_ID, 1,
148          pci_pip405_write_regs, {(unsigned long) piix4_ide_cntrl_f1}},
149
150         {PCI_VENDOR_ID_INTEL,                   /* PIIX4 USB Controller Function 2 */
151          PCI_DEVICE_ID_INTEL_82371AB_2,
152          PCI_ANY_ID,
153          PCI_ANY_ID, PCI_ANY_ID, 2,
154          pci_pip405_write_regs, {(unsigned long) piix4_usb_cntrl_f2}},
155
156         {PCI_VENDOR_ID_INTEL,                   /* PIIX4 USB Controller Function 3 */
157          PCI_DEVICE_ID_INTEL_82371AB_3,
158          PCI_ANY_ID,
159          PCI_ANY_ID, PCI_ANY_ID, 3,
160          pci_pip405_write_regs, {(unsigned long) piix4_pmm_cntrl_f3}},
161
162         {PCI_ANY_ID,
163          PCI_ANY_ID,
164          PCI_CLASS_DISPLAY_VGA,
165          PCI_ANY_ID, PCI_ANY_ID, PCI_ANY_ID,
166          pci_405gp_setup_vga},
167
168         {PCI_ANY_ID,
169          PCI_ANY_ID,
170          PCI_CLASS_NOT_DEFINED_VGA,
171          PCI_ANY_ID, PCI_ANY_ID, PCI_ANY_ID,
172          pci_405gp_setup_vga},
173
174         { }
175 };
176 #endif /* _PCI_PARTS_H_ */