MIPS: BCM63XX: Expose the USBH/USBD clocks on BCM6328/BCM6368
authorKevin Cernekee <cernekee@gmail.com>
Sat, 23 Jun 2012 04:14:51 +0000 (04:14 +0000)
committerJohn Crispin <blogic@openwrt.org>
Thu, 30 Aug 2012 18:15:52 +0000 (20:15 +0200)
Signed-off-by: Kevin Cernekee <cernekee@gmail.com>
Patchwork: http://patchwork.linux-mips.org/patch/4022/
Signed-off-by: John Crispin <blogic@openwrt.org>
arch/mips/bcm63xx/clk.c

index 1db48ad..dff79ab 100644 (file)
@@ -160,7 +160,9 @@ static struct clk clk_pcm = {
  */
 static void usbh_set(struct clk *clk, int enable)
 {
-       if (BCMCPU_IS_6348())
+       if (BCMCPU_IS_6328())
+               bcm_hwclock_set(CKCTL_6328_USBH_EN, enable);
+       else if (BCMCPU_IS_6348())
                bcm_hwclock_set(CKCTL_6348_USBH_EN, enable);
        else if (BCMCPU_IS_6368())
                bcm_hwclock_set(CKCTL_6368_USBH_EN, enable);
@@ -170,6 +172,21 @@ static struct clk clk_usbh = {
        .set    = usbh_set,
 };
 
+/*
+ * USB device clock
+ */
+static void usbd_set(struct clk *clk, int enable)
+{
+       if (BCMCPU_IS_6328())
+               bcm_hwclock_set(CKCTL_6328_USBD_EN, enable);
+       else if (BCMCPU_IS_6368())
+               bcm_hwclock_set(CKCTL_6368_USBD_EN, enable);
+}
+
+static struct clk clk_usbd = {
+       .set    = usbd_set,
+};
+
 /*
  * SPI clock
  */
@@ -284,6 +301,8 @@ struct clk *clk_get(struct device *dev, const char *id)
                return &clk_ephy;
        if (!strcmp(id, "usbh"))
                return &clk_usbh;
+       if (!strcmp(id, "usbd"))
+               return &clk_usbd;
        if (!strcmp(id, "spi"))
                return &clk_spi;
        if (!strcmp(id, "xtm"))