[PATCH] ARM: Kirkwood: new board USI Topkick
Jason Cooper
jason at lakedaemon.net
Sat Oct 20 07:22:26 EDT 2012
On Sat, Oct 20, 2012 at 10:58:34AM +0200, Andrew Lunn wrote:
> > +++ 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";
>
> Hi Jason
>
> Nice to see the correct Kirkwood variant in DT. This is going to be an
> issue for pinctrl sometime soon.
>
> > +
> > + sata at 80000 {
> > + status = "okay";
> > + nr-ports = <2>;
>
> Could nr-ports be 1? It saves a little bit of memory. There only seems
> to be one SATA interface available, no external SATA port. However, if
> the one used is the second SATA, then 2 is required.
Yes, I caught this right after <send>, and mentioned it on irc for v2.
It was part of my, "did they wire it up to sata1, instead?" effort.
Sebastian was a huge help getting sata and the leds working.
>
> > 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..02ba4aa
> > --- /dev/null
> > +++ b/arch/arm/mach-kirkwood/board-usi_topkick.c
> > @@ -0,0 +1,93 @@
> > +/*
> > + * Copyright 2012 (C), Jason Cooper <jason at lakedaemon.net>
> > + *
> > + * arch/arm/mach-kirkwood/board-dreamplug.c
> > + *
> > + * Marvell DreamPlug Reference Board 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/platform_device.h>
> > +#include <linux/ata_platform.h>
> > +#include <linux/mv643xx_eth.h>
> > +#include <linux/of.h>
> > +#include <linux/of_address.h>
> > +#include <linux/of_fdt.h>
> > +#include <linux/of_irq.h>
> > +#include <linux/of_platform.h>
> > +#include <linux/gpio.h>
> > +#include <linux/mtd/physmap.h>
> > +#include <linux/spi/flash.h>
> > +#include <linux/spi/spi.h>
> > +#include <asm/mach-types.h>
> > +#include <asm/mach/arch.h>
> > +#include <asm/mach/map.h>
> > +#include <mach/kirkwood.h>
> > +#include <mach/bridge-regs.h>
> > +#include <linux/platform_data/mmc-mvsdio.h>
> > +#include "common.h"
> > +#include "mpp.h"
>
> A lot of these header files are not needed. Please could you remove
> the unused ones.
Sure, and I'll go back and double check dreamplug. ;-)
>
> > +
> > +static struct mv643xx_eth_platform_data topkick_ge00_data = {
> > + .phy_addr = MV643XX_ETH_PHY_ADDR(0),
> > +};
> > +
> > +/*
> > + * 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
>
> This assumes the boot loader is configuring all the other pins as
> needed. It would be safer to explicitly configure the SATA pins,
> Ethernet pins etc. However, maybe that should wait until we have
> pinctrl, which makes it a lot easier.
I agree.
>
> > +};
> > +
> > +#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);
>
> It would be nice to be able to do that in DT. Does such a binding
> already exist? Its something we need quite often in kirkwood, and i
> guess other machines architectures as well.
I was thinking about that and how to handle it once we are down to
board-dt.c. At the very least, we can expose the pin in sysfs and have
an initrd enable it for booting from HDD.
The ideal solution would be something similar to gpio-leds, where you
can set default-state = "on". This may already exist for gpios, I
haven't looked yet.
>
> > +
> > + kirkwood_ehci_init();
> > + kirkwood_ge00_init(&topkick_ge00_data);
> > +}
>
> How is the wifi device instantiated? Is it a PCIe device so it
> auto-probed? Or is some explicit instantiation required, say if its an
> SPI device?
I dunno, I don't usually enable wifi on my dreamplug, so I admit I
forgot to look.
>
> It would be good to add this board to kirkwood_defconfig as well.
Yes, already planned for v2.
Thanks for the review.
Jason.
More information about the linux-arm-kernel
mailing list