From ecc1030bafd5835d6274222723b18ada5cb4753a Mon Sep 17 00:00:00 2001 From: Ben Dooks Date: Sun, 29 Jul 2012 18:05:57 +0100 Subject: Add hotplug mask and initial setup --- arch/arm/mach-kirkwood/common.h | 2 +- arch/arm/mach-kirkwood/csb1724-setup.c | 2 +- arch/arm/mach-kirkwood/db88f6281-bp-setup.c | 4 ++-- arch/arm/mach-kirkwood/mv88f6281gtw_ge-setup.c | 2 +- arch/arm/mach-kirkwood/openrd-setup.c | 2 +- arch/arm/mach-kirkwood/pcie.c | 10 ++++++---- arch/arm/mach-kirkwood/rd88f6192-nas-setup.c | 2 +- arch/arm/mach-kirkwood/rd88f6281-setup.c | 2 +- arch/arm/mach-kirkwood/t5325-setup.c | 2 +- arch/arm/mach-kirkwood/ts219-setup.c | 2 +- arch/arm/mach-kirkwood/ts41x-setup.c | 4 ++-- 11 files changed, 18 insertions(+), 16 deletions(-) diff --git a/arch/arm/mach-kirkwood/common.h b/arch/arm/mach-kirkwood/common.h index 2375cac7dd31..aee94f952ebb 100644 --- a/arch/arm/mach-kirkwood/common.h +++ b/arch/arm/mach-kirkwood/common.h @@ -39,7 +39,7 @@ void kirkwood_ehci_init(void); void kirkwood_ge00_init(struct mv643xx_eth_platform_data *eth_data); void kirkwood_ge01_init(struct mv643xx_eth_platform_data *eth_data); void kirkwood_ge00_switch_init(struct dsa_platform_data *d, int irq); -void kirkwood_pcie_init(unsigned int portmask); +void kirkwood_pcie_init(unsigned int portmask, unsigned int hotmask); void kirkwood_sata_init(struct mv_sata_platform_data *sata_data); void kirkwood_sdio_init(struct mvsdio_platform_data *mvsdio_data); void kirkwood_spi_init(void); diff --git a/arch/arm/mach-kirkwood/csb1724-setup.c b/arch/arm/mach-kirkwood/csb1724-setup.c index 4e197c6ac765..c5545f3ab1c4 100644 --- a/arch/arm/mach-kirkwood/csb1724-setup.c +++ b/arch/arm/mach-kirkwood/csb1724-setup.c @@ -115,7 +115,7 @@ static void __init csb1724_init(void) static int __init csb1724_pci_init(void) { if (machine_is_csb1724()) - kirkwood_pcie_init(KW_PCIE1 | KW_PCIE0); + kirkwood_pcie_init(KW_PCIE1 | KW_PCIE0, KW_PCIE0 | KW_PCIE1); return 0; } diff --git a/arch/arm/mach-kirkwood/db88f6281-bp-setup.c b/arch/arm/mach-kirkwood/db88f6281-bp-setup.c index d93359379598..5e6780a4fc17 100644 --- a/arch/arm/mach-kirkwood/db88f6281-bp-setup.c +++ b/arch/arm/mach-kirkwood/db88f6281-bp-setup.c @@ -87,9 +87,9 @@ static int __init db88f6281_pci_init(void) kirkwood_pcie_id(&dev, &rev); if (dev == MV88F6282_DEV_ID) - kirkwood_pcie_init(KW_PCIE1 | KW_PCIE0); + kirkwood_pcie_init(KW_PCIE1 | KW_PCIE0, 0); else - kirkwood_pcie_init(KW_PCIE0); + kirkwood_pcie_init(KW_PCIE0, 0); } return 0; } diff --git a/arch/arm/mach-kirkwood/mv88f6281gtw_ge-setup.c b/arch/arm/mach-kirkwood/mv88f6281gtw_ge-setup.c index 6d8364a97810..d4da11f1b701 100644 --- a/arch/arm/mach-kirkwood/mv88f6281gtw_ge-setup.c +++ b/arch/arm/mach-kirkwood/mv88f6281gtw_ge-setup.c @@ -154,7 +154,7 @@ static void __init mv88f6281gtw_ge_init(void) static int __init mv88f6281gtw_ge_pci_init(void) { if (machine_is_mv88f6281gtw_ge()) - kirkwood_pcie_init(KW_PCIE0); + kirkwood_pcie_init(KW_PCIE0, 0); return 0; } diff --git a/arch/arm/mach-kirkwood/openrd-setup.c b/arch/arm/mach-kirkwood/openrd-setup.c index 7e99c3f340fc..e0a3e21c0c87 100644 --- a/arch/arm/mach-kirkwood/openrd-setup.c +++ b/arch/arm/mach-kirkwood/openrd-setup.c @@ -211,7 +211,7 @@ static int __init openrd_pci_init(void) if (machine_is_openrd_base() || machine_is_openrd_client() || machine_is_openrd_ultimate()) - kirkwood_pcie_init(KW_PCIE0); + kirkwood_pcie_init(KW_PCIE0, 0); return 0; } diff --git a/arch/arm/mach-kirkwood/pcie.c b/arch/arm/mach-kirkwood/pcie.c index 6e8b2efa3c35..088cb10ebd3f 100644 --- a/arch/arm/mach-kirkwood/pcie.c +++ b/arch/arm/mach-kirkwood/pcie.c @@ -273,26 +273,28 @@ static struct hw_pci kirkwood_pci __initdata = { .map_irq = kirkwood_pcie_map_irq, }; -static void __init add_pcie_port(int index, unsigned long base) +static void __init add_pcie_port(int index, unsigned long base, unsigned int hotplug) { printk(KERN_INFO "Kirkwood PCIe port %d: ", index); if (orion_pcie_link_up((void __iomem *)base)) { printk(KERN_INFO "link up\n"); pcie_port_map[num_pcie_ports++] = index; + } else if (hotplug) { + printk(KERN_INFO "link down, adding (hotplug)\n"); } else printk(KERN_INFO "link down, ignoring\n"); } -void __init kirkwood_pcie_init(unsigned int portmask) +void __init kirkwood_pcie_init(unsigned int portmask, unsigned int hotmask) { vga_base = KIRKWOOD_PCIE_MEM_PHYS_BASE; if (portmask & KW_PCIE0) - add_pcie_port(0, PCIE_VIRT_BASE); + add_pcie_port(0, PCIE_VIRT_BASE, hotmask & KW_PCIE0); if (portmask & KW_PCIE1) - add_pcie_port(1, PCIE1_VIRT_BASE); + add_pcie_port(1, PCIE1_VIRT_BASE, hotmask & KW_PCIE1); kirkwood_pci.nr_controllers = num_pcie_ports; pci_common_init(&kirkwood_pci); diff --git a/arch/arm/mach-kirkwood/rd88f6192-nas-setup.c b/arch/arm/mach-kirkwood/rd88f6192-nas-setup.c index f742a66a7045..b3a662868578 100644 --- a/arch/arm/mach-kirkwood/rd88f6192-nas-setup.c +++ b/arch/arm/mach-kirkwood/rd88f6192-nas-setup.c @@ -70,7 +70,7 @@ static void __init rd88f6192_init(void) static int __init rd88f6192_pci_init(void) { if (machine_is_rd88f6192_nas()) - kirkwood_pcie_init(KW_PCIE0); + kirkwood_pcie_init(KW_PCIE0, 0); return 0; } diff --git a/arch/arm/mach-kirkwood/rd88f6281-setup.c b/arch/arm/mach-kirkwood/rd88f6281-setup.c index ef922079348b..499902e398f3 100644 --- a/arch/arm/mach-kirkwood/rd88f6281-setup.c +++ b/arch/arm/mach-kirkwood/rd88f6281-setup.c @@ -107,7 +107,7 @@ static void __init rd88f6281_init(void) static int __init rd88f6281_pci_init(void) { if (machine_is_rd88f6281()) - kirkwood_pcie_init(KW_PCIE0); + kirkwood_pcie_init(KW_PCIE0, 0); return 0; } diff --git a/arch/arm/mach-kirkwood/t5325-setup.c b/arch/arm/mach-kirkwood/t5325-setup.c index bad738e44044..528cb89d4965 100644 --- a/arch/arm/mach-kirkwood/t5325-setup.c +++ b/arch/arm/mach-kirkwood/t5325-setup.c @@ -198,7 +198,7 @@ static void __init hp_t5325_init(void) static int __init hp_t5325_pci_init(void) { if (machine_is_t5325()) - kirkwood_pcie_init(KW_PCIE0); + kirkwood_pcie_init(KW_PCIE0, 0); return 0; } diff --git a/arch/arm/mach-kirkwood/ts219-setup.c b/arch/arm/mach-kirkwood/ts219-setup.c index 73e2b6ca9564..bf00119acb9e 100644 --- a/arch/arm/mach-kirkwood/ts219-setup.c +++ b/arch/arm/mach-kirkwood/ts219-setup.c @@ -124,7 +124,7 @@ static void __init qnap_ts219_init(void) static int __init ts219_pci_init(void) { if (machine_is_ts219()) - kirkwood_pcie_init(KW_PCIE0); + kirkwood_pcie_init(KW_PCIE0, 0); return 0; } diff --git a/arch/arm/mach-kirkwood/ts41x-setup.c b/arch/arm/mach-kirkwood/ts41x-setup.c index 5bbca2680442..2a51a9ace52f 100644 --- a/arch/arm/mach-kirkwood/ts41x-setup.c +++ b/arch/arm/mach-kirkwood/ts41x-setup.c @@ -165,9 +165,9 @@ static int __init ts41x_pci_init(void) kirkwood_pcie_id(&dev, &rev); if (dev == MV88F6282_DEV_ID) - kirkwood_pcie_init(KW_PCIE1 | KW_PCIE0); + kirkwood_pcie_init(KW_PCIE1 | KW_PCIE0, 0); else - kirkwood_pcie_init(KW_PCIE0); + kirkwood_pcie_init(KW_PCIE0, 0); } return 0; -- cgit v1.2.1