Commit d445d649 authored by Linus Torvalds's avatar Linus Torvalds
Browse files
Pull power supply fixes from Sebastian Reichel:
 "Three fixes for the 5.16 cycle:

   - Avoid going beyond last capacity in the power-supply core

   - Replace 1E6L with NSEC_PER_MSEC to avoid floating point calculation
     in LLVM resulting in a build failure

   - Fix ADC measurements in bq25890 charger driver"

* tag 'for-v5.16-rc' of git://git.kernel.org/pub/scm/linux/kernel/git/sre/linux-power-supply:
  power: reset: ltc2952: Fix use of floating point literals
  power: bq25890: Enable continuous conversion for ADC at charging
  power: supply: core: Break capacity loop
parents 622e42a6 644106cd
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -159,8 +159,8 @@ static void ltc2952_poweroff_kill(void)

static void ltc2952_poweroff_default(struct ltc2952_poweroff *data)
{
	data->wde_interval = 300L * 1E6L;
	data->trigger_delay = ktime_set(2, 500L*1E6L);
	data->wde_interval = 300L * NSEC_PER_MSEC;
	data->trigger_delay = ktime_set(2, 500L * NSEC_PER_MSEC);

	hrtimer_init(&data->timer_trigger, CLOCK_MONOTONIC, HRTIMER_MODE_REL);
	data->timer_trigger.function = ltc2952_poweroff_timer_trigger;
+2 −2
Original line number Diff line number Diff line
@@ -581,12 +581,12 @@ static irqreturn_t __bq25890_handle_irq(struct bq25890_device *bq)

	if (!new_state.online && bq->state.online) {	    /* power removed */
		/* disable ADC */
		ret = bq25890_field_write(bq, F_CONV_START, 0);
		ret = bq25890_field_write(bq, F_CONV_RATE, 0);
		if (ret < 0)
			goto error;
	} else if (new_state.online && !bq->state.online) { /* power inserted */
		/* enable ADC, to have control of charge current/voltage */
		ret = bq25890_field_write(bq, F_CONV_START, 1);
		ret = bq25890_field_write(bq, F_CONV_RATE, 1);
		if (ret < 0)
			goto error;
	}
+4 −0
Original line number Diff line number Diff line
@@ -853,6 +853,10 @@ power_supply_find_ocv2cap_table(struct power_supply_battery_info *info,
		return NULL;

	for (i = 0; i < POWER_SUPPLY_OCV_TEMP_MAX; i++) {
		/* Out of capacity tables */
		if (!info->ocv_table[i])
			break;

		temp_diff = abs(info->ocv_temp[i] - temp);

		if (temp_diff < best_temp_diff) {