08 Sep, 2020

1 commit

  • regulator_notifier_call_chain() doesn't need rdev lock and rdev's
    existence is assumed in the code anyway. Remove the locks from drivers.

    Signed-off-by: Michał Mirosław
    Acked-by: Adam Thomson
    Reviewed-by: Dmitry Osipenko
    Link: https://lore.kernel.org/r/42393f66dcc4d80dcd9797be45216b4035aa96cb.1597032945.git.mirq-linux@rere.qmqm.pl
    Signed-off-by: Mark Brown

    Michał Mirosław
     

12 Jun, 2020

1 commit

  • Commit 99f75ce66619 ("regulator: da9063: fix suspend") converted
    the regulators to use a common (corrected) suspend bit setting but
    one of regulators (LDO9) slipped through the crack.

    This means that the original problem was not fixed for LDO9 and
    also leads to a warning found by the test robot.
    da9063-regulator.c:515:3: warning: initialized field overwritten

    Fix this by converting that regulator too like the others.

    Fixes: 99f75ce66619 ("regulator: da9063: fix suspend")
    Reported-by: kernel test robot

    Signed-off-by: Martin Fuzzey
    Link: https://lore.kernel.org/r/1591959073-16792-1-git-send-email-martin.fuzzey@flowbird.group
    Signed-off-by: Mark Brown

    Martin Fuzzey
     

25 Mar, 2020

2 commits


19 Mar, 2020

1 commit

  • The .set_suspend_enable() and .set_suspend_disable() methods are not
    supposed to immediately change the regulator state but just indicated
    if the regulator should be enabled or disabled when standby mode is
    entered (by a hardware signal).

    However currently they set control the SEL bits in the DVC registers,
    which causes the voltage to change to immediately between the "A"
    (normal) and "B" (standby) values as programmed and does nothing for
    the enable state...

    This means that "regulator-on-in-suspend" does not work (the regulator
    is switched off when the PMIC enters standby mode on the hardware
    signal) and, potentially, depending on the A and B voltage
    configurations the voltage could be incorrectly changed *before*
    actually entering suspend.

    The right bit to use for the functionality is the "CONF" bit in the
    "CONT" register.
    The detailed register description says "Sequencer target state"
    for this bit which is not very clear but the functional description
    is clearer.

    >From 5.1.5 System Enable:

    De-asserting SYS_EN (changing from active to passive state)
    clears control SYSTEM_EN which triggers a power down sequence
    into hibernate/standby mode
    ...
    With the exception of supplies that have the xxxx_CONF control
    bit asserted, all regulators in power domains POWER1, POWER, and
    SYSTEM are sequentially disabled in reverse order.
    Regulators with the _CONF bit set remain on but change the
    active voltage controlregisters from V_A to V_B
    (if V_B is notalready selected).

    Signed-off-by: Martin Fuzzey
    Link: https://lore.kernel.org/r/1584461691-14344-1-git-send-email-martin.fuzzey@flowbird.group
    Signed-off-by: Mark Brown

    Martin Fuzzey
     

13 Feb, 2020

1 commit

  • The current codebase makes use of the zero-length array language
    extension to the C90 standard, but the preferred mechanism to declare
    variable-length types such as these ones is a flexible array member[1][2],
    introduced in C99:

    struct foo {
    int stuff;
    struct boo array[];
    };

    By making use of the mechanism above, we will get a compiler warning
    in case the flexible array does not occur last in the structure, which
    will help us prevent some kind of undefined behavior bugs from being
    inadvertenly introduced[3] to the codebase from now on.

    This issue was found with the help of Coccinelle.

    [1] https://gcc.gnu.org/onlinedocs/gcc/Zero-Length.html
    [2] https://github.com/KSPP/linux/issues/21
    [3] commit 76497732932f ("cxgb3/l2t: Fix undefined behaviour")

    Signed-off-by: Gustavo A. R. Silva
    Link: https://lore.kernel.org/r/20200211234710.GA29532@embeddedor
    Signed-off-by: Mark Brown

    Gustavo A. R. Silva
     

11 Feb, 2020

