diff options
| -rw-r--r-- | arch/sh/boards/mach-se/7780/irq.c | 17 | ||||
| -rw-r--r-- | arch/sh/drivers/pci/ops-r7780rp.c | 17 | ||||
| -rw-r--r-- | arch/sh/drivers/pci/ops-sdk7780.c | 17 | ||||
| -rw-r--r-- | arch/sh/drivers/pci/ops-se7780.c | 31 | ||||
| -rw-r--r-- | arch/sh/drivers/pci/ops-sh7785lcr.c | 17 | ||||
| -rw-r--r-- | arch/sh/drivers/pci/pci-sh7780.c | 24 | ||||
| -rw-r--r-- | arch/sh/drivers/pci/pci-sh7780.h | 5 |
7 files changed, 33 insertions, 95 deletions
diff --git a/arch/sh/boards/mach-se/7780/irq.c b/arch/sh/boards/mach-se/7780/irq.c index 44b61a597a15..b8d43b638fcf 100644 --- a/arch/sh/boards/mach-se/7780/irq.c +++ b/arch/sh/boards/mach-se/7780/irq.c | |||
| @@ -49,4 +49,21 @@ void __init init_se7780_IRQ(void) | |||
| 49 | 49 | ||
| 50 | /* ICR1: detect low level(for 2ndcut) */ | 50 | /* ICR1: detect low level(for 2ndcut) */ |
| 51 | ctrl_outl(0xAAAA0000, INTC_ICR1); | 51 | ctrl_outl(0xAAAA0000, INTC_ICR1); |
| 52 | |||
| 53 | /* | ||
| 54 | * FPGA PCISEL register initialize | ||
| 55 | * | ||
| 56 | * CPU || SLOT1 | SLOT2 | S-ATA | USB | ||
| 57 | * ------------------------------------- | ||
| 58 | * INTA || INTA | INTD | -- | INTB | ||
| 59 | * ------------------------------------- | ||
| 60 | * INTB || INTB | INTA | -- | INTC | ||
| 61 | * ------------------------------------- | ||
| 62 | * INTC || INTC | INTB | INTA | -- | ||
| 63 | * ------------------------------------- | ||
| 64 | * INTD || INTD | INTC | -- | INTA | ||
| 65 | * ------------------------------------- | ||
| 66 | */ | ||
| 67 | ctrl_outw(0x0013, FPGA_PCI_INTSEL1); | ||
| 68 | ctrl_outw(0xE402, FPGA_PCI_INTSEL2); | ||
| 52 | } | 69 | } |
diff --git a/arch/sh/drivers/pci/ops-r7780rp.c b/arch/sh/drivers/pci/ops-r7780rp.c index 044525df18c5..4ea136e4eacd 100644 --- a/arch/sh/drivers/pci/ops-r7780rp.c +++ b/arch/sh/drivers/pci/ops-r7780rp.c | |||
| @@ -25,20 +25,3 @@ int __init pcibios_map_platform_irq(struct pci_dev *pdev, u8 slot, u8 pin) | |||
| 25 | { | 25 | { |
| 26 | return irq_tab[slot]; | 26 | return irq_tab[slot]; |
| 27 | } | 27 | } |
| 28 | |||
| 29 | static struct sh4_pci_address_map sh7780_pci_map = { | ||
| 30 | .window0 = { | ||
| 31 | .base = SH7780_CS2_BASE_ADDR, | ||
| 32 | .size = 0x04000000, | ||
| 33 | }, | ||
| 34 | |||
| 35 | .window1 = { | ||
| 36 | .base = SH7780_CS3_BASE_ADDR, | ||
| 37 | .size = 0x04000000, | ||
| 38 | }, | ||
| 39 | }; | ||
| 40 | |||
| 41 | int __init pcibios_init_platform(void) | ||
| 42 | { | ||
| 43 | return sh7780_pcic_init(&sh7780_pci_map); | ||
| 44 | } | ||
diff --git a/arch/sh/drivers/pci/ops-sdk7780.c b/arch/sh/drivers/pci/ops-sdk7780.c index 570fd71f6937..1d9a91bcfb7d 100644 --- a/arch/sh/drivers/pci/ops-sdk7780.c +++ b/arch/sh/drivers/pci/ops-sdk7780.c | |||
| @@ -33,20 +33,3 @@ int __init pcibios_map_platform_irq(struct pci_dev *pdev, u8 slot, u8 pin) | |||
| 33 | { | 33 | { |
| 34 | return sdk7780_irq_tab[pin-1][slot]; | 34 | return sdk7780_irq_tab[pin-1][slot]; |
| 35 | } | 35 | } |
| 36 | |||
| 37 | static struct sh4_pci_address_map sdk7780_pci_map = { | ||
| 38 | .window0 = { | ||
| 39 | .base = SH7780_CS2_BASE_ADDR, | ||
| 40 | .size = 0x04000000, | ||
| 41 | }, | ||
| 42 | .window1 = { | ||
| 43 | .base = SH7780_CS3_BASE_ADDR, | ||
| 44 | .size = 0x04000000, | ||
| 45 | }, | ||
| 46 | }; | ||
| 47 | |||
| 48 | int __init pcibios_init_platform(void) | ||
| 49 | { | ||
| 50 | printk(KERN_INFO "SH7780 PCI: Finished initializing PCI controller\n"); | ||
| 51 | return sh7780_pcic_init(&sdk7780_pci_map); | ||
| 52 | } | ||
diff --git a/arch/sh/drivers/pci/ops-se7780.c b/arch/sh/drivers/pci/ops-se7780.c index 8b0941515b0f..6c088ccfe475 100644 --- a/arch/sh/drivers/pci/ops-se7780.c +++ b/arch/sh/drivers/pci/ops-se7780.c | |||
| @@ -40,34 +40,3 @@ int __init pcibios_map_platform_irq(struct pci_dev *pdev, u8 slot, u8 pin) | |||
| 40 | { | 40 | { |
| 41 | return se7780_irq_tab[pin-1][slot]; | 41 | return se7780_irq_tab[pin-1][slot]; |
| 42 | } | 42 | } |
| 43 | |||
| 44 | static struct sh4_pci_address_map se7780_pci_map = { | ||
| 45 | .window0 = { | ||
| 46 | .base = SH7780_CS2_BASE_ADDR, | ||
| 47 | .size = 0x04000000, | ||
| 48 | }, | ||
| 49 | }; | ||
| 50 | |||
| 51 | int __init pcibios_init_platform(void) | ||
| 52 | { | ||
| 53 | printk("SH7780 PCI: Finished initialization of the PCI controller\n"); | ||
| 54 | |||
| 55 | /* | ||
| 56 | * FPGA PCISEL register initialize | ||
| 57 | * | ||
| 58 | * CPU || SLOT1 | SLOT2 | S-ATA | USB | ||
| 59 | * ------------------------------------- | ||
| 60 | * INTA || INTA | INTD | -- | INTB | ||
| 61 | * ------------------------------------- | ||
| 62 | * INTB || INTB | INTA | -- | INTC | ||
| 63 | * ------------------------------------- | ||
| 64 | * INTC || INTC | INTB | INTA | -- | ||
| 65 | * ------------------------------------- | ||
| 66 | * INTD || INTD | INTC | -- | INTA | ||
| 67 | * ------------------------------------- | ||
| 68 | */ | ||
| 69 | ctrl_outw(0x0013, FPGA_PCI_INTSEL1); | ||
| 70 | ctrl_outw(0xE402, FPGA_PCI_INTSEL2); | ||
| 71 | |||
| 72 | return sh7780_pcic_init(&se7780_pci_map); | ||
| 73 | } | ||
diff --git a/arch/sh/drivers/pci/ops-sh7785lcr.c b/arch/sh/drivers/pci/ops-sh7785lcr.c index bac46b5d1580..0fe423e23508 100644 --- a/arch/sh/drivers/pci/ops-sh7785lcr.c +++ b/arch/sh/drivers/pci/ops-sh7785lcr.c | |||
| @@ -25,20 +25,3 @@ int __init pcibios_map_platform_irq(struct pci_dev *pdev, u8 slot, u8 pin) | |||
| 25 | { | 25 | { |
| 26 | return irq_tab[slot]; | 26 | return irq_tab[slot]; |
| 27 | } | 27 | } |
| 28 | |||
| 29 | static struct sh4_pci_address_map sh7785_pci_map = { | ||
| 30 | .window0 = { | ||
| 31 | #if defined(CONFIG_32BIT) | ||
| 32 | .base = SH7780_32BIT_DDR_BASE_ADDR, | ||
| 33 | .size = 0x40000000, | ||
| 34 | #else | ||
| 35 | .base = SH7780_CS0_BASE_ADDR, | ||
| 36 | .size = 0x20000000, | ||
| 37 | #endif | ||
| 38 | }, | ||
| 39 | }; | ||
| 40 | |||
| 41 | int __init pcibios_init_platform(void) | ||
| 42 | { | ||
| 43 | return sh7780_pcic_init(&sh7785_pci_map); | ||
| 44 | } | ||
diff --git a/arch/sh/drivers/pci/pci-sh7780.c b/arch/sh/drivers/pci/pci-sh7780.c index eb217ddf025f..07c5529a273b 100644 --- a/arch/sh/drivers/pci/pci-sh7780.c +++ b/arch/sh/drivers/pci/pci-sh7780.c | |||
| @@ -90,7 +90,19 @@ struct pci_channel board_pci_channels[] = { | |||
| 90 | { NULL, NULL, NULL, 0, 0 }, | 90 | { NULL, NULL, NULL, 0, 0 }, |
| 91 | }; | 91 | }; |
| 92 | 92 | ||
| 93 | int __init sh7780_pcic_init(struct sh4_pci_address_map *map) | 93 | static struct sh4_pci_address_map sh7780_pci_map = { |
| 94 | .window0 = { | ||
| 95 | #if defined(CONFIG_32BIT) | ||
| 96 | .base = SH7780_32BIT_DDR_BASE_ADDR, | ||
| 97 | .size = 0x40000000, | ||
| 98 | #else | ||
| 99 | .base = SH7780_CS0_BASE_ADDR, | ||
| 100 | .size = 0x20000000, | ||
| 101 | #endif | ||
| 102 | }, | ||
| 103 | }; | ||
| 104 | |||
| 105 | int __init pcibios_init_platform(void) | ||
| 94 | { | 106 | { |
| 95 | struct pci_channel *chan = &board_pci_channels[0]; | 107 | struct pci_channel *chan = &board_pci_channels[0]; |
| 96 | u32 word; | 108 | u32 word; |
| @@ -114,14 +126,10 @@ int __init sh7780_pcic_init(struct sh4_pci_address_map *map) | |||
| 114 | /* Set IO and Mem windows to local address | 126 | /* Set IO and Mem windows to local address |
| 115 | * Make PCI and local address the same for easy 1 to 1 mapping | 127 | * Make PCI and local address the same for easy 1 to 1 mapping |
| 116 | */ | 128 | */ |
| 117 | pci_write_reg(chan, map->window0.size - 0xfffff, SH4_PCILSR0); | 129 | pci_write_reg(chan, sh7780_pci_map.window0.size - 0xfffff, SH4_PCILSR0); |
| 118 | pci_write_reg(chan, map->window1.size - 0xfffff, SH4_PCILSR1); | ||
| 119 | /* Set the values on window 0 PCI config registers */ | 130 | /* Set the values on window 0 PCI config registers */ |
| 120 | pci_write_reg(chan, map->window0.base, SH4_PCILAR0); | 131 | pci_write_reg(chan, sh7780_pci_map.window0.base, SH4_PCILAR0); |
| 121 | pci_write_reg(chan, map->window0.base, SH7780_PCIMBAR0); | 132 | pci_write_reg(chan, sh7780_pci_map.window0.base, SH7780_PCIMBAR0); |
| 122 | /* Set the values on window 1 PCI config registers */ | ||
| 123 | pci_write_reg(chan, map->window1.base, SH4_PCILAR1); | ||
| 124 | pci_write_reg(chan, map->window1.base, SH7780_PCIMBAR1); | ||
| 125 | 133 | ||
| 126 | /* Apply any last-minute PCIC fixups */ | 134 | /* Apply any last-minute PCIC fixups */ |
| 127 | pci_fixup_pcic(chan); | 135 | pci_fixup_pcic(chan); |
diff --git a/arch/sh/drivers/pci/pci-sh7780.h b/arch/sh/drivers/pci/pci-sh7780.h index 7a4f8a8dd690..4b65d4b26f75 100644 --- a/arch/sh/drivers/pci/pci-sh7780.h +++ b/arch/sh/drivers/pci/pci-sh7780.h | |||
| @@ -104,9 +104,4 @@ | |||
| 104 | 104 | ||
| 105 | #define SH7780_32BIT_DDR_BASE_ADDR 0x40000000 | 105 | #define SH7780_32BIT_DDR_BASE_ADDR 0x40000000 |
| 106 | 106 | ||
| 107 | struct sh4_pci_address_map; | ||
| 108 | |||
| 109 | /* arch/sh/drivers/pci/pci-sh7780.c */ | ||
| 110 | int sh7780_pcic_init(struct sh4_pci_address_map *map); | ||
| 111 | |||
| 112 | #endif /* _PCI_SH7780_H_ */ | 107 | #endif /* _PCI_SH7780_H_ */ |
