Advertisement
Guest User

Untitled

a guest
Mar 24th, 2014
125
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.01 KB | None | 0 0
  1. diff --git a/drivers/usb/chipidea/usbmisc_imx.c b/drivers/usb/chipidea/usbmisc_imx.c
  2. index cd061ab..65fb18d 100644
  3. --- a/drivers/usb/chipidea/usbmisc_imx.c
  4. +++ b/drivers/usb/chipidea/usbmisc_imx.c
  5. @@ -32,6 +32,10 @@
  6. #define MX53_BM_OVER_CUR_DIS_OTG BIT(8)
  7. #define MX53_BM_OVER_CUR_DIS_UHx BIT(30)
  8.  
  9. +#define MXC_USB_PHY_CTR_FUNC2_OFFSET 0xc
  10. +#define MX5_USB_UTMI_PHYCTRL1_PLLDIV_MASK 0x3
  11. +#define MX51_USB_PLL_DIV_24_MHZ 0x01
  12. +
  13. #define MX6_BM_OVER_CUR_DIS BIT(7)
  14.  
  15. struct usbmisc_ops {
  16. @@ -139,6 +143,51 @@ static int usbmisc_imx53_init(struct imx_usbmisc_data *data)
  17. return 0;
  18. }
  19.  
  20. +static int usbmisc_imx51_init(struct imx_usbmisc_data *data)
  21. +{
  22. + void __iomem *reg = NULL;
  23. + unsigned long flags;
  24. + u32 val = 0;
  25. +
  26. + if (data->index > 3)
  27. + return -EINVAL;
  28. +
  29. + /* Set the PHY clock to 24 MHz */
  30. + reg = usbmisc->base + MXC_USB_PHY_CTR_FUNC2_OFFSET;
  31. + val = readl(reg);
  32. +
  33. + val &= ~MX5_USB_UTMI_PHYCTRL1_PLLDIV_MASK;
  34. + val |= MX51_USB_PLL_DIV_24_MHZ;
  35. + writel(val, usbmisc->base + MXC_USB_PHY_CTR_FUNC2_OFFSET);
  36. +
  37. + if (data->disable_oc) {
  38. + spin_lock_irqsave(&usbmisc->lock, flags);
  39. + switch (data->index) {
  40. + case 0:
  41. + reg = usbmisc->base + MX53_USB_OTG_PHY_CTRL_0_OFFSET;
  42. + val = readl(reg) | MX53_BM_OVER_CUR_DIS_OTG;
  43. + break;
  44. + case 1:
  45. + reg = usbmisc->base + MX53_USB_OTG_PHY_CTRL_0_OFFSET;
  46. + val = readl(reg) | MX53_BM_OVER_CUR_DIS_H1;
  47. + break;
  48. + case 2:
  49. + reg = usbmisc->base + MX53_USB_UH2_CTRL_OFFSET;
  50. + val = readl(reg) | MX53_BM_OVER_CUR_DIS_UHx;
  51. + break;
  52. + case 3:
  53. + reg = usbmisc->base + MX53_USB_UH3_CTRL_OFFSET;
  54. + val = readl(reg) | MX53_BM_OVER_CUR_DIS_UHx;
  55. + break;
  56. + }
  57. + if (reg && val)
  58. + writel(val, reg);
  59. + spin_unlock_irqrestore(&usbmisc->lock, flags);
  60. + }
  61. +
  62. + return 0;
  63. +}
  64. +
  65. static int usbmisc_imx6q_init(struct imx_usbmisc_data *data)
  66. {
  67. unsigned long flags;
  68. @@ -166,6 +215,10 @@ static const struct usbmisc_ops imx27_usbmisc_ops = {
  69. .init = usbmisc_imx27_init,
  70. };
  71.  
  72. +static const struct usbmisc_ops imx51_usbmisc_ops = {
  73. + .init = usbmisc_imx51_init,
  74. +};
  75. +
  76. static const struct usbmisc_ops imx53_usbmisc_ops = {
  77. .init = usbmisc_imx53_init,
  78. };
  79. @@ -205,7 +258,7 @@ static const struct of_device_id usbmisc_imx_dt_ids[] = {
  80. },
  81. {
  82. .compatible = "fsl,imx51-usbmisc",
  83. - .data = &imx53_usbmisc_ops,
  84. + .data = &imx51_usbmisc_ops,
  85. },
  86. {
  87. .compatible = "fsl,imx53-usbmisc",
  88. (END)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement