usb: gadget: renesas_usbhs: support otg pin control
Kuninori Morimoto [Tue, 11 Oct 2011 05:06:12 +0000 (22:06 -0700)]
some renesas_usbhs device is supporting OTG external device interface.
In that device, it is necessary to control PWEN/EXTLP on DVSTCTR.
This patch support it.
But renesas_usbhs driver doesn't have OTG support for now.

Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Signed-off-by: Felipe Balbi <balbi@ti.com>

arch/arm/mach-shmobile/board-mackerel.c
drivers/usb/renesas_usbhs/common.c
include/linux/usb/renesas_usbhs.h

index 0ea71f8..c20612e 100644 (file)
@@ -808,6 +808,7 @@ static struct usbhs_private usbhs1_private = {
                },
                .driver_param = {
                        .buswait_bwait  = 4,
+                       .has_otg        = 1,
                        .pipe_type      = usbhs1_pipe_cfg,
                        .pipe_size      = ARRAY_SIZE(usbhs1_pipe_cfg),
                },
index b327458..1161d78 100644 (file)
@@ -114,6 +114,10 @@ void usbhs_sys_host_ctrl(struct usbhs_priv *priv, int enable)
 {
        u16 mask = DCFM | DRPD | DPRPU;
        u16 val  = DCFM | DRPD;
+       int has_otg = usbhs_get_dparam(priv, has_otg);
+
+       if (has_otg)
+               usbhs_bset(priv, DVSTCTR, (EXTLP | PWEN), (EXTLP | PWEN));
 
        /*
         * if enable
index 040d8bb..e5a40c3 100644 (file)
@@ -136,6 +136,11 @@ struct renesas_usbhs_driver_param {
         * pio <--> dma border.
         */
        int pio_dma_border; /* default is 64byte */
+
+       /*
+        * option:
+        */
+       u32 has_otg:1; /* for controlling PWEN/EXTLP */
 };
 
 /*