[PATCH v14 30/38] usb: dwc3: core: add post PHY registration hook for platform glue
Sebastian Reichel <[email protected]>
| Newsgroups | org.infradead.lists.linux-rockchip,org.infradead.lists.linux-arm-kernel,org.infradead.lists.linux-phy,org.kernel.vger.linux-devicetree,org.kernel.vger.linux-kernel,org.kernel.vger.linux-usb |
|---|---|
| Message-ID | <20260813-rockchip-usbdp-cleanup-v14-30-b5ad9c68fa11@collabora.com> |
Add support for custom PHY handling steps in platform glue code by adding a post registration hook. This will be used for handling PHY reset notifications on the Rockchip platform. Signed-off-by: Sebastian Reichel <[email protected]> --- drivers/usb/dwc3/core.c | 2 +- drivers/usb/dwc3/core.h | 9 +++++++++ 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/drivers/usb/dwc3/core.c b/drivers/usb/dwc3/core.c index 6e796489a04d..d0d766e1d20c 100644 --- a/drivers/usb/dwc3/core.c +++ b/drivers/usb/dwc3/core.c @@ -1613,7 +1613,7 @@ static int dwc3_core_get_phy(struct dwc3 *dwc) } } - return 0; + return dwc3_post_phy_registration(dwc); } static int dwc3_core_init_mode(struct dwc3 *dwc) diff --git a/drivers/usb/dwc3/core.h b/drivers/usb/dwc3/core.h index e0dee9d28740..8572d23a80a9 100644 --- a/drivers/usb/dwc3/core.h +++ b/drivers/usb/dwc3/core.h @@ -996,10 +996,12 @@ struct dwc3_scratchpad_array { * need to be passed on to glue layer * @pre_set_role: Notify glue of role switch notifications * @pre_run_stop: Notify run stop enable/disable information to glue + * @post_phy_registration: Called directly after PHY got registered */ struct dwc3_glue_ops { void (*pre_set_role)(struct dwc3 *dwc, enum usb_role role); void (*pre_run_stop)(struct dwc3 *dwc, bool is_on); + int (*post_phy_registration)(struct dwc3 *dwc); }; /** @@ -1650,6 +1652,13 @@ static inline void dwc3_pre_run_stop(struct dwc3 *dwc, bool is_on) dwc->glue_ops->pre_run_stop(dwc, is_on); } +static inline int dwc3_post_phy_registration(struct dwc3 *dwc) +{ + if (dwc->glue_ops && dwc->glue_ops->post_phy_registration) + return dwc->glue_ops->post_phy_registration(dwc); + return 0; +} + #if IS_ENABLED(CONFIG_USB_DWC3_HOST) || IS_ENABLED(CONFIG_USB_DWC3_DUAL_ROLE) int dwc3_host_init(struct dwc3 *dwc); void dwc3_host_exit(struct dwc3 *dwc); -- 2.53.0 _______________________________________________ Linux-rockchip mailing list [email protected] http://lists.infradead.org/mailman/listinfo/linux-rockchip