09 Jun, 2017

1 commit

  • The touchscreen driver, max11801, which is on 12c2 bus, won't be probed
    when using the hdcp specific DTS (this is disabling 12c2, since it
    will acquire it for DDC communications). Since this driver won't be
    probed, it will spam the dmesg with the pr_err from max11801_read_adc()
    function. This function is periodically called by the battery driver. For
    this reason, I removed the pr_err() call.
    Also, to be noticed that the function signature is u32, but in case of an
    error it will return a negative integer. In order to correctly propagate
    errors, I changed the function signature to int. This is safe, since the
    read value from i2c is on 16 bits (MSB and LSB on 8 bits).

    Also, the function calibration_voltage is calling max11801_read_adc from
    touchscreen driverm which can return negative values in case of an
    error. I case of an error, just stop reading ADC data and return 0 as
    voltage_data.

    Signed-off-by: Robert Chiras

    Robert Chiras
     

08 Jun, 2017

3 commits


23 Feb, 2017

3 commits

  • cherry-pick below patch:

    ENGR00288351 sabresd_battery: fix usb charger detect when resume back on mx6sl

    Fix below redundant log after first resume back on mx6slevk:
    max8903-charger max8903.12: USB Charger Connected

    It's caused by not add enough prepare for uok&dok which are connected, such as
    i.MX6SL-EVK. In this case the board only support DC charger detect, so we
    didn't need judge the uok pin for USB charger detect, although uok share with
    dok pin.

    Signed-off-by: Robin Gong
    (cherry picked from commit c5ba4940a72e8124db7ef91a67b337df4e45e3b0)
    (cherry picked from commit bcd7f8e5e19528abfc1c095049b55b3d409b27af)

    Robin Gong
     
  • cherry-pick below patch:

    ENGR00277663-3 power: sabresd_battery: remove check charger offset on mx6slevk

    No need check the charger offset on mx6slevk, since there is no adc converter

    Signed-off-by: Robin Gong
    (cherry picked from commit 7683c62cf2290629f09983744d5a3987a4d64669)
    (cherry picked from commit 5f29715585ae82a435aa5ba0fe6393a53c10f87d)

    Robin Gong
     
  • cherry-pick below patch:
    ENGR00275004-4: power: sabresd_battery: add sabresd_battery driver

    Add sabresd battery driver which based on Max8903 charger IC.

    Signed-off-by: Robin Gong
    (cherry picked from commit 19ac2dfcd1e0ea3f1ae231cfc230315eaa9a41be)
    (cherry picked from commit b9e81012c21d3318a633a4447797e4a52676c760)

    Robin Gong
     

20 Jan, 2017

2 commits

  • commit 3bee9ea1de687925d116670f036599cbed8b66b0 upstream.

    The BQ27510 and BQ27520 use a slightly different register map than the
    BQ27500, add a new type enum and add these gauges to it.

    Fixes: d74534c27775 ("power: bq27xxx_battery: Add support for additional bq27xxx family devices")
    Based-on-patch-by: Kenneth R. Crudup
    Signed-off-by: Andrew F. Davis
    Signed-off-by: Sebastian Reichel
    Signed-off-by: Greg Kroah-Hartman

    Andrew F. Davis
     
  • commit 075eb5719d53e8bb4a406ad87e1de99319aa50f0 upstream.

    There's a typo, it should do pm_runtime_get_sync, not put.

    Fixes: d7bf353fd0aa3 ("bq24190_charger: Add support for TI BQ24190 Battery Charger")
    Cc: Mark A. Greer
    Signed-off-by: Tony Lindgren
    Reviewed-by: Mark Greer
    Signed-off-by: Sebastian Reichel
    Signed-off-by: Greg Kroah-Hartman

    Tony Lindgren
     

07 Oct, 2016

