[PATCH v7 0/6] phy: realtek: usb2: support for RTL9607C USB2 PHY
Rustam Adilov <[email protected]>
| Newsgroups | org.infradead.lists.linux-phy,org.kernel.vger.linux-devicetree,org.kernel.vger.linux-kernel |
|---|---|
| Message-ID | <[email protected]> |
This patch series for Realtek USB2 PHY driver adds support for RTL9607C USB2 PHY. RTL9607C is a big endian MIPS CPU which is quite far from RTD series SoCs supported by realtek usb2 phy driver, but the phy initilization is found to be very indentical in most areas. Most of the code was based on the Realtek's usb driver from the GPL tarball in [1] and adjusted to fit into the realtek usb2 phy driver code format. The patch series was split into smaller patches that add/change something in the driver that are not exactly related to RTL9607C and that also helps for easier review. That also means, patch 5 depends on all the prior patches that come before it. USB2 PHY on RTL9607C is primarly used for its internal OHCI/EHCI controllers. Tested on my RTL9607C based machine as a backport to 6.18 linux in OpenWrt. [1] - https://github.com/jameywine/GPL-for-GP3000/blob/main/linux-5.10.x/arch/mips/rtl9607c/usb.c --- Changelog in v7: - Patch 1 - created a phy_reg_desc struct to get rid of duplicated fields across phy_cfg and phy_reg. - added a default rtd_phy_reg_desc for all existing SoC phy configs. - Patch 2 - moved the read/write to a newly added phy_reg_desc struct. - Patch 3 - added an Acked-by tag from Manivannan Sadhasivam. - Patch 4 - replaced devm_reset_control_array_get*() with devm_reset_control_get*() - Patch 5 - added the read operation after write to FORCE_DISCONNECT_REG. - Patch 6 - added a Reviewed-by tag from Manivannan Sadhasivam. - Link to v6: https://lore.kernel.org/linux-phy/[email protected]/ Changelog in v6: Driver has been refactored with enabled SWAP_IO_SPACE config in mind. - Patch 1 - fixed one line exceeding 80 columns. - Patch 2 - changed to use the introduced read/write functions for reg_wrap_vstatus instead of reg_gusb2phyacc0. - Patch 3 - properly added the review tag from v4 of patch series. - Patch 5 - fixed the lines exceeding 80 columns. - changed msleep(10) to usleep_range(10000, 11000). - changed the read and write functions to use ioread32be instead of __le32 now that we are using them for reg_wrap_vstatus. - Link to v5: https://lore.kernel.org/linux-phy/[email protected]/ Changelog in v5: Mostly addressing LLM review - Patch 1 - changed int to u32 type for new_reg_req and vstatus_busy data fields. - changed comments in rtk_phy_read/write from PHY_NEW_REG_REQ to phy_reg->new_reg_req. - Patch 2 - explained readl/writel native endianess issue in more detail. - explained why vstatus register doesn't need byte swapping. - Patch 4 - moved reset_control_deassert to rtk_phy_init function to keep it outside of for loop. - changed msleep(5) to usleep_range(5000, 6000). - explained why reset_control_assert is not needed. - Patch 5 - explained readl/writel native endianess issue here as well. - explained why FORCE_DISCONNECT_REG doesn't need byte swapping. - Link to v4: https://lore.kernel.org/linux-phy/[email protected]/ Changelog in v4: - Patch 2 - moved the le variations of read/write functions to Patch 5 where it is actually used because otherwise, it results in unused errors when only Patch 2 is applied. - updated the commit message to to point the reason for le32 wrappers around readl/writel. - Patch 3 - added "Reviewed by Krzysztof Kozlowski" - Patch 5 - updated the commit message to include the addition of little endian read/write functions from Patch 2. - Link to v3: https://lore.kernel.org/linux-phy/[email protected]/ Changelog in v3: - Patch 2 - renamed phy read and functions to "rtk_usb2phy" to not collide with networking API functions - fixed the sparse warnings by creating intermidiate "tmp" variable and then pass it to writel - sligtly adjusted commit message to instead use "default read" not "default phy_read" - Patch 4 - added the check for reset_control_deassert() just in case - changed mdelay(5) to msleep(5) - changed dev_err and return combo with one dev_err_probe for phy_rst - Patch 5 - changed mdelay(10) under force_host_disconnect to msleep(10) - removed struct fields with false like force_host_disconnect and more in rtl9607_phy_cfg - Patch 6 - updated the #endif commend to now include MACH_REALTEK_RTL to reflect if on top - Link to v2: https://lore.kernel.org/linux-phy/[email protected]/ Changelog in v2: - Patch 3 - removed the line about OHCI/EHCI controllers from description. - set the resets to false for RTD SoC devices and changed the commit message to reflect that. - Link to v1: https://lore.kernel.org/linux-phy/[email protected]/ Rustam Adilov (6): phy: realtek: usb2: introduce phy_reg_desc struct to the driver phy: realtek: usb2: introduce read and write functions to phy_reg_desc struct dt-bindings: phy: realtek,usb2phy.yaml: extend for resets and RTL9607C support phy: realtek: usb2: introduce reset controller struct phy: realtek: usb2: add support for RTL9607C USB2 PHY phy: realtek: Make configs available for MACH_REALTEK_RTL .../bindings/phy/realtek,usb2phy.yaml | 25 ++- drivers/phy/realtek/Kconfig | 4 +- drivers/phy/realtek/phy-rtk-usb2.c | 154 ++++++++++++++++-- 3 files changed, 165 insertions(+), 18 deletions(-) -- 2.55.0 -- linux-phy mailing list [email protected] https://lists.infradead.org/mailman/listinfo/linux-phy