[ARM] Kirkwood: SheevaPlug USB Power Enable setup
authorNicolas Pitre <nico@cam.org>
Tue, 3 Mar 2009 04:44:41 +0000 (23:44 -0500)
committerNicolas Pitre <nico@cam.org>
Mon, 16 Mar 2009 02:08:33 +0000 (22:08 -0400)
Ideally, the default should be set to 0 and let the EHCI driver turn
it on as needed.  This makes USB usable in the mean time.

Signed-off-by: Nicolas Pitre <nico@marvell.com>
arch/arm/mach-kirkwood/sheevaplug-setup.c

index d48989d..c1cb9f4 100644 (file)
 #include <linux/mtd/nand.h>
 #include <linux/mtd/partitions.h>
 #include <linux/mv643xx_eth.h>
+#include <linux/gpio.h>
 #include <asm/mach-types.h>
 #include <asm/mach/arch.h>
 #include <mach/kirkwood.h>
 #include <plat/mvsdio.h>
 #include <plat/orion_nand.h>
 #include "common.h"
+#include "mpp.h"
 
 static struct mtd_partition sheevaplug_nand_parts[] = {
        {
@@ -71,15 +73,26 @@ static struct mvsdio_platform_data sheevaplug_mvsdio_data = {
        // unfortunately the CD signal has not been connected */
 };
 
+static unsigned int sheevaplug_mpp_config[] __initdata = {
+       MPP29_GPIO,     /* USB Power Enable */
+       0
+};
+
 static void __init sheevaplug_init(void)
 {
        /*
         * Basic setup. Needs to be called early.
         */
        kirkwood_init();
+       kirkwood_mpp_conf(sheevaplug_mpp_config);
 
        kirkwood_uart0_init();
+
+       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(&sheevaplug_ge00_data);
        kirkwood_sdio_init(&sheevaplug_mvsdio_data);