list_for_each_entry(sibling, &rdev->consumer_list, list)
current_uA += sibling->uA_load;
-- -- /* now get the optimum mode for our new total regulator load */
-- -- mode = rdev->desc->ops->get_optimum_mode(rdev, input_uV,
-- -- output_uV, current_uA);
-
- /* check the new mode is allowed */
- err = regulator_mode_constrain(rdev, &mode);
- if (err < 0) {
- rdev_err(rdev, "failed to get optimum mode @ %d uA %d -> %d uV\n",
- current_uA, input_uV, output_uV);
- return err;
++ ++ if (rdev->desc->ops->set_load) {
++ ++ /* set the optimum mode for our new total regulator load */
++ ++ err = rdev->desc->ops->set_load(rdev, current_uA);
++ ++ if (err < 0)
++ ++ rdev_err(rdev, "failed to set load %d\n", current_uA);
++ ++ } else {
++ ++ /* now get the optimum mode for our new total regulator load */
++ ++ mode = rdev->desc->ops->get_optimum_mode(rdev, input_uV,
++ ++ output_uV, current_uA);
++ ++
++ ++ /* check the new mode is allowed */
++ ++ err = regulator_mode_constrain(rdev, &mode);
++ ++ if (err < 0) {
++ ++ rdev_err(rdev, "failed to get optimum mode @ %d uA %d -> %d uV\n",
++ ++ current_uA, input_uV, output_uV);
++ ++ return err;
++ ++ }
+
- -- /* check the new mode is allowed */
- -- err = regulator_mode_constrain(rdev, &mode);
- -- if (err < 0) {
- -- rdev_err(rdev, "failed to get optimum mode @ %d uA %d -> %d uV\n",
- -- current_uA, input_uV, output_uV);
- -- return err;
++ ++ err = rdev->desc->ops->set_mode(rdev, mode);
++ ++ if (err < 0)
++ ++ rdev_err(rdev, "failed to set optimum mode %x\n", mode);
}
-- -- err = rdev->desc->ops->set_mode(rdev, mode);
-- -- if (err < 0)
-- -- rdev_err(rdev, "failed to set optimum mode %x\n", mode);
-- --
return err;
}
goto scrub;
if (init_data && init_data->supply_regulator)
---- supply = init_data->supply_regulator;
++++ rdev->supply_name = init_data->supply_regulator;
else if (regulator_desc->supply_name)
---- supply = regulator_desc->supply_name;
----
---- if (supply) {
---- struct regulator_dev *r;
-
- r = regulator_dev_lookup(dev, supply, &ret);
-
- if (ret == -ENODEV) {
- /*
- * No supply was specified for this regulator and
- * there will never be one.
- */
- ret = 0;
- goto add_dev;
- } else if (!r) {
- dev_err(dev, "Failed to find supply %s\n", supply);
- ret = -EPROBE_DEFER;
- goto scrub;
- }
++++ rdev->supply_name = regulator_desc->supply_name;
- -- r = regulator_dev_lookup(dev, supply, &ret);
- --
- -- if (ret == -ENODEV) {
- -- /*
- -- * No supply was specified for this regulator and
- -- * there will never be one.
- -- */
- -- ret = 0;
- -- goto add_dev;
- -- } else if (!r) {
- -- dev_err(dev, "Failed to find supply %s\n", supply);
- -- ret = -EPROBE_DEFER;
- -- goto scrub;
- -- }
- --
---- ret = set_supply(rdev, r);
---- if (ret < 0)
---- goto scrub;
----
---- /* Enable supply if rail is enabled */
---- if (_regulator_is_enabled(rdev)) {
---- ret = regulator_enable(rdev->supply);
---- if (ret < 0)
---- goto scrub;
---- }
---- }
----
----add_dev:
/* add consumers devices */
if (init_data) {
for (i = 0; i < init_data->num_consumer_supplies; i++) {