diff options
author | Leon Woestenberg <leon@bigtee.(none)> | 2009-03-31 11:21:20 +0200 |
---|---|---|
committer | Leon Woestenberg <leon@bigtee.(none)> | 2009-03-31 11:21:20 +0200 |
commit | 0dcc23aad9e595ef0a760e3e7b161c04692ac5e7 (patch) | |
tree | 9b40a9b23f16fd72f8fbe31c5a8ab29d346605b6 | |
parent | 780c434192ad4c0bfe60386417e7b986767b31ce (diff) |
linux-2.6.29: Added machine canyonlands (PowerPC 460EX).
4 files changed, 1446 insertions, 1 deletions
diff --git a/recipes/linux/linux-2.6.29/canyonlands/0001-powerpc-4xx-Add-PPC4xx-PCIe-MSI-support.patch b/recipes/linux/linux-2.6.29/canyonlands/0001-powerpc-4xx-Add-PPC4xx-PCIe-MSI-support.patch new file mode 100644 index 0000000000..177b5d54a1 --- /dev/null +++ b/recipes/linux/linux-2.6.29/canyonlands/0001-powerpc-4xx-Add-PPC4xx-PCIe-MSI-support.patch @@ -0,0 +1,634 @@ +From aa1671e0b1a5b72dbf714a1c13cb9850f9ecaee7 Mon Sep 17 00:00:00 2001 +From: Stefan Roese <sr@denx.de> +Date: Wed, 10 Sep 2008 06:02:17 +0200 +Subject: [PATCH] powerpc/4xx: Add PPC4xx PCIe MSI support + +This MSI driver can be used on all PCIe enabled PPC4xx variants. +This is currently 405EX, 440SPe and 460EX/GT. + +This driver version is a testing version and no release. It still +has some known problems which need to be solved: + +- Longshine LCS-8337TXR + MSI's are successfully generated on 405EX (Kilauea) and 460EX + (Canyonlands). But the MSI generation stops at some time and + not further MSI's are generated anymore. + +- Intel PRO/1000 PT Desktop + No MSI is generated at all + +Signed-off-by: Stefan Roese <sr@denx.de> +--- + arch/powerpc/boot/dts/canyonlands.dts | 25 +++ + arch/powerpc/boot/dts/katmai.dts | 12 + + arch/powerpc/boot/dts/kilauea.dts | 21 ++ + arch/powerpc/include/asm/dcr-regs.h | 5 + + arch/powerpc/sysdev/Makefile | 3 +- + arch/powerpc/sysdev/ppc4xx_msi.c | 358 +++++++++++++++++++++++++++++++++ + arch/powerpc/sysdev/ppc4xx_pci.c | 46 ++++- + arch/powerpc/sysdev/ppc4xx_pci.h | 11 + + 8 files changed, 479 insertions(+), 2 deletions(-) + create mode 100644 arch/powerpc/sysdev/ppc4xx_msi.c + +diff --git a/arch/powerpc/boot/dts/canyonlands.dts b/arch/powerpc/boot/dts/canyonlands.dts +index 79fe412..5c8b419 100644 +--- a/arch/powerpc/boot/dts/canyonlands.dts ++++ b/arch/powerpc/boot/dts/canyonlands.dts +@@ -111,6 +111,11 @@ + ranges; + clock-frequency = <0>; /* Filled in by U-Boot */ + ++ MQ0: memqueue { ++ compatible = "ibm,mq-460ex"; ++ dcr-reg = <0x040 0x011>; ++ }; ++ + SDRAM0: sdram { + compatible = "ibm,sdram-460ex", "ibm,sdram-405gp"; + dcr-reg = <0x010 0x002>; +@@ -395,6 +400,8 @@ + 0x0 0x0 0x0 0x2 &UIC3 0xd 0x4 /* swizzled int B */ + 0x0 0x0 0x0 0x3 &UIC3 0xe 0x4 /* swizzled int C */ + 0x0 0x0 0x0 0x4 &UIC3 0xf 0x4 /* swizzled int D */>; ++ ++ mq-device = <&MQ0>; + }; + + PCIE1: pciex@d20000000 { +@@ -436,6 +443,24 @@ + 0x0 0x0 0x0 0x2 &UIC3 0x11 0x4 /* swizzled int B */ + 0x0 0x0 0x0 0x3 &UIC3 0x12 0x4 /* swizzled int C */ + 0x0 0x0 0x0 0x4 &UIC3 0x13 0x4 /* swizzled int D */>; ++ ++ mq-device = <&MQ0>; ++ }; ++ ++ MSI: msi@c10000000 { ++ compatible = "ibm,ppc4xx-msi-460ex", "ibm,ppc4xx-msi"; ++ reg = <0xc 0x10000000 0x100>; ++ sdr-base = <0x36c>; ++ interrupts = <24 1 ++ 25 1 ++ 26 1 ++ 27 1 ++ 28 1 ++ 29 1 ++ 30 1 ++ 31 1>; ++ interrupt-parent = <&UIC3>; ++ mq-device = <&MQ0>; + }; + }; + }; +diff --git a/arch/powerpc/boot/dts/katmai.dts b/arch/powerpc/boot/dts/katmai.dts +index 077819b..b70bdcb 100644 +--- a/arch/powerpc/boot/dts/katmai.dts ++++ b/arch/powerpc/boot/dts/katmai.dts +@@ -392,6 +392,18 @@ + 0x0 0x0 0x0 0x3 &UIC3 0xa 0x4 /* swizzled int C */ + 0x0 0x0 0x0 0x4 &UIC3 0xb 0x4 /* swizzled int D */>; + }; ++ ++ MSI: msi@400300000 { ++ compatible = "ibm,ppc4xx-msi-440spe", "ibm,ppc4xx-msi"; ++ reg = <0x4 0x00300000 0x100>; ++ sdr-base = <0x3b0>; ++ /* test-only: right only 4 UIC interrupts are mapped on 440SPe */ ++ interrupts = <12 1 ++ 13 1 ++ 14 1 ++ 15 1>; ++ interrupt-parent = <&UIC0>; ++ }; + }; + + chosen { +diff --git a/arch/powerpc/boot/dts/kilauea.dts b/arch/powerpc/boot/dts/kilauea.dts +index dececc4..56fad7c 100644 +--- a/arch/powerpc/boot/dts/kilauea.dts ++++ b/arch/powerpc/boot/dts/kilauea.dts +@@ -342,5 +342,26 @@ + 0x0 0x0 0x0 0x3 &UIC2 0xd 0x4 /* swizzled int C */ + 0x0 0x0 0x0 0x4 &UIC2 0xe 0x4 /* swizzled int D */>; + }; ++ ++ MSI: msi@0ef620000 { ++ compatible = "ibm,ppc4xx-msi-405ex", "ibm,ppc4xx-msi"; ++ reg = <0xef620000 0x100>; ++ sdr-base = <0x4b0>; ++ interrupts = <15 1 ++ 16 1 ++ 17 1 ++ 18 1 ++ 19 1 ++ 20 1 ++ 21 1 ++ 22 1 ++ 23 1 ++ 24 1 ++ 25 1 ++ 26 1 ++ 27 1 ++ 28 1>; ++ interrupt-parent = <&UIC2>; ++ }; + }; + }; +diff --git a/arch/powerpc/include/asm/dcr-regs.h b/arch/powerpc/include/asm/dcr-regs.h +index 828e3aa..c69dfc2 100644 +--- a/arch/powerpc/include/asm/dcr-regs.h ++++ b/arch/powerpc/include/asm/dcr-regs.h +@@ -157,4 +157,9 @@ + #define L2C_SNP_SSR_32G 0x0000f000 + #define L2C_SNP_ESR 0x00000800 + ++/* ++ * Memory Queue Modules DCR offsets ++ */ ++#define MQ0_BAUH 0x10 ++ + #endif /* __DCR_REGS_H__ */ +diff --git a/arch/powerpc/sysdev/Makefile b/arch/powerpc/sysdev/Makefile +index 5afce11..034a989 100644 +--- a/arch/powerpc/sysdev/Makefile ++++ b/arch/powerpc/sysdev/Makefile +@@ -6,6 +6,7 @@ mpic-msi-obj-$(CONFIG_PCI_MSI) += mpic_msi.o mpic_u3msi.o mpic_pasemi_msi.o + obj-$(CONFIG_MPIC) += mpic.o $(mpic-msi-obj-y) + fsl-msi-obj-$(CONFIG_PCI_MSI) += fsl_msi.o + obj-$(CONFIG_PPC_MSI_BITMAP) += msi_bitmap.o ++ppc4xx-msi-obj-$(CONFIG_PCI_MSI) += ppc4xx_msi.o + + obj-$(CONFIG_PPC_MPC106) += grackle.o + obj-$(CONFIG_PPC_DCR_NATIVE) += dcr-low.o +@@ -35,7 +36,7 @@ obj-$(CONFIG_4xx_SOC) += ppc4xx_soc.o + obj-$(CONFIG_XILINX_VIRTEX) += xilinx_intc.o + obj-$(CONFIG_OF_RTC) += of_rtc.o + ifeq ($(CONFIG_PCI),y) +-obj-$(CONFIG_4xx) += ppc4xx_pci.o ++obj-$(CONFIG_4xx) += ppc4xx_pci.o $(ppc4xx-msi-obj-y) + endif + obj-$(CONFIG_PPC4xx_GPIO) += ppc4xx_gpio.o + +diff --git a/arch/powerpc/sysdev/ppc4xx_msi.c b/arch/powerpc/sysdev/ppc4xx_msi.c +new file mode 100644 +index 0000000..7c95499 +--- /dev/null ++++ b/arch/powerpc/sysdev/ppc4xx_msi.c +@@ -0,0 +1,358 @@ ++/* ++ * IBM/AMCC PPC4xx PCIe MSI handling ++ * ++ * Copyright 2008 Stefan Roese <sr@denx.de>, DENX Software Engineering ++ * ++ * Loosly based on a PPC4xx MSI version posted to linuxppc-dev from ++ * Preetesh Parekh <pparekh@amcc.com> ++ * ++ * This program is free software; you can redistribute it and/or modify it ++ * under the terms of the GNU General Public License as published by the ++ * Free Software Foundation; either version 2 of the License, or (at your ++ * option) any later version. ++ */ ++ ++#undef DEBUG ++ ++#include <linux/irq.h> ++#include <linux/bootmem.h> ++#include <linux/bitmap.h> ++#include <linux/msi.h> ++#include <linux/pci.h> ++#include <linux/of_platform.h> ++#include <asm/ppc-pci.h> ++ ++#include <asm/dcr.h> ++#include <asm/dcr-regs.h> ++#include <asm/reg.h> ++ ++#define U64_TO_U32_LOW(val) ((u32)((val) & 0x00000000ffffffffULL)) ++#define U64_TO_U32_HIGH(val) ((u32)((val) >> 32)) ++ ++#define RES_TO_U32_LOW(val) \ ++ ((sizeof(resource_size_t) > sizeof(u32)) ? U64_TO_U32_LOW(val) : (val)) ++#define RES_TO_U32_HIGH(val) \ ++ ((sizeof(resource_size_t) > sizeof(u32)) ? U64_TO_U32_HIGH(val) : (0)) ++ ++/* ++ * Byte reversal for PEIH message handling is handled differently ++ * on 4xx PPC variants: ++ * ++ * 405EX One bit for both directions (in- and outbound) ++ * 440SPe No byte-reversal configuration bit at all ++ * 460EX/GT 2 bits, one for inbound and one for outbount messages ++ */ ++ ++/* 405EX */ ++#define SDR0_PEIHS2_BREV (0x80000000 >> 30) ++ ++/* 460EX/GT */ ++#define SDR0_PEIHS2_OMBR (0x80000000 >> 29) ++#define SDR0_PEIHS2_IMBR (0x80000000 >> 30) ++ ++#define PEIH_TERMADH 0x00 ++#define PEIH_TERMADL 0x08 ++#define PEIH_MSIED 0x10 ++#define PEIH_MSIMK 0x18 ++#define PEIH_MSIASS 0x20 ++#define PEIH_FLUSH0 0x30 ++#define PEIH_FLUSH1 0x38 ++#define PEIH_CNTRST 0x48 ++ ++#define PPC4XX_MSI_DATA 0x00000000 ++#define PPC4XX_MSI_DATA_MASK 0xFFFFFFE0 ++ ++#define NR_MSI_IRQS 32 ++ ++struct ppc4xx_msi { ++ u32 msi_addr_lo; ++ u32 msi_addr_hi; ++ int virq[NR_MSI_IRQS]; ++ int irqs; ++ ++ unsigned long *irq_bitmap; ++ spinlock_t bitmap_lock; ++ ++ dma_addr_t paddr; ++}; ++ ++static struct ppc4xx_msi *ppc4xx_msi; ++ ++static int ppc4xx_msi_alloc_irqs(struct ppc4xx_msi *msi, int num) ++{ ++ unsigned long flags; ++ int order = get_count_order(num); ++ int offset; ++ ++ spin_lock_irqsave(&msi->bitmap_lock, flags); ++ offset = bitmap_find_free_region(msi->irq_bitmap, NR_MSI_IRQS, order); ++ spin_unlock_irqrestore(&msi->bitmap_lock, flags); ++ ++ pr_debug("%s: allocated 0x%x (2^%d) at offset 0x%x\n", ++ __func__, num, order, offset); ++ ++ return offset; ++} ++ ++static void ppc4xx_msi_free_irqs(struct ppc4xx_msi *msi, int offset, int num) ++{ ++ unsigned long flags; ++ int order = get_count_order(num); ++ ++ pr_debug("%s: freeing 0x%x (2^%d) at offset 0x%x\n", ++ __func__, num, order, offset); ++ ++ spin_lock_irqsave(&msi->bitmap_lock, flags); ++ bitmap_release_region(msi->irq_bitmap, offset, order); ++ spin_unlock_irqrestore(&msi->bitmap_lock, flags); ++} ++ ++static int ppc4xx_msi_init_allocator(struct ppc4xx_msi *msi) ++{ ++ int size = BITS_TO_LONGS(NR_MSI_IRQS) * sizeof(u32); ++ ++ msi->irq_bitmap = kzalloc(size, GFP_KERNEL); ++ if (msi->irq_bitmap == NULL) { ++ pr_debug("%s: ENOMEM allocating allocator bitmap!\n", __func__); ++ return -ENOMEM; ++ } ++ ++ bitmap_allocate_region(msi->irq_bitmap, 0, get_count_order(NR_MSI_IRQS)); ++ ppc4xx_msi_free_irqs(msi, 0, NR_MSI_IRQS); ++ ++ return 0; ++} ++ ++static int ppc4xx_setup_msi_irqs(struct pci_dev *dev, int nvec, int type) ++{ ++ struct msi_desc *entry; ++ struct msi_msg msg; ++ int msi_irq; ++ struct ppc4xx_msi *msi = ppc4xx_msi; ++ int rc; ++ ++ msg.address_hi = ppc4xx_msi->msi_addr_hi; ++ msg.address_lo = ppc4xx_msi->msi_addr_lo; ++ ++ list_for_each_entry(entry, &dev->msi_list, list) { ++ msi_irq = ppc4xx_msi_alloc_irqs(msi, 1); ++ if ((msi_irq < 0) || (msi_irq >= msi->irqs)) { ++ pr_debug("%s: fail allocating msi interrupt\n", __func__); ++ rc = -ENOSPC; ++ goto out_free; ++ } ++ ++ set_irq_msi(ppc4xx_msi->virq[msi_irq], entry); ++ pr_debug("%s: allocated virq %d (hw %d) addr 0x%08x\n", ++ __func__, ppc4xx_msi->virq[msi_irq], msi_irq, msg.address_lo); ++ ++ /* Write message to PCI device */ ++ msg.data = PPC4XX_MSI_DATA | msi_irq; ++ write_msi_msg(ppc4xx_msi->virq[msi_irq], &msg); ++ } ++ ++ return 0; ++ ++out_free: ++ return rc; ++} ++ ++static int ppc4xx_msi_check_device(struct pci_dev *pdev, int nvec, int type) ++{ ++ if (type == PCI_CAP_ID_MSIX) ++ pr_debug("ppc4xx_msi: MSI-X untested, trying anyway\n"); ++ ++ return 0; ++} ++ ++static void ppc4xx_teardown_msi_irqs(struct pci_dev *dev) ++{ ++ struct msi_desc *entry; ++ struct ppc4xx_msi *msi = ppc4xx_msi; ++ ++ list_for_each_entry(entry, &dev->msi_list, list) { ++ if (entry->irq == NO_IRQ) ++ continue; ++ ++ pr_debug("%s: freeing virq %d\n", __func__, entry->irq); ++ set_irq_msi(entry->irq, NULL); ++ ppc4xx_msi_free_irqs(msi, entry->irq, 1); ++ irq_dispose_mapping(entry->irq); ++ } ++ ++ return; ++} ++ ++static int __devinit ppc4xx_of_msi_probe(struct of_device *dev, ++ const struct of_device_id *match) ++{ ++ struct device_node *np = dev->node; ++ struct device_node *mq_np; ++ struct resource res; ++ struct ppc4xx_msi *msi = NULL; ++ void __iomem *peih_regs = NULL; ++ void *vaddr = NULL; ++ const u32 *pval; ++ u32 sdr_base; ++ int count; ++ int i; ++ int rc; ++ u64 msi_addr = 0; ++ u32 val = 0; ++ ++ printk(KERN_INFO "Setting up PPC4xx MSI support\n"); ++ ++ msi = kzalloc(sizeof(struct ppc4xx_msi), GFP_KERNEL); ++ if (!msi) { ++ printk(KERN_ERR "No memory for MSI structure!\n"); ++ rc = -ENOMEM; ++ goto error_out; ++ } ++ ++ /* Fetch PCIe interrupt handler registers address */ ++ if (of_address_to_resource(np, 0, &res)) { ++ printk(KERN_ERR "%s: Can't get PCI-E interrupt handler space!\n", ++ np->full_name); ++ rc = -ENOMEM; ++ goto error_out; ++ } ++ ++ peih_regs = ioremap(res.start, res.end - res.start + 1); ++ if (!peih_regs) { ++ printk(KERN_ERR "%s: ioremap failed!\n", np->full_name); ++ rc = -ENOMEM; ++ goto error_out; ++ } ++ ++ pval = of_get_property(np, "sdr-base", NULL); ++ if (pval == NULL) { ++ printk(KERN_ERR "%s: Missing sdr-base!\n", np->full_name); ++ rc = -ENOMEM; ++ goto error_out; ++ } ++ sdr_base = *pval; ++ ++ /* Set byte reversal bit(s) if necessary */ ++ if (of_device_is_compatible(np, "ibm,ppc4xx-msi-405ex")) ++ val = SDR0_PEIHS2_BREV; ++ if ((of_device_is_compatible(np, "ibm,ppc4xx-msi-460ex")) || ++ (of_device_is_compatible(np, "ibm,ppc4xx-msi-460gt"))) ++ val = SDR0_PEIHS2_IMBR | SDR0_PEIHS2_OMBR; ++ ++ /* Set base address for PEIH */ ++ mtdcri(SDR0, sdr_base + 0, RES_TO_U32_HIGH(res.start)); ++ mtdcri(SDR0, sdr_base + 1, RES_TO_U32_LOW(res.start) | val); ++ pr_debug("%s: MSI PEIH physical address at %llx\n", __func__, (u64)res.start); ++ ++ /* ++ * MSI termintaion address needs to be located in an local ++ * area mapped to the PCIe bus via a PIM (PCI Inbound Message Window). ++ * Only this way the accesses get forwarded to the PLB where they are ++ * decoded. ++ */ ++ vaddr = dma_alloc_coherent(&dev->dev, PAGE_SIZE, &msi->paddr, GFP_KERNEL); ++ ++ /* ++ * On 460EX/GT the PEIH (PCIe Interrupt Handler) logic is implemented ++ * on the HB (High Bandwidth) segment of the PLB. This implies that the ++ * target address must reside in the HB segment range. ++ * The DCR MQ0_BAUH (PLB Base Address, upper 32 bits (HB)) configures ++ * the offset for this HB access window. The optional "mq-device" ++ * points to the Memory-Queue Module device node, which configures ++ * the base address of the HB PLB segment. ++ */ ++ pval = of_get_property(np, "mq-device", NULL); ++ if (pval) { ++ mq_np = of_find_node_by_phandle(*pval); ++ if (mq_np) { ++ pval = of_get_property(mq_np, "dcr-reg", NULL); ++ if (pval) ++ msi_addr = (u64)mfdcr(*pval + MQ0_BAUH) << 32; ++ } ++ } ++ ++ /* Now add physical address of the cache coherent area */ ++ msi_addr += msi->paddr; ++ msi->msi_addr_hi = U64_TO_U32_HIGH(msi_addr); ++ msi->msi_addr_lo = U64_TO_U32_LOW(msi_addr); ++ pr_debug("%s: MSI termination address: vaddr=%p paddr=%llx\n", ++ __func__, vaddr, msi_addr); ++ ++ /* Progam the Interrupt handler Termination addr registers */ ++ out_be32(peih_regs + PEIH_TERMADH, msi->msi_addr_hi); ++ out_be32(peih_regs + PEIH_TERMADL, msi->msi_addr_lo); ++ ++ /* Program MSI Expected data and Mask bits */ ++ out_be32(peih_regs + PEIH_MSIED, PPC4XX_MSI_DATA); ++ out_be32(peih_regs + PEIH_MSIMK, PPC4XX_MSI_DATA_MASK); ++ ++ rc = ppc4xx_msi_init_allocator(msi); ++ if (rc) { ++ printk(KERN_ERR "Error allocating MSI bitmap!\n"); ++ goto error_out; ++ } ++ ++ pval = of_get_property(np, "interrupts", &count); ++ if (!pval) { ++ printk(KERN_ERR "No interrupts property found on %s!\n", ++ np->full_name); ++ rc = -ENODEV; ++ goto error_out; ++ } ++ if (count % 8 != 0) { ++ printk(KERN_ERR "Malformed interrupts property on %s!\n", ++ np->full_name); ++ rc = -EINVAL; ++ goto error_out; ++ } ++ ++ count /= sizeof(u32); ++ for (i = 0; i < count / 2; i++) { ++ msi->virq[i] = irq_of_parse_and_map(np, i); ++ pr_debug("%s: virq[%d] = %d\n", __func__, i, msi->virq[i]); ++ } ++ ++ iounmap(peih_regs); ++ ++ msi->irqs = count; ++ ppc4xx_msi = msi; ++ ++ WARN_ON(ppc_md.setup_msi_irqs); ++ ppc_md.setup_msi_irqs = ppc4xx_setup_msi_irqs; ++ ppc_md.teardown_msi_irqs = ppc4xx_teardown_msi_irqs; ++ ppc_md.msi_check_device = ppc4xx_msi_check_device; ++ ++ return 0; ++ ++error_out: ++ if (vaddr) ++ dma_free_coherent(&dev->dev, PAGE_SIZE, vaddr, msi->paddr); ++ ++ if (peih_regs) ++ iounmap(peih_regs); ++ ++ if (msi) ++ kfree(msi); ++ ++ return rc; ++} ++ ++static const struct of_device_id ppc4xx_of_msi_ids[] = { ++ { ++ .compatible = "ibm,ppc4xx-msi", ++ }, ++ {} ++}; ++ ++static struct of_platform_driver ppc4xx_of_msi_driver = { ++ .name = "ibm-msi", ++ .match_table = ppc4xx_of_msi_ids, ++ .probe = ppc4xx_of_msi_probe, ++}; ++ ++static __init int ppc4xx_of_msi_init(void) ++{ ++ return of_register_platform_driver(&ppc4xx_of_msi_driver); ++} ++ ++subsys_initcall(ppc4xx_of_msi_init); +diff --git a/arch/powerpc/sysdev/ppc4xx_pci.c b/arch/powerpc/sysdev/ppc4xx_pci.c +index d3e4d61..03e5c63 100644 +--- a/arch/powerpc/sysdev/ppc4xx_pci.c ++++ b/arch/powerpc/sysdev/ppc4xx_pci.c +@@ -1393,6 +1393,10 @@ static void __init ppc4xx_configure_pciex_PIMs(struct ppc4xx_pciex_port *port, + { + resource_size_t size = res->end - res->start + 1; + u64 sa; ++ struct device_node *np = port->node; ++ struct device_node *mq_np; ++ const u32 *pval; ++ u32 bauh = 0; + + if (port->endpoint) { + resource_size_t ep_addr = 0; +@@ -1442,10 +1446,50 @@ static void __init ppc4xx_configure_pciex_PIMs(struct ppc4xx_pciex_port *port, + + out_le32(mbase + PCI_BASE_ADDRESS_0, RES_TO_U32_LOW(res->start)); + out_le32(mbase + PCI_BASE_ADDRESS_1, RES_TO_U32_HIGH(res->start)); ++ ++ /* ++ * For MSI support some 4xx platforms (e.g. 460EX/GT) need ++ * to configure a 2nd PIM to enable access to the HB PLB ++ * segment where the PEIH MSI termination address is located ++ * and snooped from the PEIH. ++ * The optional "mq-device" points to the Memory-Queue Module ++ * device node, which configures the base address of the HB PLB ++ * segment. ++ */ ++ pval = of_get_property(np, "mq-device", NULL); ++ if (pval) { ++ mq_np = of_find_node_by_phandle(*pval); ++ if (mq_np) { ++ pval = of_get_property(mq_np, "dcr-reg", NULL); ++ if (pval) ++ bauh = mfdcr(*pval + MQ0_BAUH); ++ } ++ } ++ ++ if (bauh) { ++ out_le32(mbase + PECFG_BAR2HMPA, RES_TO_U32_HIGH(sa)); ++ out_le32(mbase + PECFG_BAR2LMPA, RES_TO_U32_LOW(sa)); ++ ++ /* The setup of the split looks weird to me ... let's see ++ * if it works ++ */ ++ out_le32(mbase + PECFG_PIM3LAL, 0x00000000); ++ out_le32(mbase + PECFG_PIM3LAH, 0x00000000); ++ out_le32(mbase + PECFG_PIM4LAL, 0x00000000); ++ out_le32(mbase + PECFG_PIM4LAH, 0x00000000); ++ out_le32(mbase + PECFG_PIM34SAH, 0xffff0000); ++ out_le32(mbase + PECFG_PIM34SAL, 0x00000000); ++ ++ out_le32(mbase + PECFG_RTBAR2L, RES_TO_U32_LOW(res->start)); ++ out_le32(mbase + PECFG_RTBAR2H, RES_TO_U32_HIGH(res->start) + bauh); ++ } + } + + /* Enable inbound mapping */ +- out_le32(mbase + PECFG_PIMEN, 0x1); ++ if (bauh == 0) ++ out_le32(mbase + PECFG_PIMEN, 0x1); ++ else ++ out_le32(mbase + PECFG_PIMEN, 0x5); + + /* Enable I/O, Mem, and Busmaster cycles */ + out_le16(mbase + PCI_COMMAND, +diff --git a/arch/powerpc/sysdev/ppc4xx_pci.h b/arch/powerpc/sysdev/ppc4xx_pci.h +index d04e40b..b1d7d31 100644 +--- a/arch/powerpc/sysdev/ppc4xx_pci.h ++++ b/arch/powerpc/sysdev/ppc4xx_pci.h +@@ -398,6 +398,14 @@ + #define PECFG_PIM1LAH 0x34c + #define PECFG_PIM01SAL 0x350 + #define PECFG_PIM01SAH 0x354 ++#define PECFG_PIM2LAL 0x358 ++#define PECFG_PIM2LAH 0x35c ++#define PECFG_PIM3LAL 0x360 ++#define PECFG_PIM3LAH 0x364 ++#define PECFG_PIM4LAL 0x368 ++#define PECFG_PIM4LAH 0x36c ++#define PECFG_PIM34SAL 0x370 ++#define PECFG_PIM34SAH 0x374 + + #define PECFG_POM0LAL 0x380 + #define PECFG_POM0LAH 0x384 +@@ -406,6 +414,9 @@ + #define PECFG_POM2LAL 0x390 + #define PECFG_POM2LAH 0x394 + ++#define PECFG_RTBAR2L 0x3b8 ++#define PECFG_RTBAR2H 0x3bc ++ + /* SDR Bit Mappings */ + #define PESDRx_RCSSET_HLDPLB 0x10000000 + #define PESDRx_RCSSET_RSTGU 0x01000000 +-- +1.6.2.1 + diff --git a/recipes/linux/linux-2.6.29/canyonlands/defconfig b/recipes/linux/linux-2.6.29/canyonlands/defconfig new file mode 100644 index 0000000000..ff2a335c65 --- /dev/null +++ b/recipes/linux/linux-2.6.29/canyonlands/defconfig @@ -0,0 +1,791 @@ +# +# Automatically generated make config: don't edit +# Linux kernel version: 2.6.28 +# Mon Mar 30 10:24:29 2009 +# +# CONFIG_PPC64 is not set + +# +# Processor support +# +# CONFIG_6xx is not set +# CONFIG_PPC_85xx is not set +# CONFIG_PPC_8xx is not set +# CONFIG_40x is not set +CONFIG_44x=y +# CONFIG_E200 is not set +CONFIG_PPC_FPU=y +CONFIG_4xx=y +CONFIG_BOOKE=y +CONFIG_PTE_64BIT=y +CONFIG_PHYS_64BIT=y +# CONFIG_PPC_MM_SLICES is not set +CONFIG_NOT_COHERENT_CACHE=y +CONFIG_PPC32=y +CONFIG_WORD_SIZE=32 +CONFIG_ARCH_PHYS_ADDR_T_64BIT=y +CONFIG_MMU=y +CONFIG_GENERIC_CMOS_UPDATE=y +CONFIG_GENERIC_TIME=y +CONFIG_GENERIC_TIME_VSYSCALL=y +CONFIG_GENERIC_CLOCKEVENTS=y +CONFIG_GENERIC_HARDIRQS=y +# CONFIG_HAVE_SETUP_PER_CPU_AREA is not set +CONFIG_IRQ_PER_CPU=y +CONFIG_STACKTRACE_SUPPORT=y +CONFIG_HAVE_LATENCYTOP_SUPPORT=y +CONFIG_LOCKDEP_SUPPORT=y +CONFIG_RWSEM_XCHGADD_ALGORITHM=y +CONFIG_ARCH_HAS_ILOG2_U32=y +CONFIG_GENERIC_HWEIGHT=y +CONFIG_GENERIC_CALIBRATE_DELAY=y +CONFIG_GENERIC_FIND_NEXT_BIT=y +# CONFIG_ARCH_NO_VIRT_TO_BUS is not set +CONFIG_PPC=y +CONFIG_EARLY_PRINTK=y +CONFIG_GENERIC_NVRAM=y +CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y +CONFIG_ARCH_MAY_HAVE_PC_FDC=y +CONFIG_PPC_OF=y +CONFIG_OF=y +CONFIG_PPC_UDBG_16550=y +# CONFIG_GENERIC_TBSYNC is not set +CONFIG_AUDIT_ARCH=y +CONFIG_GENERIC_BUG=y +# CONFIG_DEFAULT_UIMAGE is not set +CONFIG_PPC_DCR_NATIVE=y +# CONFIG_PPC_DCR_MMIO is not set +CONFIG_PPC_DCR=y +CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" + +# +# General setup +# +CONFIG_EXPERIMENTAL=y +CONFIG_BROKEN_ON_SMP=y +CONFIG_INIT_ENV_ARG_LIMIT=32 +CONFIG_LOCALVERSION="" +CONFIG_LOCALVERSION_AUTO=y +CONFIG_SWAP=y +CONFIG_SYSVIPC=y +CONFIG_SYSVIPC_SYSCTL=y +CONFIG_POSIX_MQUEUE=y +# CONFIG_BSD_PROCESS_ACCT is not set +# CONFIG_TASKSTATS is not set +# CONFIG_AUDIT is not set +# CONFIG_IKCONFIG is not set +CONFIG_LOG_BUF_SHIFT=19 +# CONFIG_CGROUPS is not set +# CONFIG_GROUP_SCHED is not set +CONFIG_SYSFS_DEPRECATED=y +CONFIG_SYSFS_DEPRECATED_V2=y +# CONFIG_RELAY is not set +# CONFIG_NAMESPACES is not set +CONFIG_BLK_DEV_INITRD=y +CONFIG_INITRAMFS_SOURCE="" +# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set +CONFIG_SYSCTL=y +CONFIG_EMBEDDED=y +CONFIG_SYSCTL_SYSCALL=y +CONFIG_KALLSYMS=y +# CONFIG_KALLSYMS_ALL is not set +# CONFIG_KALLSYMS_EXTRA_PASS is not set +CONFIG_HOTPLUG=y +CONFIG_PRINTK=y +CONFIG_BUG=y +CONFIG_ELF_CORE=y +CONFIG_COMPAT_BRK=y +CONFIG_BASE_FULL=y +CONFIG_FUTEX=y +CONFIG_ANON_INODES=y +CONFIG_EPOLL=y +CONFIG_SIGNALFD=y +CONFIG_TIMERFD=y +CONFIG_EVENTFD=y +CONFIG_SHMEM=y +CONFIG_AIO=y +CONFIG_VM_EVENT_COUNTERS=y +CONFIG_PCI_QUIRKS=y +CONFIG_SLUB_DEBUG=y +# CONFIG_SLAB is not set +CONFIG_SLUB=y +# CONFIG_SLOB is not set +# CONFIG_PROFILING is not set +# CONFIG_MARKERS is not set +CONFIG_HAVE_OPROFILE=y +# CONFIG_KPROBES is not set +CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y +CONFIG_HAVE_IOREMAP_PROT=y +CONFIG_HAVE_KPROBES=y +CONFIG_HAVE_KRETPROBES=y +CONFIG_HAVE_ARCH_TRACEHOOK=y +# CONFIG_HAVE_GENERIC_DMA_COHERENT is not set +CONFIG_SLABINFO=y +CONFIG_RT_MUTEXES=y +# CONFIG_TINY_SHMEM is not set +CONFIG_BASE_SMALL=0 +CONFIG_MODULES=y +# CONFIG_MODULE_FORCE_LOAD is not set +CONFIG_MODULE_UNLOAD=y +# CONFIG_MODULE_FORCE_UNLOAD is not set +# CONFIG_MODVERSIONS is not set +# CONFIG_MODULE_SRCVERSION_ALL is not set +CONFIG_KMOD=y +CONFIG_BLOCK=y +CONFIG_LBD=y +# CONFIG_BLK_DEV_IO_TRACE is not set +# CONFIG_LSF is not set +# CONFIG_BLK_DEV_BSG is not set +# CONFIG_BLK_DEV_INTEGRITY is not set + +# +# IO Schedulers +# +CONFIG_IOSCHED_NOOP=y +CONFIG_IOSCHED_AS=y +CONFIG_IOSCHED_DEADLINE=y +CONFIG_IOSCHED_CFQ=y +CONFIG_DEFAULT_AS=y +# CONFIG_DEFAULT_DEADLINE is not set +# CONFIG_DEFAULT_CFQ is not set +# CONFIG_DEFAULT_NOOP is not set +CONFIG_DEFAULT_IOSCHED="anticipatory" +CONFIG_CLASSIC_RCU=y +# CONFIG_FREEZER is not set +CONFIG_PPC4xx_PCI_EXPRESS=y + +# +# Platform support +# +# CONFIG_PPC_CELL is not set +# CONFIG_PPC_CELL_NATIVE is not set +# CONFIG_PQ2ADS is not set +# CONFIG_BAMBOO is not set +# CONFIG_EBONY is not set +# CONFIG_SAM440EP is not set +# CONFIG_SEQUOIA is not set +# CONFIG_TAISHAN is not set +# CONFIG_KATMAI is not set +# CONFIG_RAINIER is not set +# CONFIG_WARP is not set +# CONFIG_ARCHES is not set +CONFIG_CANYONLANDS=y +# CONFIG_GLACIER is not set +# CONFIG_YOSEMITE is not set +# CONFIG_XILINX_VIRTEX440_GENERIC_BOARD is not set +CONFIG_PPC44x_SIMPLE=y +# CONFIG_PPC4xx_GPIO is not set +CONFIG_460EX=y +# CONFIG_IPIC is not set +# CONFIG_MPIC is not set +# CONFIG_MPIC_WEIRD is not set +# CONFIG_PPC_I8259 is not set +# CONFIG_PPC_RTAS is not set +# CONFIG_MMIO_NVRAM is not set +# CONFIG_PPC_MPC106 is not set +# CONFIG_PPC_970_NAP is not set +# CONFIG_PPC_INDIRECT_IO is not set +# CONFIG_GENERIC_IOMAP is not set +# CONFIG_CPU_FREQ is not set +# CONFIG_FSL_ULI1575 is not set + +# +# Kernel options +# +# CONFIG_HIGHMEM is not set +CONFIG_TICK_ONESHOT=y +CONFIG_NO_HZ=y +CONFIG_HIGH_RES_TIMERS=y +CONFIG_GENERIC_CLOCKEVENTS_BUILD=y +# CONFIG_HZ_100 is not set +CONFIG_HZ_250=y +# CONFIG_HZ_300 is not set +# CONFIG_HZ_1000 is not set +CONFIG_HZ=250 +CONFIG_SCHED_HRTICK=y +CONFIG_PREEMPT_NONE=y +# CONFIG_PREEMPT_VOLUNTARY is not set +# CONFIG_PREEMPT is not set +CONFIG_BINFMT_ELF=y +# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set +# CONFIG_HAVE_AOUT is not set +# CONFIG_BINFMT_MISC is not set +# CONFIG_MATH_EMULATION is not set +# CONFIG_IOMMU_HELPER is not set +CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y +CONFIG_ARCH_HAS_WALK_MEMORY=y +CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y +CONFIG_ARCH_FLATMEM_ENABLE=y +CONFIG_ARCH_POPULATES_NODE_MAP=y +CONFIG_SELECT_MEMORY_MODEL=y +CONFIG_FLATMEM_MANUAL=y +# CONFIG_DISCONTIGMEM_MANUAL is not set +# CONFIG_SPARSEMEM_MANUAL is not set +CONFIG_FLATMEM=y +CONFIG_FLAT_NODE_MEM_MAP=y +CONFIG_PAGEFLAGS_EXTENDED=y +CONFIG_SPLIT_PTLOCK_CPUS=4 +CONFIG_MIGRATION=y +# CONFIG_RESOURCES_64BIT is not set +CONFIG_PHYS_ADDR_T_64BIT=y +CONFIG_ZONE_DMA_FLAG=1 +CONFIG_BOUNCE=y +CONFIG_VIRT_TO_BUS=y +CONFIG_UNEVICTABLE_LRU=y +CONFIG_FORCE_MAX_ZONEORDER=11 +CONFIG_PROC_DEVICETREE=y +CONFIG_CMDLINE_BOOL=y +CONFIG_CMDLINE=" debug " +CONFIG_EXTRA_TARGETS="" +CONFIG_SECCOMP=y +CONFIG_ISA_DMA_API=y + +# +# Bus options +# +CONFIG_ZONE_DMA=y +CONFIG_PPC_INDIRECT_PCI=y +CONFIG_4xx_SOC=y +CONFIG_PPC_PCI_CHOICE=y +CONFIG_PCI=y +CONFIG_PCI_DOMAINS=y +CONFIG_PCI_SYSCALL=y +CONFIG_PCIEPORTBUS=y +CONFIG_PCIEAER=y +# CONFIG_PCIEASPM is not set +CONFIG_ARCH_SUPPORTS_MSI=y +CONFIG_PCI_MSI=y +CONFIG_PCI_LEGACY=y +CONFIG_PCI_DEBUG=y +# CONFIG_PCCARD is not set +# CONFIG_HOTPLUG_PCI is not set +# CONFIG_HAS_RAPIDIO is not set + +# +# Advanced setup +# +# CONFIG_ADVANCED_OPTIONS is not set + +# +# Default settings for advanced configuration options are used +# +CONFIG_LOWMEM_SIZE=0x30000000 +CONFIG_PAGE_OFFSET=0xc0000000 +CONFIG_KERNEL_START=0xc0000000 +CONFIG_PHYSICAL_START=0x00000000 +CONFIG_TASK_SIZE=0xc0000000 +CONFIG_CONSISTENT_START=0xff100000 +CONFIG_CONSISTENT_SIZE=0x00200000 +CONFIG_NET=y + +# +# Networking options +# +CONFIG_PACKET=y +# CONFIG_PACKET_MMAP is not set +CONFIG_UNIX=y +# CONFIG_NET_KEY is not set +CONFIG_INET=y +# CONFIG_IP_MULTICAST is not set +# CONFIG_IP_ADVANCED_ROUTER is not set +CONFIG_IP_FIB_HASH=y +CONFIG_IP_PNP=y +CONFIG_IP_PNP_DHCP=y +CONFIG_IP_PNP_BOOTP=y +# CONFIG_IP_PNP_RARP is not set +# CONFIG_NET_IPIP is not set +# CONFIG_NET_IPGRE is not set +# CONFIG_ARPD is not set +# CONFIG_SYN_COOKIES is not set +# CONFIG_INET_AH is not set +# CONFIG_INET_ESP is not set +# CONFIG_INET_IPCOMP is not set +# CONFIG_INET_XFRM_TUNNEL is not set +# CONFIG_INET_TUNNEL is not set +# CONFIG_INET_XFRM_MODE_TRANSPORT is not set +# CONFIG_INET_XFRM_MODE_TUNNEL is not set +# CONFIG_INET_XFRM_MODE_BEET is not set +# CONFIG_INET_LRO is not set +CONFIG_INET_DIAG=y +CONFIG_INET_TCP_DIAG=y +# CONFIG_TCP_CONG_ADVANCED is not set +CONFIG_TCP_CONG_CUBIC=y +CONFIG_DEFAULT_TCP_CONG="cubic" +# CONFIG_TCP_MD5SIG is not set +# CONFIG_IPV6 is not set +# CONFIG_NETWORK_SECMARK is not set +# CONFIG_NETFILTER is not set +# CONFIG_IP_DCCP is not set +# CONFIG_IP_SCTP is not set +# CONFIG_TIPC is not set +# CONFIG_ATM is not set +# CONFIG_BRIDGE is not set +# CONFIG_NET_DSA is not set +# CONFIG_VLAN_8021Q is not set +# CONFIG_DECNET is not set +# CONFIG_LLC2 is not set +# CONFIG_IPX is not set +# CONFIG_ATALK is not set +# CONFIG_X25 is not set +# CONFIG_LAPB is not set +# CONFIG_ECONET is not set +# CONFIG_WAN_ROUTER is not set +# CONFIG_NET_SCHED is not set + +# +# Network testing +# +# CONFIG_NET_PKTGEN is not set +# CONFIG_HAMRADIO is not set +# CONFIG_CAN is not set +# CONFIG_IRDA is not set +# CONFIG_BT is not set +# CONFIG_AF_RXRPC is not set +# CONFIG_PHONET is not set +CONFIG_WIRELESS=y +# CONFIG_CFG80211 is not set +CONFIG_WIRELESS_OLD_REGULATORY=y +# CONFIG_WIRELESS_EXT is not set +# CONFIG_MAC80211 is not set +# CONFIG_IEEE80211 is not set +# CONFIG_RFKILL is not set +# CONFIG_NET_9P is not set + +# +# Device Drivers +# + +# +# Generic Driver Options +# +CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" +CONFIG_STANDALONE=y +CONFIG_PREVENT_FIRMWARE_BUILD=y +CONFIG_FW_LOADER=y +CONFIG_FIRMWARE_IN_KERNEL=y +CONFIG_EXTRA_FIRMWARE="" +# CONFIG_DEBUG_DRIVER is not set +# CONFIG_DEBUG_DEVRES is not set +# CONFIG_SYS_HYPERVISOR is not set +CONFIG_CONNECTOR=y +CONFIG_PROC_EVENTS=y +# CONFIG_MTD is not set +CONFIG_OF_DEVICE=y +# CONFIG_PARPORT is not set +CONFIG_BLK_DEV=y +# CONFIG_BLK_DEV_FD is not set +# CONFIG_BLK_CPQ_DA is not set +# CONFIG_BLK_CPQ_CISS_DA is not set +# CONFIG_BLK_DEV_DAC960 is not set +# CONFIG_BLK_DEV_UMEM is not set +# CONFIG_BLK_DEV_COW_COMMON is not set +# CONFIG_BLK_DEV_LOOP is not set +# CONFIG_BLK_DEV_NBD is not set +# CONFIG_BLK_DEV_SX8 is not set +CONFIG_BLK_DEV_RAM=y +CONFIG_BLK_DEV_RAM_COUNT=16 +CONFIG_BLK_DEV_RAM_SIZE=35000 +# CONFIG_BLK_DEV_XIP is not set +# CONFIG_CDROM_PKTCDVD is not set +# CONFIG_ATA_OVER_ETH is not set +# CONFIG_XILINX_SYSACE is not set +# CONFIG_BLK_DEV_HD is not set +# CONFIG_MISC_DEVICES is not set +CONFIG_HAVE_IDE=y +# CONFIG_IDE is not set + +# +# SCSI device support +# +# CONFIG_RAID_ATTRS is not set +# CONFIG_SCSI is not set +# CONFIG_SCSI_DMA is not set +# CONFIG_SCSI_NETLINK is not set +# CONFIG_ATA is not set +# CONFIG_MD is not set +# CONFIG_FUSION is not set + +# +# IEEE 1394 (FireWire) support +# + +# +# Enable only one of the two stacks, unless you know what you are doing +# +# CONFIG_FIREWIRE is not set +# CONFIG_IEEE1394 is not set +# CONFIG_I2O is not set +# CONFIG_MACINTOSH_DRIVERS is not set +CONFIG_NETDEVICES=y +# CONFIG_DUMMY is not set +# CONFIG_BONDING is not set +# CONFIG_MACVLAN is not set +# CONFIG_EQUALIZER is not set +# CONFIG_TUN is not set +# CONFIG_VETH is not set +# CONFIG_ARCNET is not set +# CONFIG_PHYLIB is not set +CONFIG_NET_ETHERNET=y +# CONFIG_MII is not set +# CONFIG_HAPPYMEAL is not set +# CONFIG_SUNGEM is not set +# CONFIG_CASSINI is not set +# CONFIG_NET_VENDOR_3COM is not set +# CONFIG_NET_TULIP is not set +# CONFIG_HP100 is not set +CONFIG_IBM_NEW_EMAC=y +CONFIG_IBM_NEW_EMAC_RXB=256 +CONFIG_IBM_NEW_EMAC_TXB=256 +CONFIG_IBM_NEW_EMAC_POLL_WEIGHT=32 +CONFIG_IBM_NEW_EMAC_RX_COPY_THRESHOLD=256 +CONFIG_IBM_NEW_EMAC_RX_SKB_HEADROOM=0 +# CONFIG_IBM_NEW_EMAC_DEBUG is not set +CONFIG_IBM_NEW_EMAC_ZMII=y +CONFIG_IBM_NEW_EMAC_RGMII=y +CONFIG_IBM_NEW_EMAC_TAH=y +CONFIG_IBM_NEW_EMAC_EMAC4=y +# CONFIG_IBM_NEW_EMAC_NO_FLOW_CTRL is not set +# CONFIG_IBM_NEW_EMAC_MAL_CLR_ICINTSTAT is not set +# CONFIG_IBM_NEW_EMAC_MAL_COMMON_ERR is not set +# CONFIG_NET_PCI is not set +# CONFIG_B44 is not set +# CONFIG_ATL2 is not set +# CONFIG_NETDEV_1000 is not set +# CONFIG_NETDEV_10000 is not set +# CONFIG_TR is not set + +# +# Wireless LAN +# +# CONFIG_WLAN_PRE80211 is not set +# CONFIG_WLAN_80211 is not set +# CONFIG_IWLWIFI_LEDS is not set +# CONFIG_WAN is not set +# CONFIG_FDDI is not set +# CONFIG_HIPPI is not set +# CONFIG_PPP is not set +# CONFIG_SLIP is not set +# CONFIG_NETCONSOLE is not set +# CONFIG_NETPOLL is not set +# CONFIG_NET_POLL_CONTROLLER is not set +# CONFIG_ISDN is not set +# CONFIG_PHONE is not set + +# +# Input device support +# +# CONFIG_INPUT is not set + +# +# Hardware I/O ports +# +# CONFIG_SERIO is not set +# CONFIG_GAMEPORT is not set + +# +# Character devices +# +# CONFIG_VT is not set +CONFIG_DEVKMEM=y +# CONFIG_SERIAL_NONSTANDARD is not set +# CONFIG_NOZOMI is not set + +# +# Serial drivers +# +CONFIG_SERIAL_8250=y +CONFIG_SERIAL_8250_CONSOLE=y +# CONFIG_SERIAL_8250_PCI is not set +CONFIG_SERIAL_8250_NR_UARTS=4 +CONFIG_SERIAL_8250_RUNTIME_UARTS=4 +CONFIG_SERIAL_8250_EXTENDED=y +# CONFIG_SERIAL_8250_MANY_PORTS is not set +CONFIG_SERIAL_8250_SHARE_IRQ=y +# CONFIG_SERIAL_8250_DETECT_IRQ is not set +# CONFIG_SERIAL_8250_RSA is not set + +# +# Non-8250 serial port support +# +# CONFIG_SERIAL_UARTLITE is not set +CONFIG_SERIAL_CORE=y +CONFIG_SERIAL_CORE_CONSOLE=y +# CONFIG_SERIAL_JSM is not set +CONFIG_SERIAL_OF_PLATFORM=y +CONFIG_UNIX98_PTYS=y +CONFIG_LEGACY_PTYS=y +CONFIG_LEGACY_PTY_COUNT=256 +CONFIG_ALTPCIESGDMA=m +# CONFIG_ALTPCIECHDMA is not set +# CONFIG_IPMI_HANDLER is not set +# CONFIG_HW_RANDOM is not set +# CONFIG_NVRAM is not set +# CONFIG_GEN_RTC is not set +# CONFIG_R3964 is not set +# CONFIG_APPLICOM is not set +# CONFIG_RAW_DRIVER is not set +# CONFIG_TCG_TPM is not set +CONFIG_DEVPORT=y +# CONFIG_I2C is not set +# CONFIG_SPI is not set +CONFIG_ARCH_WANT_OPTIONAL_GPIOLIB=y +# CONFIG_GPIOLIB is not set +# CONFIG_W1 is not set +# CONFIG_POWER_SUPPLY is not set +# CONFIG_HWMON is not set +# CONFIG_THERMAL is not set +# CONFIG_THERMAL_HWMON is not set +# CONFIG_WATCHDOG is not set +CONFIG_SSB_POSSIBLE=y + +# +# Sonics Silicon Backplane +# +# CONFIG_SSB is not set + +# +# Multifunction device drivers +# +# CONFIG_MFD_CORE is not set +# CONFIG_MFD_SM501 is not set +# CONFIG_HTC_PASIC3 is not set +# CONFIG_MFD_TMIO is not set +# CONFIG_REGULATOR is not set + +# +# Multimedia devices +# + +# +# Multimedia core support +# +# CONFIG_VIDEO_DEV is not set +# CONFIG_DVB_CORE is not set +# CONFIG_VIDEO_MEDIA is not set + +# +# Multimedia drivers +# +CONFIG_DAB=y + +# +# Graphics support +# +# CONFIG_AGP is not set +# CONFIG_DRM is not set +# CONFIG_VGASTATE is not set +CONFIG_VIDEO_OUTPUT_CONTROL=m +# CONFIG_FB is not set +# CONFIG_BACKLIGHT_LCD_SUPPORT is not set + +# +# Display device support +# +# CONFIG_DISPLAY_SUPPORT is not set +# CONFIG_SOUND is not set +# CONFIG_USB_SUPPORT is not set +# CONFIG_UWB is not set +# CONFIG_MMC is not set +# CONFIG_MEMSTICK is not set +# CONFIG_NEW_LEDS is not set +# CONFIG_ACCESSIBILITY is not set +# CONFIG_INFINIBAND is not set +# CONFIG_EDAC is not set +# CONFIG_RTC_CLASS is not set +# CONFIG_DMADEVICES is not set +# CONFIG_UIO is not set +# CONFIG_STAGING is not set + +# +# File systems +# +CONFIG_EXT2_FS=y +# CONFIG_EXT2_FS_XATTR is not set +# CONFIG_EXT2_FS_XIP is not set +# CONFIG_EXT3_FS is not set +# CONFIG_EXT4_FS is not set +# CONFIG_REISERFS_FS is not set +# CONFIG_JFS_FS is not set +# CONFIG_FS_POSIX_ACL is not set +CONFIG_FILE_LOCKING=y +# CONFIG_XFS_FS is not set +# CONFIG_OCFS2_FS is not set +CONFIG_DNOTIFY=y +CONFIG_INOTIFY=y +CONFIG_INOTIFY_USER=y +# CONFIG_QUOTA is not set +# CONFIG_AUTOFS_FS is not set +# CONFIG_AUTOFS4_FS is not set +# CONFIG_FUSE_FS is not set + +# +# CD-ROM/DVD Filesystems +# +# CONFIG_ISO9660_FS is not set +# CONFIG_UDF_FS is not set + +# +# DOS/FAT/NT Filesystems +# +# CONFIG_MSDOS_FS is not set +# CONFIG_VFAT_FS is not set +# CONFIG_NTFS_FS is not set + +# +# Pseudo filesystems +# +CONFIG_PROC_FS=y +CONFIG_PROC_KCORE=y +CONFIG_PROC_SYSCTL=y +CONFIG_PROC_PAGE_MONITOR=y +CONFIG_SYSFS=y +CONFIG_TMPFS=y +# CONFIG_TMPFS_POSIX_ACL is not set +# CONFIG_HUGETLB_PAGE is not set +# CONFIG_CONFIGFS_FS is not set + +# +# Miscellaneous filesystems +# +# CONFIG_ADFS_FS is not set +# CONFIG_AFFS_FS is not set +# CONFIG_HFS_FS is not set +# CONFIG_HFSPLUS_FS is not set +# CONFIG_BEFS_FS is not set +# CONFIG_BFS_FS is not set +# CONFIG_EFS_FS is not set +CONFIG_CRAMFS=y +# CONFIG_VXFS_FS is not set +# CONFIG_MINIX_FS is not set +# CONFIG_OMFS_FS is not set +# CONFIG_HPFS_FS is not set +# CONFIG_QNX4FS_FS is not set +# CONFIG_ROMFS_FS is not set +# CONFIG_SYSV_FS is not set +# CONFIG_UFS_FS is not set +CONFIG_NETWORK_FILESYSTEMS=y +CONFIG_NFS_FS=y +CONFIG_NFS_V3=y +# CONFIG_NFS_V3_ACL is not set +# CONFIG_NFS_V4 is not set +CONFIG_ROOT_NFS=y +# CONFIG_NFSD is not set +CONFIG_LOCKD=y +CONFIG_LOCKD_V4=y +CONFIG_NFS_COMMON=y +CONFIG_SUNRPC=y +# CONFIG_SUNRPC_REGISTER_V4 is not set +# CONFIG_RPCSEC_GSS_KRB5 is not set +# CONFIG_RPCSEC_GSS_SPKM3 is not set +# CONFIG_SMB_FS is not set +# CONFIG_CIFS is not set +# CONFIG_NCP_FS is not set +# CONFIG_CODA_FS is not set +# CONFIG_AFS_FS is not set + +# +# Partition Types +# +# CONFIG_PARTITION_ADVANCED is not set +CONFIG_MSDOS_PARTITION=y +# CONFIG_NLS is not set +# CONFIG_DLM is not set + +# +# Library routines +# +CONFIG_BITREVERSE=y +# CONFIG_CRC_CCITT is not set +# CONFIG_CRC16 is not set +# CONFIG_CRC_T10DIF is not set +# CONFIG_CRC_ITU_T is not set +CONFIG_CRC32=y +# CONFIG_CRC7 is not set +# CONFIG_LIBCRC32C is not set +CONFIG_ZLIB_INFLATE=y +CONFIG_PLIST=y +CONFIG_HAS_IOMEM=y +CONFIG_HAS_IOPORT=y +CONFIG_HAS_DMA=y +CONFIG_HAVE_LMB=y + +# +# Kernel hacking +# +CONFIG_PRINTK_TIME=y +CONFIG_ENABLE_WARN_DEPRECATED=y +CONFIG_ENABLE_MUST_CHECK=y +CONFIG_FRAME_WARN=1024 +CONFIG_MAGIC_SYSRQ=y +# CONFIG_UNUSED_SYMBOLS is not set +CONFIG_DEBUG_FS=y +# CONFIG_HEADERS_CHECK is not set +CONFIG_DEBUG_KERNEL=y +# CONFIG_DEBUG_SHIRQ is not set +CONFIG_DETECT_SOFTLOCKUP=y +# CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC is not set +CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC_VALUE=0 +CONFIG_SCHED_DEBUG=y +# CONFIG_SCHEDSTATS is not set +# CONFIG_TIMER_STATS is not set +# CONFIG_DEBUG_OBJECTS is not set +# CONFIG_SLUB_DEBUG_ON is not set +# CONFIG_SLUB_STATS is not set +# CONFIG_DEBUG_RT_MUTEXES is not set +# CONFIG_RT_MUTEX_TESTER is not set +# CONFIG_DEBUG_SPINLOCK is not set +# CONFIG_DEBUG_MUTEXES is not set +# CONFIG_DEBUG_SPINLOCK_SLEEP is not set +# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set +# CONFIG_DEBUG_KOBJECT is not set +CONFIG_DEBUG_BUGVERBOSE=y +CONFIG_DEBUG_INFO=y +# CONFIG_DEBUG_VM is not set +# CONFIG_DEBUG_WRITECOUNT is not set +# CONFIG_DEBUG_MEMORY_INIT is not set +# CONFIG_DEBUG_LIST is not set +CONFIG_DEBUG_SG=y +# CONFIG_BOOT_PRINTK_DELAY is not set +# CONFIG_RCU_TORTURE_TEST is not set +# CONFIG_RCU_CPU_STALL_DETECTOR is not set +# CONFIG_BACKTRACE_SELF_TEST is not set +# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set +# CONFIG_FAULT_INJECTION is not set +# CONFIG_LATENCYTOP is not set +CONFIG_SYSCTL_SYSCALL_CHECK=y +CONFIG_HAVE_FUNCTION_TRACER=y + +# +# Tracers +# +# CONFIG_FUNCTION_TRACER is not set +# CONFIG_SCHED_TRACER is not set +# CONFIG_CONTEXT_SWITCH_TRACER is not set +# CONFIG_BOOT_TRACER is not set +# CONFIG_STACK_TRACER is not set +# CONFIG_DYNAMIC_PRINTK_DEBUG is not set +# CONFIG_SAMPLES is not set +CONFIG_HAVE_ARCH_KGDB=y +# CONFIG_KGDB is not set +# CONFIG_DEBUG_STACKOVERFLOW is not set +# CONFIG_DEBUG_STACK_USAGE is not set +# CONFIG_DEBUG_PAGEALLOC is not set +# CONFIG_CODE_PATCHING_SELFTEST is not set +# CONFIG_FTR_FIXUP_SELFTEST is not set +# CONFIG_MSI_BITMAP_SELFTEST is not set +# CONFIG_XMON is not set +# CONFIG_IRQSTACKS is not set +# CONFIG_VIRQ_DEBUG is not set +# CONFIG_BDI_SWITCH is not set +# CONFIG_PPC_EARLY_DEBUG is not set + +# +# Security options +# +# CONFIG_KEYS is not set +# CONFIG_SECURITY is not set +# CONFIG_SECURITYFS is not set +# CONFIG_SECURITY_FILE_CAPABILITIES is not set +# CONFIG_CRYPTO is not set +# CONFIG_PPC_CLOCK is not set +# CONFIG_VIRTUALIZATION is not set diff --git a/recipes/linux/linux-2.6.29/canyonlands/ppc4xx_pcie_payload.patch b/recipes/linux/linux-2.6.29/canyonlands/ppc4xx_pcie_payload.patch new file mode 100644 index 0000000000..02c21bfea7 --- /dev/null +++ b/recipes/linux/linux-2.6.29/canyonlands/ppc4xx_pcie_payload.patch @@ -0,0 +1,15 @@ +Index: linux-2.6.28/arch/powerpc/sysdev/ppc4xx_pci.c +=================================================================== +--- linux-2.6.28.orig/arch/powerpc/sysdev/ppc4xx_pci.c 2009-03-19 17:46:18.000000000 +0100 ++++ linux-2.6.28/arch/powerpc/sysdev/ppc4xx_pci.c 2009-03-19 17:46:55.000000000 +0100 +@@ -1591,7 +1591,9 @@ + if (!port->endpoint) { + /* Set Class Code to PCI-PCI bridge and Revision Id to 1 */ + out_le32(mbase + 0x208, 0x06040001); +- ++ printk(KERN_INFO "maximum payload size 512 bytes.\n"); ++ /* maximum payload size 512 bytes */ ++ out_le32(mbase + 0x25C, 0x00000002); + printk(KERN_INFO "PCIE%d: successfully set as root-complex\n", + port->index); + } else { diff --git a/recipes/linux/linux_2.6.29.bb b/recipes/linux/linux_2.6.29.bb index e99802b9e0..21f2cdcfae 100644 --- a/recipes/linux/linux_2.6.29.bb +++ b/recipes/linux/linux_2.6.29.bb @@ -1,17 +1,22 @@ require linux.inc +PR = "r1" + S = "${WORKDIR}/linux-2.6.29" # Mark archs/machines that this kernel supports DEFAULT_PREFERENCE = "-1" +DEFAULT_PREFERENCE_canyonlands = "1" DEFAULT_PREFERENCE_tosa = "1" DEFAULT_PREFERENCE_vortex86sx = "1" SRC_URI = "${KERNELORG_MIRROR}/pub/linux/kernel/v2.6/linux-2.6.29.tar.bz2 \ file://defconfig" +SRC_URI_append_canyonlands = " \ + file://0001-powerpc-4xx-Add-PPC4xx-PCIe-MSI-support.patch;patch=1" + SRC_URI_append_tosa = " \ file://0001-pxa-make-second-argument-of-clk_add_alias-a-name-in.patch;patch=1 \ file://0002-spi-pxa2xx-spi-set-default-cs_control-to-null_cs_co.patch;patch=1 \ " - |