* [PATCH v7 1/3] clk: eyeq: use the auxiliary device creation helper
2026-02-25 16:55 [PATCH v7 0/3] clk: eyeq: instantiate generic PHY children auxiliary device Théo Lebrun
@ 2026-02-25 16:55 ` Théo Lebrun
2026-02-25 16:55 ` [PATCH v7 2/3] clk: eyeq: add EyeQ5 children auxiliary device for generic PHYs Théo Lebrun
` (2 subsequent siblings)
3 siblings, 0 replies; 5+ messages in thread
From: Théo Lebrun @ 2026-02-25 16:55 UTC (permalink / raw)
To: Michael Turquette, Stephen Boyd, Philipp Zabel
Cc: linux-mips, linux-clk, linux-kernel, Vladimir Kondratiev,
Gregory CLEMENT, Benoît Monin, Tawfik Bayouk,
Thomas Petazzoni, Luca Ceresoli, Théo Lebrun, Jerome Brunet
From: Jerome Brunet <jbrunet@baylibre.com>
The auxiliary device creation of this driver is simple enough to
use the available auxiliary device creation helper.
Use it and remove some boilerplate code.
Tested-by: Théo Lebrun <theo.lebrun@bootlin.com> # On Mobileye EyeQ5
Signed-off-by: Jerome Brunet <jbrunet@baylibre.com>
Reviewed-by: Luca Ceresoli <luca.ceresoli@bootlin.com>
Signed-off-by: Théo Lebrun <theo.lebrun@bootlin.com>
---
drivers/clk/clk-eyeq.c | 57 +++++++++++---------------------------------------
1 file changed, 12 insertions(+), 45 deletions(-)
diff --git a/drivers/clk/clk-eyeq.c b/drivers/clk/clk-eyeq.c
index 81137269352d..b231d6deb209 100644
--- a/drivers/clk/clk-eyeq.c
+++ b/drivers/clk/clk-eyeq.c
@@ -322,38 +322,18 @@ static void eqc_probe_init_fixed_factors(struct device *dev,
}
}
-static void eqc_auxdev_release(struct device *dev)
-{
- struct auxiliary_device *adev = to_auxiliary_dev(dev);
-
- kfree(adev);
-}
-
-static int eqc_auxdev_create(struct device *dev, void __iomem *base,
- const char *name, u32 id)
+static void eqc_auxdev_create_optional(struct device *dev, void __iomem *base,
+ const char *name)
{
struct auxiliary_device *adev;
- int ret;
- adev = kzalloc_obj(*adev);
- if (!adev)
- return -ENOMEM;
-
- adev->name = name;
- adev->dev.parent = dev;
- adev->dev.platform_data = (void __force *)base;
- adev->dev.release = eqc_auxdev_release;
- adev->id = id;
-
- ret = auxiliary_device_init(adev);
- if (ret)
- return ret;
-
- ret = auxiliary_device_add(adev);
- if (ret)
- auxiliary_device_uninit(adev);
-
- return ret;
+ if (name) {
+ adev = devm_auxiliary_device_create(dev, name,
+ (void __force *)base);
+ if (!adev)
+ dev_warn(dev, "failed creating auxiliary device %s.%s\n",
+ KBUILD_MODNAME, name);
+ }
}
static int eqc_probe(struct platform_device *pdev)
@@ -365,7 +345,6 @@ static int eqc_probe(struct platform_device *pdev)
unsigned int i, clk_count;
struct resource *res;
void __iomem *base;
- int ret;
data = device_get_match_data(dev);
if (!data)
@@ -379,21 +358,9 @@ static int eqc_probe(struct platform_device *pdev)
if (!base)
return -ENOMEM;
- /* Init optional reset auxiliary device. */
- if (data->reset_auxdev_name) {
- ret = eqc_auxdev_create(dev, base, data->reset_auxdev_name, 0);
- if (ret)
- dev_warn(dev, "failed creating auxiliary device %s.%s: %d\n",
- KBUILD_MODNAME, data->reset_auxdev_name, ret);
- }
-
- /* Init optional pinctrl auxiliary device. */
- if (data->pinctrl_auxdev_name) {
- ret = eqc_auxdev_create(dev, base, data->pinctrl_auxdev_name, 0);
- if (ret)
- dev_warn(dev, "failed creating auxiliary device %s.%s: %d\n",
- KBUILD_MODNAME, data->pinctrl_auxdev_name, ret);
- }
+ /* Init optional auxiliary devices. */
+ eqc_auxdev_create_optional(dev, base, data->reset_auxdev_name);
+ eqc_auxdev_create_optional(dev, base, data->pinctrl_auxdev_name);
if (data->pll_count + data->div_count + data->fixed_factor_count == 0)
return 0; /* Zero clocks, we are done. */
--
2.53.0
^ permalink raw reply related [flat|nested] 5+ messages in thread* [PATCH v7 2/3] clk: eyeq: add EyeQ5 children auxiliary device for generic PHYs
2026-02-25 16:55 [PATCH v7 0/3] clk: eyeq: instantiate generic PHY children auxiliary device Théo Lebrun
2026-02-25 16:55 ` [PATCH v7 1/3] clk: eyeq: use the auxiliary device creation helper Théo Lebrun
@ 2026-02-25 16:55 ` Théo Lebrun
2026-02-25 16:55 ` [PATCH v7 3/3] reset: eyeq: drop device_set_of_node_from_dev() done by parent Théo Lebrun
2026-04-20 8:51 ` [PATCH v7 0/3] clk: eyeq: instantiate generic PHY children auxiliary device Benoît Monin
3 siblings, 0 replies; 5+ messages in thread
From: Théo Lebrun @ 2026-02-25 16:55 UTC (permalink / raw)
To: Michael Turquette, Stephen Boyd, Philipp Zabel
Cc: linux-mips, linux-clk, linux-kernel, Vladimir Kondratiev,
Gregory CLEMENT, Benoît Monin, Tawfik Bayouk,
Thomas Petazzoni, Luca Ceresoli, Théo Lebrun
Grow our clk-eyeq family; it knows how to spawn reset provider and pin
controller children. Expand with a generic PHY driver on EyeQ5.
Reviewed-by: Luca Ceresoli <luca.ceresoli@bootlin.com>
Signed-off-by: Théo Lebrun <theo.lebrun@bootlin.com>
---
drivers/clk/clk-eyeq.c | 3 +++
1 file changed, 3 insertions(+)
diff --git a/drivers/clk/clk-eyeq.c b/drivers/clk/clk-eyeq.c
index b231d6deb209..b17f47fda1da 100644
--- a/drivers/clk/clk-eyeq.c
+++ b/drivers/clk/clk-eyeq.c
@@ -109,6 +109,7 @@ struct eqc_match_data {
const char *reset_auxdev_name;
const char *pinctrl_auxdev_name;
+ const char *eth_phy_auxdev_name;
unsigned int early_clk_count;
};
@@ -361,6 +362,7 @@ static int eqc_probe(struct platform_device *pdev)
/* Init optional auxiliary devices. */
eqc_auxdev_create_optional(dev, base, data->reset_auxdev_name);
eqc_auxdev_create_optional(dev, base, data->pinctrl_auxdev_name);
+ eqc_auxdev_create_optional(dev, base, data->eth_phy_auxdev_name);
if (data->pll_count + data->div_count + data->fixed_factor_count == 0)
return 0; /* Zero clocks, we are done. */
@@ -521,6 +523,7 @@ static const struct eqc_match_data eqc_eyeq5_match_data = {
.reset_auxdev_name = "reset",
.pinctrl_auxdev_name = "pinctrl",
+ .eth_phy_auxdev_name = "phy",
.early_clk_count = ARRAY_SIZE(eqc_eyeq5_early_plls) +
ARRAY_SIZE(eqc_eyeq5_early_fixed_factors),
--
2.53.0
^ permalink raw reply related [flat|nested] 5+ messages in thread* [PATCH v7 3/3] reset: eyeq: drop device_set_of_node_from_dev() done by parent
2026-02-25 16:55 [PATCH v7 0/3] clk: eyeq: instantiate generic PHY children auxiliary device Théo Lebrun
2026-02-25 16:55 ` [PATCH v7 1/3] clk: eyeq: use the auxiliary device creation helper Théo Lebrun
2026-02-25 16:55 ` [PATCH v7 2/3] clk: eyeq: add EyeQ5 children auxiliary device for generic PHYs Théo Lebrun
@ 2026-02-25 16:55 ` Théo Lebrun
2026-04-20 8:51 ` [PATCH v7 0/3] clk: eyeq: instantiate generic PHY children auxiliary device Benoît Monin
3 siblings, 0 replies; 5+ messages in thread
From: Théo Lebrun @ 2026-02-25 16:55 UTC (permalink / raw)
To: Michael Turquette, Stephen Boyd, Philipp Zabel
Cc: linux-mips, linux-clk, linux-kernel, Vladimir Kondratiev,
Gregory CLEMENT, Benoît Monin, Tawfik Bayouk,
Thomas Petazzoni, Luca Ceresoli, Théo Lebrun, Jerome Brunet
Our parent driver (clk-eyeq) now does the
device_set_of_node_from_dev(dev, dev->parent)
call through the newly introduced devm_auxiliary_device_create() helper.
Doing it again in the reset-eyeq probe would be redundant.
Drop both the WARN_ON() and the device_set_of_node_from_dev() call.
Also fix the following comment that talks about "our newfound OF node".
Signed-off-by: Jerome Brunet <jbrunet@baylibre.com>
Reviewed-by: Philipp Zabel <p.zabel@pengutronix.de>
Acked-by: Philipp Zabel <p.zabel@pengutronix.de>
Signed-off-by: Théo Lebrun <theo.lebrun@bootlin.com>
---
drivers/reset/reset-eyeq.c | 24 ++----------------------
1 file changed, 2 insertions(+), 22 deletions(-)
diff --git a/drivers/reset/reset-eyeq.c b/drivers/reset/reset-eyeq.c
index 2d3998368a1c..8018fa895427 100644
--- a/drivers/reset/reset-eyeq.c
+++ b/drivers/reset/reset-eyeq.c
@@ -410,13 +410,6 @@ static int eqr_of_xlate_twocells(struct reset_controller_dev *rcdev,
return eqr_of_xlate_internal(rcdev, reset_spec->args[0], reset_spec->args[1]);
}
-static void eqr_of_node_put(void *_dev)
-{
- struct device *dev = _dev;
-
- of_node_put(dev->of_node);
-}
-
static int eqr_probe(struct auxiliary_device *adev,
const struct auxiliary_device_id *id)
{
@@ -427,21 +420,8 @@ static int eqr_probe(struct auxiliary_device *adev,
int ret;
/*
- * We are an auxiliary device of clk-eyeq. We do not have an OF node by
- * default; let's reuse our parent's OF node.
- */
- WARN_ON(dev->of_node);
- device_set_of_node_from_dev(dev, dev->parent);
- if (!dev->of_node)
- return -ENODEV;
-
- ret = devm_add_action_or_reset(dev, eqr_of_node_put, dev);
- if (ret)
- return ret;
-
- /*
- * Using our newfound OF node, we can get match data. We cannot use
- * device_get_match_data() because it does not match reused OF nodes.
+ * Get match data. We cannot use device_get_match_data() because it does
+ * not accept reused OF nodes; see device_set_of_node_from_dev().
*/
match = of_match_node(dev->driver->of_match_table, dev->of_node);
if (!match || !match->data)
--
2.53.0
^ permalink raw reply related [flat|nested] 5+ messages in thread* Re: [PATCH v7 0/3] clk: eyeq: instantiate generic PHY children auxiliary device
2026-02-25 16:55 [PATCH v7 0/3] clk: eyeq: instantiate generic PHY children auxiliary device Théo Lebrun
` (2 preceding siblings ...)
2026-02-25 16:55 ` [PATCH v7 3/3] reset: eyeq: drop device_set_of_node_from_dev() done by parent Théo Lebrun
@ 2026-04-20 8:51 ` Benoît Monin
3 siblings, 0 replies; 5+ messages in thread
From: Benoît Monin @ 2026-04-20 8:51 UTC (permalink / raw)
To: Michael Turquette, Stephen Boyd
Cc: Philipp Zabel, Théo Lebrun, linux-mips, linux-clk,
linux-kernel, Vladimir Kondratiev, Gregory CLEMENT, Tawfik Bayouk,
Thomas Petazzoni, Luca Ceresoli, Théo Lebrun, Jerome Brunet
Hello Michael, Stephen,
On Wednesday, 25 February 2026 at 17:55:04 CEST, Théo Lebrun wrote:
> EyeQ5 SoCs integrate two GEM instances. A system-controller register
> region named "OLB" has some control over the Ethernet PHY integration.
>
> Extend the current OLB ecosystem with a new generic PHY driver.
> - OLB is carried by one main platform driver: clk-eyeq.
> - It instantiates auxiliary devices: reset-eyeq & pinctrl-eyeq5.
> - We add a new one: phy-eyeq5-eth.
>
> Mainly we spawn a new auxdev from clk-eyeq. But alongside we use the
> newly introduced helper devm_auxiliary_device_create() that has the
> implication of setting child dev->of_node from parent. That implies we
> must drop the device_set_of_node_from_dev() at the same time.
>
> Philipp Zabel gave his ACK [2] for the reset patch to go into linux-clk.
>
Is there any way to move forward with this series?
With the latest changes merged in Linus' tree the Mobileye EyeQ SoCs fail to
boot. This series is needed to resolve the boot failures.
Best regards,
--
Benoît Monin, Bootlin
Embedded Linux and Kernel engineering
https://bootlin.com
^ permalink raw reply [flat|nested] 5+ messages in thread