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

Scott Wood scottwood at freescale.com
Thu Sep 12 09:41:25 EST 2013


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 at 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 at freescale.com>
> Signed-off-by: Poonam Aggrwal <poonam.aggrwal at freescale.com>
> Signed-off-by: Prabhakar Kushwaha <prabhakar at 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 at 118000 {
> +                        pca9547 at 77 {
> +                                compatible = "philips,pca9547";
> +                                reg = <0x77>;
> +                        };
> +                       rtc at 68 {
> +                                compatible = "dallas,ds3232";
> +                                reg = <0x68>;
> +                                interrupts = <0x1 0x1 0 0>;
> +                        };
> +		};
> +
> +	};

Whitespace

> +
> +	pci0: pcie at ffe240000 {
> +		reg = <0xf 0xfe240000 0 0x10000>;
> +		ranges = <0x02000000 0 0xe0000000 0xc 0x00000000 0x0 0x10000000
> +			  0x01000000 0 0x00000000 0xf 0xf8000000 0x0 0x00010000>;
> +		pcie at 0 {
> +			ranges = <0x02000000 0 0xe0000000
> +				  0x02000000 0 0xe0000000
> +				  0 0x10000000
> +
> +				  0x01000000 0 0x00000000
> +				  0x01000000 0 0x00000000
> +				  0 0x00010000>;
> +		};
> +	};
> +
> +	pci1: pcie at ffe250000 {
> +		reg = <0xf 0xfe250000 0 0x10000>;
> +		ranges = <0x02000000 0x0 0xe0000000 0xc 0x20000000 0x0 0x10000000
> +			  0x01000000 0x0 0x00000000 0xf 0xf8010000 0x0 0x00010000>;
> +		pcie at 0 {
> +			ranges = <0x02000000 0 0xe0000000
> +				  0x02000000 0 0xe0000000
> +				  0 0x10000000
> +
> +				  0x01000000 0 0x00000000
> +				  0x01000000 0 0x00000000
> +				  0 0x00010000>;
> +		};
> +	};
> +
> +	pci2: pcie at ffe260000 {
> +		reg = <0xf 0xfe260000 0 0x1000>;
> +		ranges = <0x02000000 0 0xe0000000 0xc 0x40000000 0 0x10000000
> +			  0x01000000 0 0x00000000 0xf 0xf8020000 0 0x00010000>;
> +		pcie at 0 {
> +			ranges = <0x02000000 0 0xe0000000
> +				  0x02000000 0 0xe0000000
> +				  0 0x10000000
> +
> +				  0x01000000 0 0x00000000
> +				  0x01000000 0 0x00000000
> +				  0 0x00010000>;
> +		};
> +	};
> +
> +	pci3: pcie at ffe270000 {
> +		reg = <0xf 0xfe270000 0 0x10000>;
> +		ranges = <0x02000000 0 0xe0000000 0xc 0x60000000 0 0x10000000
> +			  0x01000000 0 0x00000000 0xf 0xf8030000 0 0x00010000>;
> +		pcie at 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





More information about the Linuxppc-dev mailing list