1 commit

  • Pull power supply and reset updates from Sebastian Reichel:
    - move power supply drivers to drivers/power/supply
    - unify location of power supply DT documentation
    - tps65217-charger: IRQ support
    - act8945a-charger: misc. cleanups & improvements
    - sbs-battery cleanup
    - fix users of deprecated create_singlethread_workqueue()
    - misc fixes.

    * tag 'for-v4.9' of git://git.kernel.org/pub/scm/linux/kernel/git/sre/linux-power-supply: (46 commits)
    power: supply: bq27xxx_battery: allow kernel poll_interval parameter runtime update
    power: supply: sbs-battery: Cleanup removal of chip->pdata
    power: reset: st: Remove obsolete platforms from dt doc
    power: reset: st-poweroff: Remove obsolete platforms.
    power: reset: zx-reboot: Unmap region obtained by of_iomap
    power: reset: xgene-reboot: Unmap region obtained by of_iomap
    power: supply: ab8500: cleanup with list_first_entry_or_null()
    power: reset: add in missing white space in error message text
    sbs-battery: make writes to ManufacturerAccess optional
    power: bq24257: Fix use of uninitialized pointer bq->charger
    power: supply: sbs-battery: simplify DT parsing
    power: supply: bq24735-charger: Request status GPIO with initial input setup
    power: supply: sbs-battery: Use gpio_desc and sleeping calls for battery detect
    power: supply: act8945a_charger: Add max current property
    power: supply: act8945a_charger: Add capacity level property
    doc: bindings: power: act8945a-charger: Update properties.
    power: supply: act8945a_charger: Fix the power supply type
    power: supply: act8945a_charger: Add status change update support
    power: supply: act8945a_charger: Improve state handling
    power: supply: act8945a_charger: Remove "battery_temperature"
    ...

    Linus Torvalds
     

21 Sep, 2016

2 commits


20 Sep, 2016

7 commits


13 Sep, 2016

1 commit

  • Use a more common logging style.

    Miscellanea:

    o Use pr_warn
    o Coalesce formats adding missing spaces
    o Argument alignment
    o Remove unnecessary OOM messages as k.alloc does stack dumps

    Signed-off-by: Joe Perches
    Acked-by: Nishanth Menon
    [khilman: update shortlog]
    Signed-off-by: Kevin Hilman
    Signed-off-by: Rafael J. Wysocki

    Joe Perches
     

07 Sep, 2016

