Skip to contentSkip to conversation

Add new device nodes for Spreadtrum SC9860 platform

PATCH Applied Baolin Wang 2 participants 9 messages Feb 13, 2019 – Feb 18, 2019

Subsystems (2)
lore
Share & tools
lore
#0 lore raw

v2 cover Add new device nodes for Spreadtrum SC9860 platform

This patch set adds charger and fuel gauge device nodes for Spreadtrum SC2731 PMIC, it also removes redundant irq trigger setting for PMIC devices and adds nvmem cells for ADC to calibrate the ADC channel scales.

Moreover we also remove the wildcard compatible string.

Changes from v1:
- Remove wildcard compatible string.

Baolin Wang (5):
arm64: dts: sprd: Remove PMIC INTC irq trigger type
arm64: dts: sprd: Add ADC calibration support
arm64: dts: sprd: Add SC2731 charger device
arm64: dts: sprd: Add SC27XX fuel gauge device
arm64: dts: sprd: Remove wildcard compatible string

 arch/arm64/boot/dts/sprd/sc2731.dtsi      |   56 +++++++++++++++++++++++------
 arch/arm64/boot/dts/sprd/sp9860g-1h10.dts |   16 +++++++++
 2 files changed, 61 insertions(+), 11 deletions(-)
Signature · 1 line
1.7.9.5
#1 lore raw

PATCH v2 1/5 arm64: dts: sprd: Remove PMIC INTC irq trigger type

The Spreadtrum PMIC INTC controller has no registers to set trigger type, since it is always high level trigger as default. So remove its child devices' irq trigger type setting and change #interrupt-cells to 1.

---
 arch/arm64/boot/dts/sprd/sc2731.dtsi |    8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)
arch/arm64/boot/dts/sprd/sc2731.dtsi +4 -4
index 82bd642..f2f2aa5 100644
@@ -13,7 +13,7 @@
 		spi-max-frequency = <26000000>;
 		interrupts = <GIC_SPI 31 IRQ_TYPE_LEVEL_HIGH>;
 		interrupt-controller;
-		#interrupt-cells = <2>;
+		#interrupt-cells = <1>;
 		#address-cells = <1>;
 		#size-cells = <0>;
 
@@ -43,14 +43,14 @@
 			compatible = "sprd,sc27xx-rtc", "sprd,sc2731-rtc";
 			reg = <0x280>;
 			interrupt-parent = <&sc2731_pmic>;
-			interrupts = <2 IRQ_TYPE_LEVEL_HIGH>;
+			interrupts = <2>;
 		};
 
 		pmic_eic: gpio@300 {
 			compatible = "sprd,sc27xx-eic";
 			reg = <0x300>;
 			interrupt-parent = <&sc2731_pmic>;
-			interrupts = <5 IRQ_TYPE_LEVEL_HIGH>;
+			interrupts = <5>;
 			gpio-controller;
 			#gpio-cells = <2>;
 			interrupt-controller;
@@ -69,7 +69,7 @@
 			compatible = "sprd,sc27xx-adc", "sprd,sc2731-adc";
 			reg = <0x480>;
 			interrupt-parent = <&sc2731_pmic>;
-			interrupts = <0 IRQ_TYPE_LEVEL_HIGH>;
+			interrupts = <0>;
 			#io-channel-cells = <1>;
 			hwlocks = <&hwlock 4>;
 		};
Signature · 1 line
1.7.9.5
#2 lore raw

PATCH v2 2/5 arm64: dts: sprd: Add ADC calibration support

In reply to Baolin Wang

This patch adds phandles to the calibration cells provided by the Efuse device, which is used to calibrate the ADC channel scales.

---
 arch/arm64/boot/dts/sprd/sc2731.dtsi |   10 ++++++++++
 1 file changed, 10 insertions(+)
arch/arm64/boot/dts/sprd/sc2731.dtsi +10 -0
index f2f2aa5..a2edc25 100644
@@ -63,6 +63,14 @@
 			#address-cells = <1>;
 			#size-cells = <1>;
 			hwlocks = <&hwlock 12>;