2 commits

  • The devm_request_threaded_irq() already returns 0 on success
    and negative error code on failure. So return from this itself
    can be used while preserving error log in case of failure.

    Signed-off-by: Rishi Gupta
    Link: https://lore.kernel.org/r/1580996996-28798-1-git-send-email-gupt21@gmail.com
    Signed-off-by: Mark Brown

    Rishi Gupta
     
  • This commit fixes following errors & warnings in this driver
    as reported by checkpatch.pl:

    - WARNING: Prefer 'unsigned int' to bare use of 'unsigned'
    - WARNING: line over 80 characters
    - ERROR: space prohibited before that ',' (ctx:WxW)
    - ERROR: code indent should use tabs where possible
    - WARNING: Block comments use * on subsequent lines

    Signed-off-by: Rishi Gupta
    Link: https://lore.kernel.org/r/1580996917-28494-1-git-send-email-gupt21@gmail.com
    Signed-off-by: Mark Brown

    Rishi Gupta
     

01 Oct, 2019

1 commit


02 Aug, 2019

1 commit

  • We don't need dev_err() messages when platform_get_irq() fails now that
    platform_get_irq() prints an error message itself when something goes
    wrong. Let's remove these prints with a simple semantic patch.

    //
    @@
    expression ret;
    struct platform_device *E;
    @@

    ret =
    (
    platform_get_irq(E, ...)
    |
    platform_get_irq_byname(E, ...)
    );

    if ( \( ret < 0 \| ret

    While we're here, remove braces on if statements that only have one
    statement (manually).

    Cc: Liam Girdwood
    Cc: Mark Brown
    Cc: Greg Kroah-Hartman
    Signed-off-by: Stephen Boyd
    Link: https://lore.kernel.org/r/20190730181557.90391-38-swboyd@chromium.org
    Signed-off-by: Mark Brown

    Stephen Boyd
     

20 May, 2019

3 commits


26 Mar, 2019

1 commit


18 Mar, 2019

1 commit


13 Mar, 2019

1 commit

  • The mutex for the regulator_dev must be controlled by the caller of
    the regulator_notifier_call_chain(), as described in the comment
    for that function.

    Failure to mutex lock and unlock surrounding the notifier call results
    in a kernel WARN_ON_ONCE() which will dump a backtrace for the
    regulator_notifier_call_chain() when that function call is first made.
    The mutex can be controlled using the regulator_lock/unlock() API.

    Fixes: 69ca3e58d178 ("regulator: da9063: Add Dialog DA9063 voltage regulators support.")
    Suggested-by: Adam Thomson
    Signed-off-by: Steve Twiss
    Signed-off-by: Mark Brown

    Steve Twiss
     

22 Feb, 2019

1 commit

  • One of the more common cases of allocation size calculations is finding
    the size of a structure that has a zero-sized array at the end, along
    with memory for some number of elements for that array. For example:

    struct foo {
    int stuff;
    struct boo entry[];
    };

    size = sizeof(struct foo) + count * sizeof(struct boo);
    instance = alloc(size, GFP_KERNEL)

    Instead of leaving these open-coded and prone to type mistakes, we can
    now use the new struct_size() helper:

    instance = alloc(struct_size(instance, entry, count), GFP_KERNEL)

    Notice that, in this case, variable size is not necessary, hence it is
    removed.

    This code was detected with the help of Coccinelle.

    Signed-off-by: Gustavo A. R. Silva
    Signed-off-by: Mark Brown

    Gustavo A. R. Silva
     

19 Feb, 2019

1 commit


28 Jan, 2019

1 commit


04 Jul, 2018

3 commits

  • Move the LDOs present only on DA9063 at the end of the list, so that
    the DA9063L can simply indicate less LDOs and still share the list of
    regulators with DA9063.

    Signed-off-by: Marek Vasut
    Acked-by: Mark Brown
    Reviewed-by: Geert Uytterhoeven
    Signed-off-by: Lee Jones

    Marek Vasut
     
  • The model number stored in the struct da9063 is the same for all
    variants of the da9063 since it is the chip ID, which is always
    the same. Replace that with a separate identifier instead, which
    allows us to discern the DA9063 variants by setting the type
    based on either DT match or otherwise.

    Signed-off-by: Marek Vasut
    Acked-by: Mark Brown
    Reviewed-by: Geert Uytterhoeven
    Signed-off-by: Lee Jones

    Marek Vasut
     
  • The PMIC_DA9063 is a complete misnomer, it denotes the value of the
    DA9063 chip ID register, so rename it as such. It is also the value
    of chip ID register of DA9063L though, so drop the enum as all the
    DA9063 "models" share the same chip ID and thus the distinction will
    have to be made using DT or otherwise.

    Signed-off-by: Marek Vasut
    Acked-by: Mark Brown
    Reviewed-by: Geert Uytterhoeven
    Acked-by: Steve Twiss
    Signed-off-by: Lee Jones

    Marek Vasut
     

13 Jun, 2018

1 commit

  • The devm_kzalloc() function has a 2-factor argument form, devm_kcalloc().
    This patch replaces cases of:

    devm_kzalloc(handle, a * b, gfp)

    with:
    devm_kcalloc(handle, a * b, gfp)

    as well as handling cases of:

    devm_kzalloc(handle, a * b * c, gfp)

    with:

    devm_kzalloc(handle, array3_size(a, b, c), gfp)

    as it's slightly less ugly than:

    devm_kcalloc(handle, array_size(a, b), c, gfp)

    This does, however, attempt to ignore constant size factors like:

    devm_kzalloc(handle, 4 * 1024, gfp)

    though any constants defined via macros get caught up in the conversion.

    Any factors with a sizeof() of "unsigned char", "char", and "u8" were
    dropped, since they're redundant.

    Some manual whitespace fixes were needed in this patch, as Coccinelle
    really liked to write "=devm_kcalloc..." instead of "= devm_kcalloc...".

    The Coccinelle script used for this was:

    // Fix redundant parens around sizeof().
    @@
    expression HANDLE;
    type TYPE;
    expression THING, E;
    @@

    (
    devm_kzalloc(HANDLE,
    - (sizeof(TYPE)) * E
    + sizeof(TYPE) * E
    , ...)
    |
    devm_kzalloc(HANDLE,
    - (sizeof(THING)) * E
    + sizeof(THING) * E
    , ...)
    )

    // Drop single-byte sizes and redundant parens.
    @@
    expression HANDLE;
    expression COUNT;
    typedef u8;
    typedef __u8;
    @@

    (
    devm_kzalloc(HANDLE,
    - sizeof(u8) * (COUNT)
    + COUNT
    , ...)
    |
    devm_kzalloc(HANDLE,
    - sizeof(__u8) * (COUNT)
    + COUNT
    , ...)
    |
    devm_kzalloc(HANDLE,
    - sizeof(char) * (COUNT)
    + COUNT
    , ...)
    |
    devm_kzalloc(HANDLE,
    - sizeof(unsigned char) * (COUNT)
    + COUNT
    , ...)
    |
    devm_kzalloc(HANDLE,
    - sizeof(u8) * COUNT
    + COUNT
    , ...)
    |
    devm_kzalloc(HANDLE,
    - sizeof(__u8) * COUNT
    + COUNT
    , ...)
    |
    devm_kzalloc(HANDLE,
    - sizeof(char) * COUNT
    + COUNT
    , ...)
    |
    devm_kzalloc(HANDLE,
    - sizeof(unsigned char) * COUNT
    + COUNT
    , ...)
    )

    // 2-factor product with sizeof(type/expression) and identifier or constant.
    @@
    expression HANDLE;
    type TYPE;
    expression THING;
    identifier COUNT_ID;
    constant COUNT_CONST;
    @@

    (
    - devm_kzalloc
    + devm_kcalloc
    (HANDLE,
    - sizeof(TYPE) * (COUNT_ID)
    + COUNT_ID, sizeof(TYPE)
    , ...)
    |
    - devm_kzalloc
    + devm_kcalloc
    (HANDLE,
    - sizeof(TYPE) * COUNT_ID
    + COUNT_ID, sizeof(TYPE)
    , ...)
    |
    - devm_kzalloc
    + devm_kcalloc
    (HANDLE,
    - sizeof(TYPE) * (COUNT_CONST)
    + COUNT_CONST, sizeof(TYPE)
    , ...)
    |
    - devm_kzalloc
    + devm_kcalloc
    (HANDLE,
    - sizeof(TYPE) * COUNT_CONST
    + COUNT_CONST, sizeof(TYPE)
    , ...)
    |
    - devm_kzalloc
    + devm_kcalloc
    (HANDLE,
    - sizeof(THING) * (COUNT_ID)
    + COUNT_ID, sizeof(THING)
    , ...)
    |
    - devm_kzalloc
    + devm_kcalloc
    (HANDLE,
    - sizeof(THING) * COUNT_ID
    + COUNT_ID, sizeof(THING)
    , ...)
    |
    - devm_kzalloc
    + devm_kcalloc
    (HANDLE,
    - sizeof(THING) * (COUNT_CONST)
    + COUNT_CONST, sizeof(THING)
    , ...)
    |
    - devm_kzalloc
    + devm_kcalloc
    (HANDLE,
    - sizeof(THING) * COUNT_CONST
    + COUNT_CONST, sizeof(THING)
    , ...)
    )

    // 2-factor product, only identifiers.
    @@
    expression HANDLE;
    identifier SIZE, COUNT;
    @@

    - devm_kzalloc
    + devm_kcalloc
    (HANDLE,
    - SIZE * COUNT
    + COUNT, SIZE
    , ...)

    // 3-factor product with 1 sizeof(type) or sizeof(expression), with
    // redundant parens removed.
    @@
    expression HANDLE;
    expression THING;
    identifier STRIDE, COUNT;
    type TYPE;
    @@

    (
    devm_kzalloc(HANDLE,
    - sizeof(TYPE) * (COUNT) * (STRIDE)
    + array3_size(COUNT, STRIDE, sizeof(TYPE))
    , ...)
    |
    devm_kzalloc(HANDLE,
    - sizeof(TYPE) * (COUNT) * STRIDE
    + array3_size(COUNT, STRIDE, sizeof(TYPE))
    , ...)
    |
    devm_kzalloc(HANDLE,
    - sizeof(TYPE) * COUNT * (STRIDE)
    + array3_size(COUNT, STRIDE, sizeof(TYPE))
    , ...)
    |
    devm_kzalloc(HANDLE,
    - sizeof(TYPE) * COUNT * STRIDE
    + array3_size(COUNT, STRIDE, sizeof(TYPE))
    , ...)
    |
    devm_kzalloc(HANDLE,
    - sizeof(THING) * (COUNT) * (STRIDE)
    + array3_size(COUNT, STRIDE, sizeof(THING))
    , ...)
    |
    devm_kzalloc(HANDLE,
    - sizeof(THING) * (COUNT) * STRIDE
    + array3_size(COUNT, STRIDE, sizeof(THING))
    , ...)
    |
    devm_kzalloc(HANDLE,
    - sizeof(THING) * COUNT * (STRIDE)
    + array3_size(COUNT, STRIDE, sizeof(THING))
    , ...)
    |
    devm_kzalloc(HANDLE,
    - sizeof(THING) * COUNT * STRIDE
    + array3_size(COUNT, STRIDE, sizeof(THING))
    , ...)
    )

    // 3-factor product with 2 sizeof(variable), with redundant parens removed.
    @@
    expression HANDLE;
    expression THING1, THING2;
    identifier COUNT;
    type TYPE1, TYPE2;
    @@

    (
    devm_kzalloc(HANDLE,
    - sizeof(TYPE1) * sizeof(TYPE2) * COUNT
    + array3_size(COUNT, sizeof(TYPE1), sizeof(TYPE2))
    , ...)
    |
    devm_kzalloc(HANDLE,
    - sizeof(TYPE1) * sizeof(THING2) * (COUNT)
    + array3_size(COUNT, sizeof(TYPE1), sizeof(TYPE2))
    , ...)
    |
    devm_kzalloc(HANDLE,
    - sizeof(THING1) * sizeof(THING2) * COUNT
    + array3_size(COUNT, sizeof(THING1), sizeof(THING2))
    , ...)
    |
    devm_kzalloc(HANDLE,
    - sizeof(THING1) * sizeof(THING2) * (COUNT)
    + array3_size(COUNT, sizeof(THING1), sizeof(THING2))
    , ...)
    |
    devm_kzalloc(HANDLE,
    - sizeof(TYPE1) * sizeof(THING2) * COUNT
    + array3_size(COUNT, sizeof(TYPE1), sizeof(THING2))
    , ...)
    |
    devm_kzalloc(HANDLE,
    - sizeof(TYPE1) * sizeof(THING2) * (COUNT)
    + array3_size(COUNT, sizeof(TYPE1), sizeof(THING2))
    , ...)
    )

    // 3-factor product, only identifiers, with redundant parens removed.
    @@
    expression HANDLE;
    identifier STRIDE, SIZE, COUNT;
    @@

    (
    devm_kzalloc(HANDLE,
    - (COUNT) * STRIDE * SIZE
    + array3_size(COUNT, STRIDE, SIZE)
    , ...)
    |
    devm_kzalloc(HANDLE,
    - COUNT * (STRIDE) * SIZE
    + array3_size(COUNT, STRIDE, SIZE)
    , ...)
    |
    devm_kzalloc(HANDLE,
    - COUNT * STRIDE * (SIZE)
    + array3_size(COUNT, STRIDE, SIZE)
    , ...)
    |
    devm_kzalloc(HANDLE,
    - (COUNT) * (STRIDE) * SIZE
    + array3_size(COUNT, STRIDE, SIZE)
    , ...)
    |
    devm_kzalloc(HANDLE,
    - COUNT * (STRIDE) * (SIZE)
    + array3_size(COUNT, STRIDE, SIZE)
    , ...)
    |
    devm_kzalloc(HANDLE,
    - (COUNT) * STRIDE * (SIZE)
    + array3_size(COUNT, STRIDE, SIZE)
    , ...)
    |
    devm_kzalloc(HANDLE,
    - (COUNT) * (STRIDE) * (SIZE)
    + array3_size(COUNT, STRIDE, SIZE)
    , ...)
    |
    devm_kzalloc(HANDLE,
    - COUNT * STRIDE * SIZE
    + array3_size(COUNT, STRIDE, SIZE)
    , ...)
    )

    // Any remaining multi-factor products, first at least 3-factor products,
    // when they're not all constants...
    @@
    expression HANDLE;
    expression E1, E2, E3;
    constant C1, C2, C3;
    @@

    (
    devm_kzalloc(HANDLE, C1 * C2 * C3, ...)
    |
    devm_kzalloc(HANDLE,
    - (E1) * E2 * E3
    + array3_size(E1, E2, E3)
    , ...)
    |
    devm_kzalloc(HANDLE,
    - (E1) * (E2) * E3
    + array3_size(E1, E2, E3)
    , ...)
    |
    devm_kzalloc(HANDLE,
    - (E1) * (E2) * (E3)
    + array3_size(E1, E2, E3)
    , ...)
    |
    devm_kzalloc(HANDLE,
    - E1 * E2 * E3
    + array3_size(E1, E2, E3)
    , ...)
    )

    // And then all remaining 2 factors products when they're not all constants,
    // keeping sizeof() as the second factor argument.
    @@
    expression HANDLE;
    expression THING, E1, E2;
    type TYPE;
    constant C1, C2, C3;
    @@

    (
    devm_kzalloc(HANDLE, sizeof(THING) * C2, ...)
    |
    devm_kzalloc(HANDLE, sizeof(TYPE) * C2, ...)
    |
    devm_kzalloc(HANDLE, C1 * C2 * C3, ...)
    |
    devm_kzalloc(HANDLE, C1 * C2, ...)
    |
    - devm_kzalloc
    + devm_kcalloc
    (HANDLE,
    - sizeof(TYPE) * (E2)
    + E2, sizeof(TYPE)
    , ...)
    |
    - devm_kzalloc
    + devm_kcalloc
    (HANDLE,
    - sizeof(TYPE) * E2
    + E2, sizeof(TYPE)
    , ...)
    |
    - devm_kzalloc
    + devm_kcalloc
    (HANDLE,
    - sizeof(THING) * (E2)
    + E2, sizeof(THING)
    , ...)
    |
    - devm_kzalloc
    + devm_kcalloc
    (HANDLE,
    - sizeof(THING) * E2
    + E2, sizeof(THING)
    , ...)
    |
    - devm_kzalloc
    + devm_kcalloc
    (HANDLE,
    - (E1) * E2
    + E1, E2
    , ...)
    |
    - devm_kzalloc
    + devm_kcalloc
    (HANDLE,
    - (E1) * (E2)
    + E1, E2
    , ...)
    |
    - devm_kzalloc
    + devm_kcalloc
    (HANDLE,
    - E1 * E2
    + E1, E2
    , ...)
    )

    Signed-off-by: Kees Cook

    Kees Cook
     

30 Aug, 2017

1 commit


11 May, 2016

1 commit


23 Dec, 2015

1 commit


15 Sep, 2015

1 commit


02 Jun, 2015

1 commit

  • Current code does not set regulators->irq_ldo_lim and regulators->irq_uvov,
    so it actually calls free_irq(0, regulators) twice in remove() but does not
    free the irq actually used.

    Convert to use devm_request_threaded_irq instead and then we don't need to
    take care the clean up irq so remove irq_ldo_lim and irq_uvov from
    struct da9063_regulators. Note, regulators->irq_uvov is not used at all in
    current code.

    There is a slightly change in this patch, it will return error in probe()
    if devm_request_threaded_irq fails. If the irq is optional, it should be
    fine to allow platform_get_irq_byname fails. But current code does not
    allow platform_get_irq_byname fails. So I think the reason to allow
    request irq failure is just because the irq leak.

    Signed-off-by: Axel Lin
    Signed-off-by: Mark Brown

    Axel Lin
     

15 Dec, 2014

1 commit

  • Pull driver core update from Greg KH:
    "Here's the set of driver core patches for 3.19-rc1.

    They are dominated by the removal of the .owner field in platform
    drivers. They touch a lot of files, but they are "simple" changes,
    just removing a line in a structure.

    Other than that, a few minor driver core and debugfs changes. There
    are some ath9k patches coming in through this tree that have been
    acked by the wireless maintainers as they relied on the debugfs
    changes.

    Everything has been in linux-next for a while"

    * tag 'driver-core-3.19-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/driver-core: (324 commits)
    Revert "ath: ath9k: use debugfs_create_devm_seqfile() helper for seq_file entries"
    fs: debugfs: add forward declaration for struct device type
    firmware class: Deletion of an unnecessary check before the function call "vunmap"
    firmware loader: fix hung task warning dump
    devcoredump: provide a one-way disable function
    device: Add dev__once variants
    ath: ath9k: use debugfs_create_devm_seqfile() helper for seq_file entries
    ath: use seq_file api for ath9k debugfs files
    debugfs: add helper function to create device related seq_file
    drivers/base: cacheinfo: remove noisy error boot message
    Revert "core: platform: add warning if driver has no owner"
    drivers: base: support cpu cache information interface to userspace via sysfs
    drivers: base: add cpu_device_create to support per-cpu devices
    topology: replace custom attribute macros with standard DEVICE_ATTR*
    cpumask: factor out show_cpumap into separate helper function
    driver core: Fix unbalanced device reference in drivers_probe
    driver core: fix race with userland in device_add()
    sysfs/kernfs: make read requests on pre-alloc files use the buffer.
    sysfs/kernfs: allow attributes to request write buffer be pre-allocated.
    fs: sysfs: return EGBIG on write if offset is larger than file size
    ...

    Linus Torvalds
     

22 Nov, 2014

1 commit


20 Oct, 2014

1 commit


27 Mar, 2014

1 commit


12 Mar, 2014

1 commit


20 Feb, 2014

2 commits


18 Feb, 2014

1 commit


15 Feb, 2014

1 commit


12 Feb, 2014

1 commit

  • Bug fix to allow the setting of maximum voltage for certain LDOs.

    What the bug is:

    There is a problem caused by an invalid calculation of n_voltages
    in the driver. This n_voltages value has the potential to be
    different for each regulator.

    The value for linear_min_sel is set as DA9063_V##regl_name#
    which can be different depending upon the regulator. This is
    chosen according to the following definitions in the DA9063
    registers.h file:

    DA9063_VLDO1_BIAS 0
    DA9063_VLDO2_BIAS 0
    DA9063_VLDO3_BIAS 0
    DA9063_VLDO4_BIAS 0
    DA9063_VLDO5_BIAS 2
    DA9063_VLDO6_BIAS 2
    DA9063_VLDO7_BIAS 2
    DA9063_VLDO8_BIAS 2
    DA9063_VLDO9_BIAS 3
    DA9063_VLDO10_BIAS 2
    DA9063_VLDO11_BIAS 2

    The calculation for n_voltages is valid for LDOs whose BIAS value
    is zero but this is not correct for those LDOs which have a
    non-zero value.

    What the fix is:

    In order to take into account the non-zero linear_min_sel value which
    is set for the regulators LDO5, LDO6, LDO7, LDO8, LDO9, LDO10 and
    LDO11, the calculation for n_voltages should take into account the
    missing term defined by DA9063_V##regl_name#.

    This will in turn allow the core constraints calculation to set the
    maximum voltage limits correctly and therefore allow users to apply
    the maximum expected voltage to all of the LDOs.

    Signed-off-by: Steve Twiss
    Signed-off-by: Mark Brown
    Cc: stable@vger.kernel.org

    Steve Twiss
     

24 Oct, 2013

2 commits