1 commit

  • After the change to use the gpio descriptor interface, we get a warning if
    -Wmaybe-uninitialized is added back to the build flags (it is currently
    disabled:

    drivers/power/supply/sbs-battery.c: In function 'sbs_probe':
    drivers/power/supply/sbs-battery.c:760:28: error: 'pdata' may be used uninitialized in this function [-Werror=maybe-uninitialized]

    The problem is that if neither the DT properties nor a platform_data
    pointer are provided, the chip->pdata pointer gets set to an uninitialized
    value.

    Looking at the code some more, I found that the sbs_of_populate_pdata
    function is more complex than necessary and has confusing calling
    conventions of possibly returning a valid pointer, a NULL pointer
    or an ERR_PTR pointer (in addition to the uninitialized pointer).

    To fix all of that, this gets rid of the chip->pdata pointer and
    simply moves the two integers into the sbs_info structure. This
    makes it much clearer from reading sbs_probe() what the precedence
    of the three possible values are (pdata, DT, hardcoded defaults)
    and completely avoids the #ifdef CONFIG_OF guards as
    of_property_read_u32() gets replaced with a compile-time stub
    when that is disabled, and returns an error if passed a NULL of_node
    pointer.

    Signed-off-by: Arnd Bergmann
    Fixes: 3b5dd3a49496 ("power: supply: sbs-battery: Use gpio_desc and sleeping calls for battery detect")
    Signed-off-by: Sebastian Reichel

    Arnd Bergmann
     

05 Sep, 2016

1 commit

  • This requests the status GPIO with initial input setup. It is required
    to read the GPIO status at probe time and thus correctly avoid sending
    I2C messages when AC is not plugged.

    When requesting the GPIO without initial input setup, it always reads 0
    which causes probe to fail as it assumes the charger is connected, sends
    I2C messages and fails.

    While at it, this switches the driver over to gpiod API.

    Signed-off-by: Paul Kocialkowski
    Signed-off-by: Sebastian Reichel

    Paul Kocialkowski
     

01 Sep, 2016

3 commits


31 Aug, 2016

5 commits


29 Aug, 2016

1 commit

  • When the charger is missing (disconnected), it is safe to assume that
    the charger chip is no charging.

    This is especially relevant when a status GPIO is present and the
    charger is getting disconnected. bq24735_charger_is_charging will be
    triggered due to the interrupt then, it will attempt to read whether it
    is charging through i2c, which will fail as the charger is disconnected.

    This also fixes that specific issue.

    Signed-off-by: Paul Kocialkowski
    Signed-off-by: Sebastian Reichel

    Paul Kocialkowski
     

17 Aug, 2016

1 commit


16 Aug, 2016

8 commits

  • Power Supply Fixes for 4.8 cycle

    Sebastian Reichel
     
  • alloc_ordered_workqueue() with WQ_MEM_RECLAIM set replaces
    deprecated create_singlethread_workqueue(). This is the identity
    conversion.

    The workqueue "monitor_wqueue" is used to monitor the battery
    status. It has been identity converted.

    It queues multiple work items viz &di->monitor_work,
    &di->set_charged_work, which require execution ordering.
    Hence, alloc_workqueue has been used to replace the
    deprecated create_singlethread_workqueue instance.

    WQ_MEM_RECLAIM flag has been set to ensure forward progress under
    memory pressure.

    Signed-off-by: Bhaktipriya Shridhar
    Signed-off-by: Sebastian Reichel

    Bhaktipriya Shridhar
     
  • alloc_ordered_workqueue() with WQ_MEM_RECLAIM set replaces
    deprecated create_singlethread_workqueue(). This is the identity
    conversion.

    The workqueue "fg_wq" is used for running the FG algorithm periodically.
    It has been identity converted.

    It has multiple work items viz fg_periodic_work, fg_low_bat_work,
    fg_reinit_work, fg_work, fg_acc_cur_work and fg_check_hw_failure_work,
    which require execution ordering. Hence, a dedicated ordered workqueue
    has been used here.

    The WQ_MEM_RECLAIM flag has been set to guarantee forward progress under
    memory pressure.

    Signed-off-by: Bhaktipriya Shridhar
    Signed-off-by: Sebastian Reichel

    Bhaktipriya Shridhar
     
  • The workqueue "wq" is used for handling battery related tasks.

    It has a single work item viz &mb->update and hence it doesn't require
    execution ordering. Hence, alloc_workqueue has been used to replace the
    deprecated create_singlethread_workqueue instance.

    The WQ_MEM_RECLAIM flag has been set to ensure forward progress under
    memory pressure.

    Since there is a single work item, explicit concurrency
    limit is unnecessary here.

    Signed-off-by: Bhaktipriya Shridhar
    Signed-off-by: Sebastian Reichel

    Bhaktipriya Shridhar
     
  • alloc_ordered_workqueue() with WQ_MEM_RECLAIM set replaces
    deprecated create_singlethread_workqueue(). This is the identity
    conversion.

    The workqueue "charger_wq" is used for the IRQs and checking HW state of
    the charger. It has been identity converted.

    It has multiple work items viz usb_charger_attached_work, kick_wd_work,
    check_vbat_work, check_hw_failure_work, usb_charger_attached_work,
    ac_work, ac_charger_attached_work, attach_work and check_usbchgnotok_work,
    which require execution ordering. Hence, a dedicated ordered workqueue
    has been used here.

    The WQ_MEM_RECLAIM flag has also been set to ensure
    forward progress under memory pressure.

    Signed-off-by: Bhaktipriya Shridhar
    Signed-off-by: Sebastian Reichel

    Bhaktipriya Shridhar
     
  • The workqueue "monitor_wqueue" is used to monitor the PMIC battery status.
    It queues a single work item (pbi->monitor_battery) and hence doesn't
    require ordering. Hence, alloc_workqueue has been used to replace the
    deprecated create_singlethread_workqueue instance.

    Since PMIC battery status needs to be monitored for any change, the
    WQ_MEM_RECLAIM flag has been set to ensure forward progress under memory
    pressure.

    Since there is a single work item, explicit concurrency
    limit is unnecessary here.

    Signed-off-by: Bhaktipriya Shridhar
    Signed-off-by: Sebastian Reichel

    Bhaktipriya Shridhar
     
  • alloc_ordered_workqueue() with WQ_MEM_RECLAIM set replaces
    deprecated create_singlethread_workqueue(). This is the identity
    conversion.

    The workqueue "charger_wq" is used for running all the charger related
    tasks. This involves charger detection, checking for HW failure and HW
    status. This workqueue has been identity converted.

    It queues multiple workitems viz &pm2->check_main_thermal_prot_work,
    &pm2->check_hw_failure_work, &pm2->ac_work. Hence, the deprecated
    create_singlethread_workqueue() instance has been replaced with a
    dedicated ordered workqueue.

    The WQ_MEM_RECLAIM flag has been set to ensure forward progress under
    memory pressure.

    Signed-off-by: Bhaktipriya Shridhar
    Signed-off-by: Sebastian Reichel

    Bhaktipriya Shridhar
     
  • The workqueue "btemp_wq" is used for measuring the temperature
    periodically. It queues a single workitem (btemp_periodic_work) and
    hence doesn't require ordering. Thus, the deprecated
    create_singlethread_workqueue() instance has been replaced with
    alloc_workqueue().

    The WQ_MEM_RECLAIM flag has been set to ensure forward progress under
    memory pressure.

    Since there is a single work item, explicit concurrency
    limit is unnecessary here.

    Signed-off-by: Bhaktipriya Shridhar
    Signed-off-by: Sebastian Reichel

    Bhaktipriya Shridhar