Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- diff --git a/drivers/usb/chipidea/usbmisc_imx.c b/drivers/usb/chipidea/usbmisc_imx.c
- index cd061ab..65fb18d 100644
- --- a/drivers/usb/chipidea/usbmisc_imx.c
- +++ b/drivers/usb/chipidea/usbmisc_imx.c
- @@ -32,6 +32,10 @@
- #define MX53_BM_OVER_CUR_DIS_OTG BIT(8)
- #define MX53_BM_OVER_CUR_DIS_UHx BIT(30)
- +#define MXC_USB_PHY_CTR_FUNC2_OFFSET 0xc
- +#define MX5_USB_UTMI_PHYCTRL1_PLLDIV_MASK 0x3
- +#define MX51_USB_PLL_DIV_24_MHZ 0x01
- +
- #define MX6_BM_OVER_CUR_DIS BIT(7)
- struct usbmisc_ops {
- @@ -139,6 +143,51 @@ static int usbmisc_imx53_init(struct imx_usbmisc_data *data)
- return 0;
- }
- +static int usbmisc_imx51_init(struct imx_usbmisc_data *data)
- +{
- + void __iomem *reg = NULL;
- + unsigned long flags;
- + u32 val = 0;
- +
- + if (data->index > 3)
- + return -EINVAL;
- +
- + /* Set the PHY clock to 24 MHz */
- + reg = usbmisc->base + MXC_USB_PHY_CTR_FUNC2_OFFSET;
- + val = readl(reg);
- +
- + val &= ~MX5_USB_UTMI_PHYCTRL1_PLLDIV_MASK;
- + val |= MX51_USB_PLL_DIV_24_MHZ;
- + writel(val, usbmisc->base + MXC_USB_PHY_CTR_FUNC2_OFFSET);
- +
- + if (data->disable_oc) {
- + spin_lock_irqsave(&usbmisc->lock, flags);
- + switch (data->index) {
- + case 0:
- + reg = usbmisc->base + MX53_USB_OTG_PHY_CTRL_0_OFFSET;
- + val = readl(reg) | MX53_BM_OVER_CUR_DIS_OTG;
- + break;
- + case 1:
- + reg = usbmisc->base + MX53_USB_OTG_PHY_CTRL_0_OFFSET;
- + val = readl(reg) | MX53_BM_OVER_CUR_DIS_H1;
- + break;
- + case 2:
- + reg = usbmisc->base + MX53_USB_UH2_CTRL_OFFSET;
- + val = readl(reg) | MX53_BM_OVER_CUR_DIS_UHx;
- + break;
- + case 3:
- + reg = usbmisc->base + MX53_USB_UH3_CTRL_OFFSET;
- + val = readl(reg) | MX53_BM_OVER_CUR_DIS_UHx;
- + break;
- + }
- + if (reg && val)
- + writel(val, reg);
- + spin_unlock_irqrestore(&usbmisc->lock, flags);
- + }
- +
- + return 0;
- +}
- +
- static int usbmisc_imx6q_init(struct imx_usbmisc_data *data)
- {
- unsigned long flags;
- @@ -166,6 +215,10 @@ static const struct usbmisc_ops imx27_usbmisc_ops = {
- .init = usbmisc_imx27_init,
- };
- +static const struct usbmisc_ops imx51_usbmisc_ops = {
- + .init = usbmisc_imx51_init,
- +};
- +
- static const struct usbmisc_ops imx53_usbmisc_ops = {
- .init = usbmisc_imx53_init,
- };
- @@ -205,7 +258,7 @@ static const struct of_device_id usbmisc_imx_dt_ids[] = {
- },
- {
- .compatible = "fsl,imx51-usbmisc",
- - .data = &imx53_usbmisc_ops,
- + .data = &imx51_usbmisc_ops,
- },
- {
- .compatible = "fsl,imx53-usbmisc",
- (END)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement