пн, 2 бер. 2026 р. о 16:13 Quentin Schulz <[email protected]> пише: > > Hi Svyatoslav, > > On 2/9/26 7:39 PM, Svyatoslav Ryhel wrote: > > Add a condition to enable the PMIC sysreset function via the > > system-power-controller device tree property in addition to the existing > > Kconfig dependency, provided the PMIC supports it. > > > > Reviewed-by: Quentin Schulz <[email protected]> # RK8xx > > I've added in Cc people who have contributed to devices that will lose > support for sysreset once this gets merged. > > Because they are missing a system-power-controller property in the RK8xx > PMIC Device Tree node, the following device trees will be impacted: > > dts/upstream/src/arm64/amlogic/meson-g12b-odroid-go-ultra.dts > dts/upstream/src/arm64/rockchip/rk3326-anbernic-rg351m.dtsi > dts/upstream/src/arm64/rockchip/rk3326-odroid-go.dtsi > dts/upstream/src/arm64/rockchip/rk3399-evb-ind.dts > dts/upstream/src/arm64/rockchip/rk3566-anbernic-rgxx3.dtsi > dts/upstream/src/arm64/rockchip/rk3566-powkiddy-rk2023.dtsi > dts/upstream/src/arm64/rockchip/rk3566-powkiddy-x55.dts > dts/upstream/src/arm64/rockchip/rk3588-coolpi-cm5.dtsi > dts/upstream/src/arm64/rockchip/rk3588s-coolpi-4b.dts > dts/upstream/src/arm64/rockchip/rk3588s-indiedroid-nova.dts > > If it's an oversight, you may want to add the property in a -u-boot.dtsi > and upstream the property to the kernel DTS to avoid carrying it > forever. From my side, this patch does what's expected based on the > (lack of) presence of the property so this is a green light for me > regardless if the above Device Trees are actually wrong. > > As far as I could tell, the sysreset driver only implements the poweroff > functionality which can be called by either the poweroff CLI command or > the efi_reset_system_boottime function (no clue when/where this is > called, some EFI thing I guess). >
I actually expected such an outcome. If you are fine with it, I will drop the Rockchip PMIC change for now. It would be quite unpleasant if a bunch of devices suddenly lose their reset function, especially since updating upstream trees can be a long process. Once the trees are updated, anyone working with Rockchip can submit a similar patch. > Thanks! > Quentin > > > Signed-off-by: Svyatoslav Ryhel <[email protected]> > > --- > > drivers/power/pmic/max77663.c | 4 +++- > > drivers/power/pmic/max8907.c | 3 ++- > > drivers/power/pmic/palmas.c | 4 +++- > > drivers/power/pmic/pmic_tps65910_dm.c | 4 +++- > > drivers/power/pmic/rk8xx.c | 4 +++- > > drivers/power/pmic/tps80031.c | 4 +++- > > 6 files changed, 17 insertions(+), 6 deletions(-) > > > > diff --git a/drivers/power/pmic/max77663.c b/drivers/power/pmic/max77663.c > > index c2a7cbf7e40..a06042e2918 100644 > > --- a/drivers/power/pmic/max77663.c > > +++ b/drivers/power/pmic/max77663.c > > @@ -46,7 +46,9 @@ static int max77663_bind(struct udevice *dev) > > ofnode regulators_node; > > int children, ret; > > > > - if (IS_ENABLED(CONFIG_SYSRESET_MAX77663)) { > > + if (IS_ENABLED(CONFIG_SYSRESET_MAX77663) && > > + (dev_read_bool(dev, "maxim,system-power-controller") || > > + dev_read_bool(dev, "system-power-controller"))) { > > ret = device_bind_driver_to_node(dev, MAX77663_RST_DRIVER, > > "sysreset", dev_ofnode(dev), > > NULL); > > diff --git a/drivers/power/pmic/max8907.c b/drivers/power/pmic/max8907.c > > index a7ef70177de..34bef0c8cd6 100644 > > --- a/drivers/power/pmic/max8907.c > > +++ b/drivers/power/pmic/max8907.c > > @@ -48,7 +48,8 @@ static int max8907_bind(struct udevice *dev) > > int children, ret; > > > > if (IS_ENABLED(CONFIG_SYSRESET_MAX8907) && > > - dev_read_bool(dev, "maxim,system-power-controller")) { > > + (dev_read_bool(dev, "maxim,system-power-controller") || > > + dev_read_bool(dev, "system-power-controller"))) { > > ret = device_bind_driver_to_node(dev, MAX8907_RST_DRIVER, > > "sysreset", dev_ofnode(dev), > > NULL); > > diff --git a/drivers/power/pmic/palmas.c b/drivers/power/pmic/palmas.c > > index 37d4190fabe..e5b497dfc39 100644 > > --- a/drivers/power/pmic/palmas.c > > +++ b/drivers/power/pmic/palmas.c > > @@ -48,7 +48,9 @@ static int palmas_bind(struct udevice *dev) > > ofnode subnode, gpio_node; > > int children, ret; > > > > - if (IS_ENABLED(CONFIG_SYSRESET_PALMAS)) { > > + if (IS_ENABLED(CONFIG_SYSRESET_PALMAS) && > > + (dev_read_bool(dev, "ti,system-power-controller") || > > + dev_read_bool(dev, "system-power-controller"))) { > > ret = device_bind_driver_to_node(dev, PALMAS_RST_DRIVER, > > "sysreset", dev_ofnode(dev), > > NULL); > > diff --git a/drivers/power/pmic/pmic_tps65910_dm.c > > b/drivers/power/pmic/pmic_tps65910_dm.c > > index de8d805566a..bce35603275 100644 > > --- a/drivers/power/pmic/pmic_tps65910_dm.c > > +++ b/drivers/power/pmic/pmic_tps65910_dm.c > > @@ -61,7 +61,9 @@ static int pmic_tps65910_bind(struct udevice *dev) > > ofnode regulators_node; > > int children, ret; > > > > - if (IS_ENABLED(CONFIG_SYSRESET_TPS65910)) { > > + if (IS_ENABLED(CONFIG_SYSRESET_TPS65910) && > > + (dev_read_bool(dev, "ti,system-power-controller") || > > + dev_read_bool(dev, "system-power-controller"))) { > > ret = device_bind_driver(dev, TPS65910_RST_DRIVER, > > "sysreset", NULL); > > if (ret) { > > diff --git a/drivers/power/pmic/rk8xx.c b/drivers/power/pmic/rk8xx.c > > index d11f7a7886e..95b71d2fe49 100644 > > --- a/drivers/power/pmic/rk8xx.c > > +++ b/drivers/power/pmic/rk8xx.c > > @@ -220,7 +220,9 @@ static int rk8xx_bind(struct udevice *dev) > > > > debug("%s: '%s' - found regulators subnode\n", __func__, dev->name); > > > > - if (CONFIG_IS_ENABLED(SYSRESET)) { > > + if (CONFIG_IS_ENABLED(SYSRESET) && > > + (dev_read_bool(dev, "rockchip,system-power-controller") || > > + dev_read_bool(dev, "system-power-controller"))) { > > ret = device_bind_driver_to_node(dev, "rk8xx_sysreset", > > "rk8xx_sysreset", > > dev_ofnode(dev), NULL); > > diff --git a/drivers/power/pmic/tps80031.c b/drivers/power/pmic/tps80031.c > > index a2f935b0c6d..6004a14cd6c 100644 > > --- a/drivers/power/pmic/tps80031.c > > +++ b/drivers/power/pmic/tps80031.c > > @@ -46,7 +46,9 @@ static int tps80031_bind(struct udevice *dev) > > ofnode regulators_node; > > int children, ret; > > > > - if (IS_ENABLED(CONFIG_SYSRESET_TPS80031)) { > > + if (IS_ENABLED(CONFIG_SYSRESET_TPS80031) && > > + (dev_read_bool(dev, "ti,system-power-controller") || > > + dev_read_bool(dev, "system-power-controller"))) { > > ret = device_bind_driver(dev, TPS80031_RST_DRIVER, > > "sysreset", NULL); > > if (ret) { >

