drivers/phy/phy-can-transceiver.c | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-)
On the Renesas Gray Hawk Single development board:
can-transceiver-phy can-phy0: /can-phy0: failed to get mux-state (0)
"mux-states" is an optional property for CAN transceivers. However,
mux_get() always prints an error message in case of an error, including
when the property is not present, confusing the user.
Fix this by re-instating the property presence check.
This is bascially a revert of commit d02dfd4ceb2e9f34 ("phy:
can-transceiver: Drop unnecessary "mux-states" property presence
check"), with two changes:
1. Use the proper API for checking whether a property is present,
2. Do not print an error message, as the mux core already takes care
of that.
Fixes: d02dfd4ceb2e9f34 ("phy: can-transceiver: Drop unnecessary "mux-states" property presence check")
Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be>
---
Alternatively, the multiplexer subsystem needs to gain support for
getting an optional mux...
---
drivers/phy/phy-can-transceiver.c | 11 ++++++-----
1 file changed, 6 insertions(+), 5 deletions(-)
diff --git a/drivers/phy/phy-can-transceiver.c b/drivers/phy/phy-can-transceiver.c
index 2bec70615449f94d..539b3446b9c33eed 100644
--- a/drivers/phy/phy-can-transceiver.c
+++ b/drivers/phy/phy-can-transceiver.c
@@ -103,7 +103,6 @@ static int can_transceiver_phy_probe(struct platform_device *pdev)
struct phy *phy;
struct gpio_desc *standby_gpio;
struct gpio_desc *enable_gpio;
- struct mux_state *mux_state;
u32 max_bitrate = 0;
int err;
@@ -114,11 +113,13 @@ static int can_transceiver_phy_probe(struct platform_device *pdev)
match = of_match_node(can_transceiver_phy_ids, pdev->dev.of_node);
drvdata = match->data;
- mux_state = devm_mux_state_get(dev, NULL);
- if (IS_ERR(mux_state)) {
- if (PTR_ERR(mux_state) == -EPROBE_DEFER)
+ if (of_property_present(dev->of_node, "mux-states")) {
+ struct mux_state *mux_state;
+
+ mux_state = devm_mux_state_get(dev, NULL);
+ if (IS_ERR(mux_state))
return PTR_ERR(mux_state);
- } else {
+
can_transceiver_phy->mux_state = mux_state;
}
--
2.43.0
On 3/19/25 4:27 PM, Geert Uytterhoeven wrote:
> On the Renesas Gray Hawk Single development board:
>
> can-transceiver-phy can-phy0: /can-phy0: failed to get mux-state (0)
>
> "mux-states" is an optional property for CAN transceivers. However,
> mux_get() always prints an error message in case of an error, including
> when the property is not present, confusing the user.
>
> Fix this by re-instating the property presence check.
>
> This is bascially a revert of commit d02dfd4ceb2e9f34 ("phy:
Basically. :-)
> can-transceiver: Drop unnecessary "mux-states" property presence
> check"), with two changes:
> 1. Use the proper API for checking whether a property is present,
> 2. Do not print an error message, as the mux core already takes care
> of that.
>
> Fixes: d02dfd4ceb2e9f34 ("phy: can-transceiver: Drop unnecessary "mux-states" property presence check")
> Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be>
> ---
> Alternatively, the multiplexer subsystem needs to gain support for
> getting an optional mux...
[...]
MBR, Sergey
For some reasons, I received your message twice (with a two minutes
interval between both messages). These look identical. I am answering
the most recent. :)
On 19/03/2025 at 22:27, Geert Uytterhoeven wrote:
> On the Renesas Gray Hawk Single development board:
>
> can-transceiver-phy can-phy0: /can-phy0: failed to get mux-state (0)
>
> "mux-states" is an optional property for CAN transceivers. However,
> mux_get() always prints an error message in case of an error, including
> when the property is not present, confusing the user.
Hmmm, I understand why you are doing this patch. But on the long term,
wouldn't it make more sense to have a devm_mux_state_get_optional()? Or
maybe add a property somewhere to inform devm_mux_state_get() that this
is optional?
Regardless, just see this as an open question. I am OK with the approach
of your patch.
> Fix this by re-instating the property presence check.
>
> This is bascially a revert of commit d02dfd4ceb2e9f34 ("phy:
> can-transceiver: Drop unnecessary "mux-states" property presence
> check"), with two changes:
> 1. Use the proper API for checking whether a property is present,
> 2. Do not print an error message, as the mux core already takes care
> of that.
>
> Fixes: d02dfd4ceb2e9f34 ("phy: can-transceiver: Drop unnecessary "mux-states" property presence check")> Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be>
Notwithstanding of above comment:
Reviewed-by: Vincent Mailhol <mailhol.vincent@wanadoo.fr>
Yours sincerely,
Vincent Mailhol
Hi Vincent,
On Wed, 19 Mar 2025 at 15:07, Vincent Mailhol
<mailhol.vincent@wanadoo.fr> wrote:
> For some reasons, I received your message twice (with a two minutes
> interval between both messages). These look identical. I am answering
My scripting didn't handle the comment in Rob's address correctly,
so I resent the patch with the fixed address.
> the most recent. :)
Good ;-)
> On 19/03/2025 at 22:27, Geert Uytterhoeven wrote:
> > On the Renesas Gray Hawk Single development board:
> >
> > can-transceiver-phy can-phy0: /can-phy0: failed to get mux-state (0)
> >
> > "mux-states" is an optional property for CAN transceivers. However,
> > mux_get() always prints an error message in case of an error, including
> > when the property is not present, confusing the user.
>
> Hmmm, I understand why you are doing this patch. But on the long term,
> wouldn't it make more sense to have a devm_mux_state_get_optional()? Or
> maybe add a property somewhere to inform devm_mux_state_get() that this
> is optional?
>
> Regardless, just see this as an open question. I am OK with the approach
> of your patch.
Alternatively, we can be proactive and add a temporary local wrapper:
/* Dummy wrapper until optional muxes are supported */
static inline struct mux_state *
devm_mux_state_get_optional(struct device *dev, const char *mux_name)
{
if (!of_property_present(dev->of_node, "mux-states"))
return NULL;
return devm_mux_state_get(dev, mux_name);
}
and call that instead? Then the probe function needs no future changes
when the real devm_mux_state_get_optional() arrives.
> > Fix this by re-instating the property presence check.
> >
> > This is bascially a revert of commit d02dfd4ceb2e9f34 ("phy:
> > can-transceiver: Drop unnecessary "mux-states" property presence
> > check"), with two changes:
> > 1. Use the proper API for checking whether a property is present,
> > 2. Do not print an error message, as the mux core already takes care
> > of that.
> >
> > Fixes: d02dfd4ceb2e9f34 ("phy: can-transceiver: Drop unnecessary "mux-states" property presence check")> Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be>
>
> Notwithstanding of above comment:
>
> Reviewed-by: Vincent Mailhol <mailhol.vincent@wanadoo.fr>
Thanks!
Gr{oetje,eeting}s,
Geert
--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@linux-m68k.org
In personal conversations with technical people, I call myself a hacker. But
when I'm talking to journalists I just say "programmer" or something like that.
-- Linus Torvalds
On 20/03/2025 at 19:25, Geert Uytterhoeven wrote:
> Hi Vincent,
(...)
>> On 19/03/2025 at 22:27, Geert Uytterhoeven wrote:
>>> On the Renesas Gray Hawk Single development board:
>>>
>>> can-transceiver-phy can-phy0: /can-phy0: failed to get mux-state (0)
>>>
>>> "mux-states" is an optional property for CAN transceivers. However,
>>> mux_get() always prints an error message in case of an error, including
>>> when the property is not present, confusing the user.
>>
>> Hmmm, I understand why you are doing this patch. But on the long term,
>> wouldn't it make more sense to have a devm_mux_state_get_optional()? Or
>> maybe add a property somewhere to inform devm_mux_state_get() that this
>> is optional?
>>
>> Regardless, just see this as an open question. I am OK with the approach
>> of your patch.
>
> Alternatively, we can be proactive and add a temporary local wrapper:
>
> /* Dummy wrapper until optional muxes are supported */
> static inline struct mux_state *
> devm_mux_state_get_optional(struct device *dev, const char *mux_name)
> {
> if (!of_property_present(dev->of_node, "mux-states"))
> return NULL;
>
> return devm_mux_state_get(dev, mux_name);
> }
>
> and call that instead? Then the probe function needs no future changes
> when the real devm_mux_state_get_optional() arrives.
This looks like a more elegant and more long term solution!
Yours sincerely,
Vincent Mailhol
On 19/03/2025 at 23:06, Vincent Mailhol wrote:
> For some reasons, I received your message twice (with a two minutes
> interval between both messages). These look identical. I am answering
> the most recent. :)
>
> On 19/03/2025 at 22:27, Geert Uytterhoeven wrote:
>> On the Renesas Gray Hawk Single development board:
>>
>> can-transceiver-phy can-phy0: /can-phy0: failed to get mux-state (0)
>>
>> "mux-states" is an optional property for CAN transceivers. However,
>> mux_get() always prints an error message in case of an error, including
>> when the property is not present, confusing the user.
>
> Hmmm, I understand why you are doing this patch. But on the long term,
> wouldn't it make more sense to have a devm_mux_state_get_optional()? Or
> maybe add a property somewhere to inform devm_mux_state_get() that this
> is optional?
>
> Regardless, just see this as an open question. I am OK with the approach
> of your patch.
Ah, and I just realized that you mentioned the exact same thing under
the --- cutter, which for some reasons my eyes refused to see.
Sorry for the noise.
>> Fix this by re-instating the property presence check.
>>
>> This is bascially a revert of commit d02dfd4ceb2e9f34 ("phy:
>> can-transceiver: Drop unnecessary "mux-states" property presence
>> check"), with two changes:
>> 1. Use the proper API for checking whether a property is present,
>> 2. Do not print an error message, as the mux core already takes care
>> of that.
>>
>> Fixes: d02dfd4ceb2e9f34 ("phy: can-transceiver: Drop unnecessary "mux-states" property presence check")> Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be>
>
> Notwithstanding of above comment:
>
> Reviewed-by: Vincent Mailhol <mailhol.vincent@wanadoo.fr>
Yours sincerely,
Vincent Mailhol
© 2016 - 2025 Red Hat, Inc.