[PATCH 09/14] net: ravb: Support up to two instances
Marek Vasut
marek.vasut at mailbox.org
Sat Jan 18 08:00:29 CET 2025
On 12/5/24 8:12 PM, Paul Barker wrote:
> Hi Marek,
>
> On 28/10/2024 09:50, Paul Barker wrote:
>> On 27/10/2024 16:25, Marek Vasut wrote:
>>> On 10/24/24 5:24 PM, Paul Barker wrote:
>>>> int ravb_of_to_plat(struct udevice *dev)
>>>> {
>>>> struct eth_pdata *pdata = dev_get_plat(dev);
>>>> - const fdt32_t *cell;
>>>> +
>>>> + if (bb_miiphy_index >= bb_miiphy_buses_num) {
>>>> + dev_err(dev, "ravb driver supports only 1 or 2 devices!\n");
>>> Hmmmm, I really do not like this, can we make this dynamic ?
>>>
>>> Unless you want to take a look at this yourself, I can add it into my todo ?
>>
>> I think the real solution here would be to separate the bb_miiphy
>> operations from the bus instance, so we would have something like:
>>
>> struct bb_miiphy_bus {
>> struct bb_miiphy_ops *ops;
>> void *priv;
>> };
>>
>> struct bb_miiphy_ops {
>> int (*init)(struct bb_miiphy_bus *bus);
>> int (*mdio_active)(struct bb_miiphy_bus *bus);
>> int (*mdio_tristate)(struct bb_miiphy_bus *bus);
>> int (*set_mdio)(struct bb_miiphy_bus *bus, int v);
>> int (*get_mdio)(struct bb_miiphy_bus *bus, int *v);
>> int (*set_mdc)(struct bb_miiphy_bus *bus, int v);
>> int (*delay)(struct bb_miiphy_bus *bus);
>> };
>>
>> int bb_miiphy_bus_register(const char *name,
>> struct bb_miiphy_ops *ops,
>> void *priv);
>>
>> Where drivers will call `bb_miiphy_bus_register()` from the probe
>> function, it will create a `struct bb_miiphy_bus` instance and a
>> `struct mii_dev` instance then call `mdio_register()`. The driver can
>> then support an arbitrary number of MDIO busses from a single constant
>> `struct bb_miiphy_ops` instance.
>>
>> The bb_miiphy_getbus() function should be dropped from miiphy.c.
>> Instead, the priv pointer in the `struct mii_dev` instance can point to
>> the appropriate `struct bb_miiphy_bus` instance.
>>
>> It looks like all users of CONFIG_BITBANGMII also set
>> CONFIG_BITBANGMII_MULTI, and there don't seem to be any targets that
>> define the macros documented in README.bitbangMII (lines 15-22). So, we
>> can drop the non-BITBANGMII_MULTI code from miiphybb.c and simplify
>> things a lot.
>>
>> That's non-trivial but it's not a huge set of changes, maybe something
>> we could target for v2024.04?
>
> We've got several of the other patches from this series merged now after
> v2 so I'm coming back to this one. I think we should take this patch
> as-is and then follow up with general improvements to the bb_miiphy
> support. Are you happy with that? If so I will re-send it along with a
> re-worked version of patch 11 from this series (net: ravb: Add RZ/G2L
> Support).
I apologize for the horrible delay.
I just posted the bb_miiphy patches so maybe we can do it properly right
from the start ?
More information about the U-Boot
mailing list