[PATCH v2 11/35] acpi: Support generation of I2C descriptor
Simon Glass
sjg at chromium.org
Tue Jun 9 23:14:13 CEST 2020
Hi Wolfgang,
On Tue, 19 May 2020 at 05:58, Wolfgang Wallner
<wolfgang.wallner at br-automation.com> wrote:
>
> Hi Simon,
>
> -----"Simon Glass" <sjg at chromium.org> schrieb: -----
> > Betreff: [PATCH v2 11/35] acpi: Support generation of I2C descriptor
> >
> > Add a function to write a GPIO descriptor to the generated ACPI code.
> >
> > Signed-off-by: Simon Glass <sjg at chromium.org>
> > ---
> >
> > Changes in v2:
> > - Fix memset of I2C descriptor
> >
> > Changes in v1: None
> >
> > drivers/i2c/sandbox_i2c.c | 11 ++++
> > drivers/rtc/sandbox_rtc.c | 13 +++++
> > include/acpi/acpi_device.h | 36 +++++++++++++
> > lib/acpi/acpi_device.c | 103 +++++++++++++++++++++++++++++++++++++
> > test/dm/acpigen.c | 32 ++++++++++++
> > 5 files changed, 195 insertions(+)
> >
[..]
> > +/**
> > + * acpi_device_set_i2c() - Set up an ACPI I2C struct from a device
> > + *
> > + * @dev: I2C device to convert
> > + * @i2c: Place to put the new structure
> > + * @scope: Scope of the I2C device (this is the controller path)
>
> From the declaration I would assume that "scope" is internally copied, but in
> the code it is only referenced.
> I would propose to add something like the following to its description:
> "The value of scope is not copied, but only referenced. This implies the
> caller has to ensure it stays valid for the lifetime of i2c."
OK done
>
> > + * @return 0 (always)
>
> dev_get_parent_platdata() could return NULL. Should we check this and return
> and error?
>
> > + */
> > +static int acpi_device_set_i2c(const struct udevice *dev, struct acpi_i2c *i2c,
> > + const char *scope)
> > +{
> > + struct dm_i2c_chip *chip = dev_get_parent_platdata(dev);
> > + struct udevice *bus = dev_get_parent(dev);
> > +
> > + memset(i2c, '\0', sizeof(*i2c));
>
> Nit: memset(i2c, 0, sizeof(*i2c));
>
> This is only a style question. But it seems 0 is used for memset in existing
> U-Boot code much more often then '\0' (~120 grep results vs ~1100 grep results).
Yes I do feel in the minority. I used to write 0 but was corrected by
a CS professor years ago and it has stuck with me. It makes it clear
that it is the character that is repeated, not integer, which is
presumably larger than a byte.
>
> > + i2c->address = chip->chip_addr;
> > + i2c->mode_10bit = 0;
> > +
> > + /*
> > + * i2c_bus->speed_hz is set if this device is probed, but if not we
> > + * must use the device tree
> > + */
> > + i2c->speed = dev_read_u32_default(bus, "clock-frequency", 100000);
>
> Nit: I2C_SPEED_STANDARD_RATE instead of 100000?
Done
Regards,
Simon
More information about the U-Boot
mailing list