Commit 00074a70 authored by Linus Torvalds's avatar Linus Torvalds
Browse files
Pull power supply and reset updates from Sebastian Reichel:

 - test_power: add support for current and charge_counter

 - cpcap-charger: improve charge calculation and limit default charge
   voltage

 - ab8500: convert to IIO

 - misc small fixes all over drivers

* tag 'for-v5.5' of git://git.kernel.org/pub/scm/linux/kernel/git/sre/linux-power-supply: (29 commits)
  power: supply: bd70528: Add MODULE_ALIAS to allow module auto loading
  power: supply: ab8500_charger: Fix inconsistent IS_ERR and PTR_ERR
  power: supply: cpcap-charger: cpcap_charger_voltage_to_regval() can be static
  power: supply: cpcap-battery: Add basic coulomb counter calibrate support
  power: supply: cpcap-battery: Read and save integrator register CCI
  power: supply: cpcap-battery: Simplify short term power average calculation
  power: supply: cpcap-battery: Simplify coulomb counter calculation with div_s64
  power: supply: cpcap-battery: Move coulomb counter units per lsb to ddata
  power: supply: cpcap-charger: Allow changing constant charge voltage
  power: supply: cpcap-battery: Fix handling of lowered charger voltage
  power: supply: cpcap-charger: Improve battery detection
  power: supply: cpcap-battery: Check voltage before orderly_poweroff
  power: supply: cpcap-charger: Limit voltage to 4.2V for battery
  power: supply: ab8500: Handle invalid IRQ from platform_get_irq_byname()
  power: supply: ab8500_fg: Do not free non-requested IRQs in probe's error path
  power: supply: ab8500: Cleanup probe in reverse order
  power: reset: at91: fix __le32 cast in reset code
  power: supply: abx500_chargalg: Fix code indentation
  mfd: Switch the AB8500 GPADC to IIO
  iio: adc: New driver for the AB8500 GPADC
  ...
parents 89d57ddd 9480029f
Loading
Loading
Loading
Loading
+119 −0
Original line number Diff line number Diff line
@@ -69,6 +69,18 @@ Required child device properties:
- compatible             : "stericsson,ab8500-[bm|btemp|charger|fg|gpadc|gpio|ponkey|
                                               pwm|regulator|rtc|sysctrl|usb]";

  A few child devices require ADC channels from the GPADC node. Those follow the
  standard bindings from iio/iio-bindings.txt and iio/adc/adc.txt

  abx500-temp		 : io-channels "aux1" and "aux2" for measuring external
			   temperatures.
  ab8500-fg		 : io-channel "main_bat_v" for measuring main battery voltage,
  ab8500-btemp		 : io-channels "btemp_ball" and "bat_ctrl" for measuring the
			   battery voltage.
  ab8500-charger	 : io-channels "main_charger_v", "main_charger_c", "vbus_v",
			   "usb_charger_c" for measuring voltage and current of the
			   different charging supplies.

