нд, 1 груд. 2024 р. о 16:42 Simon Glass <s...@chromium.org> пише: > > Unfortunately this commit causes a problem on nyan-big: > > U-Boot SPL 2024.10-rc6-00632-g51c4679d2f84 (Nov 30 2024 - 13:28:40 -0700) > Trying to boot from RAM > > U-Boot 2024.10-rc6-00632-g51c4679d2f84 (Nov 30 2024 - 13:28:40 -0700) > > SoC: tegra124 > Reset cause: POR > Model: Acer Chromebook 13 CB5-311 > Board: Google/NVIDIA Nyan-big, ID: -2 > DRAM: 2 GiB > failed to read ID1 register: -121 > failed to read ID: -121 > failed to read ID1 register: -121 > failed to read ID: -121 > failed to read ID1 register: -121 > failed to read ID: -121 > failed to read ID1 register: -121 > failed to read ID: -121 > failed to read ID1 register: -121 > failed to read ID: -121 > failed to read ID1 register: -121 > failed to read ID: -121 > failed to read ID1 register: -121 > failed to read ID: -121 > failed to read ID1 register: -121 > failed to read ID: -121 > failed to read ID1 register: -121 > failed to read ID: -121 > Unknown PLL id 14 > failed to read ID1 register: -121 > failed to read ID: -121 > initcall failed at call 810029c8 (err=-121: Remote I/O error) > ### ERROR ### Please RESET the board ### > > This reverts commit 51c4679d2f848e91b4a0cf867a426ffe5bb094b2. > > Tweak a few tests also, so they continue to pass. > > Signed-off-by: Simon Glass <s...@chromium.org> > --- > > drivers/power/regulator/regulator-uclass.c | 22 +++++++--------------- > test/dm/regulator.c | 6 ++++-- > 2 files changed, 11 insertions(+), 17 deletions(-) > > diff --git a/drivers/power/regulator/regulator-uclass.c > b/drivers/power/regulator/regulator-uclass.c > index decd0802c84..3da7c09ef14 100644 > --- a/drivers/power/regulator/regulator-uclass.c > +++ b/drivers/power/regulator/regulator-uclass.c > @@ -433,8 +433,6 @@ static int regulator_post_bind(struct udevice *dev) > const char *property = "regulator-name"; > > uc_pdata = dev_get_uclass_plat(dev); > - uc_pdata->always_on = dev_read_bool(dev, "regulator-always-on"); > - uc_pdata->boot_on = dev_read_bool(dev, "regulator-boot-on"); > > /* Regulator's mandatory constraint */ > uc_pdata->name = dev_read_string(dev, property); > @@ -446,21 +444,13 @@ static int regulator_post_bind(struct udevice *dev) > return -EINVAL; > } > > - if (!regulator_name_is_unique(dev, uc_pdata->name)) { > - debug("'%s' of dev: '%s', has nonunique value: '%s\n", > - property, dev->name, uc_pdata->name); > - return -EINVAL; > - } > + if (regulator_name_is_unique(dev, uc_pdata->name)) > + return 0; > > - /* > - * In case the regulator has regulator-always-on or > - * regulator-boot-on DT property, trigger probe() to > - * configure its default state during startup. > - */ > - if (uc_pdata->always_on || uc_pdata->boot_on) > - dev_or_flags(dev, DM_FLAG_PROBE_AFTER_BIND); > + debug("'%s' of dev: '%s', has nonunique value: '%s\n", > + property, dev->name, uc_pdata->name); > > - return 0; > + return -EINVAL; > } > > static int regulator_pre_probe(struct udevice *dev) > @@ -483,6 +473,8 @@ static int regulator_pre_probe(struct udevice *dev) > -ENODATA); > uc_pdata->max_uA = dev_read_u32_default(dev, "regulator-max-microamp", > -ENODATA); > + uc_pdata->always_on = dev_read_bool(dev, "regulator-always-on"); > + uc_pdata->boot_on = dev_read_bool(dev, "regulator-boot-on"); > uc_pdata->ramp_delay = dev_read_u32_default(dev, > "regulator-ramp-delay", > 0); > uc_pdata->force_off = dev_read_bool(dev, "regulator-force-boot-off"); > diff --git a/test/dm/regulator.c b/test/dm/regulator.c > index 449748ad52f..59cdd6a3e98 100644 > --- a/test/dm/regulator.c > +++ b/test/dm/regulator.c > @@ -186,7 +186,8 @@ int dm_test_power_regulator_set_enable_if_allowed(struct > unit_test_state *uts) > > /* Get BUCK1 - always on regulator */ > platname = regulator_names[BUCK1][PLATNAME]; > - ut_asserteq(-EALREADY, regulator_autoset_by_name(platname, > &dev_autoset)); > + ut_asserteq(-EALREADY, > + regulator_autoset_by_name(platname, &dev_autoset)); > ut_assertok(regulator_get_by_platname(platname, &dev)); > > /* Try disabling always-on regulator */ > @@ -288,7 +289,8 @@ static int dm_test_power_regulator_autoset(struct > unit_test_state *uts) > * Expected output state: uV=1200000; uA=200000; output enabled > */ > platname = regulator_names[BUCK1][PLATNAME]; > - ut_asserteq(-EALREADY, regulator_autoset_by_name(platname, > &dev_autoset)); > + ut_asserteq(-EALREADY, > + regulator_autoset_by_name(platname, &dev_autoset)); > > /* Check, that the returned device is proper */ > ut_assertok(regulator_get_by_platname(platname, &dev)); > -- > 2.43.0 >
It seems that I have found a fix for this issue. Simon, please test this commit https://gitlab.com/clamor-s/u-boot/-/commit/6149722aa48f84d9ea037ae990141a231106244e