+
+			adc_big_scale: calib@24 {
+				reg = <0x24 0x2>;
+			};
+
+			adc_small_scale: calib@26 {
+				reg = <0x26 0x2>;
+			};
 		};
 
 		pmic_adc: adc@480 {
@@ -72,6 +80,8 @@
 			interrupts = <0>;
 			#io-channel-cells = <1>;
 			hwlocks = <&hwlock 4>;
+			nvmem-cell-names = "big_scale_calib", "small_scale_calib";
+			nvmem-cells = <&adc_big_scale>, <&adc_small_scale>;
 		};
 
 		vibrator@ec8 {
Signature · 1 line
1.7.9.5
#3 lore raw

PATCH v2 3/5 arm64: dts: sprd: Add SC2731 charger device

In reply to Baolin Wang

Add charger device node and related battery node for SC2731 PMIC.

---
 arch/arm64/boot/dts/sprd/sc2731.dtsi      |    6 ++++++
 arch/arm64/boot/dts/sprd/sp9860g-1h10.dts |   16 ++++++++++++++++
 2 files changed, 22 insertions(+)
arch/arm64/boot/dts/sprd/sc2731.dtsi +6 -0
index a2edc25..dbf6242 100644
@@ -17,6 +17,12 @@
 		#address-cells = <1>;
 		#size-cells = <0>;
 
+		charger@0 {
+			compatible = "sprd,sc2731-charger";
+			reg = <0x0>;
+			monitored-battery = <&bat>;
+		};
+
 		led-controller@200 {
 			compatible = "sprd,sc27xx-bltc", "sprd,sc2731-bltc";
 			reg = <0x200>;
arch/arm64/boot/dts/sprd/sp9860g-1h10.dts +16 -0
index 3bd18e3..2a963bd 100644
@@ -41,6 +41,22 @@
 		#size-cells = <2>;
 		ranges;
 	};
+
+	bat: battery {
+		compatible = "simple-battery";
+		charge-full-design-microamp-hours = <1900000>;
+		charge-term-current-microamp = <120000>;
+		constant_charge_voltage_max_microvolt = <4350000>;
+		internal-resistance-micro-ohms = <250000>;
+		ocv-capacity-celsius = <20>;
+		ocv-capacity-table-0 = <4185000 100>, <4113000 95>, <4066000 90>,
+			<4022000 85>, <3983000 80>, <3949000 75>,
+			<3917000 70>, <3889000 65>, <3864000 60>,
+			<3835000 55>, <3805000 50>, <3787000 45>,
+			<3777000 40>, <3773000 35>, <3770000 30>,
+			<3765000 25>, <3752000 20>, <3724000 15>,
+			<3680000 10>, <3605000 5>, <3400000 0>;
+	};
 };
 
 &uart0 {
Signature · 1 line
1.7.9.5
#4 lore raw

PATCH v2 4/5 arm64: dts: sprd: Add SC27XX fuel gauge device

In reply to Baolin Wang

Add Spreadtrum SC27XX fuel gauge device node to calculate the battery capacity.

---
 arch/arm64/boot/dts/sprd/sc2731.dtsi |   18 ++++++++++++++++++
 1 file changed, 18 insertions(+)
arch/arm64/boot/dts/sprd/sc2731.dtsi +18 -0
index dbf6242..4a79ddf 100644
@@ -70,6 +70,11 @@
 			#size-cells = <1>;
 			hwlocks = <&hwlock 12>;
 
+			fgu_calib: calib@6 {
+				reg = <0x6 0x2>;
+				bits = <0 9>;
+			};
+
 			adc_big_scale: calib@24 {
 				reg = <0x24 0x2>;
 			};
@@ -90,6 +95,19 @@
 			nvmem-cells = <&adc_big_scale>, <&adc_small_scale>;
 		};
 
