Re: [RFC PATCH 3/7] i2c: allow DT nodes without 'compatible'

Geert Uytterhoeven
2020-02-21T09:46:11Z

Hi Wolfram,

On Thu, Feb 20, 2020 at 6:26 PM Wolfram Sang
<wsa+renesas@sang-engineering.com> wrote:
> Sometimes, we have unknown devices in a system and still want to block
> their address. For that, we allow DT nodes with only a 'reg' property.
> These devices will be bound to the "dummy" driver but with the name
> "reserved". That way, we can distinguish them and even hand them over to
> the "dummy" driver later when they are really requested using
> i2c_new_ancillary_device().
>
> Signed-off-by: Wolfram Sang <wsa+renesas@sang-engineering.com>

Thanks for your patch!

Reviewed-by: Geert Uytterhoeven <geert+renesas@glider.be>
but one question below.

> --- a/Documentation/devicetree/bindings/i2c/i2c-ocores.txt
> +++ b/Documentation/devicetree/bindings/i2c/i2c-ocores.txt
> @@ -50,7 +50,6 @@ Examples:
> reg-io-width = <1>; /* 8 bit read/write */
>
> dummy@60 {
> - compatible = "dummy";
> reg = <0x60>;
> };
> };

There's a second instance to remove 18 lines below.

> --- a/drivers/i2c/i2c-core-of.c
> +++ b/drivers/i2c/i2c-core-of.c
> @@ -27,17 +27,15 @@ int of_i2c_get_board_info(struct device *dev, struct device_node *node,
>
> memset(info, 0, sizeof(*info));
>
> - if (of_modalias_node(node, info->type, sizeof(info->type)) < 0) {
> - dev_err(dev, "of_i2c: modalias failure on %pOF\n", node);
> - return -EINVAL;
> - }
> -
> ret = of_property_read_u32(node, "reg", &addr);
> if (ret) {
> dev_err(dev, "of_i2c: invalid reg on %pOF\n", node);
> return ret;
> }
>
> + if (of_modalias_node(node, info->type, sizeof(info->type)) < 0)
> + strlcpy(info->type, I2C_RESERVED_DRV_NAME, sizeof(I2C_RESERVED_DRV_NAME));

Could this cause a regression, e.g. if people already have such dummy
nodes in their DTS, and use sysfs new_device from userspace to
instantiate the device later?

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