aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMatt Porter <mporter@linaro.org>2013-12-19 09:23:07 -0500
committerFelipe Balbi <balbi@ti.com>2013-12-23 15:31:49 -0500
commitf7e504c72d93d3257969cb1ca9b93116e7dac8b5 (patch)
tree5d805ee8b5a0238aff038c993a0f172181d093f5
parent74084844e8e7d5424e8b512b0ee6d46c72087b56 (diff)
usb: gadget: s3c-hsotg: get phy bus width from phy subsystem
Adds support for querying the phy bus width from the generic phy subsystem. Configure UTMI bus width in GUSBCFG based on this value. Signed-off-by: Matt Porter <mporter@linaro.org> Acked-by: Kishon Vijay Abraham I <kishon@ti.com> Signed-off-by: Felipe Balbi <balbi@ti.com>
-rw-r--r--drivers/usb/gadget/s3c-hsotg.c14
-rw-r--r--drivers/usb/gadget/s3c-hsotg.h1
2 files changed, 14 insertions, 1 deletions
diff --git a/drivers/usb/gadget/s3c-hsotg.c b/drivers/usb/gadget/s3c-hsotg.c
index f39daf7a7dce..c0ff1cb91f20 100644
--- a/drivers/usb/gadget/s3c-hsotg.c
+++ b/drivers/usb/gadget/s3c-hsotg.c
@@ -146,6 +146,7 @@ struct s3c_hsotg_ep {
146 * @regs: The memory area mapped for accessing registers. 146 * @regs: The memory area mapped for accessing registers.
147 * @irq: The IRQ number we are using 147 * @irq: The IRQ number we are using
148 * @supplies: Definition of USB power supplies 148 * @supplies: Definition of USB power supplies
149 * @phyif: PHY interface width
149 * @dedicated_fifos: Set if the hardware has dedicated IN-EP fifos. 150 * @dedicated_fifos: Set if the hardware has dedicated IN-EP fifos.
150 * @num_of_eps: Number of available EPs (excluding EP0) 151 * @num_of_eps: Number of available EPs (excluding EP0)
151 * @debug_root: root directrory for debugfs. 152 * @debug_root: root directrory for debugfs.
@@ -174,6 +175,7 @@ struct s3c_hsotg {
174 175
175 struct regulator_bulk_data supplies[ARRAY_SIZE(s3c_hsotg_supply_names)]; 176 struct regulator_bulk_data supplies[ARRAY_SIZE(s3c_hsotg_supply_names)];
176 177
178 u32 phyif;
177 unsigned int dedicated_fifos:1; 179 unsigned int dedicated_fifos:1;
178 unsigned char num_of_eps; 180 unsigned char num_of_eps;
179 181
@@ -2288,7 +2290,7 @@ static void s3c_hsotg_core_init(struct s3c_hsotg *hsotg)
2288 */ 2290 */
2289 2291
2290 /* set the PLL on, remove the HNP/SRP and set the PHY */ 2292 /* set the PLL on, remove the HNP/SRP and set the PHY */
2291 writel(GUSBCFG_PHYIf16 | GUSBCFG_TOutCal(7) | 2293 writel(hsotg->phyif | GUSBCFG_TOutCal(7) |
2292 (0x5 << 10), hsotg->regs + GUSBCFG); 2294 (0x5 << 10), hsotg->regs + GUSBCFG);
2293 2295
2294 s3c_hsotg_init_fifo(hsotg); 2296 s3c_hsotg_init_fifo(hsotg);
@@ -3646,6 +3648,16 @@ static int s3c_hsotg_probe(struct platform_device *pdev)
3646 goto err_supplies; 3648 goto err_supplies;
3647 } 3649 }
3648 3650
3651 /* Set default UTMI width */
3652 hsotg->phyif = GUSBCFG_PHYIf16;
3653
3654 /*
3655 * If using the generic PHY framework, check if the PHY bus
3656 * width is 8-bit and set the phyif appropriately.
3657 */
3658 if (hsotg->phy && (phy_get_bus_width(phy) == 8))
3659 hsotg->phyif = GUSBCFG_PHYIf8;
3660
3649 if (hsotg->phy) 3661 if (hsotg->phy)
3650 phy_init(hsotg->phy); 3662 phy_init(hsotg->phy);
3651 3663
diff --git a/drivers/usb/gadget/s3c-hsotg.h b/drivers/usb/gadget/s3c-hsotg.h
index d650b1295831..85f549ff8c1f 100644
--- a/drivers/usb/gadget/s3c-hsotg.h
+++ b/drivers/usb/gadget/s3c-hsotg.h
@@ -55,6 +55,7 @@
55#define GUSBCFG_HNPCap (1 << 9) 55#define GUSBCFG_HNPCap (1 << 9)
56#define GUSBCFG_SRPCap (1 << 8) 56#define GUSBCFG_SRPCap (1 << 8)
57#define GUSBCFG_PHYIf16 (1 << 3) 57#define GUSBCFG_PHYIf16 (1 << 3)
58#define GUSBCFG_PHYIf8 (0 << 3)
58#define GUSBCFG_TOutCal_MASK (0x7 << 0) 59#define GUSBCFG_TOutCal_MASK (0x7 << 0)
59#define GUSBCFG_TOutCal_SHIFT (0) 60#define GUSBCFG_TOutCal_SHIFT (0)
60#define GUSBCFG_TOutCal_LIMIT (0x7) 61#define GUSBCFG_TOutCal_LIMIT (0x7)