Message ID | 1378882706-19488-1-git-send-email-prabhakar@freescale.com (mailing list archive) |
---|---|
State | Superseded |
Headers | show |
On Wed, 2013-09-11 at 12:28 +0530, Prabhakar Kushwaha wrote: > Add support for T104x board in board file t104x_qds.c, It is common for > both T1040 and T1042 as they share same QDS board. > > T1040QDS board Overview > ----------------------- > - SERDES Connections, 8 lanes supporting: > — PCI Express: supporting Gen 1 and Gen 2; > — SGMII > — QSGMII > — SATA 2.0 > — Aurora debug with dedicated connectors (T1040 only) > - DDR Controller > - Supports rates of up to 1600 MHz data-rate > - Supports one DDR3LP UDIMM/RDIMMs, of single-, dual- or quad-rank types. > -IFC/Local Bus > - NAND flash: 8-bit, async, up to 2GB. > - NOR: 8-bit or 16-bit, non-multiplexed, up to 512MB > - GASIC: Simple (minimal) target within Qixis FPGA > - PromJET rapid memory download support > - Ethernet > - Two on-board RGMII 10/100/1G ethernet ports. > - PHY #0 remains powered up during deep-sleep (T1040 only) > - QIXIS System Logic FPGA > - Clocks > - System and DDR clock (SYSCLK, “DDRCLK”) > - SERDES clocks > - Power Supplies > - Video > - DIU supports video at up to 1280x1024x32bpp > - USB > - Supports two USB 2.0 ports with integrated PHYs > — Two type A ports with 5V@1.5A per port. > — Second port can be converted to OTG mini-AB > - SDHC > - SDHC port connects directly to an adapter card slot, featuring: > - Supporting SD slots for: SD, SDHC (1x, 4x, 8x) and/or MMC > — Supporting eMMC memory devices > - SPI > - On-board support of 3 different devices and sizes > - Other IO > - Two Serial ports > - ProfiBus port > - Four I2C ports > > Add T104xQDS support in Kconfig and Makefile. Also create device tree. > > Signed-off-by: Priyanka Jain <Priyanka.Jain@freescale.com> > Signed-off-by: Poonam Aggrwal <poonam.aggrwal@freescale.com> > Signed-off-by: Prabhakar Kushwaha <prabhakar@freescale.com> > --- > Based upon git://git.kernel.org/pub/scm/linux/kernel/git/scottwood/linux.git > > TODO: Add noded for ethernet and board stuff "board stuff"? Isn't "board stuff" the whole point of this patch? :-) > arch/powerpc/boot/dts/t1040qds.dts | 201 +++++++++++++++++++++++++++++++ > arch/powerpc/boot/dts/t1042qds.dts | 201 +++++++++++++++++++++++++++++++ > arch/powerpc/platforms/85xx/Kconfig | 20 +++ > arch/powerpc/platforms/85xx/Makefile | 1 + > arch/powerpc/platforms/85xx/t104x_qds.c | 102 ++++++++++++++++ > 5 files changed, 525 insertions(+) > create mode 100644 arch/powerpc/boot/dts/t1040qds.dts > create mode 100644 arch/powerpc/boot/dts/t1042qds.dts > create mode 100644 arch/powerpc/platforms/85xx/t104x_qds.c > > diff --git a/arch/powerpc/boot/dts/t1040qds.dts b/arch/powerpc/boot/dts/t1040qds.dts > new file mode 100644 > index 0000000..cea5632 > --- /dev/null > +++ b/arch/powerpc/boot/dts/t1040qds.dts > @@ -0,0 +1,201 @@ > +/* > + * T1040QDS Device Tree Source > + * > + * Copyright 2013 Freescale Semiconductor Inc. > + * > + * Redistribution and use in source and binary forms, with or without > + * modification, are permitted provided that the following conditions are met: > + * * Redistributions of source code must retain the above copyright > + * notice, this list of conditions and the following disclaimer. > + * * Redistributions in binary form must reproduce the above copyright > + * notice, this list of conditions and the following disclaimer in the > + * documentation and/or other materials provided with the distribution. > + * * Neither the name of Freescale Semiconductor nor the > + * names of its contributors may be used to endorse or promote products > + * derived from this software without specific prior written permission. > + * > + * > + * ALTERNATIVELY, this software may be distributed under the terms of the > + * GNU General Public License ("GPL") as published by the Free Software > + * Foundation, either version 2 of that License or (at your option) any > + * later version. > + * > + * THIS SOFTWARE IS PROVIDED BY Freescale Semiconductor "AS IS" AND ANY > + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED > + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE > + * DISCLAIMED. IN NO EVENT SHALL Freescale Semiconductor BE LIABLE FOR ANY > + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES > + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; > + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND > + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT > + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS > + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. > + */ > + > +/include/ "fsl/t104xsi-pre.dtsi" > + > +/ { > + model = "fsl,T1040QDS"; > + compatible = "fsl,T1040QDS"; > + #address-cells = <2>; > + #size-cells = <2>; > + interrupt-parent = <&mpic>; > + > + aliases { > + /* TODO */ > + }; TODO? Did you mean this patch as an RFC? Also, whitespace. > + i2c@118000 { > + pca9547@77 { > + compatible = "philips,pca9547"; > + reg = <0x77>; > + }; > + rtc@68 { > + compatible = "dallas,ds3232"; > + reg = <0x68>; > + interrupts = <0x1 0x1 0 0>; > + }; > + }; > + > + }; Whitespace > + > + pci0: pcie@ffe240000 { > + reg = <0xf 0xfe240000 0 0x10000>; > + ranges = <0x02000000 0 0xe0000000 0xc 0x00000000 0x0 0x10000000 > + 0x01000000 0 0x00000000 0xf 0xf8000000 0x0 0x00010000>; > + pcie@0 { > + ranges = <0x02000000 0 0xe0000000 > + 0x02000000 0 0xe0000000 > + 0 0x10000000 > + > + 0x01000000 0 0x00000000 > + 0x01000000 0 0x00000000 > + 0 0x00010000>; > + }; > + }; > + > + pci1: pcie@ffe250000 { > + reg = <0xf 0xfe250000 0 0x10000>; > + ranges = <0x02000000 0x0 0xe0000000 0xc 0x20000000 0x0 0x10000000 > + 0x01000000 0x0 0x00000000 0xf 0xf8010000 0x0 0x00010000>; > + pcie@0 { > + ranges = <0x02000000 0 0xe0000000 > + 0x02000000 0 0xe0000000 > + 0 0x10000000 > + > + 0x01000000 0 0x00000000 > + 0x01000000 0 0x00000000 > + 0 0x00010000>; > + }; > + }; > + > + pci2: pcie@ffe260000 { > + reg = <0xf 0xfe260000 0 0x1000>; > + ranges = <0x02000000 0 0xe0000000 0xc 0x40000000 0 0x10000000 > + 0x01000000 0 0x00000000 0xf 0xf8020000 0 0x00010000>; > + pcie@0 { > + ranges = <0x02000000 0 0xe0000000 > + 0x02000000 0 0xe0000000 > + 0 0x10000000 > + > + 0x01000000 0 0x00000000 > + 0x01000000 0 0x00000000 > + 0 0x00010000>; > + }; > + }; > + > + pci3: pcie@ffe270000 { > + reg = <0xf 0xfe270000 0 0x10000>; > + ranges = <0x02000000 0 0xe0000000 0xc 0x60000000 0 0x10000000 > + 0x01000000 0 0x00000000 0xf 0xf8030000 0 0x00010000>; > + pcie@0 { > + ranges = <0x02000000 0 0xe0000000 > + 0x02000000 0 0xe0000000 > + 0 0x10000000 > + > + 0x01000000 0 0x00000000 > + 0x01000000 0 0x00000000 > + 0 0x00010000>; > + }; > + }; > +}; Maybe some of this stuff could be put in a common dtsi between t1040 and t1042? Ideally for t1042 you'd just take the entire t1040 tree as an include, and add the switch > diff --git a/arch/powerpc/platforms/85xx/t104x_qds.c b/arch/powerpc/platforms/85xx/t104x_qds.c > new file mode 100644 > index 0000000..d28da14 > --- /dev/null > +++ b/arch/powerpc/platforms/85xx/t104x_qds.c > @@ -0,0 +1,102 @@ > +/* > + * T104x QDS Setup > + * Should apply for QDS platform of T1040 and it's personalities. > + * viz T1040/T1042 > + * > + * Copyright 2013 Freescale Semiconductor Inc. > + * > + * 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. > + */ > + > +#include <linux/kernel.h> > +#include <linux/pci.h> > +#include <linux/kdev_t.h> > +#include <linux/delay.h> > +#include <linux/interrupt.h> > +#include <linux/phy.h> > + > +#include <asm/time.h> > +#include <asm/machdep.h> > +#include <asm/pci-bridge.h> > +#include <mm/mmu_decl.h> > +#include <asm/prom.h> > +#include <asm/udbg.h> > +#include <asm/mpic.h> > + > +#include <linux/of_platform.h> > +#include <sysdev/fsl_soc.h> > +#include <sysdev/fsl_pci.h> > +#include <asm/ehv_pic.h> > + > +#include "corenet_ds.h" You don't need all of these includes. > +define_machine(t104x_qds) { > + .name = "T104x QDS", > + .probe = t104x_qds_probe, Should we have two machine descriptions, so that the proper chip name shows up (e.g. in /proc/cpuinfo)? > +/* coreint doesn't play nice with lazy EE, use legacy mpic for now */ > +#ifdef CONFIG_PPC64 > + .get_irq = mpic_get_irq, > +#else > + .get_irq = mpic_get_coreint_irq, > +#endif This isn't true any more. When submitting code that was copied from elsewhere, please check whether there were any updates in the code that you copied from (unless you copied from b4qds, which the update missed -- I just sent a patch to fix that). -Scott
> -----Original Message----- > From: Wood Scott-B07421 > Sent: Thursday, September 12, 2013 5:11 AM > To: Kushwaha Prabhakar-B32579 > Cc: linuxppc-dev@lists.ozlabs.org; galak@kernel.crashing.org; Jain > Priyanka-B32167; Aggrwal Poonam-B10812 > Subject: Re: [PATCH 1/2] powerpc/fsl-booke: Add initial T104x_QDS board > support > > On Wed, 2013-09-11 at 12:28 +0530, Prabhakar Kushwaha wrote: > > Add support for T104x board in board file t104x_qds.c, It is common > > for both T1040 and T1042 as they share same QDS board. > > > > T1040QDS board Overview > > ----------------------- > > - SERDES Connections, 8 lanes supporting: > > — PCI Express: supporting Gen 1 and Gen 2; > > — SGMII > > — QSGMII > > — SATA 2.0 > > — Aurora debug with dedicated connectors (T1040 only) > > - DDR Controller > > - Supports rates of up to 1600 MHz data-rate > > - Supports one DDR3LP UDIMM/RDIMMs, of single-, dual- or quad-rank > types. > > -IFC/Local Bus > > - NAND flash: 8-bit, async, up to 2GB. > > - NOR: 8-bit or 16-bit, non-multiplexed, up to 512MB > > - GASIC: Simple (minimal) target within Qixis FPGA > > - PromJET rapid memory download support > > - Ethernet > > - Two on-board RGMII 10/100/1G ethernet ports. > > - PHY #0 remains powered up during deep-sleep (T1040 only) > > - QIXIS System Logic FPGA > > - Clocks > > - System and DDR clock (SYSCLK, “DDRCLK”) > > - SERDES clocks > > - Power Supplies > > - Video > > - DIU supports video at up to 1280x1024x32bpp > > - USB > > - Supports two USB 2.0 ports with integrated PHYs > > — Two type A ports with 5V@1.5A per port. > > — Second port can be converted to OTG mini-AB > > - SDHC > > - SDHC port connects directly to an adapter card slot, featuring: > > - Supporting SD slots for: SD, SDHC (1x, 4x, 8x) and/or MMC > > — Supporting eMMC memory devices > > - SPI > > - On-board support of 3 different devices and sizes > > - Other IO > > - Two Serial ports > > - ProfiBus port > > - Four I2C ports > > > > Add T104xQDS support in Kconfig and Makefile. Also create device tree. > > > > Signed-off-by: Priyanka Jain <Priyanka.Jain@freescale.com> > > Signed-off-by: Poonam Aggrwal <poonam.aggrwal@freescale.com> > > Signed-off-by: Prabhakar Kushwaha <prabhakar@freescale.com> > > --- > > Based upon > > git://git.kernel.org/pub/scm/linux/kernel/git/scottwood/linux.git > > > > TODO: Add noded for ethernet and board stuff > > "board stuff"? > > Isn't "board stuff" the whole point of this patch? :-) > :) > > arch/powerpc/boot/dts/t1040qds.dts | 201 > +++++++++++++++++++++++++++++++ > > arch/powerpc/boot/dts/t1042qds.dts | 201 > +++++++++++++++++++++++++++++++ > > arch/powerpc/platforms/85xx/Kconfig | 20 +++ > > arch/powerpc/platforms/85xx/Makefile | 1 + > > arch/powerpc/platforms/85xx/t104x_qds.c | 102 ++++++++++++++++ > > 5 files changed, 525 insertions(+) > > create mode 100644 arch/powerpc/boot/dts/t1040qds.dts > > create mode 100644 arch/powerpc/boot/dts/t1042qds.dts > > create mode 100644 arch/powerpc/platforms/85xx/t104x_qds.c > > > > diff --git a/arch/powerpc/boot/dts/t1040qds.dts > > b/arch/powerpc/boot/dts/t1040qds.dts > > new file mode 100644 > > index 0000000..cea5632 > > --- /dev/null > > +++ b/arch/powerpc/boot/dts/t1040qds.dts > > @@ -0,0 +1,201 @@ > > +/* > > + * T1040QDS Device Tree Source > > + * > > + * Copyright 2013 Freescale Semiconductor Inc. > > + * > > + * Redistribution and use in source and binary forms, with or without > > + * modification, are permitted provided that the following conditions > are met: > > + * * Redistributions of source code must retain the above > copyright > > + * notice, this list of conditions and the following disclaimer. > > + * * Redistributions in binary form must reproduce the above > copyright > > + * notice, this list of conditions and the following disclaimer in > the > > + * documentation and/or other materials provided with the > distribution. > > + * * Neither the name of Freescale Semiconductor nor the > > + * names of its contributors may be used to endorse or promote > products > > + * derived from this software without specific prior written > permission. > > + * > > + * > > + * ALTERNATIVELY, this software may be distributed under the terms of > > +the > > + * GNU General Public License ("GPL") as published by the Free > > +Software > > + * Foundation, either version 2 of that License or (at your option) > > +any > > + * later version. > > + * > > + * THIS SOFTWARE IS PROVIDED BY Freescale Semiconductor "AS IS" AND > > +ANY > > + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE > > +IMPLIED > > + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE > > +ARE > > + * DISCLAIMED. IN NO EVENT SHALL Freescale Semiconductor BE LIABLE > > +FOR ANY > > + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL > > +DAMAGES > > + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR > > +SERVICES; > > + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER > > +CAUSED AND > > + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, > > +OR TORT > > + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE > > +USE OF THIS > > + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. > > + */ > > + > > +/include/ "fsl/t104xsi-pre.dtsi" > > + > > +/ { > > + model = "fsl,T1040QDS"; > > + compatible = "fsl,T1040QDS"; > > + #address-cells = <2>; > > + #size-cells = <2>; > > + interrupt-parent = <&mpic>; > > + > > + aliases { > > + /* TODO */ > > + }; > > TODO? Did you mean this patch as an RFC? > actually, this patch is not adding in dpaa related node(fman,bman etc). I am keeping place holder for alias of Ethernet nodes. > Also, whitespace. > does whitespace is not captured in checkpatch? > > + i2c@118000 { > > + pca9547@77 { > > + compatible = "philips,pca9547"; > > + reg = <0x77>; > > + }; > > + rtc@68 { > > + compatible = "dallas,ds3232"; > > + reg = <0x68>; > > + interrupts = <0x1 0x1 0 0>; > > + }; > > + }; > > + > > + }; > > Whitespace > > > + > > + pci0: pcie@ffe240000 { > > + reg = <0xf 0xfe240000 0 0x10000>; > > + ranges = <0x02000000 0 0xe0000000 0xc 0x00000000 0x0 > 0x10000000 > > + 0x01000000 0 0x00000000 0xf 0xf8000000 0x0 > 0x00010000>; > > + pcie@0 { > > + ranges = <0x02000000 0 0xe0000000 > > + 0x02000000 0 0xe0000000 > > + 0 0x10000000 > > + > > + 0x01000000 0 0x00000000 > > + 0x01000000 0 0x00000000 > > + 0 0x00010000>; > > + }; > > + }; > > + > > + pci1: pcie@ffe250000 { > > + reg = <0xf 0xfe250000 0 0x10000>; > > + ranges = <0x02000000 0x0 0xe0000000 0xc 0x20000000 0x0 > 0x10000000 > > + 0x01000000 0x0 0x00000000 0xf 0xf8010000 0x0 > 0x00010000>; > > + pcie@0 { > > + ranges = <0x02000000 0 0xe0000000 > > + 0x02000000 0 0xe0000000 > > + 0 0x10000000 > > + > > + 0x01000000 0 0x00000000 > > + 0x01000000 0 0x00000000 > > + 0 0x00010000>; > > + }; > > + }; > > + > > + pci2: pcie@ffe260000 { > > + reg = <0xf 0xfe260000 0 0x1000>; > > + ranges = <0x02000000 0 0xe0000000 0xc 0x40000000 0 0x10000000 > > + 0x01000000 0 0x00000000 0xf 0xf8020000 0 0x00010000>; > > + pcie@0 { > > + ranges = <0x02000000 0 0xe0000000 > > + 0x02000000 0 0xe0000000 > > + 0 0x10000000 > > + > > + 0x01000000 0 0x00000000 > > + 0x01000000 0 0x00000000 > > + 0 0x00010000>; > > + }; > > + }; > > + > > + pci3: pcie@ffe270000 { > > + reg = <0xf 0xfe270000 0 0x10000>; > > + ranges = <0x02000000 0 0xe0000000 0xc 0x60000000 0 0x10000000 > > + 0x01000000 0 0x00000000 0xf 0xf8030000 0 0x00010000>; > > + pcie@0 { > > + ranges = <0x02000000 0 0xe0000000 > > + 0x02000000 0 0xe0000000 > > + 0 0x10000000 > > + > > + 0x01000000 0 0x00000000 > > + 0x01000000 0 0x00000000 > > + 0 0x00010000>; > > + }; > > + }; > > +}; > > Maybe some of this stuff could be put in a common dtsi between t1040 and > t1042? > > Ideally for t1042 you'd just take the entire t1040 tree as an include, > and add the switch > means, I just create T1042qds.dts and for T1040.dts include t1042dts + switch > > diff --git a/arch/powerpc/platforms/85xx/t104x_qds.c > > b/arch/powerpc/platforms/85xx/t104x_qds.c > > new file mode 100644 > > index 0000000..d28da14 > > --- /dev/null > > +++ b/arch/powerpc/platforms/85xx/t104x_qds.c > > @@ -0,0 +1,102 @@ > > +/* > > + * T104x QDS Setup > > + * Should apply for QDS platform of T1040 and it's personalities. > > + * viz T1040/T1042 > > + * > > + * Copyright 2013 Freescale Semiconductor Inc. > > + * > > + * 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. > > + */ > > + > > +#include <linux/kernel.h> > > +#include <linux/pci.h> > > +#include <linux/kdev_t.h> > > +#include <linux/delay.h> > > +#include <linux/interrupt.h> > > +#include <linux/phy.h> > > + > > +#include <asm/time.h> > > +#include <asm/machdep.h> > > +#include <asm/pci-bridge.h> > > +#include <mm/mmu_decl.h> > > +#include <asm/prom.h> > > +#include <asm/udbg.h> > > +#include <asm/mpic.h> > > + > > +#include <linux/of_platform.h> > > +#include <sysdev/fsl_soc.h> > > +#include <sysdev/fsl_pci.h> > > +#include <asm/ehv_pic.h> > > + > > +#include "corenet_ds.h" > > You don't need all of these includes. > > > +define_machine(t104x_qds) { > > + .name = "T104x QDS", > > + .probe = t104x_qds_probe, > > Should we have two machine descriptions, so that the proper chip name > shows up (e.g. in /proc/cpuinfo)? > > > +/* coreint doesn't play nice with lazy EE, use legacy mpic for now */ > > +#ifdef CONFIG_PPC64 > > + .get_irq = mpic_get_irq, > > +#else > > + .get_irq = mpic_get_coreint_irq, > > +#endif > > This isn't true any more. When submitting code that was copied from > elsewhere, please check whether there were any updates in the code that > you copied from (unless you copied from b4qds, which the update missed > -- I just sent a patch to fix that). > I will check on latest code base. Regards, Prabhakar
On Fri, 2013-09-13 at 02:35 -0500, Kushwaha Prabhakar-B32579 wrote: > > > -----Original Message----- > > From: Wood Scott-B07421 > > Sent: Thursday, September 12, 2013 5:11 AM > > To: Kushwaha Prabhakar-B32579 > > Cc: linuxppc-dev@lists.ozlabs.org; galak@kernel.crashing.org; Jain > > Priyanka-B32167; Aggrwal Poonam-B10812 > > Subject: Re: [PATCH 1/2] powerpc/fsl-booke: Add initial T104x_QDS board > > support > > > > On Wed, 2013-09-11 at 12:28 +0530, Prabhakar Kushwaha wrote: > > > + aliases { > > > + /* TODO */ > > > + }; > > > > TODO? Did you mean this patch as an RFC? > > > > > actually, this patch is not adding in dpaa related node(fman,bman etc). > I am keeping place holder for alias of Ethernet nodes. If you don't have any board-level aliases yet, then just don't include the aliases node in this file. > > Also, whitespace. > > > > does whitespace is not captured in checkpatch? Not in dts files. > > Maybe some of this stuff could be put in a common dtsi between t1040 and > > t1042? > > > > Ideally for t1042 you'd just take the entire t1040 tree as an include, > > and add the switch > > > > means, I just create T1042qds.dts and for T1040.dts include t1042dts + switch Is it t1040 that has the switch or t1042? -Scott
diff --git a/arch/powerpc/boot/dts/t1040qds.dts b/arch/powerpc/boot/dts/t1040qds.dts new file mode 100644 index 0000000..cea5632 --- /dev/null +++ b/arch/powerpc/boot/dts/t1040qds.dts @@ -0,0 +1,201 @@ +/* + * T1040QDS Device Tree Source + * + * Copyright 2013 Freescale Semiconductor Inc. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Freescale Semiconductor nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * + * ALTERNATIVELY, this software may be distributed under the terms of the + * GNU General Public License ("GPL") as published by the Free Software + * Foundation, either version 2 of that License or (at your option) any + * later version. + * + * THIS SOFTWARE IS PROVIDED BY Freescale Semiconductor "AS IS" AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL Freescale Semiconductor BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +/include/ "fsl/t104xsi-pre.dtsi" + +/ { + model = "fsl,T1040QDS"; + compatible = "fsl,T1040QDS"; + #address-cells = <2>; + #size-cells = <2>; + interrupt-parent = <&mpic>; + + aliases { + /* TODO */ + }; + + ifc: localbus@ffe124000 { + reg = <0xf 0xfe124000 0 0x2000>; + ranges = <0 0 0xf 0xe8000000 0x08000000 + 2 0 0xf 0xff800000 0x00010000 + 3 0 0xf 0xffdf0000 0x00008000>; + + nor@0,0 { + #address-cells = <1>; + #size-cells = <1>; + compatible = "cfi-flash"; + reg = <0x0 0x0 0x8000000>; + + bank-width = <2>; + device-width = <1>; + }; + + nand@2,0 { + #address-cells = <1>; + #size-cells = <1>; + compatible = "fsl,ifc-nand"; + reg = <0x2 0x0 0x10000>; + + partition@0 { + /* This location must not be altered */ + /* 1MB for u-boot Bootloader Image */ + reg = <0x0 0x00100000>; + label = "NAND U-Boot Image"; + read-only; + }; + + partition@100000 { + /* 1MB for DTB Image */ + reg = <0x00100000 0x00100000>; + label = "NAND DTB Image"; + }; + + partition@200000 { + /* 10MB for Linux Kernel Image */ + reg = <0x00200000 0x00A00000>; + label = "NAND Linux Kernel Image"; + }; + + partition@C00000 { + /* 500MB for Root file System Image */ + reg = <0x00c00000 0x1F400000>; + label = "NAND RFS Image"; + }; + }; + + board-control@3,0 { + #address-cells = <1>; + #size-cells = <1>; + compatible = "fsl,tetra-fpga", "fsl,fpga-qixis"; + reg = <3 0 0x300>; + }; + }; + + memory { + device_type = "memory"; + }; + + dcsr: dcsr@f00000000 { + ranges = <0x00000000 0xf 0x00000000 0x01072000>; + }; + + soc: soc@ffe000000 { + ranges = <0x00000000 0xf 0xfe000000 0x1000000>; + reg = <0xf 0xfe000000 0 0x00001000>; + spi@110000 { + flash@0 { + #address-cells = <1>; + #size-cells = <1>; + compatible = "micron,n25q512a"; + reg = <0>; + spi-max-frequency = <10000000>; /* input clock */ + }; + }; + + i2c@118000 { + pca9547@77 { + compatible = "philips,pca9547"; + reg = <0x77>; + }; + rtc@68 { + compatible = "dallas,ds3232"; + reg = <0x68>; + interrupts = <0x1 0x1 0 0>; + }; + }; + + }; + + pci0: pcie@ffe240000 { + reg = <0xf 0xfe240000 0 0x10000>; + ranges = <0x02000000 0 0xe0000000 0xc 0x00000000 0x0 0x10000000 + 0x01000000 0 0x00000000 0xf 0xf8000000 0x0 0x00010000>; + pcie@0 { + ranges = <0x02000000 0 0xe0000000 + 0x02000000 0 0xe0000000 + 0 0x10000000 + + 0x01000000 0 0x00000000 + 0x01000000 0 0x00000000 + 0 0x00010000>; + }; + }; + + pci1: pcie@ffe250000 { + reg = <0xf 0xfe250000 0 0x10000>; + ranges = <0x02000000 0x0 0xe0000000 0xc 0x20000000 0x0 0x10000000 + 0x01000000 0x0 0x00000000 0xf 0xf8010000 0x0 0x00010000>; + pcie@0 { + ranges = <0x02000000 0 0xe0000000 + 0x02000000 0 0xe0000000 + 0 0x10000000 + + 0x01000000 0 0x00000000 + 0x01000000 0 0x00000000 + 0 0x00010000>; + }; + }; + + pci2: pcie@ffe260000 { + reg = <0xf 0xfe260000 0 0x1000>; + ranges = <0x02000000 0 0xe0000000 0xc 0x40000000 0 0x10000000 + 0x01000000 0 0x00000000 0xf 0xf8020000 0 0x00010000>; + pcie@0 { + ranges = <0x02000000 0 0xe0000000 + 0x02000000 0 0xe0000000 + 0 0x10000000 + + 0x01000000 0 0x00000000 + 0x01000000 0 0x00000000 + 0 0x00010000>; + }; + }; + + pci3: pcie@ffe270000 { + reg = <0xf 0xfe270000 0 0x10000>; + ranges = <0x02000000 0 0xe0000000 0xc 0x60000000 0 0x10000000 + 0x01000000 0 0x00000000 0xf 0xf8030000 0 0x00010000>; + pcie@0 { + ranges = <0x02000000 0 0xe0000000 + 0x02000000 0 0xe0000000 + 0 0x10000000 + + 0x01000000 0 0x00000000 + 0x01000000 0 0x00000000 + 0 0x00010000>; + }; + }; +}; + +/include/ "fsl/t1040si-post.dtsi" diff --git a/arch/powerpc/boot/dts/t1042qds.dts b/arch/powerpc/boot/dts/t1042qds.dts new file mode 100644 index 0000000..42662e1 --- /dev/null +++ b/arch/powerpc/boot/dts/t1042qds.dts @@ -0,0 +1,201 @@ +/* + * T1042QDS Device Tree Source + * + * Copyright 2013 Freescale Semiconductor Inc. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Freescale Semiconductor nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * + * ALTERNATIVELY, this software may be distributed under the terms of the + * GNU General Public License ("GPL") as published by the Free Software + * Foundation, either version 2 of that License or (at your option) any + * later version. + * + * THIS SOFTWARE IS PROVIDED BY Freescale Semiconductor "AS IS" AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL Freescale Semiconductor BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +/include/ "fsl/t104xsi-pre.dtsi" + +/ { + model = "fsl,T1042QDS"; + compatible = "fsl,T1042QDS"; + #address-cells = <2>; + #size-cells = <2>; + interrupt-parent = <&mpic>; + + aliases { + /* TODO */ + }; + + ifc: localbus@ffe124000 { + reg = <0xf 0xfe124000 0 0x2000>; + ranges = <0 0 0xf 0xe8000000 0x08000000 + 2 0 0xf 0xff800000 0x00010000 + 3 0 0xf 0xffdf0000 0x00008000>; + + nor@0,0 { + #address-cells = <1>; + #size-cells = <1>; + compatible = "cfi-flash"; + reg = <0x0 0x0 0x8000000>; + + bank-width = <2>; + device-width = <1>; + }; + + nand@2,0 { + #address-cells = <1>; + #size-cells = <1>; + compatible = "fsl,ifc-nand"; + reg = <0x2 0x0 0x10000>; + + partition@0 { + /* This location must not be altered */ + /* 1MB for u-boot Bootloader Image */ + reg = <0x0 0x00100000>; + label = "NAND U-Boot Image"; + read-only; + }; + + partition@100000 { + /* 1MB for DTB Image */ + reg = <0x00100000 0x00100000>; + label = "NAND DTB Image"; + }; + + partition@200000 { + /* 10MB for Linux Kernel Image */ + reg = <0x00200000 0x00A00000>; + label = "NAND Linux Kernel Image"; + }; + + partition@C00000 { + /* 500MB for Root file System Image */ + reg = <0x00c00000 0x1F400000>; + label = "NAND RFS Image"; + }; + }; + + board-control@3,0 { + #address-cells = <1>; + #size-cells = <1>; + compatible = "fsl,tetra-fpga", "fsl,fpga-qixis"; + reg = <3 0 0x300>; + }; + }; + + memory { + device_type = "memory"; + }; + + dcsr: dcsr@f00000000 { + ranges = <0x00000000 0xf 0x00000000 0x01072000>; + }; + + soc: soc@ffe000000 { + ranges = <0x00000000 0xf 0xfe000000 0x1000000>; + reg = <0xf 0xfe000000 0 0x00001000>; + spi@110000 { + flash@0 { + #address-cells = <1>; + #size-cells = <1>; + compatible = "micron,n25q512a"; + reg = <0>; + spi-max-frequency = <10000000>; /* input clock */ + }; + }; + + i2c@118000 { + pca9547@77 { + compatible = "philips,pca9547"; + reg = <0x77>; + }; + rtc@68 { + compatible = "dallas,ds3232"; + reg = <0x68>; + interrupts = <0x1 0x1 0 0>; + }; + }; + + }; + + pci0: pcie@ffe240000 { + reg = <0xf 0xfe240000 0 0x10000>; + ranges = <0x02000000 0 0xe0000000 0xc 0x00000000 0x0 0x10000000 + 0x01000000 0 0x00000000 0xf 0xf8000000 0x0 0x00010000>; + pcie@0 { + ranges = <0x02000000 0 0xe0000000 + 0x02000000 0 0xe0000000 + 0 0x10000000 + + 0x01000000 0 0x00000000 + 0x01000000 0 0x00000000 + 0 0x00010000>; + }; + }; + + pci1: pcie@ffe250000 { + reg = <0xf 0xfe250000 0 0x10000>; + ranges = <0x02000000 0x0 0xe0000000 0xc 0x20000000 0x0 0x10000000 + 0x01000000 0x0 0x00000000 0xf 0xf8010000 0x0 0x00010000>; + pcie@0 { + ranges = <0x02000000 0 0xe0000000 + 0x02000000 0 0xe0000000 + 0 0x10000000 + + 0x01000000 0 0x00000000 + 0x01000000 0 0x00000000 + 0 0x00010000>; + }; + }; + + pci2: pcie@ffe260000 { + reg = <0xf 0xfe260000 0 0x1000>; + ranges = <0x02000000 0 0xe0000000 0xc 0x40000000 0 0x10000000 + 0x01000000 0 0x00000000 0xf 0xf8020000 0 0x00010000>; + pcie@0 { + ranges = <0x02000000 0 0xe0000000 + 0x02000000 0 0xe0000000 + 0 0x10000000 + + 0x01000000 0 0x00000000 + 0x01000000 0 0x00000000 + 0 0x00010000>; + }; + }; + + pci3: pcie@ffe270000 { + reg = <0xf 0xfe270000 0 0x10000>; + ranges = <0x02000000 0 0xe0000000 0xc 0x60000000 0 0x10000000 + 0x01000000 0 0x00000000 0xf 0xf8030000 0 0x00010000>; + pcie@0 { + ranges = <0x02000000 0 0xe0000000 + 0x02000000 0 0xe0000000 + 0 0x10000000 + + 0x01000000 0 0x00000000 + 0x01000000 0 0x00000000 + 0 0x00010000>; + }; + }; +}; + +/include/ "fsl/t1042si-post.dtsi" diff --git a/arch/powerpc/platforms/85xx/Kconfig b/arch/powerpc/platforms/85xx/Kconfig index efdd37c..503c211 100644 --- a/arch/powerpc/platforms/85xx/Kconfig +++ b/arch/powerpc/platforms/85xx/Kconfig @@ -289,6 +289,26 @@ config P5040_DS help This option enables support for the P5040 DS board +config T104x_QDS + bool "Freescale T104x QDS" + select DEFAULT_UIMAGE + select E500 + select PPC_E500MC + select PHYS_64BIT + select SWIOTLB + select ARCH_REQUIRE_GPIOLIB + select GENERIC_GPIO + select HAS_RAPIDIO + select PPC_EPAPR_HV_PIC + select HAS_FSL_QBMAN + select MDIO_BUS_MUX if FSL_DPAA_ETH + select MDIO_BUS_MUX_MMIOREG if FSL_DPAA_ETH + help + This option enables support for the T04x QDS board + The T104x application development system T104x QDS is a complete + debugging environment intended for engineers developing + applications for the T1040/T1042. + config PPC_QEMU_E500 bool "QEMU generic e500 platform" select DEFAULT_UIMAGE diff --git a/arch/powerpc/platforms/85xx/Makefile b/arch/powerpc/platforms/85xx/Makefile index 2eab37e..9c25a38 100644 --- a/arch/powerpc/platforms/85xx/Makefile +++ b/arch/powerpc/platforms/85xx/Makefile @@ -22,6 +22,7 @@ obj-$(CONFIG_P3041_DS) += p3041_ds.o corenet_ds.o obj-$(CONFIG_P4080_DS) += p4080_ds.o corenet_ds.o obj-$(CONFIG_P5020_DS) += p5020_ds.o corenet_ds.o obj-$(CONFIG_P5040_DS) += p5040_ds.o corenet_ds.o +obj-$(CONFIG_T104x_QDS) += t104x_qds.o corenet_ds.o obj-$(CONFIG_T4240_QDS) += t4240_qds.o corenet_ds.o obj-$(CONFIG_B4_QDS) += b4_qds.o corenet_ds.o obj-$(CONFIG_STX_GP3) += stx_gp3.o diff --git a/arch/powerpc/platforms/85xx/t104x_qds.c b/arch/powerpc/platforms/85xx/t104x_qds.c new file mode 100644 index 0000000..d28da14 --- /dev/null +++ b/arch/powerpc/platforms/85xx/t104x_qds.c @@ -0,0 +1,102 @@ +/* + * T104x QDS Setup + * Should apply for QDS platform of T1040 and it's personalities. + * viz T1040/T1042 + * + * Copyright 2013 Freescale Semiconductor Inc. + * + * 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. + */ + +#include <linux/kernel.h> +#include <linux/pci.h> +#include <linux/kdev_t.h> +#include <linux/delay.h> +#include <linux/interrupt.h> +#include <linux/phy.h> + +#include <asm/time.h> +#include <asm/machdep.h> +#include <asm/pci-bridge.h> +#include <mm/mmu_decl.h> +#include <asm/prom.h> +#include <asm/udbg.h> +#include <asm/mpic.h> + +#include <linux/of_platform.h> +#include <sysdev/fsl_soc.h> +#include <sysdev/fsl_pci.h> +#include <asm/ehv_pic.h> + +#include "corenet_ds.h" + +/* + * Called very early, device-tree isn't unflattened + */ +static int __init t104x_qds_probe(void) +{ + unsigned long root = of_get_flat_dt_root(); +#ifdef CONFIG_SMP + extern struct smp_ops_t smp_85xx_ops; +#endif + + if (of_flat_dt_is_compatible(root, "fsl,T1040QDS") || + of_flat_dt_is_compatible(root, "fsl,T1042QDS")) + + return 1; + + /* Check if we're running under the Freescale hypervisor */ + if (of_flat_dt_is_compatible(root, "fsl,T1040QDS-hv") || + of_flat_dt_is_compatible(root, "fsl,T1042QDS-hv")) { + ppc_md.init_IRQ = ehv_pic_init; + ppc_md.get_irq = ehv_pic_get_irq; + ppc_md.restart = fsl_hv_restart; + ppc_md.power_off = fsl_hv_halt; + ppc_md.halt = fsl_hv_halt; +#ifdef CONFIG_SMP + /* + * Disable the timebase sync operations because we can't write + * to the timebase registers under the hypervisor. + */ + smp_85xx_ops.give_timebase = NULL; + smp_85xx_ops.take_timebase = NULL; +#endif + + return 1; + } + + return 0; +} + +define_machine(t104x_qds) { + .name = "T104x QDS", + .probe = t104x_qds_probe, + .setup_arch = corenet_ds_setup_arch, + .init_IRQ = corenet_ds_pic_init, +#ifdef CONFIG_PCI + .pcibios_fixup_bus = fsl_pcibios_fixup_bus, +#endif +/* coreint doesn't play nice with lazy EE, use legacy mpic for now */ +#ifdef CONFIG_PPC64 + .get_irq = mpic_get_irq, +#else + .get_irq = mpic_get_coreint_irq, +#endif + .restart = fsl_rstcr_restart, + .calibrate_decr = generic_calibrate_decr, + .progress = udbg_progress, +#ifdef CONFIG_PPC64 + .power_save = book3e_idle, +#else + .power_save = e500_idle, +#endif +}; + +machine_arch_initcall(t104x_qds, corenet_ds_publish_devices); + +#ifdef CONFIG_SWIOTLB +machine_arch_initcall(t104x_qds, swiotlb_setup_bus_notifier); +#endif