[PATCH v2 0/5] I2C framework, reboot Unmatched via PMIC
Nikita Shubin
nikita.shubin at maquefel.me
Fri Oct 15 06:19:20 PDT 2021
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
More information about the opensbi
mailing list