16 #include <linux/stddef.h>
17 #include <linux/kernel.h>
18 #include <linux/pci.h>
19 #include <linux/kdev_t.h>
25 #include <linux/serial.h>
26 #include <linux/tty.h>
27 #include <linux/serial_core.h>
29 #include <linux/module.h>
32 #include <asm/machdep.h>
36 #include <asm/pci-bridge.h>
45 #define HOLLY_PCI_CFG_PHYS 0x7c000000
49 if (bus == 0 &&
PCI_SLOT(devfn) == 0)
55 static void holly_remap_bridge(
void)
57 u32 lut_val, lut_addr;
66 for (i = 0; i < 31; i++) {
99 for (i = 0; i < 32; i++) {
104 lut_val += 0x02000000;
113 static void __init holly_setup_arch(
void)
118 ppc_md.progress(
"holly_setup_arch():set_bridge", 0);
123 holly_remap_bridge();
131 ppc_md.progress(
"tsi108: resources set", 0x100);
147 static void __init holly_init_IRQ(
void)
151 unsigned int cascade_pci_irq;
157 MPIC_SPV_EOI | MPIC_NO_PTHROU_DIS | MPIC_REGSET_TSI108,
169 if (tsi_pci ==
NULL) {
175 if (cascade_node ==
NULL) {
176 printk(
KERN_ERR "%s: No tsi108 pci cascade node found !\n", __func__);
181 pr_debug(
"%s: tsi108 cascade_pci_irq = 0x%x\n", __func__, (
u32) cascade_pci_irq);
224 mtspr(SPRN_SRR0, 0xfff00100);
225 mtspr(SPRN_SRR1, MSR_IP);
230 __asm__ __volatile__(
"rfi" : : :
"memory");
251 static int __init holly_probe(
void)
253 unsigned long root = of_get_flat_dt_root();
255 if (!of_flat_dt_is_compatible(root,
"ibm,holly"))
260 static int ppc750_machine_check_exception(
struct pt_regs *
regs)
275 .name =
"PPC750 GX/CL TSI",
276 .probe = holly_probe,
277 .setup_arch = holly_setup_arch,
278 .init_IRQ = holly_init_IRQ,
283 .machine_check_exception = ppc750_machine_check_exception,