diff options
| author | Benjamin Herrenschmidt <benh@kernel.crashing.org> | 2013-04-29 21:10:09 -0400 |
|---|---|---|
| committer | Benjamin Herrenschmidt <benh@kernel.crashing.org> | 2013-04-29 21:10:09 -0400 |
| commit | bc23100a0d646aedb6e17fbcecdc35a24cd3bf2a (patch) | |
| tree | afbf44b177d17a8450d606b6d976e76e8e964273 /arch/powerpc/sysdev | |
| parent | 28bf41a1fedad76e9b4de70c9573bb3f8afc3709 (diff) | |
| parent | 9e2ecdbba3b0745f9ed454ab86961e3ccf9dc224 (diff) | |
Merge remote-tracking branch 'kumar/next' into next
From Kumar Gala:
<<
Add support for T4 and B4 SoC families from Freescale, e6500 altivec
support, some various board fixes and other minor cleanups.
>>
Diffstat (limited to 'arch/powerpc/sysdev')
| -rw-r--r-- | arch/powerpc/sysdev/fsl_msi.c | 4 | ||||
| -rw-r--r-- | arch/powerpc/sysdev/fsl_pci.c | 112 | ||||
| -rw-r--r-- | arch/powerpc/sysdev/fsl_pci.h | 13 | ||||
| -rw-r--r-- | arch/powerpc/sysdev/indirect_pci.c | 10 | ||||
| -rw-r--r-- | arch/powerpc/sysdev/qe_lib/Kconfig | 2 |
5 files changed, 101 insertions, 40 deletions
diff --git a/arch/powerpc/sysdev/fsl_msi.c b/arch/powerpc/sysdev/fsl_msi.c index 178c99427b1c..ab02db3d02d8 100644 --- a/arch/powerpc/sysdev/fsl_msi.c +++ b/arch/powerpc/sysdev/fsl_msi.c | |||
| @@ -333,6 +333,8 @@ static int fsl_of_msi_remove(struct platform_device *ofdev) | |||
| 333 | return 0; | 333 | return 0; |
| 334 | } | 334 | } |
| 335 | 335 | ||
| 336 | static struct lock_class_key fsl_msi_irq_class; | ||
| 337 | |||
| 336 | static int fsl_msi_setup_hwirq(struct fsl_msi *msi, struct platform_device *dev, | 338 | static int fsl_msi_setup_hwirq(struct fsl_msi *msi, struct platform_device *dev, |
| 337 | int offset, int irq_index) | 339 | int offset, int irq_index) |
| 338 | { | 340 | { |
| @@ -351,7 +353,7 @@ static int fsl_msi_setup_hwirq(struct fsl_msi *msi, struct platform_device *dev, | |||
| 351 | dev_err(&dev->dev, "No memory for MSI cascade data\n"); | 353 | dev_err(&dev->dev, "No memory for MSI cascade data\n"); |
| 352 | return -ENOMEM; | 354 | return -ENOMEM; |
| 353 | } | 355 | } |
| 354 | 356 | irq_set_lockdep_class(virt_msir, &fsl_msi_irq_class); | |
| 355 | msi->msi_virqs[irq_index] = virt_msir; | 357 | msi->msi_virqs[irq_index] = virt_msir; |
| 356 | cascade_data->index = offset; | 358 | cascade_data->index = offset; |
| 357 | cascade_data->msi_data = msi; | 359 | cascade_data->msi_data = msi; |
diff --git a/arch/powerpc/sysdev/fsl_pci.c b/arch/powerpc/sysdev/fsl_pci.c index 682084dba19b..cf81d6516514 100644 --- a/arch/powerpc/sysdev/fsl_pci.c +++ b/arch/powerpc/sysdev/fsl_pci.c | |||
| @@ -54,16 +54,63 @@ static void quirk_fsl_pcie_header(struct pci_dev *dev) | |||
| 54 | return; | 54 | return; |
| 55 | } | 55 | } |
| 56 | 56 | ||
| 57 | static int __init fsl_pcie_check_link(struct pci_controller *hose) | 57 | static int fsl_indirect_read_config(struct pci_bus *, unsigned int, |
| 58 | int, int, u32 *); | ||
| 59 | |||
| 60 | static int fsl_pcie_check_link(struct pci_controller *hose) | ||
| 58 | { | 61 | { |
| 59 | u32 val; | 62 | u32 val = 0; |
| 63 | |||
| 64 | if (hose->indirect_type & PPC_INDIRECT_TYPE_FSL_CFG_REG_LINK) { | ||
| 65 | if (hose->ops->read == fsl_indirect_read_config) { | ||
| 66 | struct pci_bus bus; | ||
| 67 | bus.number = 0; | ||
| 68 | bus.sysdata = hose; | ||
| 69 | bus.ops = hose->ops; | ||
| 70 | indirect_read_config(&bus, 0, PCIE_LTSSM, 4, &val); | ||
| 71 | } else | ||
| 72 | early_read_config_dword(hose, 0, 0, PCIE_LTSSM, &val); | ||
| 73 | if (val < PCIE_LTSSM_L0) | ||
| 74 | return 1; | ||
| 75 | } else { | ||
| 76 | struct ccsr_pci __iomem *pci = hose->private_data; | ||
| 77 | /* for PCIe IP rev 3.0 or greater use CSR0 for link state */ | ||
| 78 | val = (in_be32(&pci->pex_csr0) & PEX_CSR0_LTSSM_MASK) | ||
| 79 | >> PEX_CSR0_LTSSM_SHIFT; | ||
| 80 | if (val != PEX_CSR0_LTSSM_L0) | ||
| 81 | return 1; | ||
| 82 | } | ||
| 60 | 83 | ||
| 61 | early_read_config_dword(hose, 0, 0, PCIE_LTSSM, &val); | ||
| 62 | if (val < PCIE_LTSSM_L0) | ||
| 63 | return 1; | ||
| 64 | return 0; | 84 | return 0; |
| 65 | } | 85 | } |
| 66 | 86 | ||
| 87 | static int fsl_indirect_read_config(struct pci_bus *bus, unsigned int devfn, | ||
| 88 | int offset, int len, u32 *val) | ||
| 89 | { | ||
| 90 | struct pci_controller *hose = pci_bus_to_host(bus); | ||
| 91 | |||
| 92 | if (fsl_pcie_check_link(hose)) | ||
| 93 | hose->indirect_type |= PPC_INDIRECT_TYPE_NO_PCIE_LINK; | ||
| 94 | else | ||
| 95 | hose->indirect_type &= ~PPC_INDIRECT_TYPE_NO_PCIE_LINK; | ||
| 96 | |||
| 97 | return indirect_read_config(bus, devfn, offset, len, val); | ||
| 98 | } | ||
| 99 | |||
| 100 | static struct pci_ops fsl_indirect_pci_ops = | ||
| 101 | { | ||
| 102 | .read = fsl_indirect_read_config, | ||
| 103 | .write = indirect_write_config, | ||
| 104 | }; | ||
| 105 | |||
| 106 | static void __init fsl_setup_indirect_pci(struct pci_controller* hose, | ||
| 107 | resource_size_t cfg_addr, | ||
| 108 | resource_size_t cfg_data, u32 flags) | ||
| 109 | { | ||
| 110 | setup_indirect_pci(hose, cfg_addr, cfg_data, flags); | ||
| 111 | hose->ops = &fsl_indirect_pci_ops; | ||
| 112 | } | ||
| 113 | |||
| 67 | #if defined(CONFIG_FSL_SOC_BOOKE) || defined(CONFIG_PPC_86xx) | 114 | #if defined(CONFIG_FSL_SOC_BOOKE) || defined(CONFIG_PPC_86xx) |
| 68 | 115 | ||
| 69 | #define MAX_PHYS_ADDR_BITS 40 | 116 | #define MAX_PHYS_ADDR_BITS 40 |
| @@ -106,7 +153,7 @@ static int setup_one_atmu(struct ccsr_pci __iomem *pci, | |||
| 106 | flags |= 0x10000000; /* enable relaxed ordering */ | 153 | flags |= 0x10000000; /* enable relaxed ordering */ |
| 107 | 154 | ||
| 108 | for (i = 0; size > 0; i++) { | 155 | for (i = 0; size > 0; i++) { |
| 109 | unsigned int bits = min(__ilog2(size), | 156 | unsigned int bits = min(ilog2(size), |
| 110 | __ffs(pci_addr | phys_addr)); | 157 | __ffs(pci_addr | phys_addr)); |
| 111 | 158 | ||
| 112 | if (index + i >= 5) | 159 | if (index + i >= 5) |
| @@ -126,10 +173,9 @@ static int setup_one_atmu(struct ccsr_pci __iomem *pci, | |||
| 126 | } | 173 | } |
| 127 | 174 | ||
| 128 | /* atmu setup for fsl pci/pcie controller */ | 175 | /* atmu setup for fsl pci/pcie controller */ |
| 129 | static void setup_pci_atmu(struct pci_controller *hose, | 176 | static void setup_pci_atmu(struct pci_controller *hose) |
| 130 | struct resource *rsrc) | ||
| 131 | { | 177 | { |
| 132 | struct ccsr_pci __iomem *pci; | 178 | struct ccsr_pci __iomem *pci = hose->private_data; |
| 133 | int i, j, n, mem_log, win_idx = 3, start_idx = 1, end_idx = 4; | 179 | int i, j, n, mem_log, win_idx = 3, start_idx = 1, end_idx = 4; |
| 134 | u64 mem, sz, paddr_hi = 0; | 180 | u64 mem, sz, paddr_hi = 0; |
| 135 | u64 paddr_lo = ULLONG_MAX; | 181 | u64 paddr_lo = ULLONG_MAX; |
| @@ -140,15 +186,6 @@ static void setup_pci_atmu(struct pci_controller *hose, | |||
| 140 | const u64 *reg; | 186 | const u64 *reg; |
| 141 | int len; | 187 | int len; |
| 142 | 188 | ||
| 143 | pr_debug("PCI memory map start 0x%016llx, size 0x%016llx\n", | ||
| 144 | (u64)rsrc->start, (u64)resource_size(rsrc)); | ||
| 145 | |||
| 146 | pci = ioremap(rsrc->start, resource_size(rsrc)); | ||
| 147 | if (!pci) { | ||
| 148 | dev_err(hose->parent, "Unable to map ATMU registers\n"); | ||
| 149 | return; | ||
| 150 | } | ||
| 151 | |||
| 152 | if (early_find_capability(hose, 0, 0, PCI_CAP_ID_EXP)) { | 189 | if (early_find_capability(hose, 0, 0, PCI_CAP_ID_EXP)) { |
| 153 | if (in_be32(&pci->block_rev1) >= PCIE_IP_REV_2_2) { | 190 | if (in_be32(&pci->block_rev1) >= PCIE_IP_REV_2_2) { |
| 154 | win_idx = 2; | 191 | win_idx = 2; |
| @@ -196,7 +233,7 @@ static void setup_pci_atmu(struct pci_controller *hose, | |||
| 196 | out_be32(&pci->pow[j].powbar, (hose->io_base_phys >> 12)); | 233 | out_be32(&pci->pow[j].powbar, (hose->io_base_phys >> 12)); |
| 197 | /* Enable, IO R/W */ | 234 | /* Enable, IO R/W */ |
| 198 | out_be32(&pci->pow[j].powar, 0x80088000 | 235 | out_be32(&pci->pow[j].powar, 0x80088000 |
| 199 | | (__ilog2(hose->io_resource.end | 236 | | (ilog2(hose->io_resource.end |
| 200 | - hose->io_resource.start + 1) - 1)); | 237 | - hose->io_resource.start + 1) - 1)); |
| 201 | } | 238 | } |
| 202 | } | 239 | } |
| @@ -207,12 +244,12 @@ static void setup_pci_atmu(struct pci_controller *hose, | |||
| 207 | 244 | ||
| 208 | if (paddr_hi == paddr_lo) { | 245 | if (paddr_hi == paddr_lo) { |
| 209 | pr_err("%s: No outbound window space\n", name); | 246 | pr_err("%s: No outbound window space\n", name); |
| 210 | goto out; | 247 | return; |
| 211 | } | 248 | } |
| 212 | 249 | ||
| 213 | if (paddr_lo == 0) { | 250 | if (paddr_lo == 0) { |
| 214 | pr_err("%s: No space for inbound window\n", name); | 251 | pr_err("%s: No space for inbound window\n", name); |
| 215 | goto out; | 252 | return; |
| 216 | } | 253 | } |
| 217 | 254 | ||
| 218 | /* setup PCSRBAR/PEXCSRBAR */ | 255 | /* setup PCSRBAR/PEXCSRBAR */ |
| @@ -261,7 +298,7 @@ static void setup_pci_atmu(struct pci_controller *hose, | |||
| 261 | } | 298 | } |
| 262 | 299 | ||
| 263 | sz = min(mem, paddr_lo); | 300 | sz = min(mem, paddr_lo); |
| 264 | mem_log = __ilog2_u64(sz); | 301 | mem_log = ilog2(sz); |
| 265 | 302 | ||
| 266 | /* PCIe can overmap inbound & outbound since RX & TX are separated */ | 303 | /* PCIe can overmap inbound & outbound since RX & TX are separated */ |
| 267 | if (early_find_capability(hose, 0, 0, PCI_CAP_ID_EXP)) { | 304 | if (early_find_capability(hose, 0, 0, PCI_CAP_ID_EXP)) { |
| @@ -290,7 +327,7 @@ static void setup_pci_atmu(struct pci_controller *hose, | |||
| 290 | * SWIOTLB and access the full range of memory | 327 | * SWIOTLB and access the full range of memory |
| 291 | */ | 328 | */ |
| 292 | if (sz != mem) { | 329 | if (sz != mem) { |
| 293 | mem_log = __ilog2_u64(mem); | 330 | mem_log = ilog2(mem); |
| 294 | 331 | ||
| 295 | /* Size window up if we dont fit in exact power-of-2 */ | 332 | /* Size window up if we dont fit in exact power-of-2 */ |
| 296 | if ((1ull << mem_log) != mem) | 333 | if ((1ull << mem_log) != mem) |
| @@ -327,7 +364,7 @@ static void setup_pci_atmu(struct pci_controller *hose, | |||
| 327 | sz -= 1ull << mem_log; | 364 | sz -= 1ull << mem_log; |
| 328 | 365 | ||
| 329 | if (sz) { | 366 | if (sz) { |
| 330 | mem_log = __ilog2_u64(sz); | 367 | mem_log = ilog2(sz); |
| 331 | piwar |= (mem_log - 1); | 368 | piwar |= (mem_log - 1); |
| 332 | 369 | ||
| 333 | out_be32(&pci->piw[win_idx].pitar, paddr >> 12); | 370 | out_be32(&pci->piw[win_idx].pitar, paddr >> 12); |
| @@ -358,9 +395,6 @@ static void setup_pci_atmu(struct pci_controller *hose, | |||
| 358 | pr_info("%s: DMA window size is 0x%llx\n", name, | 395 | pr_info("%s: DMA window size is 0x%llx\n", name, |
| 359 | (u64)hose->dma_window_size); | 396 | (u64)hose->dma_window_size); |
| 360 | } | 397 | } |
| 361 | |||
| 362 | out: | ||
| 363 | iounmap(pci); | ||
| 364 | } | 398 | } |
| 365 | 399 | ||
| 366 | static void __init setup_pci_cmd(struct pci_controller *hose) | 400 | static void __init setup_pci_cmd(struct pci_controller *hose) |
| @@ -429,6 +463,7 @@ int __init fsl_add_bridge(struct platform_device *pdev, int is_primary) | |||
| 429 | const int *bus_range; | 463 | const int *bus_range; |
| 430 | u8 hdr_type, progif; | 464 | u8 hdr_type, progif; |
| 431 | struct device_node *dev; | 465 | struct device_node *dev; |
| 466 | struct ccsr_pci __iomem *pci; | ||
| 432 | 467 | ||
| 433 | dev = pdev->dev.of_node; | 468 | dev = pdev->dev.of_node; |
| 434 | 469 | ||
| @@ -461,8 +496,18 @@ int __init fsl_add_bridge(struct platform_device *pdev, int is_primary) | |||
| 461 | hose->first_busno = bus_range ? bus_range[0] : 0x0; | 496 | hose->first_busno = bus_range ? bus_range[0] : 0x0; |
| 462 | hose->last_busno = bus_range ? bus_range[1] : 0xff; | 497 | hose->last_busno = bus_range ? bus_range[1] : 0xff; |
| 463 | 498 | ||
| 464 | setup_indirect_pci(hose, rsrc.start, rsrc.start + 0x4, | 499 | pr_debug("PCI memory map start 0x%016llx, size 0x%016llx\n", |
| 465 | PPC_INDIRECT_TYPE_BIG_ENDIAN); | 500 | (u64)rsrc.start, (u64)resource_size(&rsrc)); |
| 501 | |||
| 502 | pci = hose->private_data = ioremap(rsrc.start, resource_size(&rsrc)); | ||
| 503 | if (!hose->private_data) | ||
| 504 | goto no_bridge; | ||
| 505 | |||
| 506 | fsl_setup_indirect_pci(hose, rsrc.start, rsrc.start + 0x4, | ||
| 507 | PPC_INDIRECT_TYPE_BIG_ENDIAN); | ||
| 508 | |||
| 509 | if (in_be32(&pci->block_rev1) < PCIE_IP_REV_3_0) | ||
| 510 | hose->indirect_type |= PPC_INDIRECT_TYPE_FSL_CFG_REG_LINK; | ||
| 466 | 511 | ||
| 467 | if (early_find_capability(hose, 0, 0, PCI_CAP_ID_EXP)) { | 512 | if (early_find_capability(hose, 0, 0, PCI_CAP_ID_EXP)) { |
| 468 | /* For PCIE read HEADER_TYPE to identify controler mode */ | 513 | /* For PCIE read HEADER_TYPE to identify controler mode */ |
| @@ -500,11 +545,12 @@ int __init fsl_add_bridge(struct platform_device *pdev, int is_primary) | |||
| 500 | pci_process_bridge_OF_ranges(hose, dev, is_primary); | 545 | pci_process_bridge_OF_ranges(hose, dev, is_primary); |
| 501 | 546 | ||
| 502 | /* Setup PEX window registers */ | 547 | /* Setup PEX window registers */ |
| 503 | setup_pci_atmu(hose, &rsrc); | 548 | setup_pci_atmu(hose); |
| 504 | 549 | ||
| 505 | return 0; | 550 | return 0; |
| 506 | 551 | ||
| 507 | no_bridge: | 552 | no_bridge: |
| 553 | iounmap(hose->private_data); | ||
| 508 | /* unmap cfg_data & cfg_addr separately if not on same page */ | 554 | /* unmap cfg_data & cfg_addr separately if not on same page */ |
| 509 | if (((unsigned long)hose->cfg_data & PAGE_MASK) != | 555 | if (((unsigned long)hose->cfg_data & PAGE_MASK) != |
| 510 | ((unsigned long)hose->cfg_addr & PAGE_MASK)) | 556 | ((unsigned long)hose->cfg_addr & PAGE_MASK)) |
| @@ -681,6 +727,7 @@ static int __init mpc83xx_pcie_setup(struct pci_controller *hose, | |||
| 681 | WARN_ON(hose->dn->data); | 727 | WARN_ON(hose->dn->data); |
| 682 | hose->dn->data = pcie; | 728 | hose->dn->data = pcie; |
| 683 | hose->ops = &mpc83xx_pcie_ops; | 729 | hose->ops = &mpc83xx_pcie_ops; |
| 730 | hose->indirect_type |= PPC_INDIRECT_TYPE_FSL_CFG_REG_LINK; | ||
| 684 | 731 | ||
| 685 | out_le32(pcie->cfg_type0 + PEX_OUTWIN0_TAH, 0); | 732 | out_le32(pcie->cfg_type0 + PEX_OUTWIN0_TAH, 0); |
| 686 | out_le32(pcie->cfg_type0 + PEX_OUTWIN0_TAL, 0); | 733 | out_le32(pcie->cfg_type0 + PEX_OUTWIN0_TAL, 0); |
| @@ -766,8 +813,8 @@ int __init mpc83xx_add_bridge(struct device_node *dev) | |||
| 766 | if (ret) | 813 | if (ret) |
| 767 | goto err0; | 814 | goto err0; |
| 768 | } else { | 815 | } else { |
| 769 | setup_indirect_pci(hose, rsrc_cfg.start, | 816 | fsl_setup_indirect_pci(hose, rsrc_cfg.start, |
| 770 | rsrc_cfg.start + 4, 0); | 817 | rsrc_cfg.start + 4, 0); |
| 771 | } | 818 | } |
| 772 | 819 | ||
| 773 | printk(KERN_INFO "Found FSL PCI host bridge at 0x%016llx. " | 820 | printk(KERN_INFO "Found FSL PCI host bridge at 0x%016llx. " |
| @@ -836,6 +883,7 @@ static const struct of_device_id pci_ids[] = { | |||
| 836 | { .compatible = "fsl,qoriq-pcie-v2.2", }, | 883 | { .compatible = "fsl,qoriq-pcie-v2.2", }, |
| 837 | { .compatible = "fsl,qoriq-pcie-v2.3", }, | 884 | { .compatible = "fsl,qoriq-pcie-v2.3", }, |
| 838 | { .compatible = "fsl,qoriq-pcie-v2.4", }, | 885 | { .compatible = "fsl,qoriq-pcie-v2.4", }, |
| 886 | { .compatible = "fsl,qoriq-pcie-v3.0", }, | ||
| 839 | 887 | ||
| 840 | /* | 888 | /* |
| 841 | * The following entries are for compatibility with older device | 889 | * The following entries are for compatibility with older device |
diff --git a/arch/powerpc/sysdev/fsl_pci.h b/arch/powerpc/sysdev/fsl_pci.h index c495c00c8740..72b5625330e2 100644 --- a/arch/powerpc/sysdev/fsl_pci.h +++ b/arch/powerpc/sysdev/fsl_pci.h | |||
| @@ -14,9 +14,12 @@ | |||
| 14 | #ifndef __POWERPC_FSL_PCI_H | 14 | #ifndef __POWERPC_FSL_PCI_H |
| 15 | #define __POWERPC_FSL_PCI_H | 15 | #define __POWERPC_FSL_PCI_H |
| 16 | 16 | ||
| 17 | struct platform_device; | ||
| 18 | |||
| 17 | #define PCIE_LTSSM 0x0404 /* PCIE Link Training and Status */ | 19 | #define PCIE_LTSSM 0x0404 /* PCIE Link Training and Status */ |
| 18 | #define PCIE_LTSSM_L0 0x16 /* L0 state */ | 20 | #define PCIE_LTSSM_L0 0x16 /* L0 state */ |
| 19 | #define PCIE_IP_REV_2_2 0x02080202 /* PCIE IP block version Rev2.2 */ | 21 | #define PCIE_IP_REV_2_2 0x02080202 /* PCIE IP block version Rev2.2 */ |
| 22 | #define PCIE_IP_REV_3_0 0x02080300 /* PCIE IP block version Rev3.0 */ | ||
| 20 | #define PIWAR_EN 0x80000000 /* Enable */ | 23 | #define PIWAR_EN 0x80000000 /* Enable */ |
| 21 | #define PIWAR_PF 0x20000000 /* prefetch */ | 24 | #define PIWAR_PF 0x20000000 /* prefetch */ |
| 22 | #define PIWAR_TGI_LOCAL 0x00f00000 /* target - local memory */ | 25 | #define PIWAR_TGI_LOCAL 0x00f00000 /* target - local memory */ |
| @@ -89,6 +92,16 @@ struct ccsr_pci { | |||
| 89 | __be32 pex_err_cap_r1; /* 0x.e2c - PCIE error capture register 0 */ | 92 | __be32 pex_err_cap_r1; /* 0x.e2c - PCIE error capture register 0 */ |
| 90 | __be32 pex_err_cap_r2; /* 0x.e30 - PCIE error capture register 0 */ | 93 | __be32 pex_err_cap_r2; /* 0x.e30 - PCIE error capture register 0 */ |
| 91 | __be32 pex_err_cap_r3; /* 0x.e34 - PCIE error capture register 0 */ | 94 | __be32 pex_err_cap_r3; /* 0x.e34 - PCIE error capture register 0 */ |
| 95 | u8 res_e38[200]; | ||
| 96 | __be32 pdb_stat; /* 0x.f00 - PCIE Debug Status */ | ||
| 97 | u8 res_f04[16]; | ||
| 98 | __be32 pex_csr0; /* 0x.f14 - PEX Control/Status register 0*/ | ||
| 99 | #define PEX_CSR0_LTSSM_MASK 0xFC | ||
| 100 | #define PEX_CSR0_LTSSM_SHIFT 2 | ||
| 101 | #define PEX_CSR0_LTSSM_L0 0x11 | ||
| 102 | __be32 pex_csr1; /* 0x.f18 - PEX Control/Status register 1*/ | ||
| 103 | u8 res_f1c[228]; | ||
| 104 | |||
| 92 | }; | 105 | }; |
| 93 | 106 | ||
| 94 | extern int fsl_add_bridge(struct platform_device *pdev, int is_primary); | 107 | extern int fsl_add_bridge(struct platform_device *pdev, int is_primary); |
diff --git a/arch/powerpc/sysdev/indirect_pci.c b/arch/powerpc/sysdev/indirect_pci.c index 82fdad885d20..c6c8b526a4f6 100644 --- a/arch/powerpc/sysdev/indirect_pci.c +++ b/arch/powerpc/sysdev/indirect_pci.c | |||
| @@ -20,9 +20,8 @@ | |||
| 20 | #include <asm/pci-bridge.h> | 20 | #include <asm/pci-bridge.h> |
| 21 | #include <asm/machdep.h> | 21 | #include <asm/machdep.h> |
| 22 | 22 | ||
| 23 | static int | 23 | int indirect_read_config(struct pci_bus *bus, unsigned int devfn, |
| 24 | indirect_read_config(struct pci_bus *bus, unsigned int devfn, int offset, | 24 | int offset, int len, u32 *val) |
| 25 | int len, u32 *val) | ||
| 26 | { | 25 | { |
| 27 | struct pci_controller *hose = pci_bus_to_host(bus); | 26 | struct pci_controller *hose = pci_bus_to_host(bus); |
| 28 | volatile void __iomem *cfg_data; | 27 | volatile void __iomem *cfg_data; |
| @@ -78,9 +77,8 @@ indirect_read_config(struct pci_bus *bus, unsigned int devfn, int offset, | |||
| 78 | return PCIBIOS_SUCCESSFUL; | 77 | return PCIBIOS_SUCCESSFUL; |
| 79 | } | 78 | } |
| 80 | 79 | ||
| 81 | static int | 80 | int indirect_write_config(struct pci_bus *bus, unsigned int devfn, |
| 82 | indirect_write_config(struct pci_bus *bus, unsigned int devfn, int offset, | 81 | int offset, int len, u32 val) |
| 83 | int len, u32 val) | ||
| 84 | { | 82 | { |
| 85 | struct pci_controller *hose = pci_bus_to_host(bus); | 83 | struct pci_controller *hose = pci_bus_to_host(bus); |
| 86 | volatile void __iomem *cfg_data; | 84 | volatile void __iomem *cfg_data; |
diff --git a/arch/powerpc/sysdev/qe_lib/Kconfig b/arch/powerpc/sysdev/qe_lib/Kconfig index 41ac3dfac98e..3c251993bacd 100644 --- a/arch/powerpc/sysdev/qe_lib/Kconfig +++ b/arch/powerpc/sysdev/qe_lib/Kconfig | |||
| @@ -22,6 +22,6 @@ config UCC | |||
| 22 | 22 | ||
| 23 | config QE_USB | 23 | config QE_USB |
| 24 | bool | 24 | bool |
| 25 | default y if USB_GADGET_FSL_QE | 25 | default y if USB_FSL_QE |
| 26 | help | 26 | help |
| 27 | QE USB Controller support | 27 | QE USB Controller support |
