diff mbox

[1/2] powerpc/fsl-booke: Add initial T104x_QDS board support

Message ID 1378882706-19488-1-git-send-email-prabhakar@freescale.com (mailing list archive)
State Superseded
Headers show

Commit Message

Prabhakar Kushwaha Sept. 11, 2013, 6:58 a.m. UTC
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

 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

Comments

Scott Wood Sept. 11, 2013, 11:41 p.m. UTC | #1
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
Prabhakar Kushwaha Sept. 13, 2013, 7:35 a.m. UTC | #2
> -----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
Scott Wood Sept. 16, 2013, 8:44 p.m. UTC | #3
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 mbox

Patch

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