Optional child device properties:
- interrupts             : contains the device IRQ(s) using the 2-cell format (see above)
- interrupt-names        : contains names of IRQ resource in the order in which they were
@@ -102,6 +114,113 @@ ab8500 {
                              39 0x4>;
                interrupt-names = "HW_CONV_END", "SW_CONV_END";
                vddadc-supply = <&ab8500_ldo_tvout_reg>;
		#address-cells = <1>;
		#size-cells = <0>;
		#io-channel-cells = <1>;

		/* GPADC channels */
		bat_ctrl: channel@1 {
			reg = <0x01>;
		};
		btemp_ball: channel@2 {
			reg = <0x02>;
		};
		main_charger_v: channel@3 {
			reg = <0x03>;
		};
		acc_detect1: channel@4 {
			reg = <0x04>;
		};
		acc_detect2: channel@5 {
			reg = <0x05>;
		};
		adc_aux1: channel@6 {
			reg = <0x06>;
		};
		adc_aux2: channel@7 {
			reg = <0x07>;
		};
		main_batt_v: channel@8 {
			reg = <0x08>;
		};
		vbus_v: channel@9 {
			reg = <0x09>;
		};
		main_charger_c: channel@a {
			reg = <0x0a>;
		};
		usb_charger_c: channel@b {
			reg = <0x0b>;
		};
		bk_bat_v: channel@c {
			reg = <0x0c>;
		};
		die_temp: channel@d {
			reg = <0x0d>;
		};
		usb_id: channel@e {
			reg = <0x0e>;
		};
		xtal_temp: channel@12 {
			reg = <0x12>;
		};
		vbat_true_meas: channel@13 {
			reg = <0x13>;
		};
		bat_ctrl_and_ibat: channel@1c {
			reg = <0x1c>;
		};
		vbat_meas_and_ibat: channel@1d {
			reg = <0x1d>;
		};
		vbat_true_meas_and_ibat: channel@1e {
			reg = <0x1e>;
		};
		bat_temp_and_ibat: channel@1f {
			reg = <0x1f>;
		};
        };

	ab8500_temp {
		compatible = "stericsson,abx500-temp";
		io-channels = <&gpadc 0x06>,
			      <&gpadc 0x07>;
		io-channel-name = "aux1", "aux2";
	};

	ab8500_battery: ab8500_battery {
		stericsson,battery-type = "LIPO";
		thermistor-on-batctrl;
	};

	ab8500_fg {
		compatible = "stericsson,ab8500-fg";
		battery	   = <&ab8500_battery>;
		io-channels = <&gpadc 0x08>;
		io-channel-name = "main_bat_v";
	};

	ab8500_btemp {
		compatible = "stericsson,ab8500-btemp";
		battery	   = <&ab8500_battery>;
		io-channels = <&gpadc 0x02>,
			      <&gpadc 0x01>;
		io-channel-name = "btemp_ball",
				"bat_ctrl";
	};

	ab8500_charger {
		compatible	= "stericsson,ab8500-charger";
		battery		= <&ab8500_battery>;
		vddadc-supply	= <&ab8500_ldo_tvout_reg>;
		io-channels = <&gpadc 0x03>,
			      <&gpadc 0x0a>,
			      <&gpadc 0x09>,
			      <&gpadc 0x0b>;
		io-channel-name = "main_charger_v",
				"main_charger_c",
				"vbus_v",
				"usb_charger_c";
	};

        ab8500-usb {
+6 −3
Original line number Diff line number Diff line
@@ -5,7 +5,8 @@ Required properties:
- interrupts: Interrupt specifier for each name in interrupt-names
- interrupt-names: Should contain the following entries:
		   "chrg_det", "rvrs_chrg", "chrg_se1b", "se0conn",
		   "rvrs_mode", "chrgcurr1", "vbusvld", "battdetb"
		   "rvrs_mode", "chrgcurr2", "chrgcurr1", "vbusvld",
		   "battdetb"
- io-channels: IIO ADC channel specifier for each name in io-channel-names
- io-channel-names: Should contain the following entries:
		    "battdetb", "battp", "vbus", "chg_isense", "batti"
@@ -21,11 +22,13 @@ cpcap_charger: charger {
	compatible = "motorola,mapphone-cpcap-charger";
	interrupts-extended = <
		&cpcap 13 0 &cpcap 12 0 &cpcap 29 0 &cpcap 28 0
		&cpcap 22 0 &cpcap 20 0 &cpcap 19 0 &cpcap 54 0
		&cpcap 22 0 &cpcap 21 0 &cpcap 20 0 &cpcap 19 0
		&cpcap 54 0
	>;
	interrupt-names =
		"chrg_det", "rvrs_chrg", "chrg_se1b", "se0conn",
		"rvrs_mode", "chrgcurr1", "vbusvld", "battdetb";
		"rvrs_mode", "chrgcurr2", "chrgcurr1", "vbusvld",
		"battdetb";
	mode-gpios = <&gpio3 29 GPIO_ACTIVE_LOW
		      &gpio3 23 GPIO_ACTIVE_LOW>;
	io-channels = <&cpcap_adc 0 &cpcap_adc 1
+1 −0
Original line number Diff line number Diff line
@@ -2021,6 +2021,7 @@ F: drivers/dma/ste_dma40*
F:	drivers/hwspinlock/u8500_hsem.c
F:	drivers/i2c/busses/i2c-nomadik.c
F:	drivers/i2c/busses/i2c-stu300.c
F:	drivers/iio/adc/ab8500-gpadc.c
F:	drivers/mfd/ab3100*
F:	drivers/mfd/ab8500*
F:	drivers/mfd/abx500*
+4 −2
Original line number Diff line number Diff line
@@ -43,11 +43,13 @@
			compatible = "motorola,mapphone-cpcap-charger";
			interrupts-extended = <
				&cpcap 13 0 &cpcap 12 0 &cpcap 29 0 &cpcap 28 0
				&cpcap 22 0 &cpcap 20 0 &cpcap 19 0 &cpcap 54 0
				&cpcap 22 0 &cpcap 21 0 &cpcap 20 0 &cpcap 19 0
				&cpcap 54 0
			>;
			interrupt-names =
				"chrg_det", "rvrs_chrg", "chrg_se1b", "se0conn",
				"rvrs_mode", "chrgcurr1", "vbusvld", "battdetb";
				"rvrs_mode", "chrgcurr2", "chrgcurr1", "vbusvld",
				"battdetb";
			mode-gpios = <&gpio3 29 GPIO_ACTIVE_LOW
				      &gpio3 23 GPIO_ACTIVE_LOW>;
			io-channels = <&cpcap_adc 0 &cpcap_adc 1
+2 −1
Original line number Diff line number Diff line
@@ -40,7 +40,8 @@ comment "Native drivers"

config SENSORS_AB8500
	tristate "AB8500 thermal monitoring"
	depends on AB8500_GPADC && AB8500_BM
	depends on AB8500_GPADC && AB8500_BM && (IIO = y)
	default n
	help
	  If you say yes here you get support for the thermal sensor part
	  of the AB8500 chip. The driver includes thermal management for
Loading