diff --git a/patch/kernel/sunxi-dev/0109-arm64-dts-allwinner-a64-pinebook-enable-power-suppli.patch b/patch/kernel/sunxi-dev/0109-arm64-dts-allwinner-a64-pinebook-enable-power-suppli.patch deleted file mode 100644 index e17823861..000000000 --- a/patch/kernel/sunxi-dev/0109-arm64-dts-allwinner-a64-pinebook-enable-power-suppli.patch +++ /dev/null @@ -1,35 +0,0 @@ -From bedc59458dbad00e9e9b324ebf6836f724158539 Mon Sep 17 00:00:00 2001 -From: Vasily Khoruzhick -Date: Tue, 23 Oct 2018 21:53:27 +0300 -Subject: [PATCH 109/146] arm64: dts: allwinner: a64: pinebook: enable power - supplies - -Pinebook has ACIN connector and 10000 mAh battery. - -Signed-off-by: Vasily Khoruzhick ---- - arch/arm64/boot/dts/allwinner/sun50i-a64-pinebook.dts | 8 ++++++++ - 1 file changed, 8 insertions(+) - -diff --git a/arch/arm64/boot/dts/allwinner/sun50i-a64-pinebook.dts b/arch/arm64/boot/dts/allwinner/sun50i-a64-pinebook.dts -index 52cbb3052588..dce16d9d6afb 100644 ---- a/arch/arm64/boot/dts/allwinner/sun50i-a64-pinebook.dts -+++ b/arch/arm64/boot/dts/allwinner/sun50i-a64-pinebook.dts -@@ -179,6 +179,14 @@ - - #include "axp803.dtsi" - -+&ac_power_supply { -+ status = "okay"; -+}; -+ -+&battery_power_supply { -+ status = "okay"; -+}; -+ - ®_aldo1 { - regulator-min-microvolt = <2800000>; - regulator-max-microvolt = <2800000>; --- -2.17.1 - diff --git a/patch/kernel/sunxi-dev/0110-power-supply-add-AC-power-supply-driver-for-AXP813.patch b/patch/kernel/sunxi-dev/0110-power-supply-add-AC-power-supply-driver-for-AXP813.patch deleted file mode 100644 index ca9b56f2c..000000000 --- a/patch/kernel/sunxi-dev/0110-power-supply-add-AC-power-supply-driver-for-AXP813.patch +++ /dev/null @@ -1,179 +0,0 @@ -From 361aaaf61fc87465c3a59a5e655ad2ce5c727f46 Mon Sep 17 00:00:00 2001 -From: Oskari Lemmela -Date: Tue, 23 Oct 2018 21:53:28 +0300 -Subject: [PATCH 110/146] power: supply: add AC power supply driver for AXP813 - -AXP813 and AXP803 PMICs can control input current and minimum voltage. - -Both of these values are configurable. - -Signed-off-by: Oskari Lemmela -Reviewed-by: Quentin Schulz -Acked-by: Lee Jones ---- - drivers/power/supply/axp20x_ac_power.c | 94 ++++++++++++++++++++++++++ - include/linux/mfd/axp20x.h | 1 + - 2 files changed, 95 insertions(+) - -diff --git a/drivers/power/supply/axp20x_ac_power.c b/drivers/power/supply/axp20x_ac_power.c -index 0771f951b11f..59b4c8d3b961 100644 ---- a/drivers/power/supply/axp20x_ac_power.c -+++ b/drivers/power/supply/axp20x_ac_power.c -@@ -27,6 +27,16 @@ - #define AXP20X_PWR_STATUS_ACIN_PRESENT BIT(7) - #define AXP20X_PWR_STATUS_ACIN_AVAIL BIT(6) - -+#define AXP813_VHOLD_MASK GENMASK(5, 3) -+#define AXP813_VHOLD_UV_TO_BIT(x) ((((x) / 100000) - 40) << 3) -+#define AXP813_VHOLD_REG_TO_UV(x) \ -+ (((((x) & AXP813_VHOLD_MASK) >> 3) + 40) * 100000) -+ -+#define AXP813_CURR_LIMIT_MASK GENMASK(2, 0) -+#define AXP813_CURR_LIMIT_UA_TO_BIT(x) (((x) / 500000) - 3) -+#define AXP813_CURR_LIMIT_REG_TO_UA(x) \ -+ ((((x) & AXP813_CURR_LIMIT_MASK) + 3) * 500000) -+ - #define DRVNAME "axp20x-ac-power-supply" - - struct axp20x_ac_power { -@@ -102,6 +112,57 @@ static int axp20x_ac_power_get_property(struct power_supply *psy, - - return 0; - -+ case POWER_SUPPLY_PROP_VOLTAGE_MIN: -+ ret = regmap_read(power->regmap, AXP813_ACIN_PATH_CTRL, ®); -+ if (ret) -+ return ret; -+ -+ val->intval = AXP813_VHOLD_REG_TO_UV(reg); -+ -+ return 0; -+ -+ case POWER_SUPPLY_PROP_INPUT_CURRENT_LIMIT: -+ ret = regmap_read(power->regmap, AXP813_ACIN_PATH_CTRL, ®); -+ if (ret) -+ return ret; -+ -+ val->intval = AXP813_CURR_LIMIT_REG_TO_UA(reg); -+ /* AXP813 datasheet defines values 11x as 4000mA */ -+ if (val->intval > 4000000) -+ val->intval = 4000000; -+ -+ return 0; -+ -+ default: -+ return -EINVAL; -+ } -+ -+ return -EINVAL; -+} -+ -+static int axp813_ac_power_set_property(struct power_supply *psy, -+ enum power_supply_property psp, -+ const union power_supply_propval *val) -+{ -+ struct axp20x_ac_power *power = power_supply_get_drvdata(psy); -+ -+ switch (psp) { -+ case POWER_SUPPLY_PROP_VOLTAGE_MIN: -+ if (val->intval < 4000000 || val->intval > 4700000) -+ return -EINVAL; -+ -+ return regmap_update_bits(power->regmap, AXP813_ACIN_PATH_CTRL, -+ AXP813_VHOLD_MASK, -+ AXP813_VHOLD_UV_TO_BIT(val->intval)); -+ -+ case POWER_SUPPLY_PROP_INPUT_CURRENT_LIMIT: -+ if (val->intval < 1500000 || val->intval > 4000000) -+ return -EINVAL; -+ -+ return regmap_update_bits(power->regmap, AXP813_ACIN_PATH_CTRL, -+ AXP813_CURR_LIMIT_MASK, -+ AXP813_CURR_LIMIT_UA_TO_BIT(val->intval)); -+ - default: - return -EINVAL; - } -@@ -109,6 +170,13 @@ static int axp20x_ac_power_get_property(struct power_supply *psy, - return -EINVAL; - } - -+static int axp813_ac_power_prop_writeable(struct power_supply *psy, -+ enum power_supply_property psp) -+{ -+ return psp == POWER_SUPPLY_PROP_VOLTAGE_MIN || -+ psp == POWER_SUPPLY_PROP_INPUT_CURRENT_LIMIT; -+} -+ - static enum power_supply_property axp20x_ac_power_properties[] = { - POWER_SUPPLY_PROP_HEALTH, - POWER_SUPPLY_PROP_PRESENT, -@@ -123,6 +191,14 @@ static enum power_supply_property axp22x_ac_power_properties[] = { - POWER_SUPPLY_PROP_ONLINE, - }; - -+static enum power_supply_property axp813_ac_power_properties[] = { -+ POWER_SUPPLY_PROP_HEALTH, -+ POWER_SUPPLY_PROP_PRESENT, -+ POWER_SUPPLY_PROP_ONLINE, -+ POWER_SUPPLY_PROP_VOLTAGE_MIN, -+ POWER_SUPPLY_PROP_INPUT_CURRENT_LIMIT, -+}; -+ - static const struct power_supply_desc axp20x_ac_power_desc = { - .name = "axp20x-ac", - .type = POWER_SUPPLY_TYPE_MAINS, -@@ -139,6 +215,16 @@ static const struct power_supply_desc axp22x_ac_power_desc = { - .get_property = axp20x_ac_power_get_property, - }; - -+static const struct power_supply_desc axp813_ac_power_desc = { -+ .name = "axp813-ac", -+ .type = POWER_SUPPLY_TYPE_MAINS, -+ .properties = axp813_ac_power_properties, -+ .num_properties = ARRAY_SIZE(axp813_ac_power_properties), -+ .property_is_writeable = axp813_ac_power_prop_writeable, -+ .get_property = axp20x_ac_power_get_property, -+ .set_property = axp813_ac_power_set_property, -+}; -+ - struct axp_data { - const struct power_supply_desc *power_desc; - bool acin_adc; -@@ -154,6 +240,11 @@ static const struct axp_data axp22x_data = { - .acin_adc = false, - }; - -+static const struct axp_data axp813_data = { -+ .power_desc = &axp813_ac_power_desc, -+ .acin_adc = false, -+}; -+ - static int axp20x_ac_power_probe(struct platform_device *pdev) - { - struct axp20x_dev *axp20x = dev_get_drvdata(pdev->dev.parent); -@@ -234,6 +325,9 @@ static const struct of_device_id axp20x_ac_power_match[] = { - }, { - .compatible = "x-powers,axp221-ac-power-supply", - .data = &axp22x_data, -+ }, { -+ .compatible = "x-powers,axp813-ac-power-supply", -+ .data = &axp813_data, - }, { /* sentinel */ } - }; - MODULE_DEVICE_TABLE(of, axp20x_ac_power_match); -diff --git a/include/linux/mfd/axp20x.h b/include/linux/mfd/axp20x.h -index 517e60eecbcb..2302b620d238 100644 ---- a/include/linux/mfd/axp20x.h -+++ b/include/linux/mfd/axp20x.h -@@ -266,6 +266,7 @@ enum axp20x_variants { - #define AXP288_RT_BATT_V_H 0xa0 - #define AXP288_RT_BATT_V_L 0xa1 - -+#define AXP813_ACIN_PATH_CTRL 0x3a - #define AXP813_ADC_RATE 0x85 - - /* Fuel Gauge */ --- -2.17.1 - diff --git a/patch/kernel/sunxi-dev/0121-arm64-dts-allwinner-a64-enable-sound-on-Pine64-and-S.patch b/patch/kernel/sunxi-dev/0121-arm64-dts-allwinner-a64-enable-sound-on-Pine64-and-S.patch deleted file mode 100644 index b2c3561c2..000000000 --- a/patch/kernel/sunxi-dev/0121-arm64-dts-allwinner-a64-enable-sound-on-Pine64-and-S.patch +++ /dev/null @@ -1,113 +0,0 @@ -From 4c61972a0318859afc6a2dbb9cdd355625f6cefc Mon Sep 17 00:00:00 2001 -From: Vasily Khoruzhick -Date: Sun, 3 Dec 2017 11:39:19 -0800 -Subject: [PATCH 121/146] arm64: dts: allwinner: a64: enable sound on Pine64 - and SoPine - -This commit enables I2S, digital and analog parts of audiocodec on -Pine64 and SoPine boards. - -Signed-off-by: Vasily Khoruzhick ---- - .../boot/dts/allwinner/sun50i-a64-pine64.dts | 29 +++++++++++++++++++ - .../allwinner/sun50i-a64-sopine-baseboard.dts | 29 +++++++++++++++++++ - 2 files changed, 58 insertions(+) - -diff --git a/arch/arm64/boot/dts/allwinner/sun50i-a64-pine64.dts b/arch/arm64/boot/dts/allwinner/sun50i-a64-pine64.dts -index cd7e938db01a..f6fc0ed2f4ec 100644 ---- a/arch/arm64/boot/dts/allwinner/sun50i-a64-pine64.dts -+++ b/arch/arm64/boot/dts/allwinner/sun50i-a64-pine64.dts -@@ -75,6 +75,19 @@ - }; - }; - -+&codec { -+ status = "okay"; -+}; -+ -+&codec_analog { -+ hpvcc-supply = <®_eldo1>; -+ status = "okay"; -+}; -+ -+&dai { -+ status = "okay"; -+}; -+ - &de { - status = "okay"; - }; -@@ -289,6 +301,23 @@ - status = "disabled"; - }; - -+&sound { -+ status = "okay"; -+ simple-audio-card,widgets = "Microphone", "Microphone Jack", -+ "Headphone", "Headphone Jack"; -+ simple-audio-card,routing = -+ "Left DAC", "AIF1 Slot 0 Left", -+ "Right DAC", "AIF1 Slot 0 Right", -+ "Speaker", "LINEOUT", -+ "Headphone Jack", "HP", -+ "AIF1 Slot 0 Left ADC", "Left ADC", -+ "AIF1 Slot 0 Right ADC", "Right ADC", -+ "Left ADC", "ADC", -+ "Right ADC", "ADC", -+ "Microphone Jack", "HBIAS", -+ "MIC2", "Microphone Jack"; -+}; -+ - &sound_hdmi { - status = "okay"; - }; -diff --git a/arch/arm64/boot/dts/allwinner/sun50i-a64-sopine-baseboard.dts b/arch/arm64/boot/dts/allwinner/sun50i-a64-sopine-baseboard.dts -index df7aa8c5f751..9010bd58af1b 100644 ---- a/arch/arm64/boot/dts/allwinner/sun50i-a64-sopine-baseboard.dts -+++ b/arch/arm64/boot/dts/allwinner/sun50i-a64-sopine-baseboard.dts -@@ -80,6 +80,18 @@ - }; - }; - -+&codec { -+ status = "okay"; -+}; -+ -+&codec_analog { -+ status = "okay"; -+}; -+ -+&dai { -+ status = "okay"; -+}; -+ - &de { - status = "okay"; - }; -@@ -191,6 +203,23 @@ - vcc-hdmi-supply = <®_dldo1>; - }; - -+&sound { -+ status = "okay"; -+ simple-audio-card,widgets = "Microphone", "Microphone Jack", -+ "Headphone", "Headphone Jack"; -+ simple-audio-card,routing = -+ "Left DAC", "AIF1 Slot 0 Left", -+ "Right DAC", "AIF1 Slot 0 Right", -+ "Speaker", "LINEOUT", -+ "Headphone Jack", "HP", -+ "AIF1 Slot 0 Left ADC", "Left ADC", -+ "AIF1 Slot 0 Right ADC", "Right ADC", -+ "Left ADC", "ADC", -+ "Right ADC", "ADC", -+ "Microphone Jack", "HBIAS", -+ "MIC2", "Microphone Jack"; -+}; -+ - &sound_hdmi { - status = "okay"; - }; --- -2.17.1 - diff --git a/patch/kernel/sunxi-dev/0135-clk-sunxi-ng-enable-so-said-LDOs-for-A64-SoC-s-pll-m.patch b/patch/kernel/sunxi-dev/0135-clk-sunxi-ng-enable-so-said-LDOs-for-A64-SoC-s-pll-m.patch deleted file mode 100644 index 6aa68872f..000000000 --- a/patch/kernel/sunxi-dev/0135-clk-sunxi-ng-enable-so-said-LDOs-for-A64-SoC-s-pll-m.patch +++ /dev/null @@ -1,43 +0,0 @@ -From 734e26b5a4b061d5f0667d59ce27a4a50f6d5c25 Mon Sep 17 00:00:00 2001 -From: Icenowy Zheng -Date: Thu, 18 Oct 2018 15:07:29 +0800 -Subject: [PATCH 135/146] clk: sunxi-ng: enable so-said LDOs for A64 SoC's - pll-mipi clock - -In the user manual of A64 SoC, the bit 22 and 23 of pll-mipi control -register is called "LDO{1,2}_EN", and according to the BSP source code -from Allwinner , the LDOs are enabled during the clock's enabling -process. - -The clock failed to generate output if the two LDOs are not enabled. - -Add the two bits to the clock's gate bits, so that the LDOs are enabled -when the PLL is enabled. - -Fixes: c6a0637460c2 ("clk: sunxi-ng: Add A64 clocks") -Signed-off-by: Icenowy Zheng ---- - drivers/clk/sunxi-ng/ccu-sun50i-a64.c | 7 ++++++- - 1 file changed, 6 insertions(+), 1 deletion(-) - -diff --git a/drivers/clk/sunxi-ng/ccu-sun50i-a64.c b/drivers/clk/sunxi-ng/ccu-sun50i-a64.c -index 90ffee824c33..a637e62ae1c4 100644 ---- a/drivers/clk/sunxi-ng/ccu-sun50i-a64.c -+++ b/drivers/clk/sunxi-ng/ccu-sun50i-a64.c -@@ -162,7 +162,12 @@ static SUNXI_CCU_NM_WITH_FRAC_GATE_LOCK(pll_gpu_clk, "pll-gpu", - #define SUN50I_A64_PLL_MIPI_REG 0x040 - - static struct ccu_nkm pll_mipi_clk = { -- .enable = BIT(31), -+ /* -+ * The bit 23 and 22 are called "LDO{1,2}_EN" on the SoC's -+ * user manual, and by experiments the PLL doesn't work without -+ * these bits toggled. -+ */ -+ .enable = BIT(31) | BIT(23) | BIT(22), - .lock = BIT(28), - .n = _SUNXI_CCU_MULT(8, 4), - .k = _SUNXI_CCU_MULT_MIN(4, 2, 2), --- -2.17.1 - diff --git a/patch/kernel/sunxi-dev/board-h6-add-rtc-osc32k-out.patch b/patch/kernel/sunxi-dev/board-h6-add-rtc-osc32k-out.patch deleted file mode 100644 index 303a609a5..000000000 --- a/patch/kernel/sunxi-dev/board-h6-add-rtc-osc32k-out.patch +++ /dev/null @@ -1,35 +0,0 @@ -diff --git a/arch/arm64/boot/dts/allwinner/sun50i-h6.dtsi b/arch/arm64/boot/dts/allwinner/sun50i-h6.dtsi -index bec8c4a..73ed36d 100644 ---- a/arch/arm64/boot/dts/allwinner/sun50i-h6.dtsi -+++ b/arch/arm64/boot/dts/allwinner/sun50i-h6.dtsi -@@ -124,6 +124,13 @@ - clock-output-names = "osc32k"; - }; - -+ ext_osc32k: ext_osc32k_clk { -+ #clock-cells = <0>; -+ compatible = "fixed-clock"; -+ clock-frequency = <32768>; -+ clock-output-names = "ext_osc32k"; -+ }; -+ - psci { - compatible = "arm,psci-0.2"; - method = "smc"; -@@ -511,6 +526,16 @@ - #reset-cells = <1>; - }; - -+ rtc: rtc@7000000 { -+ compatible = "allwinner,sun6i-a31-rtc"; -+ reg = <0x07000000 0x54>; -+ interrupts = , -+ ; -+ clock-output-names = "rtc-osc32k", "rtc-osc32k-out"; -+ clocks = <&ext_osc32k>; -+ #clock-cells = <1>; -+ }; -+ - r_intc: interrupt-controller@7021000 { - compatible = "allwinner,sun50i-h6-r-intc", - "allwinner,sun6i-a31-r-intc";