15 #include <linux/pci.h>
20 #include <asm/i8259.h>
23 #define cacheconf (*(volatile unsigned int *)PCIMT_CACHECONF)
24 #define invspace (*(volatile unsigned int *)PCIMT_INVSPACE)
26 static void __init sni_pcimt_sc_init(
void)
28 unsigned int scsiz, sc_size;
32 printk(
"Second level cache is deactivated.\n");
36 printk(
"Invalid second level cache size configured, "
37 "deactivating second level cache.\n");
42 sc_size = 128 << scsiz;
43 printk(
"%dkb second level cache detected, deactivating.\n", sc_size);
51 static inline void sni_pcimt_detect(
void)
60 p +=
sprintf(p,
"%s PCI", (csmsr & 0x80) ?
"RM200" :
"RM300");
61 if ((csmsr & 0x80) == 0)
62 p +=
sprintf(p,
", board revision %s",
63 (csmsr & 0x20) ?
"D" :
"C");
65 asic = (csmsr & 0x08) ? asic : !asic;
66 p +=
sprintf(p,
", ASIC PCI Rev %s", asic ?
"1.0" :
"1.1");
67 printk(
"%s.\n", boardtype);
70 #define PORT(_base,_irq) \
75 .iotype = UPIO_PORT, \
76 .flags = UPF_BOOT_AUTOCONF, \
89 .platform_data = pcimt_data,
93 static struct resource pcimt_cmos_rsrc[] = {
109 .resource = pcimt_cmos_rsrc
113 static struct resource sni_io_resource = {
114 .start = 0x00000000
UL,
116 .name =
"PCIMT IO MEM",
120 static struct resource pcimt_io_resources[] = {
139 .name =
"dma page reg",
149 .name =
"PCI config data",
154 static struct resource pcimt_mem_resources[] = {
162 .name =
"PCI INT ACK",
167 static struct resource sni_mem_resource = {
168 .start = 0x18000000
UL,
170 .name =
"PCIMT PCI MEM",
174 static void __init sni_pcimt_resource_init(
void)
179 for (i = 0; i <
ARRAY_SIZE(pcimt_io_resources); i++)
182 for (i = 0; i <
ARRAY_SIZE(pcimt_mem_resources); i++)
190 .mem_resource = &sni_mem_resource,
191 .mem_offset = 0x00000000
UL,
192 .io_resource = &sni_io_resource,
193 .io_offset = 0x00000000
UL,
197 static void enable_pcimt_irq(
struct irq_data *
d)
211 static struct irq_chip pcimt_irq_type = {
214 .irq_unmask = enable_pcimt_irq,
221 static void pcimt_hwint0(
void)
223 panic(
"Received int0 but no handler yet ...");
231 static void pcimt_hwint1(
void)
261 static void pcimt_hwint3(
void)
274 static void sni_pcimt_hwint(
void)
280 else if (pending &
C_IRQ4)
282 else if (pending &
C_IRQ3)
284 else if (pending &
C_IRQ1)
286 else if (pending &
C_IRQ0) {
313 sni_pcimt_resource_init();
316 static int __init snirm_pcimt_setup_devinit(
void)