lkml.org 
[lkml]   [2018]   [Apr]   [25]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    SubjectRe: [PATCH v2 2/2] regulator: add QCOM RPMh regulator driver
    From
    Date
    >>> I think that's probably only OK if we have a specific error code for the
    >>> regulator being limited in this way otherwise our error handling for I/O
    >>> problems involves us trying to reconfigure supplies which seems like it
    >>> would be risky.

    >> Would you be ok with -EAGAIN being used for this purpose?

    > Using -EAGAIN for "I can't ever read the configuration from this
    > regulator" doesn't seem right - it's not like any number of retries
    > will ever manage to read the value back.

    In this case, the _regulator_get_voltage() call can succeed, but only
    after a voltage is explicitly requested from the framework side. The
    intention here would then be to call _regulator_do_set_voltage() with the
    constraint min_uV to max_uV range. After that, subsequent
    _regulator_get_voltage() calls will be successful.

    Here is the general idea:

    diff --git a/drivers/regulator/core.c b/drivers/regulator/core.c
    index 65f9b7c..e61983d 100644
    --- a/drivers/regulator/core.c
    +++ b/drivers/regulator/core.c
    @@ -910,6 +910,19 @@ static int machine_constraints_voltage(struct
    regulator_dev *rdev,
    rdev->constraints->min_uV && rdev->constraints->max_uV) {
    int target_min, target_max;
    int current_uV = _regulator_get_voltage(rdev);
    + if (current_uV == -EAGAIN) {
    + /*
    + * Regulator voltage cannot be read until after
    + * configuration; try setting constraint range.
    + */
    + rdev_info(rdev, "Setting %d-%duV\n",
    + rdev->constraints->min_uV,
    + rdev->constraints->max_uV);
    + _regulator_do_set_voltage(rdev,
    + rdev->constraints->min_uV,
    + rdev->constraints->max_uV);
    + current_uV = _regulator_get_voltage(rdev);
    + }
    if (current_uV < 0) {
    rdev_err(rdev,
    "failed to get the current voltage(%d)\n",
    Do you still have reservations about using -EAGAIN for this purpose? If
    so, which error code would you suggest using?

    Thanks,
    David

    --
    The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum,
    a Linux Foundation Collaborative Project

    \
     
     \ /
      Last update: 2018-04-25 23:06    [W:3.178 / U:0.004 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site