imx: usb: ehci-mx6: reg accessor cleanups
Subsystems (2)
PATCH v3 1/3 imx: usb: ehci-mx6: reg accessor cleanups
Cleanup read/write register access, use clr/set bits_le32
---
Changes for V2:
Split from patch imx: usb: ehci-mx6: add usb support for imx7d soc Changes for V3: Resend
drivers/usb/host/ehci-mx6.c | 51 ++++++++++++++++----------------------------- 1 file changed, 18 insertions(+), 33 deletions(-)
drivers/usb/host/ehci-mx6.c +18 -33
@@ -67,7 +67,7 @@ static void usb_internal_phy_clock_gate(int index, int on) phy_reg = (void __iomem *)phy_bases[index]; phy_reg += on ?USBPHY_CTRL_CLR :USBPHY_CTRL_SET ; -__raw_writel (USBPHY_CTRL_CLKGATE , phy_reg); +writel (USBPHY_CTRL_CLKGATE , phy_reg); }static void usb_power_config (int index)
@@ -100,14 +100,14 @@ static void usb_power_config(int index)* is totally controlled by IC, so the Software only needs * to enable them at initializtion. */ -__raw_writel (ANADIG_USB2_CHRG_DETECT_EN_B | +writel (ANADIG_USB2_CHRG_DETECT_EN_B |ANADIG_USB2_CHRG_DETECT_CHK_CHRG_B , chrg_detect); -__raw_writel (ANADIG_USB2_PLL_480_CTRL_BYPASS , +writel (ANADIG_USB2_PLL_480_CTRL_BYPASS , pll_480_ctrl_clr); -__raw_writel (ANADIG_USB2_PLL_480_CTRL_ENABLE | +writel (ANADIG_USB2_PLL_480_CTRL_ENABLE |ANADIG_USB2_PLL_480_CTRL_POWER |ANADIG_USB2_PLL_480_CTRL_EN_USB_CLKS , pll_480_ctrl_set);
@@ -119,7 +119,6 @@ static int usb_phy_enable(int index, struct usb_ehci *ehci)void __iomem *phy_reg;void __iomem *phy_ctrl;void __iomem *usb_cmd; -u32 val;if (index >=ARRAY_SIZE (phy_bases))return 0 ;
@@ -129,36 +128,27 @@ static int usb_phy_enable(int index, struct usb_ehci *ehci) usb_cmd = (void __iomem *)&ehci->usbcmd;/* Stop then Reset */ - val =__raw_readl (usb_cmd); - val &= ~UCMD_RUN_STOP ; -__raw_writel (val, usb_cmd); -while (__raw_readl (usb_cmd) &UCMD_RUN_STOP ) +clrbits_le32 (usb_cmd,UCMD_RUN_STOP ); +while (readl (usb_cmd) &UCMD_RUN_STOP ) ; - val =__raw_readl (usb_cmd); - val |=UCMD_RESET ; -__raw_writel (val, usb_cmd); -while (__raw_readl (usb_cmd) &UCMD_RESET ) +setbits_le32 (usb_cmd,UCMD_RESET ); +while (readl (usb_cmd) &UCMD_RESET ) ;/* Reset USBPHY module */ - val =__raw_readl (phy_ctrl); - val |=USBPHY_CTRL_SFTRST ; -__raw_writel (val, phy_ctrl); +setbits_le32 (phy_ctrl,USBPHY_CTRL_SFTRST );udelay (10 );/* Remove CLKGATE and SFTRST */ - val =__raw_readl (phy_ctrl); - val &= ~(USBPHY_CTRL_CLKGATE |USBPHY_CTRL_SFTRST ); -__raw_writel (val, phy_ctrl); +clrbits_le32 (phy_ctrl,USBPHY_CTRL_CLKGATE |USBPHY_CTRL_SFTRST );udelay (10 );/* Power up the PHY */ -__raw_writel (0 , phy_reg +USBPHY_PWD ); +writel (0 , phy_reg +USBPHY_PWD );/* enable FS/LS device */ - val =__raw_readl (phy_ctrl); - val |= (USBPHY_CTRL_ENUTMILEVEL2 |USBPHY_CTRL_ENUTMILEVEL3 ); -__raw_writel (val, phy_ctrl); +setbits_le32 (phy_ctrl,USBPHY_CTRL_ENUTMILEVEL2 | +USBPHY_CTRL_ENUTMILEVEL3 );return 0 ; }
@@ -177,20 +167,15 @@ static void usb_oc_config(int index)struct usbnc_regs *usbnc = (struct usbnc_regs *)(USB_BASE_ADDR +USB_OTHERREGS_OFFSET );void __iomem *ctrl = (void __iomem *)(&usbnc->ctrl[index]); -u32 val; - val =__raw_readl (ctrl);#if CONFIG_MACH_TYPE ==MACH_TYPE_MX6Q_ARM2 /* mx6qarm2 seems to required a different setting*/ - val &= ~UCTRL_OVER_CUR_POL ; +clrbits_le32 (ctrl,UCTRL_OVER_CUR_POL );#else - val |=UCTRL_OVER_CUR_POL ; +setbits_le32 (ctrl,UCTRL_OVER_CUR_POL );#endif -__raw_writel (val, ctrl); - val =__raw_readl (ctrl); - val |=UCTRL_OVER_CUR_DIS ; -__raw_writel (val, ctrl); +setbits_le32 (ctrl,UCTRL_OVER_CUR_DIS ); }int usb_phy_mode (int port)
@@ -202,7 +187,7 @@ int usb_phy_mode(int port) phy_reg = (void __iomem *)phy_bases[port]; phy_ctrl = (void __iomem *)(phy_reg +USBPHY_CTRL ); - val =__raw_readl (phy_ctrl); + val =readl (phy_ctrl);if (val &USBPHY_CTRL_OTG_ID )return USB_INIT_DEVICE ;
@@ -257,7 +242,7 @@ int ehci_hcd_init(int index, enum usb_init_type init,if (type ==USB_INIT_DEVICE )return 0 ;setbits_le32 (&ehci->usbmode,CM_HOST ); -__raw_writel (CONFIG_MXC_USB_PORTSC , &ehci->portsc); +writel (CONFIG_MXC_USB_PORTSC , &ehci->portsc);setbits_le32 (&ehci->portsc,USB_EN );mdelay (10 );
Signature · 1 line
2.1.4
PATCH v3 2/3 imx: usb: ehci-mx6: document board specific functions
Document target board specific functions
board_ehci_hcd_init - override usb phy mode board_ehci_hcd_init - set usb vbus voltage board_ehci_power - enables/disables usb vbus voltage
---
Changes for V2:
Split from patch imx: usb: ehci-mx6: add usb support for imx7d soc Changes for V3:
Fix kerneldoc style for comment blocks
drivers/usb/host/ehci-mx6.c | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+)
drivers/usb/host/ehci-mx6.c +31 -0
@@ -195,16 +195,47 @@ int usb_phy_mode(int port)return USB_INIT_HOST ; } +/** +* board_ehci_hcd_init - override usb phy mode +* @port: usb host/otg port +* +* Target board specific, override usb_phy_mode. +* When usb-otg is used as usb host port, iomux pad usb_otg_id can be +* left disconnected in this case usb_phy_mode will not be able to identify +* the phy mode that usb port is used. +* Machine file overrides board_usb_phy_mode. +* +* Return: USB_INIT_DEVICE or USB_INIT_HOST +*/ int __weak board_usb_phy_mode (int port) {return usb_phy_mode (port); } +/** +* board_ehci_hcd_init - set usb vbus voltage +* @port: usb otg port +* +* Target board specific, setup iomux pad to setup supply vbus voltage +* for usb otg port. Machine board file overrides board_ehci_hcd_init +* +* Return: 0 Success +*/ int __weak board_ehci_hcd_init (int port) {return 0 ; } +/** +* board_ehci_power - enables/disables usb vbus voltage +* @port: usb otg port +* @on: on/off vbus voltage +* +* Enables/disables supply vbus voltage for usb otg port. +* Machine board file overrides board_ehci_power +* +* Return: 0 Success +*/ int __weak board_ehci_power (int port,int on) {return 0 ;
Signature · 1 line
2.1.4
PATCH v3 3/3 imx: usb: ehci-mx6: add usb support for imx7d soc
In reply to Adrian AlonsoExtend ehci-mx6 usb driver to support imx7d usb
---
Changes for V2:
Add usb_power_config and usb_phy_mode for usb otg id detection for imx7d Changes for V3:
Fix identation for usbnc_regs struct
drivers/usb/host/Makefile | 1 + drivers/usb/host/ehci-mx6.c | 100 +++++++++++++++++++++++++++++++++++--------- 2 files changed, 82 insertions(+), 19 deletions(-)
drivers/usb/host/Makefile +1 -0
@@ -36,6 +36,7 @@ obj-$(CONFIG_USB_EHCI_MXC) += ehci-mxc.o obj-$(CONFIG_USB_EHCI_MXS) += ehci-mxs.o obj-$(CONFIG_USB_EHCI_MX5) += ehci-mx5.o obj-$(CONFIG_USB_EHCI_MX6) += ehci-mx6.o +obj-$(CONFIG_USB_EHCI_MX7) += ehci-mx6.o obj-$(CONFIG_USB_EHCI_OMAP) += ehci-omap.o obj-$(CONFIG_USB_EHCI_PPC4XX) += ehci-ppc4xx.o obj-$(CONFIG_USB_EHCI_MARVELL) += ehci-marvell.o
drivers/usb/host/ehci-mx6.c +81 -19
158 lines not on this page · raw message
Signature · 1 line
2.1.4
PATCH v3 1/3 imx: usb: ehci-mx6: reg accessor cleanups
In reply to Adrian AlonsoQuoted 3 lines · Adrian Alonso
Cleanup read/write register access, use clr/set
bits_le32Signed-off-by Adrian Alonso <[email protected]>
Applied all to u-boot-usb/master, thanks!
Best regards,
Marek Vasut