[PATCH V3] ARM: Kirkwood: new board USI Topkick

Andrew Lunn andrew at lunn.ch
Mon Oct 22 01:01:48 EDT 2012


On Mon, Oct 22, 2012 at 02:15:35AM +0000, Jason Cooper wrote:
> This is a new kirkwood box made by Universal Scientific Industrial, Inc.
> The product description is here:
> 
> http://www.usish.com/english/products_topkick1281p2.php
> 
> It is very similar to the dreamplug and other plug devices, with the
> exception that it has room for a 2.5" SATA HDD internally.
> 
> Signed-off-by: Jason Cooper <jason at lakedaemon.net>
> ---
> Changes since V2:
>  - corrected comments missed during copy/paste
>  - sorted topkick dtb Makefile entry alphabetically
> 
> Changes since V1:
>  - changes nr-ports to 1 for sata0
>  - included board in defconfig
>  - trimmed #includes
>  - added mvsdio init call
> 
>  arch/arm/boot/dts/Makefile                 |  1 +
>  arch/arm/boot/dts/kirkwood-topkick.dts     | 85 ++++++++++++++++++++++++++++++
>  arch/arm/configs/kirkwood_defconfig        |  1 +
>  arch/arm/mach-kirkwood/Kconfig             |  7 +++
>  arch/arm/mach-kirkwood/Makefile            |  1 +
>  arch/arm/mach-kirkwood/board-dt.c          |  4 ++
>  arch/arm/mach-kirkwood/board-usi_topkick.c | 82 ++++++++++++++++++++++++++++
>  arch/arm/mach-kirkwood/common.h            |  6 +++
>  8 files changed, 187 insertions(+)
>  create mode 100644 arch/arm/boot/dts/kirkwood-topkick.dts
>  create mode 100644 arch/arm/mach-kirkwood/board-usi_topkick.c
> 
> diff --git a/arch/arm/boot/dts/Makefile b/arch/arm/boot/dts/Makefile
> index c1ce813..a2b6520 100644
> --- a/arch/arm/boot/dts/Makefile
> +++ b/arch/arm/boot/dts/Makefile
> @@ -37,6 +37,7 @@ dtb-$(CONFIG_ARCH_KIRKWOOD) += kirkwood-dns320.dtb \
>  	kirkwood-km_kirkwood.dtb \
>  	kirkwood-lschlv2.dtb \
>  	kirkwood-lsxhl.dtb \
> +	kirkwood-topkick.dtb \
>  	kirkwood-ts219-6281.dtb \
>  	kirkwood-ts219-6282.dtb
>  dtb-$(CONFIG_ARCH_MSM) += msm8660-surf.dtb \
> diff --git a/arch/arm/boot/dts/kirkwood-topkick.dts b/arch/arm/boot/dts/kirkwood-topkick.dts
> new file mode 100644
> index 0000000..c0de5a7
> --- /dev/null
> +++ b/arch/arm/boot/dts/kirkwood-topkick.dts
> @@ -0,0 +1,85 @@
> +/dts-v1/;
> +
> +/include/ "kirkwood.dtsi"
> +
> +/ {
> +	model = "Univeral Scientific Industrial Co. Topkick-1281P2";
> +	compatible = "usi,topkick-1281P2", "usi,topkick", "marvell,kirkwood-88f6282", "marvell,kirkwood";
> +
> +	memory {
> +		device_type = "memory";
> +		reg = <0x00000000 0x10000000>;
> +	};
> +
> +	chosen {
> +		bootargs = "console=ttyS0,115200n8 earlyprintk";
> +	};
> +
> +	ocp at f1000000 {
> +		serial at 12000 {
> +			clock-frequency = <200000000>;
> +			status = "ok";
> +		};
> +
> +		nand at 3000000 {
> +			status = "okay";
> +
> +			partition at 0 {
> +				label = "u-boot";
> +				reg = <0x0000000 0x180000>;
> +			};
> +
> +			partition at 180000 {
> +				label = "u-boot env";
> +				reg = <0x0180000 0x20000>;
> +			};
> +
> +			partition at 200000 {
> +				label = "uImage";
> +				reg = <0x0200000 0x600000>;
> +			};
> +
> +			partition at 800000 {
> +				label = "uInitrd";
> +				reg = <0x0800000 0x1000000>;
> +			};
> +
> +			partition at 1800000 {
> +				label = "rootfs";
> +				reg = <0x1800000 0xe800000>;
> +			};
> +		};
> +
> +		sata at 80000 {
> +			status = "okay";
> +			nr-ports = <1>;
> +		};
> +	};
> +
> +	gpio-leds {
> +		compatible = "gpio-leds";
> +
> +		disk {
> +			label = "topkick:yellow:disk";
> +			gpios = <&gpio0 21 1>;
> +			linux,default-trigger = "ide-disk";
> +		};
> +		system2 {
> +			label = "topkick:red:system";
> +			gpios = <&gpio1 5 1>;
> +		};
> +		system {
> +			label = "topkick:blue:system";
> +			gpios = <&gpio1 6 1>;
> +			default-state = "on";
> +		};
> +		wifi {
> +			label = "topkick:green:wifi";
> +			gpios = <&gpio1 7 1>;
> +		};
> +		wifi2 {
> +			label = "topkick:yellow:wifi";
> +			gpios = <&gpio1 16 1>;
> +		};
> +	};
> +};
> diff --git a/arch/arm/configs/kirkwood_defconfig b/arch/arm/configs/kirkwood_defconfig
> index 74eee0c..72d6c28 100644
> --- a/arch/arm/configs/kirkwood_defconfig
> +++ b/arch/arm/configs/kirkwood_defconfig
> @@ -27,6 +27,7 @@ CONFIG_MACH_GOFLEXNET_DT=y
>  CONFIG_MACH_LSXL_DT=y
>  CONFIG_MACH_IOMEGA_IX2_200_DT=y
>  CONFIG_MACH_KM_KIRKWOOD_DT=y
> +CONFIG_MACH_TOPKICK_DT=y
>  CONFIG_MACH_TS219=y
>  CONFIG_MACH_TS41X=y
>  CONFIG_MACH_DOCKSTAR=y
> diff --git a/arch/arm/mach-kirkwood/Kconfig b/arch/arm/mach-kirkwood/Kconfig
> index 50bca50..b8b5c22 100644
> --- a/arch/arm/mach-kirkwood/Kconfig
> +++ b/arch/arm/mach-kirkwood/Kconfig
> @@ -130,6 +130,13 @@ config MACH_KM_KIRKWOOD_DT
>  	  Say 'Y' here if you want your kernel to support the
>  	  Keymile Kirkwood Reference Desgin, using Flattened Device Tree.
>  
> +config MACH_TOPKICK_DT
> +	bool "USI Topkick (Flattened Device Tree)"
> +	select ARCH_KIRKWOOD_DT
> +	help
> +	  Say 'Y' here if you want your kernel to support the
> +	  USI Topkick, using Flattened Device Tree
> +
>  config MACH_TS219
>  	bool "QNAP TS-110, TS-119, TS-119P+, TS-210, TS-219, TS-219P and TS-219P+ Turbo NAS"
>  	help
> diff --git a/arch/arm/mach-kirkwood/Makefile b/arch/arm/mach-kirkwood/Makefile
> index 294779f..bd463df 100644
> --- a/arch/arm/mach-kirkwood/Makefile
> +++ b/arch/arm/mach-kirkwood/Makefile
> @@ -31,3 +31,4 @@ obj-$(CONFIG_MACH_GOFLEXNET_DT)		+= board-goflexnet.o
>  obj-$(CONFIG_MACH_LSXL_DT)		+= board-lsxl.o
>  obj-$(CONFIG_MACH_IOMEGA_IX2_200_DT)	+= board-iomega_ix2_200.o
>  obj-$(CONFIG_MACH_KM_KIRKWOOD_DT)	+= board-km_kirkwood.o
> +obj-$(CONFIG_MACH_TOPKICK_DT)		+= board-usi_topkick.o
> diff --git a/arch/arm/mach-kirkwood/board-dt.c b/arch/arm/mach-kirkwood/board-dt.c
> index 70c5a28..33e9217 100644
> --- a/arch/arm/mach-kirkwood/board-dt.c
> +++ b/arch/arm/mach-kirkwood/board-dt.c
> @@ -96,6 +96,9 @@ static void __init kirkwood_dt_init(void)
>  	if (of_machine_is_compatible("keymile,km_kirkwood"))
>  		km_kirkwood_init();
>  
> +	if (of_machine_is_compatible("usi,topkick"))
> +		usi_topkick_init();
> +
>  	of_platform_populate(NULL, kirkwood_dt_match_table,
>  			     kirkwood_auxdata_lookup, NULL);
>  }
> @@ -112,6 +115,7 @@ static const char *kirkwood_dt_board_compat[] = {
>  	"buffalo,lsxl",
>  	"iom,ix2-200",
>  	"keymile,km_kirkwood",
> +	"usi,topkick",
>  	NULL
>  };
>  
> diff --git a/arch/arm/mach-kirkwood/board-usi_topkick.c b/arch/arm/mach-kirkwood/board-usi_topkick.c
> new file mode 100644
> index 0000000..e2ec9d8
> --- /dev/null
> +++ b/arch/arm/mach-kirkwood/board-usi_topkick.c
> @@ -0,0 +1,82 @@
> +/*
> + * Copyright 2012 (C), Jason Cooper <jason at lakedaemon.net>
> + *
> + * arch/arm/mach-kirkwood/board-usi_topkick.c
> + *
> + * USI Topkick Init for drivers not converted to flattened device tree yet.
> + *
> + * This file is licensed under the terms of the GNU General Public
> + * License version 2.  This program is licensed "as is" without any
> + * warranty of any kind, whether express or implied.
> + */
> +
> +#include <linux/kernel.h>
> +#include <linux/init.h>
> +#include <linux/mv643xx_eth.h>
> +#include <linux/gpio.h>
> +#include <linux/platform_data/mmc-mvsdio.h>
> +#include "common.h"
> +#include "mpp.h"
> +
> +static struct mv643xx_eth_platform_data topkick_ge00_data = {
> +	.phy_addr	= MV643XX_ETH_PHY_ADDR(0),
> +};
> +
> +static struct mvsdio_platform_data topkick_mvsdio_data = {
> +	/* unfortunately the CD signal has not been connected */
> +};
> +
> +/*
> + * GPIO LED layout
> + *
> + *       /-SYS_LED(2)
> + *       |
> + *       |   /-DISK_LED
> + *       |   |
> + *       |   |   /-WLAN_LED(2)
> + *       |   |   |
> + * [SW] [*] [*] [*]
> + */
> +
> +/*
> + * Switch positions
> + *
> + *     /-SW_LEFT
> + *     |
> + *     |   /-SW_IDLE
> + *     |   |
> + *     |   |   /-SW_RIGHT
> + *     |   |   |
> + * PS [L] [I] [R] LEDS
> + */
> +
> +static unsigned int topkick_mpp_config[] __initdata = {
> +	MPP21_GPIO,	/* DISK_LED           (low active) - yellow */
> +	MPP36_GPIO,	/* SATA0 power enable (high active) */
> +	MPP37_GPIO,	/* SYS_LED2           (low active) - red */
> +	MPP38_GPIO,	/* SYS_LED            (low active) - blue */
> +	MPP39_GPIO,	/* WLAN_LED           (low active) - green */
> +	MPP43_GPIO,	/* SW_LEFT            (low active) */
> +	MPP44_GPIO,     /* SW_RIGHT           (low active) */
> +	MPP45_GPIO,	/* SW_IDLE            (low active) */
> +	MPP46_GPIO,     /* SW_LEFT            (low active) */
> +	MPP48_GPIO,	/* WLAN_LED2          (low active) - yellow */
> +	0
> +};
> +
> +#define TOPKICK_SATA0_PWR_ENABLE 36
> +
> +void __init usi_topkick_init(void)
> +{
> +	/*
> +	 * Basic setup. Needs to be called early.
> +	 */
> +	kirkwood_mpp_conf(topkick_mpp_config);
> +
> +	/* SATA0 power enable */
> +	gpio_set_value(TOPKICK_SATA0_PWR_ENABLE, 1);
> +
> +	kirkwood_ehci_init();
> +	kirkwood_ge00_init(&topkick_ge00_data);
> +	kirkwood_sdio_init(&topkick_mvsdio_data);
> +}
> diff --git a/arch/arm/mach-kirkwood/common.h b/arch/arm/mach-kirkwood/common.h
> index bcffd7c..46b47d1 100644
> --- a/arch/arm/mach-kirkwood/common.h
> +++ b/arch/arm/mach-kirkwood/common.h
> @@ -112,6 +112,12 @@ void km_kirkwood_init(void);
>  static inline void km_kirkwood_init(void) {};
>  #endif
>  
> +#ifdef CONFIG_MACH_TOPKICK_DT
> +void usi_topkick_init(void);
> +#else
> +static inline void usi_topkick_init(void) {};
> +#endif
> +
>  /* early init functions not converted to fdt yet */
>  char *kirkwood_id(void);
>  void kirkwood_l2_init(void);
> -- 
> 1.7.12.4
> 

Hi Jason

Looks good now.

Acked-by: Andrew Lunn <andrew at lunn.ch>

It would be nice if somebody could add a 

Tested-by: 

since a few of us have this hardware, thanks to donations from
Marvell.

How do you want to handle USB conversion to DT, and hopefully soon
pinctrl? 

	 Andrew



More information about the linux-arm-kernel mailing list