[PATCH v2 0/5] I2C framework, reboot Unmatched via PMIC

Alexandre Ghiti alexandre.ghiti at canonical.com
Tue Oct 19 21:59:25 PDT 2021


On Fri, Oct 15, 2021 at 3:20 PM Nikita Shubin <nikita.shubin at maquefel.me> wrote:
>
> From: Nikita Shubin <n.shubin at yadro.com>
>
> This series introduce rebooting via i2c da9063 PMIC, currently on
> SiFive Unmatched board.
>
> "gpio-poweroff" remains with default priority of 128 - default priority,
> da9063 is 1 by default the least priority.
>
> da9063-reset {
>         compatible = "da9063-reset";
>         priority = <1>;
> };
>
> Is required to be added as a child node of PMIC.
>
> tested via Linux and U-Boot with reset extension:
>
> OpenSBI:
> Platform Reboot Device    : da9063-reset
> Platform Shutdown Device  : gpio-reset
>
> v1 -> v2:
> Added:
> lib: sbi: add priority for reset handler
>
> Renamed read/write to smbus_write/smbus_read, as actually this
> is not a "raw" read/write but a one with a register address provided,
> later a "raw" version will be need but currently i don't have anything
> to test it.
>
> To Xiang W:
> I have analized your proposal of switching to sbi_list,
> and switched i2c adapters array to list. Unfortunately
> to switch drivers we require "init" functions.
>
> to Alexander Ghiti:
>
> > No need for the struct i2c_adapter argument as it is globally accessible.
>
> It looks like a more clean and reusable way to me, let's here more opinions
>
> > Why should the da9063 device care about the adapter configuration here?
> > I think It should just rely on an already configured/initialized i2c
> > controller.
>
> With clocks init added to sifive_i2c configure it can become usable even if nobody
> cared about controller initialization.
>
> > Establishing the link between the i2c device and its adapter should
> > somehow be implicitly done by the i2c library, IMO the device should not
> > care about its controller.
>
> And how do you think it will look like ? In out case it's not a separate driver/client
> entity but all togather for simplicity.
>
> Nikita Shubin (5):
>   lib: utils/reset: add priority to gpio reset
>   lib: utils/i2c: Add generic I2C configuration library
>   lib: utils/i2c: Add simple FDT based I2C framework
>   lib: utils/i2c: Add minimal SiFive I2C driver
>   lib: utils/reset: Add generic da9063 reset driver
>
>  include/sbi_utils/i2c/fdt_i2c.h    |  26 +++
>  include/sbi_utils/i2c/i2c.h        |  99 +++++++++++
>  lib/utils/i2c/fdt_i2c.c            | 111 ++++++++++++
>  lib/utils/i2c/fdt_i2c_sifive.c     | 271 +++++++++++++++++++++++++++++
>  lib/utils/i2c/i2c.c                |  85 +++++++++
>  lib/utils/i2c/objects.mk           |  12 ++
>  lib/utils/reset/fdt_reset.c        |   2 +
>  lib/utils/reset/fdt_reset_da9063.c | 214 +++++++++++++++++++++++
>  lib/utils/reset/fdt_reset_gpio.c   |  18 +-
>  lib/utils/reset/objects.mk         |   1 +
>  10 files changed, 836 insertions(+), 3 deletions(-)
>  create mode 100644 include/sbi_utils/i2c/fdt_i2c.h
>  create mode 100644 include/sbi_utils/i2c/i2c.h
>  create mode 100644 lib/utils/i2c/fdt_i2c.c
>  create mode 100644 lib/utils/i2c/fdt_i2c_sifive.c
>  create mode 100644 lib/utils/i2c/i2c.c
>  create mode 100644 lib/utils/i2c/objects.mk
>  create mode 100644 lib/utils/reset/fdt_reset_da9063.c
>
> --
> 2.31.1
>

I'm testing your patchset and although it seems to work from Linux, it
fails when used from u-boot at the first smbus_write in
da9063_sanity_check. Maybe it relies on some initialization done by
the Linux driver?

Thanks,

Alex


>
> --
> opensbi mailing list
> opensbi at lists.infradead.org
> http://lists.infradead.org/mailman/listinfo/opensbi



More information about the opensbi mailing list