[PATCH 6.1.y-cip v2 22/22] usb: renesas: Suppress binding attributes
Claudiu Beznea <[email protected]> Wed, 8 Jul 2026 11:11:59 +0300
| Newsgroups | org.cip-project.lists.cip-dev |
|---|---|
| Message-ID | <[email protected]> |
From: Claudiu Beznea <[email protected]> In v6.1 CIP the drivers that are involved for the USB to work on the Renesas RZ/G2L based devices are the following: - rzg2l_usbphy_ctrl - phy_rcar_gen3_usb2 - ochi, echi, renesas_usbhs The drivers tree is as follows: +-----------------------------------------------------------+ | | \ / | ` | rzg2l_usbphy_ctrl <--> phy_rcar_gen3_usb2 <--+--> ohci <------------+ +--> ehci <------------+ +--> renesas_usbhs <--+ Where: - rzg2l_usbphy_ctrl provides reset signals to phy_rcar_gen3_usb2 and OHCI, EHCI, renesas_usbhs drivers - phy_rcar_gen3_usb3_usb2 request reset signals from rzg2l_usbphy_ctrl and provides PHYs to OHCI, EHCI, renesas_usbhs - OHCI, EHCI, renesas_usbhs drivers gets resets from rzg2l_usbphy_ctrl driver and PHYs from phy_rcar_gen3_usb2 In the current v6.1 CIP tree, unbinding any of the providers in the mentioned diagram does not force the unbinding of the consumers. In these scenarios, the consumers remain with stale resources. Subsequent operations that require resources from the providers will fail, either silently or loudly (crashes). Rebinding the previously unbound provider does not resolve the issue either. The only way the unbind/bind sequence works for the above-mentioned scenario is to perform the unbind starting with the consumers and ending with the providers, and to perform the bind starting with the providers and ending with the consumers. Suppress the binding attributes. Signed-off-by: Claudiu Beznea <[email protected]> --- Changes in v2: - none drivers/phy/renesas/phy-rcar-gen3-usb2.c | 1 + drivers/reset/reset-rzg2l-usbphy-ctrl.c | 1 + 2 files changed, 2 insertions(+) diff --git a/drivers/phy/renesas/phy-rcar-gen3-usb2.c b/drivers/phy/renesas/phy-rcar-gen3-usb2.c index 03d6183a385f..a67a9e688dca 100644 --- a/drivers/phy/renesas/phy-rcar-gen3-usb2.c +++ b/drivers/phy/renesas/phy-rcar-gen3-usb2.c @@ -903,6 +903,7 @@ static struct platform_driver rcar_gen3_phy_usb2_driver = { .name = "phy_rcar_gen3_usb2", .of_match_table = rcar_gen3_phy_usb2_match_table, .pm = pm_ptr(&rcar_gen3_phy_usb2_pm_ops), + .suppress_bind_attrs = true, }, .probe = rcar_gen3_phy_usb2_probe, .remove = rcar_gen3_phy_usb2_remove, diff --git a/drivers/reset/reset-rzg2l-usbphy-ctrl.c b/drivers/reset/reset-rzg2l-usbphy-ctrl.c index 3f88550a6946..3af61bbe7f98 100644 --- a/drivers/reset/reset-rzg2l-usbphy-ctrl.c +++ b/drivers/reset/reset-rzg2l-usbphy-ctrl.c @@ -343,6 +343,7 @@ static struct platform_driver rzg2l_usbphy_ctrl_driver = { .name = "rzg2l_usbphy_ctrl", .of_match_table = rzg2l_usbphy_ctrl_match_table, .pm = pm_ptr(&rzg2l_usbphy_ctrl_pm_ops), + .suppress_bind_attrs = true, }, .probe = rzg2l_usbphy_ctrl_probe, .remove = rzg2l_usbphy_ctrl_remove, -- 2.43.0