+		fgu@a00 {
+			compatible = "sprd,sc2731-fgu";
+			reg = <0xa00>;
+			bat-detect-gpio = <&pmic_eic 9 GPIO_ACTIVE_HIGH>;
+			io-channels = <&pmic_adc 3>, <&pmic_adc 6>;
+			io-channel-names = "bat-temp", "charge-vol";
+			monitored-battery = <&bat>;
+			nvmem-cell-names = "fgu_calib";
+			nvmem-cells = <&fgu_calib>;
+			interrupt-parent = <&sc2731_pmic>;
+			interrupts = <4>;
+		};
+
 		vibrator@ec8 {
 			compatible = "sprd,sc27xx-vibrator", "sprd,sc2731-vibrator";
 			reg = <0xec8>;
Signature · 1 line
1.7.9.5
#5 lore raw

PATCH v2 5/5 arm64: dts: sprd: Remove wildcard compatible string

In reply to Baolin Wang

Remove wildcard compatible string.

---
 arch/arm64/boot/dts/sprd/sc2731.dtsi |   14 +++++++-------
 1 file changed, 7 insertions(+), 7 deletions(-)
arch/arm64/boot/dts/sprd/sc2731.dtsi +7 -7
index 4a79ddf..e15409f 100644
@@ -24,7 +24,7 @@
 		};
 
 		led-controller@200 {
-			compatible = "sprd,sc27xx-bltc", "sprd,sc2731-bltc";
+			compatible = "sprd,sc2731-bltc";
 			reg = <0x200>;
 			#address-cells = <1>;
 			#size-cells = <0>;
@@ -46,14 +46,14 @@
 		};
 
 		rtc@280 {
-			compatible = "sprd,sc27xx-rtc", "sprd,sc2731-rtc";
+			compatible = "sprd,sc2731-rtc";
 			reg = <0x280>;
 			interrupt-parent = <&sc2731_pmic>;
 			interrupts = <2>;
 		};
 
 		pmic_eic: gpio@300 {
-			compatible = "sprd,sc27xx-eic";
+			compatible = "sprd,sc2731-eic";
 			reg = <0x300>;
 			interrupt-parent = <&sc2731_pmic>;
 			interrupts = <5>;
@@ -64,7 +64,7 @@
 		};
 
 		efuse@380 {
-			compatible = "sprd,sc27xx-efuse", "sprd,sc2731-efuse";
+			compatible = "sprd,sc2731-efuse";
 			reg = <0x380>;
 			#address-cells = <1>;
 			#size-cells = <1>;
@@ -85,7 +85,7 @@
 		};
 
 		pmic_adc: adc@480 {
-			compatible = "sprd,sc27xx-adc", "sprd,sc2731-adc";
+			compatible = "sprd,sc2731-adc";
 			reg = <0x480>;
 			interrupt-parent = <&sc2731_pmic>;
 			interrupts = <0>;
@@ -109,12 +109,12 @@
 		};
 
 		vibrator@ec8 {
-			compatible = "sprd,sc27xx-vibrator", "sprd,sc2731-vibrator";
+			compatible = "sprd,sc2731-vibrator";
 			reg = <0xec8>;
 		};
 
 		regulators {
-			compatible = "sprd,sc27xx-regulator";
+			compatible = "sprd,sc2731-regulator";
 
 			vddarm0: BUCK_CPU0 {
 				regulator-name = "vddarm0";
Signature · 1 line
1.7.9.5
#6 lore raw

Re: [PATCH v2 5/5] arm64: dts: sprd: Remove wildcard compatible string

Quoted 4 lines · Baolin Wang

Remove wildcard compatible string.

Looks good to me. It does break using the new dtb file on older kernels, but I suppose this is not a case we care much about yet on your platform, given that both the dts file sand the drivers in the kernel are still work in progress.

I had started the other reply I just sent before I saw this new mail.

Arnd

#7 lore raw

Re: [PATCH v2 5/5] arm64: dts: sprd: Remove wildcard compatible string

Quoted 5 lines · Arnd Bergmann
Quoted 3 lines · Baolin Wang

Remove wildcard compatible string.

Quoted 7 lines
Quoted 1 line

Looks good to me. It does break using the new dtb file on older kernels, but I suppose this is not a case we care much about yet on your platform, given that both the dts file sand the drivers in the kernel are still work in progress.

Right. Thanks for your reviewing.

Quoted 4 lines

I had started the other reply I just sent before I saw this new mail.

Arnd

Signature · 2 lines
Baolin Wang
Best Regards
#8 lore raw

Re: [PATCH v2 5/5] arm64: dts: sprd: Remove wildcard compatible string

Quoted 10 lines · Baolin Wang
Quoted 8 lines · Arnd Bergmann
Quoted 4 lines · Baolin Wang

Remove wildcard compatible string.

Quoted 6 lines
Quoted 4 lines

Looks good to me. It does break using the new dtb file on older kernels, but I suppose this is not a case we care much about yet on your platform, given that both the dts file sand the drivers in the kernel are still work in progress.

Right. Thanks for your reviewing.

I have applied patches 1 through 5 now. Thanks,

Arnd