[PATCH v4 3/9] reset: rzg2l-usbphy-ctrl: Add RZ/G3L support
From: Biju
Date: Thu Jul 09 2026 - 04:38:36 EST
From: Biju Das <biju.das.jz@xxxxxxxxxxxxxx>
Add the renesas,r9a08g046-usbphy-ctrl compatible string to the OF match
table for the RZ/G3L (r9a08g046) SoC, using a dedicated rzg3l_info
struct with pwrrdy set, similar to RZ/G3S.
The RZ/G3L SoC has 2 OTG controllers compared to one on RZ/G3S, so it
uses a separate rzg3l-vbus-regulator driver to handle the additional
VBUSEN control for port 2. The regulator_driver_name field is used as
the platform device name passed to platform_device_alloc(), and must
exactly match the name the corresponding regulator driver registers
via its id_table for platform bus matching to succeed.
Signed-off-by: Biju Das <biju.das.jz@xxxxxxxxxxxxxx>
---
v3->v4:
* Updated the commit description.
* Migrated to id_table match using driver_name and reduced the length
< 24.
v2->v3:
* No change.
v1->v2:
* No change.
---
drivers/reset/reset-rzg2l-usbphy-ctrl.c | 14 ++++++++++++--
1 file changed, 12 insertions(+), 2 deletions(-)
diff --git a/drivers/reset/reset-rzg2l-usbphy-ctrl.c b/drivers/reset/reset-rzg2l-usbphy-ctrl.c
index 84e745e49240..0803195080bd 100644
--- a/drivers/reset/reset-rzg2l-usbphy-ctrl.c
+++ b/drivers/reset/reset-rzg2l-usbphy-ctrl.c
@@ -42,6 +42,7 @@ struct rzg2l_usbphy_ctrl_priv {
};
struct rzg2l_usbphy_ctrl_info {
+ const char *regulator_driver_name;
bool pwrrdy;
};
@@ -110,15 +111,24 @@ static void rzg2l_usbphy_ctrl_init(struct rzg2l_usbphy_ctrl_priv *priv)
spin_unlock_irqrestore(&priv->lock, flags);
}
-static const struct rzg2l_usbphy_ctrl_info rzg2l_info = {};
+static const struct rzg2l_usbphy_ctrl_info rzg2l_info = {
+ .regulator_driver_name = "rzg2l-vbus-regulator",
+};
static const struct rzg2l_usbphy_ctrl_info rzg3s_info = {
+ .regulator_driver_name = "rzg2l-vbus-regulator",
+ .pwrrdy = true,
+};
+
+static const struct rzg2l_usbphy_ctrl_info rzg3l_info = {
+ .regulator_driver_name = "rzg3l-vbus-regulator",
.pwrrdy = true,
};
static const struct of_device_id rzg2l_usbphy_ctrl_match_table[] = {
{ .compatible = "renesas,rzg2l-usbphy-ctrl", .data = &rzg2l_info },
{ .compatible = "renesas,r9a08g045-usbphy-ctrl", .data = &rzg3s_info },
+ { .compatible = "renesas,r9a08g046-usbphy-ctrl", .data = &rzg3l_info },
{ /* Sentinel */ }
};
MODULE_DEVICE_TABLE(of, rzg2l_usbphy_ctrl_match_table);
@@ -245,7 +255,7 @@ static int rzg2l_usbphy_ctrl_probe(struct platform_device *pdev)
if (error)
goto err_pm_runtime_put;
- vdev = platform_device_alloc("rzg2l-usb-vbus-regulator", pdev->id);
+ vdev = platform_device_alloc(info->regulator_driver_name, pdev->id);
if (!vdev) {
error = -ENOMEM;
goto err_pm_runtime_put;
--
2.43.0