Subject: [PATCH] support for Seagate DockStar

From: [email-masked] (Thomas Weber)
Date: Wed, 15 Sep 2010 09:07:24 +0200

Am 05.08.2010 23:38, schrieb Eric Cooper:
> This patch adds support for the Seagate FreeAgent DockStar, a Marvell
> Sheevaplug derivative.  I have already registered the DOCKSTAR machine
> ID.
> 
> Signed-off-by: Eric Cooper <[email-masked]>
> ---
>  arch/arm/mach-kirkwood/Kconfig          |    6 ++
>  arch/arm/mach-kirkwood/Makefile         |    1 +
>  arch/arm/mach-kirkwood/dockstar-setup.c |  112 +++++++++++++++++++++++++++++++
>  arch/arm/tools/mach-types               |    1 +
>  4 files changed, 120 insertions(+), 0 deletions(-)
>  create mode 100644 arch/arm/mach-kirkwood/dockstar-setup.c
> 
> diff --git a/arch/arm/mach-kirkwood/Kconfig b/arch/arm/mach-kirkwood/Kconfig
> index 29b2163..74d832f 100644
> --- a/arch/arm/mach-kirkwood/Kconfig
> +++ b/arch/arm/mach-kirkwood/Kconfig
> @@ -58,6 +58,12 @@ config MACH_TS41X
>  	  QNAP TS-410, TS-410U, TS-419P and TS-419U Turbo NAS
>  	  devices.
>  
> +config MACH_DOCKSTAR
> +	bool "Seagate FreeAgent DockStar"
> +	help
> +	  Say 'Y' here if you want your kernel to support the
> +	  Seagate FreeAgent DockStar.
> +
>  config MACH_OPENRD
>          bool
>  
> diff --git a/arch/arm/mach-kirkwood/Makefile b/arch/arm/mach-kirkwood/Makefile
> index c0cd5d3..025b256 100644
> --- a/arch/arm/mach-kirkwood/Makefile
> +++ b/arch/arm/mach-kirkwood/Makefile
> @@ -9,6 +9,7 @@ obj-$(CONFIG_MACH_ESATA_SHEEVAPLUG)	+= sheevaplug-setup.o
>  obj-$(CONFIG_MACH_GURUPLUG)		+= guruplug-setup.o
>  obj-$(CONFIG_MACH_TS219)		+= ts219-setup.o tsx1x-common.o
>  obj-$(CONFIG_MACH_TS41X)		+= ts41x-setup.o tsx1x-common.o
> +obj-$(CONFIG_MACH_DOCKSTAR)		+= dockstar-setup.o
>  obj-$(CONFIG_MACH_OPENRD)		+= openrd-setup.o
>  obj-$(CONFIG_MACH_NETSPACE_V2)		+= netspace_v2-setup.o
>  obj-$(CONFIG_MACH_INETSPACE_V2)		+= netspace_v2-setup.o
> diff --git a/arch/arm/mach-kirkwood/dockstar-setup.c b/arch/arm/mach-kirkwood/dockstar-setup.c
> new file mode 100644
> index 0000000..a90475d
> --- /dev/null
> +++ b/arch/arm/mach-kirkwood/dockstar-setup.c
> @@ -0,0 +1,112 @@
> +/*
> + * arch/arm/mach-kirkwood/dockstar-setup.c
> + *
> + * Seagate FreeAgent DockStar Setup
> + *
> + * 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/platform_device.h>
> +#include <linux/ata_platform.h>
> +#include <linux/mtd/partitions.h>
> +#include <linux/mv643xx_eth.h>
> +#include <linux/gpio.h>
> +#include <linux/leds.h>
> +#include <asm/mach-types.h>
> +#include <asm/mach/arch.h>
> +#include <mach/kirkwood.h>
> +#include <plat/mvsdio.h>
> +#include "common.h"
> +#include "mpp.h"
> +
> +static struct mtd_partition dockstar_nand_parts[] = {
> +	{
> +		.name = "u-boot",
> +		.offset = 0,
> +		.size = SZ_1M
> +	}, {
> +		.name = "uImage",
> +		.offset = MTDPART_OFS_NXTBLK,
> +		.size = SZ_4M
> +	}, {
> +		.name = "root",
> +		.offset = MTDPART_OFS_NXTBLK,
> +		.size = MTDPART_SIZ_FULL
> +	},
> +};
> +
> +static struct mv643xx_eth_platform_data dockstar_ge00_data = {
> +	.phy_addr	= MV643XX_ETH_PHY_ADDR(0),
> +};
> +
> +static struct gpio_led dockstar_led_pins[] = {
> +	{
> +		.name			= "dockstar:green:health",
> +		.default_trigger	= "default-on",
> +		.gpio			= 46,
> +		.active_low		= 1,
> +	},
> +	{
> +		.name			= "dockstar:orange:misc",
> +		.default_trigger	= "none",
> +		.gpio			= 47,
> +		.active_low		= 1,
> +	},
> +};
> +
> +static struct gpio_led_platform_data dockstar_led_data = {
> +	.leds		= dockstar_led_pins,
> +	.num_leds	= ARRAY_SIZE(dockstar_led_pins),
> +};
> +
> +static struct platform_device dockstar_leds = {
> +	.name	= "leds-gpio",
> +	.id	= -1,
> +	.dev	= {
> +		.platform_data	= &dockstar_led_data,
> +	}
> +};
> +
> +static unsigned int dockstar_mpp_config[] __initdata = {
> +	MPP29_GPIO,	/* USB Power Enable */
> +	MPP46_GPIO,	/* LED green */
> +	MPP47_GPIO,	/* LED orange */
> +	0
> +};
> +
> +static void __init dockstar_init(void)
> +{
> +	/*
> +	 * Basic setup. Needs to be called early.
> +	 */
> +	kirkwood_init();
> +
> +	/* setup gpio pin select */
> +	kirkwood_mpp_conf(dockstar_mpp_config);
> +
> +	kirkwood_uart0_init();
> +	kirkwood_nand_init(ARRAY_AND_SIZE(dockstar_nand_parts), 25);
> +
> +	if (gpio_request(29, "USB Power Enable") != 0 ||
> +	    gpio_direction_output(29, 1) != 0)
> +		printk(KERN_ERR "can't set up GPIO 29 (USB Power Enable)\n");

> +	kirkwood_ehci_init();
> +
> +	kirkwood_ge00_init(&dockstar_ge00_data);
> +
> +	platform_device_register(&dockstar_leds);
> +}
> +
> +MACHINE_START(DOCKSTAR, "Seagate FreeAgent DockStar")
> +	.phys_io	= KIRKWOOD_REGS_PHYS_BASE,
> +	.io_pg_offst	= ((KIRKWOOD_REGS_VIRT_BASE) >> 18) & 0xfffc,
> +	.boot_params	= 0x00000100,
> +	.init_machine	= dockstar_init,
> +	.map_io		= kirkwood_map_io,
> +	.init_irq	= kirkwood_init_irq,
> +	.timer		= &kirkwood_timer,
> +MACHINE_END
> diff --git a/arch/arm/tools/mach-types b/arch/arm/tools/mach-types
> index 48cbdcb..8d56837 100644
> --- a/arch/arm/tools/mach-types
> +++ b/arch/arm/tools/mach-types
> @@ -2950,3 +2950,4 @@ davinci_dm365_dvr	MACH_DAVINCI_DM365_DVR	DAVINCI_DM365_DVR	2963
>  netviz			MACH_NETVIZ		NETVIZ			2964
>  flexibity		MACH_FLEXIBITY		FLEXIBITY		2965
>  wlan_computer		MACH_WLAN_COMPUTER	WLAN_COMPUTER		2966
> +dockstar		MACH_DOCKSTAR		DOCKSTAR		2998

Hello Eric,

please remove the changes to the mach-types entry.
And can you add an entry to the kirkwood_defconfig.

Thomas