From 1d562fc44be15026a180b975adc55cd5acc66ea1 Mon Sep 17 00:00:00 2001 From: Timon Baetz Date: Fri, 12 Feb 2021 07:12:08 +0100 Subject: [PATCH] linux-postmarketos-exynos4: add kernel patches to fix charging (MR 1766) Also update to latest stable kernel and remove patch that got integrated upstream. [ci:skip-build] Already built on CI --- ...put-atmel_mxt_ts-fix-lost-interrupts.patch | 52 ------ ...8997-charger-Use-module_platform_dri.patch | 41 +++++ ...8997-charger-Fix-platform-data-retri.patch | 29 +++ ...8997-charger-Improve-getting-charger.patch | 147 +++++++++++++++ ...ix-charging-regulator-voltage-and-cu.patch | 49 +++++ ...dd-top-off-charging-regulator-node-f.patch | 62 +++++++ ...dd-CHGINS-and-CHGRM-interrupt-handli.patch | 39 ++++ ...8997_charger-Set-CHARGER-current-lim.patch | 170 ++++++++++++++++++ ...-exynos-Add-charger-supply-for-I9100.patch | 28 +++ ...ax8997_charger-Switch-to-new-binding.patch | 55 ++++++ main/linux-postmarketos-exynos4/APKBUILD | 26 ++- .../config-postmarketos-exynos4.armv7 | 159 ++++++++++------ 12 files changed, 741 insertions(+), 116 deletions(-) delete mode 100644 main/linux-postmarketos-exynos4/0002-Input-atmel_mxt_ts-fix-lost-interrupts.patch create mode 100644 main/linux-postmarketos-exynos4/0002-power-supply-max8997-charger-Use-module_platform_dri.patch create mode 100644 main/linux-postmarketos-exynos4/0003-power-supply-max8997-charger-Fix-platform-data-retri.patch create mode 100644 main/linux-postmarketos-exynos4/0004-power-supply-max8997-charger-Improve-getting-charger.patch create mode 100644 main/linux-postmarketos-exynos4/0005-ARM-dts-exynos-Fix-charging-regulator-voltage-and-cu.patch create mode 100644 main/linux-postmarketos-exynos4/0006-ARM-dts-exynos-Add-top-off-charging-regulator-node-f.patch create mode 100644 main/linux-postmarketos-exynos4/0007-extcon-max8997-Add-CHGINS-and-CHGRM-interrupt-handli.patch create mode 100644 main/linux-postmarketos-exynos4/0008-power-supply-max8997_charger-Set-CHARGER-current-lim.patch create mode 100644 main/linux-postmarketos-exynos4/0009-ARM-dts-exynos-Add-charger-supply-for-I9100.patch create mode 100644 main/linux-postmarketos-exynos4/0010-power-supply-max8997_charger-Switch-to-new-binding.patch diff --git a/main/linux-postmarketos-exynos4/0002-Input-atmel_mxt_ts-fix-lost-interrupts.patch b/main/linux-postmarketos-exynos4/0002-Input-atmel_mxt_ts-fix-lost-interrupts.patch deleted file mode 100644 index 7d7e9111a..000000000 --- a/main/linux-postmarketos-exynos4/0002-Input-atmel_mxt_ts-fix-lost-interrupts.patch +++ /dev/null @@ -1,52 +0,0 @@ -From 8c3b55a299c325830a987de21dab6a89ecb71164 Mon Sep 17 00:00:00 2001 -From: Linus Walleij -Date: Tue, 1 Dec 2020 09:55:29 -0800 -Subject: [PATCH] Input: atmel_mxt_ts - fix lost interrupts -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -After commit 74d905d2d38a devices requiring the workaround for edge -triggered interrupts stopped working. - -The hardware needs the quirk to be used before even proceeding to -check if the quirk is needed because mxt_acquire_irq() is called -before mxt_check_retrigen() is called and at this point pending IRQs -need to be checked, and if the workaround is not active, all -interrupts will be lost from this point. - -Solve this by switching the calls around. - -Reported-by: Andre Müller -Tested-by: Andre Müller -Suggested-by: Dmitry Torokhov -Fixes: 74d905d2d38a ("Input: atmel_mxt_ts - only read messages in mxt_acquire_irq() when necessary") -Signed-off-by: Linus Walleij -Cc: stable@vger.kernel.org -Link: https://lore.kernel.org/r/20201201123026.1416743-1-linus.walleij@linaro.org -Signed-off-by: Dmitry Torokhov ---- - drivers/input/touchscreen/atmel_mxt_ts.c | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - -diff --git a/drivers/input/touchscreen/atmel_mxt_ts.c b/drivers/input/touchscreen/atmel_mxt_ts.c -index 6b71b0aff115..99a33cd5e675 100644 ---- a/drivers/input/touchscreen/atmel_mxt_ts.c -+++ b/drivers/input/touchscreen/atmel_mxt_ts.c -@@ -2183,11 +2183,11 @@ static int mxt_initialize(struct mxt_data *data) - msleep(MXT_FW_RESET_TIME); - } - -- error = mxt_acquire_irq(data); -+ error = mxt_check_retrigen(data); - if (error) - return error; - -- error = mxt_check_retrigen(data); -+ error = mxt_acquire_irq(data); - if (error) - return error; - --- -2.25.1 - diff --git a/main/linux-postmarketos-exynos4/0002-power-supply-max8997-charger-Use-module_platform_dri.patch b/main/linux-postmarketos-exynos4/0002-power-supply-max8997-charger-Use-module_platform_dri.patch new file mode 100644 index 000000000..e333bf054 --- /dev/null +++ b/main/linux-postmarketos-exynos4/0002-power-supply-max8997-charger-Use-module_platform_dri.patch @@ -0,0 +1,41 @@ +From 70bd58fff29dc4c53cfea2da01f05d2377d2ffa9 Mon Sep 17 00:00:00 2001 +From: Timon Baetz +Date: Mon, 9 Nov 2020 19:43:12 +0000 +Subject: [PATCH] power: supply: max8997-charger: Use module_platform_driver() + +Replace register and unregister function calls with +module_platform_driver(). + +Signed-off-by: Timon Baetz +Signed-off-by: Sebastian Reichel +--- + drivers/power/supply/max8997_charger.c | 13 +------------ + 1 file changed, 1 insertion(+), 12 deletions(-) + +diff --git a/drivers/power/supply/max8997_charger.c b/drivers/power/supply/max8997_charger.c +index f5e84cd47924..94d1ade047a7 100644 +--- a/drivers/power/supply/max8997_charger.c ++++ b/drivers/power/supply/max8997_charger.c +@@ -168,18 +168,7 @@ static struct platform_driver max8997_battery_driver = { + .probe = max8997_battery_probe, + .id_table = max8997_battery_id, + }; +- +-static int __init max8997_battery_init(void) +-{ +- return platform_driver_register(&max8997_battery_driver); +-} +-subsys_initcall(max8997_battery_init); +- +-static void __exit max8997_battery_cleanup(void) +-{ +- platform_driver_unregister(&max8997_battery_driver); +-} +-module_exit(max8997_battery_cleanup); ++module_platform_driver(max8997_battery_driver); + + MODULE_DESCRIPTION("MAXIM 8997/8966 battery control driver"); + MODULE_AUTHOR("MyungJoo Ham "); +-- +2.25.1 + diff --git a/main/linux-postmarketos-exynos4/0003-power-supply-max8997-charger-Fix-platform-data-retri.patch b/main/linux-postmarketos-exynos4/0003-power-supply-max8997-charger-Fix-platform-data-retri.patch new file mode 100644 index 000000000..57192c2ad --- /dev/null +++ b/main/linux-postmarketos-exynos4/0003-power-supply-max8997-charger-Fix-platform-data-retri.patch @@ -0,0 +1,29 @@ +From 5976a8d0bd4796ef6a0cb1f567a0d82967c62408 Mon Sep 17 00:00:00 2001 +From: Timon Baetz +Date: Mon, 9 Nov 2020 19:43:28 +0000 +Subject: [PATCH] power: supply: max8997-charger: Fix platform data retrieval + +Use pdata field of max8998_dev struct to obtain platform data. + +Signed-off-by: Timon Baetz +Signed-off-by: Sebastian Reichel +--- + drivers/power/supply/max8997_charger.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/drivers/power/supply/max8997_charger.c b/drivers/power/supply/max8997_charger.c +index 94d1ade047a7..8fccd58dac67 100644 +--- a/drivers/power/supply/max8997_charger.c ++++ b/drivers/power/supply/max8997_charger.c +@@ -84,7 +84,7 @@ static int max8997_battery_probe(struct platform_device *pdev) + int ret = 0; + struct charger_data *charger; + struct max8997_dev *iodev = dev_get_drvdata(pdev->dev.parent); +- struct max8997_platform_data *pdata = dev_get_platdata(iodev->dev); ++ struct max8997_platform_data *pdata = iodev->pdata; + struct power_supply_config psy_cfg = {}; + + if (!pdata) +-- +2.25.1 + diff --git a/main/linux-postmarketos-exynos4/0004-power-supply-max8997-charger-Improve-getting-charger.patch b/main/linux-postmarketos-exynos4/0004-power-supply-max8997-charger-Improve-getting-charger.patch new file mode 100644 index 000000000..76e7c26de --- /dev/null +++ b/main/linux-postmarketos-exynos4/0004-power-supply-max8997-charger-Improve-getting-charger.patch @@ -0,0 +1,147 @@ +From 9c65f6c4482d0e3e3681c113f77f82ac571ceaa7 Mon Sep 17 00:00:00 2001 +From: Timon Baetz +Date: Mon, 9 Nov 2020 19:43:55 +0000 +Subject: [PATCH] power: supply: max8997-charger: Improve getting charger + status + +Detect charging and discharging state. Ported from downstream Samsung +Galaxy S2 (i9100) kernel fork. + +Signed-off-by: Timon Baetz +Signed-off-by: Sebastian Reichel +--- + drivers/power/supply/max8997_charger.c | 52 +++++++++++++++++--------- + 1 file changed, 35 insertions(+), 17 deletions(-) + +diff --git a/drivers/power/supply/max8997_charger.c b/drivers/power/supply/max8997_charger.c +index 8fccd58dac67..1947af25879a 100644 +--- a/drivers/power/supply/max8997_charger.c ++++ b/drivers/power/supply/max8997_charger.c +@@ -13,6 +13,20 @@ + #include + #include + ++/* MAX8997_REG_STATUS4 */ ++#define DCINOK_SHIFT 1 ++#define DCINOK_MASK (1 << DCINOK_SHIFT) ++#define DETBAT_SHIFT 2 ++#define DETBAT_MASK (1 << DETBAT_SHIFT) ++ ++/* MAX8997_REG_MBCCTRL1 */ ++#define TFCH_SHIFT 4 ++#define TFCH_MASK (7 << TFCH_SHIFT) ++ ++/* MAX8997_REG_MBCCTRL5 */ ++#define ITOPOFF_SHIFT 0 ++#define ITOPOFF_MASK (0xF << ITOPOFF_SHIFT) ++ + struct charger_data { + struct device *dev; + struct max8997_dev *iodev; +@@ -20,7 +34,7 @@ struct charger_data { + }; + + static enum power_supply_property max8997_battery_props[] = { +- POWER_SUPPLY_PROP_STATUS, /* "FULL" or "NOT FULL" only. */ ++ POWER_SUPPLY_PROP_STATUS, /* "FULL", "CHARGING" or "DISCHARGING". */ + POWER_SUPPLY_PROP_PRESENT, /* the presence of battery */ + POWER_SUPPLY_PROP_ONLINE, /* charger is active or not */ + }; +@@ -43,6 +57,10 @@ static int max8997_battery_get_property(struct power_supply *psy, + return ret; + if ((reg & (1 << 0)) == 0x1) + val->intval = POWER_SUPPLY_STATUS_FULL; ++ else if ((reg & DCINOK_MASK)) ++ val->intval = POWER_SUPPLY_STATUS_CHARGING; ++ else ++ val->intval = POWER_SUPPLY_STATUS_DISCHARGING; + + break; + case POWER_SUPPLY_PROP_PRESENT: +@@ -50,7 +68,7 @@ static int max8997_battery_get_property(struct power_supply *psy, + ret = max8997_read_reg(i2c, MAX8997_REG_STATUS4, ®); + if (ret) + return ret; +- if ((reg & (1 << 2)) == 0x0) ++ if ((reg & DETBAT_MASK) == 0x0) + val->intval = 1; + + break; +@@ -59,8 +77,7 @@ static int max8997_battery_get_property(struct power_supply *psy, + ret = max8997_read_reg(i2c, MAX8997_REG_STATUS4, ®); + if (ret) + return ret; +- /* DCINOK */ +- if (reg & (1 << 1)) ++ if (reg & DCINOK_MASK) + val->intval = 1; + + break; +@@ -84,11 +101,14 @@ static int max8997_battery_probe(struct platform_device *pdev) + int ret = 0; + struct charger_data *charger; + struct max8997_dev *iodev = dev_get_drvdata(pdev->dev.parent); ++ struct i2c_client *i2c = iodev->i2c; + struct max8997_platform_data *pdata = iodev->pdata; + struct power_supply_config psy_cfg = {}; + +- if (!pdata) ++ if (!pdata) { ++ dev_err(&pdev->dev, "No platform data supplied.\n"); + return -EINVAL; ++ } + + if (pdata->eoc_mA) { + int val = (pdata->eoc_mA - 50) / 10; +@@ -97,30 +117,29 @@ static int max8997_battery_probe(struct platform_device *pdev) + if (val > 0xf) + val = 0xf; + +- ret = max8997_update_reg(iodev->i2c, +- MAX8997_REG_MBCCTRL5, val, 0xf); ++ ret = max8997_update_reg(i2c, MAX8997_REG_MBCCTRL5, ++ val << ITOPOFF_SHIFT, ITOPOFF_MASK); + if (ret < 0) { + dev_err(&pdev->dev, "Cannot use i2c bus.\n"); + return ret; + } + } +- + switch (pdata->timeout) { + case 5: +- ret = max8997_update_reg(iodev->i2c, MAX8997_REG_MBCCTRL1, +- 0x2 << 4, 0x7 << 4); ++ ret = max8997_update_reg(i2c, MAX8997_REG_MBCCTRL1, ++ 0x2 << TFCH_SHIFT, TFCH_MASK); + break; + case 6: +- ret = max8997_update_reg(iodev->i2c, MAX8997_REG_MBCCTRL1, +- 0x3 << 4, 0x7 << 4); ++ ret = max8997_update_reg(i2c, MAX8997_REG_MBCCTRL1, ++ 0x3 << TFCH_SHIFT, TFCH_MASK); + break; + case 7: +- ret = max8997_update_reg(iodev->i2c, MAX8997_REG_MBCCTRL1, +- 0x4 << 4, 0x7 << 4); ++ ret = max8997_update_reg(i2c, MAX8997_REG_MBCCTRL1, ++ 0x4 << TFCH_SHIFT, TFCH_MASK); + break; + case 0: +- ret = max8997_update_reg(iodev->i2c, MAX8997_REG_MBCCTRL1, +- 0x7 << 4, 0x7 << 4); ++ ret = max8997_update_reg(i2c, MAX8997_REG_MBCCTRL1, ++ 0x7 << TFCH_SHIFT, TFCH_MASK); + break; + default: + dev_err(&pdev->dev, "incorrect timeout value (%d)\n", +@@ -138,7 +157,6 @@ static int max8997_battery_probe(struct platform_device *pdev) + + platform_set_drvdata(pdev, charger); + +- + charger->dev = &pdev->dev; + charger->iodev = iodev; + +-- +2.25.1 + diff --git a/main/linux-postmarketos-exynos4/0005-ARM-dts-exynos-Fix-charging-regulator-voltage-and-cu.patch b/main/linux-postmarketos-exynos4/0005-ARM-dts-exynos-Fix-charging-regulator-voltage-and-cu.patch new file mode 100644 index 000000000..9e21aa77b --- /dev/null +++ b/main/linux-postmarketos-exynos4/0005-ARM-dts-exynos-Fix-charging-regulator-voltage-and-cu.patch @@ -0,0 +1,49 @@ +From 4a928b3b7c0f8a2ae382c3db3a78898877567786 Mon Sep 17 00:00:00 2001 +From: Timon Baetz +Date: Wed, 30 Dec 2020 20:53:03 +0000 +Subject: [PATCH] ARM: dts: exynos: Fix charging regulator voltage and current + for I9100 + +Set CHARGER current and CHARGER_CV voltage according to Galaxy S2 Epic +4G Touch SPH-D710 Android vendor sources [0,1]. + +Remove regulator-always-on. The regulator can be enabled and disabled +based on extcon events. + +[0] https://github.com/krzk/linux-vendor-backup/blob/samsung/galaxy-s2-epic-4g-touch-sph-d710-exynos4210-dump/drivers/power/max8997_charger_u1.c#L169-L170 +[1] https://github.com/krzk/linux-vendor-backup/blob/samsung/galaxy-s2-epic-4g-touch-sph-d710-exynos4210-dump/drivers/power/max8997_charger_u1.c#L390-L391 + +Signed-off-by: Timon Baetz +Link: https://lore.kernel.org/r/20201230205139.1812366-7-timon.baetz@protonmail.com +Signed-off-by: Krzysztof Kozlowski +--- + arch/arm/boot/dts/exynos4210-i9100.dts | 9 ++++----- + 1 file changed, 4 insertions(+), 5 deletions(-) + +diff --git a/arch/arm/boot/dts/exynos4210-i9100.dts b/arch/arm/boot/dts/exynos4210-i9100.dts +index a0c3bab382ae..2837ac05d9b4 100644 +--- a/arch/arm/boot/dts/exynos4210-i9100.dts ++++ b/arch/arm/boot/dts/exynos4210-i9100.dts +@@ -562,15 +562,14 @@ safe2_sreg: ESAFEOUT2 { + + charger_reg: CHARGER { + regulator-name = "CHARGER"; +- regulator-min-microamp = <60000>; +- regulator-max-microamp = <2580000>; +- regulator-always-on; ++ regulator-min-microamp = <200000>; ++ regulator-max-microamp = <950000>; + }; + + chargercv_reg: CHARGER_CV { + regulator-name = "CHARGER_CV"; +- regulator-min-microvolt = <3800000>; +- regulator-max-microvolt = <4100000>; ++ regulator-min-microvolt = <4200000>; ++ regulator-max-microvolt = <4200000>; + regulator-always-on; + }; + +-- +2.25.1 + diff --git a/main/linux-postmarketos-exynos4/0006-ARM-dts-exynos-Add-top-off-charging-regulator-node-f.patch b/main/linux-postmarketos-exynos4/0006-ARM-dts-exynos-Add-top-off-charging-regulator-node-f.patch new file mode 100644 index 000000000..74c0d66e5 --- /dev/null +++ b/main/linux-postmarketos-exynos4/0006-ARM-dts-exynos-Add-top-off-charging-regulator-node-f.patch @@ -0,0 +1,62 @@ +From 3803f461bd28c1c817281348509399778633e82f Mon Sep 17 00:00:00 2001 +From: Timon Baetz +Date: Wed, 30 Dec 2020 20:53:11 +0000 +Subject: [PATCH] ARM: dts: exynos: Add top-off charging regulator node for + I9100 + +Value taken from Galaxy S2 Epic 4G Touch SPH-D710 Android vendor +kernel [0] which always sets 200mA. + +Also rearrange regulators based on definition in max8997.h. + +[0] https://github.com/krzk/linux-vendor-backup/blob/samsung/galaxy-s2-epic-4g-touch-sph-d710-exynos4210-dump/drivers/power/sec_battery_u1.c#L1525 + +Signed-off-by: Timon Baetz +Link: https://lore.kernel.org/r/20201230205139.1812366-8-timon.baetz@protonmail.com +Signed-off-by: Krzysztof Kozlowski +--- + arch/arm/boot/dts/exynos4210-i9100.dts | 21 ++++++++++++++------- + 1 file changed, 14 insertions(+), 7 deletions(-) + +diff --git a/arch/arm/boot/dts/exynos4210-i9100.dts b/arch/arm/boot/dts/exynos4210-i9100.dts +index 2837ac05d9b4..304a8ee2364c 100644 +--- a/arch/arm/boot/dts/exynos4210-i9100.dts ++++ b/arch/arm/boot/dts/exynos4210-i9100.dts +@@ -560,6 +560,16 @@ safe2_sreg: ESAFEOUT2 { + regulator-boot-on; + }; + ++ EN32KHZ_AP { ++ regulator-name = "EN32KHZ_AP"; ++ regulator-always-on; ++ }; ++ ++ EN32KHZ_CP { ++ regulator-name = "EN32KHZ_CP"; ++ regulator-always-on; ++ }; ++ + charger_reg: CHARGER { + regulator-name = "CHARGER"; + regulator-min-microamp = <200000>; +@@ -573,13 +583,10 @@ chargercv_reg: CHARGER_CV { + regulator-always-on; + }; + +- EN32KHZ_AP { +- regulator-name = "EN32KHZ_AP"; +- regulator-always-on; +- }; +- +- EN32KHZ_CP { +- regulator-name = "EN32KHZ_CP"; ++ CHARGER_TOPOFF { ++ regulator-name = "CHARGER_TOPOFF"; ++ regulator-min-microamp = <200000>; ++ regulator-max-microamp = <200000>; + regulator-always-on; + }; + }; +-- +2.25.1 + diff --git a/main/linux-postmarketos-exynos4/0007-extcon-max8997-Add-CHGINS-and-CHGRM-interrupt-handli.patch b/main/linux-postmarketos-exynos4/0007-extcon-max8997-Add-CHGINS-and-CHGRM-interrupt-handli.patch new file mode 100644 index 000000000..05184e0e1 --- /dev/null +++ b/main/linux-postmarketos-exynos4/0007-extcon-max8997-Add-CHGINS-and-CHGRM-interrupt-handli.patch @@ -0,0 +1,39 @@ +From 226d336c1c75b7003ab70693cb332a1be19f1802 Mon Sep 17 00:00:00 2001 +From: Timon Baetz +Date: Wed, 30 Dec 2020 20:51:53 +0000 +Subject: [PATCH] extcon: max8997: Add CHGINS and CHGRM interrupt handling + +This allows the MAX8997 charger to set the current limit depending on +the detected extcon charger type. + +Signed-off-by: Timon Baetz +Signed-off-by: Chanwoo Choi +--- + drivers/extcon/extcon-max8997.c | 4 ++++ + 1 file changed, 4 insertions(+) + +diff --git a/drivers/extcon/extcon-max8997.c b/drivers/extcon/extcon-max8997.c +index 337b0eea4e62..e1408075ef7d 100644 +--- a/drivers/extcon/extcon-max8997.c ++++ b/drivers/extcon/extcon-max8997.c +@@ -44,6 +44,8 @@ static struct max8997_muic_irq muic_irqs[] = { + { MAX8997_MUICIRQ_ChgDetRun, "muic-CHGDETRUN" }, + { MAX8997_MUICIRQ_ChgTyp, "muic-CHGTYP" }, + { MAX8997_MUICIRQ_OVP, "muic-OVP" }, ++ { MAX8997_PMICIRQ_CHGINS, "pmic-CHGINS" }, ++ { MAX8997_PMICIRQ_CHGRM, "pmic-CHGRM" }, + }; + + /* Define supported cable type */ +@@ -538,6 +540,8 @@ static void max8997_muic_irq_work(struct work_struct *work) + case MAX8997_MUICIRQ_DCDTmr: + case MAX8997_MUICIRQ_ChgDetRun: + case MAX8997_MUICIRQ_ChgTyp: ++ case MAX8997_PMICIRQ_CHGINS: ++ case MAX8997_PMICIRQ_CHGRM: + /* Handle charger cable */ + ret = max8997_muic_chg_handler(info); + break; +-- +2.25.1 + diff --git a/main/linux-postmarketos-exynos4/0008-power-supply-max8997_charger-Set-CHARGER-current-lim.patch b/main/linux-postmarketos-exynos4/0008-power-supply-max8997_charger-Set-CHARGER-current-lim.patch new file mode 100644 index 000000000..203a146fc --- /dev/null +++ b/main/linux-postmarketos-exynos4/0008-power-supply-max8997_charger-Set-CHARGER-current-lim.patch @@ -0,0 +1,170 @@ +From f384989e88d4484fc9a9e31b0cf0a36e6f172136 Mon Sep 17 00:00:00 2001 +From: Timon Baetz +Date: Wed, 30 Dec 2020 20:52:15 +0000 +Subject: [PATCH] power: supply: max8997_charger: Set CHARGER current limit + +Register for extcon notification and set charging current depending on +the detected cable type. Current values are taken from vendor kernel, +where most charger types end up setting 650mA [0]. + +Also enable and disable the CHARGER regulator based on extcon events. + +[0] https://github.com/krzk/linux-vendor-backup/blob/samsung/galaxy-s2-epic-4g-touch-sph-d710-exynos4210-dump/drivers/misc/max8997-muic.c#L1675-L1678 + +Signed-off-by: Timon Baetz +Reviewed-by: Krzysztof Kozlowski +Signed-off-by: Sebastian Reichel +--- + drivers/power/supply/Kconfig | 1 + + drivers/power/supply/max8997_charger.c | 96 ++++++++++++++++++++++++++ + 2 files changed, 97 insertions(+) + +diff --git a/drivers/power/supply/Kconfig b/drivers/power/supply/Kconfig +index eec646c568b7..8fce6061e1cc 100644 +--- a/drivers/power/supply/Kconfig ++++ b/drivers/power/supply/Kconfig +@@ -546,6 +546,7 @@ config CHARGER_MAX77693 + config CHARGER_MAX8997 + tristate "Maxim MAX8997/MAX8966 PMIC battery charger driver" + depends on MFD_MAX8997 && REGULATOR_MAX8997 ++ depends on EXTCON || !EXTCON + help + Say Y to enable support for the battery charger control sysfs and + platform data of MAX8997/LP3974 PMICs. +diff --git a/drivers/power/supply/max8997_charger.c b/drivers/power/supply/max8997_charger.c +index 1947af25879a..23df91ed2c72 100644 +--- a/drivers/power/supply/max8997_charger.c ++++ b/drivers/power/supply/max8997_charger.c +@@ -6,12 +6,14 @@ + // MyungJoo Ham + + #include ++#include + #include + #include + #include + #include + #include + #include ++#include + + /* MAX8997_REG_STATUS4 */ + #define DCINOK_SHIFT 1 +@@ -31,6 +33,10 @@ struct charger_data { + struct device *dev; + struct max8997_dev *iodev; + struct power_supply *battery; ++ struct regulator *reg; ++ struct extcon_dev *edev; ++ struct notifier_block extcon_nb; ++ struct work_struct extcon_work; + }; + + static enum power_supply_property max8997_battery_props[] = { +@@ -88,6 +94,67 @@ static int max8997_battery_get_property(struct power_supply *psy, + return 0; + } + ++static void max8997_battery_extcon_evt_stop_work(void *data) ++{ ++ struct charger_data *charger = data; ++ ++ cancel_work_sync(&charger->extcon_work); ++} ++ ++static void max8997_battery_extcon_evt_worker(struct work_struct *work) ++{ ++ struct charger_data *charger = ++ container_of(work, struct charger_data, extcon_work); ++ struct extcon_dev *edev = charger->edev; ++ int current_limit; ++ ++ if (extcon_get_state(edev, EXTCON_CHG_USB_SDP) > 0) { ++ dev_dbg(charger->dev, "USB SDP charger is connected\n"); ++ current_limit = 450000; ++ } else if (extcon_get_state(edev, EXTCON_CHG_USB_DCP) > 0) { ++ dev_dbg(charger->dev, "USB DCP charger is connected\n"); ++ current_limit = 650000; ++ } else if (extcon_get_state(edev, EXTCON_CHG_USB_FAST) > 0) { ++ dev_dbg(charger->dev, "USB FAST charger is connected\n"); ++ current_limit = 650000; ++ } else if (extcon_get_state(edev, EXTCON_CHG_USB_SLOW) > 0) { ++ dev_dbg(charger->dev, "USB SLOW charger is connected\n"); ++ current_limit = 650000; ++ } else if (extcon_get_state(edev, EXTCON_CHG_USB_CDP) > 0) { ++ dev_dbg(charger->dev, "USB CDP charger is connected\n"); ++ current_limit = 650000; ++ } else { ++ dev_dbg(charger->dev, "USB charger is diconnected\n"); ++ current_limit = -1; ++ } ++ ++ if (current_limit > 0) { ++ int ret = regulator_set_current_limit(charger->reg, current_limit, current_limit); ++ ++ if (ret) { ++ dev_err(charger->dev, "failed to set current limit: %d\n", ret); ++ return; ++ } ++ ret = regulator_enable(charger->reg); ++ if (ret) ++ dev_err(charger->dev, "failed to enable regulator: %d\n", ret); ++ } else { ++ int ret = regulator_disable(charger->reg); ++ ++ if (ret) ++ dev_err(charger->dev, "failed to disable regulator: %d\n", ret); ++ } ++} ++ ++static int max8997_battery_extcon_evt(struct notifier_block *nb, ++ unsigned long event, void *param) ++{ ++ struct charger_data *charger = ++ container_of(nb, struct charger_data, extcon_nb); ++ schedule_work(&charger->extcon_work); ++ return NOTIFY_OK; ++} ++ + static const struct power_supply_desc max8997_battery_desc = { + .name = "max8997_pmic", + .type = POWER_SUPPLY_TYPE_BATTERY, +@@ -170,6 +237,35 @@ static int max8997_battery_probe(struct platform_device *pdev) + return PTR_ERR(charger->battery); + } + ++ charger->reg = devm_regulator_get_optional(&pdev->dev, "charger"); ++ if (IS_ERR(charger->reg)) { ++ if (PTR_ERR(charger->reg) == -EPROBE_DEFER) ++ return -EPROBE_DEFER; ++ dev_info(&pdev->dev, "couldn't get charger regulator\n"); ++ } ++ charger->edev = extcon_get_edev_by_phandle(&pdev->dev, 0); ++ if (IS_ERR(charger->edev)) { ++ if (PTR_ERR(charger->edev) == -EPROBE_DEFER) ++ return -EPROBE_DEFER; ++ dev_info(charger->dev, "couldn't get extcon device\n"); ++ } ++ ++ if (!IS_ERR(charger->reg) && !IS_ERR(charger->edev)) { ++ INIT_WORK(&charger->extcon_work, max8997_battery_extcon_evt_worker); ++ ret = devm_add_action(&pdev->dev, max8997_battery_extcon_evt_stop_work, charger); ++ if (ret) { ++ dev_err(&pdev->dev, "failed to add extcon evt stop action: %d\n", ret); ++ return ret; ++ } ++ charger->extcon_nb.notifier_call = max8997_battery_extcon_evt; ++ ret = devm_extcon_register_notifier_all(&pdev->dev, charger->edev, ++ &charger->extcon_nb); ++ if (ret) { ++ dev_err(&pdev->dev, "failed to register extcon notifier\n"); ++ return ret; ++ }; ++ } ++ + return 0; + } + +-- +2.25.1 + diff --git a/main/linux-postmarketos-exynos4/0009-ARM-dts-exynos-Add-charger-supply-for-I9100.patch b/main/linux-postmarketos-exynos4/0009-ARM-dts-exynos-Add-charger-supply-for-I9100.patch new file mode 100644 index 000000000..eea457269 --- /dev/null +++ b/main/linux-postmarketos-exynos4/0009-ARM-dts-exynos-Add-charger-supply-for-I9100.patch @@ -0,0 +1,28 @@ +From 590d39ce7b457815f60899c6f38d3aa4b5665c37 Mon Sep 17 00:00:00 2001 +From: Timon Baetz +Date: Sun, 24 Jan 2021 18:17:06 +0100 +Subject: [PATCH] ARM: dts: exynos: Add charger supply for I9100 + +The regulator is used for charging control by max8997_charger driver. + +Signed-off-by: Timon Baetz +--- + arch/arm/boot/dts/exynos4210-i9100.dts | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/arch/arm/boot/dts/exynos4210-i9100.dts b/arch/arm/boot/dts/exynos4210-i9100.dts +index 304a8ee2364c..dad950daafb4 100644 +--- a/arch/arm/boot/dts/exynos4210-i9100.dts ++++ b/arch/arm/boot/dts/exynos4210-i9100.dts +@@ -384,6 +384,8 @@ pmic@66 { + pinctrl-0 = <&max8997_irq>, <&otg_gp>, <&usb_sel>; + pinctrl-names = "default"; + ++ charger-supply = <&charger_reg>; ++ + regulators { + vadc_reg: LDO1 { + regulator-name = "VADC_3.3V_C210"; +-- +2.25.1 + diff --git a/main/linux-postmarketos-exynos4/0010-power-supply-max8997_charger-Switch-to-new-binding.patch b/main/linux-postmarketos-exynos4/0010-power-supply-max8997_charger-Switch-to-new-binding.patch new file mode 100644 index 000000000..720f93d06 --- /dev/null +++ b/main/linux-postmarketos-exynos4/0010-power-supply-max8997_charger-Switch-to-new-binding.patch @@ -0,0 +1,55 @@ +From 601b2f6ce656d0e29724131511e9b58da9c703d4 Mon Sep 17 00:00:00 2001 +From: Timon Baetz +Date: Sun, 24 Jan 2021 18:22:14 +0100 +Subject: [PATCH] power: supply: max8997_charger: Switch to new binding + +Get regulator from parent device's node and extcon by name. + +Signed-off-by: Timon Baetz +--- + drivers/power/supply/max8997_charger.c | 12 ++++++++---- + 1 file changed, 8 insertions(+), 4 deletions(-) + +diff --git a/drivers/power/supply/max8997_charger.c b/drivers/power/supply/max8997_charger.c +index 321bd6b8ee41..625d8cc4312a 100644 +--- a/drivers/power/supply/max8997_charger.c ++++ b/drivers/power/supply/max8997_charger.c +@@ -168,6 +168,7 @@ static int max8997_battery_probe(struct platform_device *pdev) + int ret = 0; + struct charger_data *charger; + struct max8997_dev *iodev = dev_get_drvdata(pdev->dev.parent); ++ struct device_node *np = pdev->dev.of_node; + struct i2c_client *i2c = iodev->i2c; + struct max8997_platform_data *pdata = iodev->pdata; + struct power_supply_config psy_cfg = {}; +@@ -237,20 +238,23 @@ static int max8997_battery_probe(struct platform_device *pdev) + return PTR_ERR(charger->battery); + } + ++ // grab regulator from parent device's node ++ pdev->dev.of_node = iodev->dev->of_node; + charger->reg = devm_regulator_get_optional(&pdev->dev, "charger"); ++ pdev->dev.of_node = np; + if (IS_ERR(charger->reg)) { + if (PTR_ERR(charger->reg) == -EPROBE_DEFER) + return -EPROBE_DEFER; + dev_info(&pdev->dev, "couldn't get charger regulator\n"); + } +- charger->edev = extcon_get_edev_by_phandle(&pdev->dev, 0); +- if (IS_ERR(charger->edev)) { +- if (PTR_ERR(charger->edev) == -EPROBE_DEFER) ++ charger->edev = extcon_get_extcon_dev("max8997-muic"); ++ if (IS_ERR_OR_NULL(charger->edev)) { ++ if (!charger->edev) + return -EPROBE_DEFER; + dev_info(charger->dev, "couldn't get extcon device\n"); + } + +- if (!IS_ERR(charger->reg) && !IS_ERR(charger->edev)) { ++ if (!IS_ERR(charger->reg) && !IS_ERR_OR_NULL(charger->edev)) { + INIT_WORK(&charger->extcon_work, max8997_battery_extcon_evt_worker); + ret = devm_add_action(&pdev->dev, max8997_battery_extcon_evt_stop_work, charger); + if (ret) { +-- +2.25.1 + diff --git a/main/linux-postmarketos-exynos4/APKBUILD b/main/linux-postmarketos-exynos4/APKBUILD index 596424190..2d9c612cf 100644 --- a/main/linux-postmarketos-exynos4/APKBUILD +++ b/main/linux-postmarketos-exynos4/APKBUILD @@ -3,7 +3,7 @@ # Kernel config based on: arch/arm/configs/exynos_defconfig pkgname=linux-postmarketos-exynos4 -pkgver=5.9.12 +pkgver=5.10.15 pkgrel=0 pkgdesc="Mainline kernel fork for Samsung Exynos4 devices" arch="armv7" @@ -24,7 +24,15 @@ source=" https://cdn.kernel.org/pub/linux/kernel/v${_kernver%%.*}.x/linux-$_kernver.tar.xz $_config 0001-ARM-decompressor-Flush-tlb-before-swiching-domain-0-.patch - 0002-Input-atmel_mxt_ts-fix-lost-interrupts.patch + 0002-power-supply-max8997-charger-Use-module_platform_dri.patch + 0003-power-supply-max8997-charger-Fix-platform-data-retri.patch + 0004-power-supply-max8997-charger-Improve-getting-charger.patch + 0005-ARM-dts-exynos-Fix-charging-regulator-voltage-and-cu.patch + 0006-ARM-dts-exynos-Add-top-off-charging-regulator-node-f.patch + 0007-extcon-max8997-Add-CHGINS-and-CHGRM-interrupt-handli.patch + 0008-power-supply-max8997_charger-Set-CHARGER-current-lim.patch + 0009-ARM-dts-exynos-Add-charger-supply-for-I9100.patch + 0010-power-supply-max8997_charger-Switch-to-new-binding.patch initramfs.list init " @@ -63,9 +71,17 @@ package() { "$pkgdir/usr/share/kernel/$_flavor/kernel.release" } -sha512sums="164a89388a56140140e0b4ba3f39a45f85a73c9862f5104cf591a6d6826cfc2498b4080f862cc592f04853328ba9236f8aa305e4f0f876f6b18eda2e42ea6dcb linux-5.9.12.tar.xz -287dccd4028590a94aa6c068975ec94f7fe5fc3184acb4c70ffebb2e39d62ed2e5f1456b78db1120d38046c42b6cbddbe3aac30134812c101ace7c8c3752c148 config-postmarketos-exynos4.armv7 +sha512sums="7b2c38920ebfc9c9aea8cb319949f089a374b6604de4fb01dc6957234970d96830761d784c6f94a5f165f5792dfa9d3a6d8691d18147dc05cc0f03c78efbb61a linux-5.10.15.tar.xz +2f844fbe47e544b5a644f9e8ad94019eb4d6989ca7a27cd3406f1f81d3348dfa86c761fefac10376c31e511b84cd2c8f4c17f856f7173d9a08e97658f00ab956 config-postmarketos-exynos4.armv7 4bb111db4396a1981ad0883737c6594ca93701699846298b940d2ea202c666be0158a0f9ddc5b95b9147fa4cfe62639512ae78e9315f8d975b379ccc4e15da36 0001-ARM-decompressor-Flush-tlb-before-swiching-domain-0-.patch -fa5cd612690276dd3f37906674a86e0de74208bfc8ab28a689d0ea4cec13987deda75f72c084a7da03699738cd03d5977d597942796aacaac59d399e7369b236 0002-Input-atmel_mxt_ts-fix-lost-interrupts.patch +4567b6144e3de769050764ede3df81e0abd9ffa45f821f2cfcb60ca1426b1756d1ff9d9dda6254a6f5cf0da4b9819ecc0d57f2dc02ef5d460e7ae0069fbba62d 0002-power-supply-max8997-charger-Use-module_platform_dri.patch +0cc1fa2ca16979fa2f93e7cb6ef29ca109d249c5f4e934590383cac90138858c299da7f84ec90ec0c91fb60f2cd0db4303023e756854fbbccb89840377bcdb9e 0003-power-supply-max8997-charger-Fix-platform-data-retri.patch +708a27d1c75f5909a1d5f710e2dbdb39d5bb02c15376a14471c468a6f4330c787153b62fbd93049aea0488f2b8b0f7d643d597da9e28094840c9f6c187ca736b 0004-power-supply-max8997-charger-Improve-getting-charger.patch +ddee2a51b33b7bd0ba310085324e72342c992d6d047132f7204ff9695cef112d4809bbe734d382b720e8deb90b948b65709bbb407bd1a32876c524fe9f4bae67 0005-ARM-dts-exynos-Fix-charging-regulator-voltage-and-cu.patch +8eb1452fd2cc302df0ccc5bee33e99d12d6bb851fb48b281026f46b70008e3f515f3287f01684981ff81c7e2c422a9480a40e23f45823812f913cc866c319811 0006-ARM-dts-exynos-Add-top-off-charging-regulator-node-f.patch +dffe9934281e81b20e158ce9b80c6f1a91c5eaa06eb92ee655ee9430dba8aa066dd70a9fb163007f37556ea696ae0256a58f87408c8b7571d6d20f99c9492db2 0007-extcon-max8997-Add-CHGINS-and-CHGRM-interrupt-handli.patch +ea14ce70ac337b952b0246bb2765c7ca099808f4f46021b4f366e706265f9fab6a1e887e327d6b73d2b9963e4ae1f64a2877500cbc79a6214169486993f60069 0008-power-supply-max8997_charger-Set-CHARGER-current-lim.patch +b70e8afa3779d471835bbdda4c8ddcf882bce58752993314655596961210235558e87dce3d1f07810ab5bb3d0471e89933a8008d7b97d8ebd05a408ffc947054 0009-ARM-dts-exynos-Add-charger-supply-for-I9100.patch +11160ac085aa912439a18995e323dfc89dfc61d85f1221af8f0116eed0f5b1fd087fc2828174c8c60f937495c31d72240c2f3c4249c29ceda6acd92f08d235c4 0010-power-supply-max8997_charger-Switch-to-new-binding.patch aaff0332b90e1f9f62de1128cace934717336e54ab09de46477369fa808302482d97334e43a85ee8597c1bcab64d3484750103559fea2ce8cd51776156bf7591 initramfs.list 09f1f214a24300696809727a7b04378887c06ca6f40803ca51a12bf2176a360b2eb8632139d6a0722094e05cb2038bdb04018a1e3d33fc2697674552ade03bee init" diff --git a/main/linux-postmarketos-exynos4/config-postmarketos-exynos4.armv7 b/main/linux-postmarketos-exynos4/config-postmarketos-exynos4.armv7 index 9631bb229..49597cebf 100644 --- a/main/linux-postmarketos-exynos4/config-postmarketos-exynos4.armv7 +++ b/main/linux-postmarketos-exynos4/config-postmarketos-exynos4.armv7 @@ -1,12 +1,13 @@ # # Automatically generated file; DO NOT EDIT. -# Linux/arm 5.9.12 Kernel Configuration +# Linux/arm 5.10.15 Kernel Configuration # CONFIG_CC_VERSION_TEXT="gcc (Alpine 10.2.1_pre1) 10.2.1 20201203" CONFIG_CC_IS_GCC=y CONFIG_GCC_VERSION=100201 CONFIG_LD_VERSION=235010000 CONFIG_CLANG_VERSION=0 +CONFIG_LLD_VERSION=0 CONFIG_CC_HAS_ASM_GOTO=y CONFIG_CC_HAS_ASM_INLINE=y CONFIG_IRQ_WORK=y @@ -51,9 +52,9 @@ CONFIG_GENERIC_IRQ_SHOW_LEVEL=y CONFIG_GENERIC_IRQ_EFFECTIVE_AFF_MASK=y CONFIG_GENERIC_IRQ_MIGRATION=y CONFIG_HARDIRQS_SW_RESEND=y -CONFIG_GENERIC_IRQ_CHIP=y CONFIG_IRQ_DOMAIN=y CONFIG_IRQ_DOMAIN_HIERARCHY=y +CONFIG_GENERIC_IRQ_IPI=y CONFIG_HANDLE_DOMAIN_IRQ=y CONFIG_IRQ_FORCED_THREADING=y CONFIG_SPARSE_IRQ=y @@ -169,6 +170,7 @@ CONFIG_INITRAMFS_COMPRESSION_GZIP=y # CONFIG_BOOT_CONFIG is not set CONFIG_CC_OPTIMIZE_FOR_PERFORMANCE=y # CONFIG_CC_OPTIMIZE_FOR_SIZE is not set +CONFIG_LD_ORPHAN_WARN=y CONFIG_SYSCTL=y CONFIG_HAVE_UID16=y CONFIG_BPF=y @@ -232,7 +234,6 @@ CONFIG_ARM_DMA_USE_IOMMU=y CONFIG_ARM_DMA_IOMMU_ALIGNMENT=8 CONFIG_SYS_SUPPORTS_APM_EMULATION=y CONFIG_HAVE_PROC_CPU=y -CONFIG_NO_IOPORT_MAP=y CONFIG_STACKTRACE_SUPPORT=y CONFIG_LOCKDEP_SUPPORT=y CONFIG_TRACE_IRQFLAGS_SUPPORT=y @@ -296,21 +297,6 @@ CONFIG_ARCH_EXYNOS4=y CONFIG_CPU_EXYNOS4210=y CONFIG_SOC_EXYNOS4412=y CONFIG_EXYNOS_CPU_SUSPEND=y -CONFIG_PLAT_SAMSUNG=y - -# -# Samsung Common options -# - -# -# Boot options -# - -# -# Power management -# -# end of Samsung Common options - # CONFIG_ARCH_HIGHBANK is not set # CONFIG_ARCH_HISI is not set # CONFIG_ARCH_MXC is not set @@ -478,10 +464,10 @@ CONFIG_ARM_MODULE_PLTS=y CONFIG_FORCE_MAX_ZONEORDER=11 CONFIG_ALIGNMENT_TRAP=y # CONFIG_UACCESS_WITH_MEMCPY is not set -CONFIG_SECCOMP=y # CONFIG_PARAVIRT is not set # CONFIG_PARAVIRT_TIME_ACCOUNTING is not set # CONFIG_XEN is not set +CONFIG_STACKPROTECTOR_PER_TASK=y # end of Kernel Features # @@ -601,6 +587,7 @@ CONFIG_ARCH_HIBERNATION_POSSIBLE=y # # Firmware Drivers # +# CONFIG_FW_CFG_SYSFS is not set # CONFIG_TRUSTED_FOUNDATIONS is not set # CONFIG_GOOGLE_FIRMWARE is not set CONFIG_HAVE_ARM_SMCCC=y @@ -631,6 +618,7 @@ CONFIG_CRYPTO_CHACHA20_NEON=m # # General architecture-dependent options # +CONFIG_SET_FS=y CONFIG_HAVE_OPROFILE=y # CONFIG_KPROBES is not set # CONFIG_JUMP_LABEL is not set @@ -656,7 +644,9 @@ CONFIG_HAVE_PERF_REGS=y CONFIG_HAVE_PERF_USER_STACK_DUMP=y CONFIG_HAVE_ARCH_JUMP_LABEL=y CONFIG_ARCH_WANT_IPC_PARSE_VERSION=y +CONFIG_HAVE_ARCH_SECCOMP=y CONFIG_HAVE_ARCH_SECCOMP_FILTER=y +CONFIG_SECCOMP=y CONFIG_SECCOMP_FILTER=y CONFIG_HAVE_STACKPROTECTOR=y CONFIG_STACKPROTECTOR=y @@ -683,6 +673,7 @@ CONFIG_ARCH_HAS_STRICT_MODULE_RWX=y CONFIG_STRICT_MODULE_RWX=y CONFIG_ARCH_HAS_PHYS_TO_DMA=y # CONFIG_LOCK_EVENT_COUNTS is not set +CONFIG_ARCH_WANT_LD_ORPHAN_WARN=y # # GCOV-based kernel profiling @@ -692,6 +683,10 @@ CONFIG_ARCH_HAS_GCOV_PROFILE_ALL=y # end of GCOV-based kernel profiling CONFIG_HAVE_GCC_PLUGINS=y +CONFIG_GCC_PLUGINS=y +# CONFIG_GCC_PLUGIN_LATENT_ENTROPY is not set +# CONFIG_GCC_PLUGIN_RANDSTRUCT is not set +CONFIG_GCC_PLUGIN_ARM_SSP_PER_TASK=y # end of General architecture-dependent options CONFIG_RT_MUTEXES=y @@ -1252,7 +1247,6 @@ CONFIG_OF_KOBJ=y CONFIG_OF_ADDRESS=y CONFIG_OF_IRQ=y CONFIG_OF_NET=y -CONFIG_OF_MDIO=y CONFIG_OF_RESERVED_MEM=y # CONFIG_OF_OVERLAY is not set CONFIG_ARCH_MIGHT_HAVE_PC_PARPORT=y @@ -1298,6 +1292,7 @@ CONFIG_SRAM=y CONFIG_SRAM_EXEC=y # CONFIG_XILINX_SDFEC is not set # CONFIG_PVPANIC is not set +# CONFIG_HISI_HIKEY_USB is not set # CONFIG_C2PORT is not set # @@ -1322,13 +1317,6 @@ CONFIG_SRAM_EXEC=y # CONFIG_SENSORS_LIS3_SPI is not set # CONFIG_SENSORS_LIS3_I2C is not set # CONFIG_ALTERA_STAPL is not set - -# -# Intel MIC & related support -# -# CONFIG_VOP_BUS is not set -# end of Intel MIC & related support - # CONFIG_ECHO is not set # CONFIG_MISC_RTSX_USB is not set # CONFIG_UACCE is not set @@ -1527,49 +1515,30 @@ CONFIG_NET_VENDOR_WIZNET=y CONFIG_NET_VENDOR_XILINX=y # CONFIG_XILINX_AXI_EMAC is not set # CONFIG_XILINX_LL_TEMAC is not set -CONFIG_MDIO_DEVICE=y -CONFIG_MDIO_BUS=y -CONFIG_MDIO_DEVRES=y -# CONFIG_MDIO_BCM_UNIMAC is not set -# CONFIG_MDIO_BITBANG is not set -# CONFIG_MDIO_BUS_MUX_GPIO is not set -# CONFIG_MDIO_BUS_MUX_MMIOREG is not set -# CONFIG_MDIO_BUS_MUX_MULTIPLEXER is not set -# CONFIG_MDIO_HISI_FEMAC is not set -# CONFIG_MDIO_IPQ4019 is not set -# CONFIG_MDIO_IPQ8064 is not set -# CONFIG_MDIO_MSCC_MIIM is not set -# CONFIG_MDIO_MVUSB is not set -# CONFIG_MDIO_XPCS is not set CONFIG_PHYLIB=y CONFIG_SWPHY=y # CONFIG_LED_TRIGGER_PHY is not set +CONFIG_FIXED_PHY=y # # MII PHY device drivers # -# CONFIG_ADIN_PHY is not set # CONFIG_AMD_PHY is not set +# CONFIG_ADIN_PHY is not set # CONFIG_AQUANTIA_PHY is not set # CONFIG_AX88796B_PHY is not set -# CONFIG_BCM7XXX_PHY is not set -# CONFIG_BCM87XX_PHY is not set # CONFIG_BROADCOM_PHY is not set # CONFIG_BCM54140_PHY is not set +# CONFIG_BCM7XXX_PHY is not set # CONFIG_BCM84881_PHY is not set +# CONFIG_BCM87XX_PHY is not set # CONFIG_CICADA_PHY is not set # CONFIG_CORTINA_PHY is not set # CONFIG_DAVICOM_PHY is not set -# CONFIG_DP83822_PHY is not set -# CONFIG_DP83TC811_PHY is not set -# CONFIG_DP83848_PHY is not set -# CONFIG_DP83867_PHY is not set -# CONFIG_DP83869_PHY is not set -CONFIG_FIXED_PHY=y # CONFIG_ICPLUS_PHY is not set +# CONFIG_LXT_PHY is not set # CONFIG_INTEL_XWAY_PHY is not set # CONFIG_LSI_ET1011C_PHY is not set -# CONFIG_LXT_PHY is not set # CONFIG_MARVELL_PHY is not set # CONFIG_MARVELL_10G_PHY is not set # CONFIG_MICREL_PHY is not set @@ -1583,12 +1552,42 @@ CONFIG_MICROCHIP_PHY=m # CONFIG_REALTEK_PHY is not set # CONFIG_RENESAS_PHY is not set # CONFIG_ROCKCHIP_PHY is not set -# CONFIG_SMSC_PHY is not set +CONFIG_SMSC_PHY=y # CONFIG_STE10XP is not set # CONFIG_TERANETICS_PHY is not set +# CONFIG_DP83822_PHY is not set +# CONFIG_DP83TC811_PHY is not set +# CONFIG_DP83848_PHY is not set +# CONFIG_DP83867_PHY is not set +# CONFIG_DP83869_PHY is not set # CONFIG_VITESSE_PHY is not set # CONFIG_XILINX_GMII2RGMII is not set # CONFIG_MICREL_KS8995MA is not set +CONFIG_MDIO_DEVICE=y +CONFIG_MDIO_BUS=y +CONFIG_OF_MDIO=y +CONFIG_MDIO_DEVRES=y +# CONFIG_MDIO_BITBANG is not set +# CONFIG_MDIO_BCM_UNIMAC is not set +# CONFIG_MDIO_HISI_FEMAC is not set +# CONFIG_MDIO_MVUSB is not set +# CONFIG_MDIO_MSCC_MIIM is not set +# CONFIG_MDIO_IPQ4019 is not set +# CONFIG_MDIO_IPQ8064 is not set + +# +# MDIO Multiplexers +# +# CONFIG_MDIO_BUS_MUX_GPIO is not set +# CONFIG_MDIO_BUS_MUX_MULTIPLEXER is not set +# CONFIG_MDIO_BUS_MUX_MMIOREG is not set + +# +# PCS device drivers +# +# CONFIG_PCS_XPCS is not set +# end of PCS device drivers + # CONFIG_PPP is not set # CONFIG_SLIP is not set CONFIG_USB_NET_DRIVERS=y @@ -1843,6 +1842,7 @@ CONFIG_TOUCHSCREEN_MMS114=y # CONFIG_TOUCHSCREEN_ZFORCE is not set # CONFIG_TOUCHSCREEN_ROHM_BU21023 is not set # CONFIG_TOUCHSCREEN_IQS5XX is not set +# CONFIG_TOUCHSCREEN_ZINITIX is not set CONFIG_INPUT_MISC=y # CONFIG_INPUT_AD714X is not set # CONFIG_INPUT_ATMEL_CAPTOUCH is not set @@ -1966,12 +1966,14 @@ CONFIG_SERIAL_MCTRL_GPIO=y # CONFIG_HVC_DCC is not set CONFIG_SERIAL_DEV_BUS=y CONFIG_SERIAL_DEV_CTRL_TTYPORT=y +# CONFIG_VIRTIO_CONSOLE is not set # CONFIG_IPMI_HANDLER is not set CONFIG_HW_RANDOM=y # CONFIG_HW_RANDOM_TIMERIOMEM is not set # CONFIG_HW_RANDOM_BA431 is not set CONFIG_HW_RANDOM_EXYNOS=y # CONFIG_HW_RANDOM_CCTRNG is not set +# CONFIG_HW_RANDOM_XIPHERA is not set CONFIG_DEVMEM=y # CONFIG_DEVKMEM is not set # CONFIG_RAW_DRIVER is not set @@ -1982,6 +1984,7 @@ CONFIG_HW_RANDOM_TPM=y # CONFIG_TCG_TIS_I2C_ATMEL is not set CONFIG_TCG_TIS_I2C_INFINEON=y # CONFIG_TCG_TIS_I2C_NUVOTON is not set +# CONFIG_TCG_ATMEL is not set # CONFIG_TCG_VTPM_PROXY is not set # CONFIG_TCG_TIS_ST33ZP24_I2C is not set # CONFIG_TCG_TIS_ST33ZP24_SPI is not set @@ -2125,6 +2128,12 @@ CONFIG_PINCONF=y # CONFIG_PINCTRL_SX150X is not set # CONFIG_PINCTRL_STMFX is not set # CONFIG_PINCTRL_OCELOT is not set + +# +# Renesas pinctrl drivers +# +# end of Renesas pinctrl drivers + CONFIG_PINCTRL_SAMSUNG=y CONFIG_PINCTRL_EXYNOS=y CONFIG_PINCTRL_EXYNOS_ARM=y @@ -2134,6 +2143,8 @@ CONFIG_GPIOLIB_FASTPATH_LIMIT=512 CONFIG_OF_GPIO=y CONFIG_DEBUG_GPIO=y # CONFIG_GPIO_SYSFS is not set +CONFIG_GPIO_CDEV=y +CONFIG_GPIO_CDEV_V1=y # # Memory mapped GPIO drivers @@ -2198,7 +2209,6 @@ CONFIG_GPIO_WM8994=y # CONFIG_GPIO_AGGREGATOR is not set # CONFIG_GPIO_MOCKUP is not set # CONFIG_W1 is not set -# CONFIG_POWER_AVS is not set CONFIG_POWER_RESET=y # CONFIG_POWER_RESET_BRCMKONA is not set # CONFIG_POWER_RESET_BRCMSTB is not set @@ -2222,7 +2232,6 @@ CONFIG_POWER_SUPPLY_HWMON=y # CONFIG_BATTERY_DS2780 is not set # CONFIG_BATTERY_DS2781 is not set # CONFIG_BATTERY_DS2782 is not set -# CONFIG_BATTERY_LEGO_EV3 is not set CONFIG_BATTERY_SBS=y # CONFIG_CHARGER_SBS is not set # CONFIG_MANAGER_SBS is not set @@ -2245,6 +2254,7 @@ CONFIG_CHARGER_MAX8998=y # CONFIG_CHARGER_BQ24735 is not set # CONFIG_CHARGER_BQ2515X is not set # CONFIG_CHARGER_BQ25890 is not set +# CONFIG_CHARGER_BQ25980 is not set # CONFIG_CHARGER_SMB347 is not set CONFIG_CHARGER_TPS65090=y # CONFIG_BATTERY_GAUGE_LTC2941 is not set @@ -2323,6 +2333,7 @@ CONFIG_HWMON=y # CONFIG_SENSORS_MAX31790 is not set # CONFIG_SENSORS_MCP3021 is not set # CONFIG_SENSORS_TC654 is not set +# CONFIG_SENSORS_MR75203 is not set # CONFIG_SENSORS_ADCXX is not set # CONFIG_SENSORS_LM63 is not set # CONFIG_SENSORS_LM70 is not set @@ -2443,7 +2454,6 @@ CONFIG_WATCHDOG_OPEN_TIMEOUT=0 # CONFIG_ARM_SP805_WATCHDOG is not set # CONFIG_CADENCE_WATCHDOG is not set # CONFIG_FTWDT010_WATCHDOG is not set -CONFIG_HAVE_S3C2410_WATCHDOG=y CONFIG_S3C2410_WATCHDOG=y # CONFIG_DW_WATCHDOG is not set # CONFIG_MAX63XX_WATCHDOG is not set @@ -2569,6 +2579,7 @@ CONFIG_MFD_WM8994=y # CONFIG_MFD_STPMIC1 is not set # CONFIG_MFD_STMFX is not set # CONFIG_RAVE_SP_CORE is not set +# CONFIG_MFD_INTEL_M10_BMC is not set # end of Multifunction device drivers CONFIG_REGULATOR=y @@ -2617,6 +2628,9 @@ CONFIG_REGULATOR_MAX77802=y # CONFIG_REGULATOR_PV88080 is not set # CONFIG_REGULATOR_PV88090 is not set # CONFIG_REGULATOR_PWM is not set +# CONFIG_REGULATOR_RASPBERRYPI_TOUCHSCREEN_ATTINY is not set +# CONFIG_REGULATOR_RT4801 is not set +# CONFIG_REGULATOR_RTMV20 is not set CONFIG_REGULATOR_S2MPA01=y CONFIG_REGULATOR_S2MPS11=y CONFIG_REGULATOR_S5M8767=y @@ -3050,6 +3064,7 @@ CONFIG_DRM_PANEL_SAMSUNG_LD9040=y # CONFIG_DRM_PANEL_NEC_NL8048HL11 is not set # CONFIG_DRM_PANEL_NOVATEK_NT35510 is not set # CONFIG_DRM_PANEL_NOVATEK_NT39016 is not set +# CONFIG_DRM_PANEL_MANTIX_MLAF057WE51 is not set # CONFIG_DRM_PANEL_OLIMEX_LCD_OLINUXINO is not set # CONFIG_DRM_PANEL_ORISETECH_OTM8009A is not set # CONFIG_DRM_PANEL_OSD_OSD101T2587_53TS is not set @@ -3090,6 +3105,7 @@ CONFIG_DRM_PANEL_BRIDGE=y # CONFIG_DRM_CDNS_DSI is not set # CONFIG_DRM_CHRONTEL_CH7033 is not set # CONFIG_DRM_DISPLAY_CONNECTOR is not set +# CONFIG_DRM_LONTIUM_LT9611 is not set # CONFIG_DRM_LVDS_CODEC is not set # CONFIG_DRM_MEGACHIPS_STDPXXXX_GE_B850V3_FW is not set # CONFIG_DRM_NWL_MIPI_DSI is not set @@ -3101,9 +3117,11 @@ CONFIG_DRM_PARADE_PS8622=y CONFIG_DRM_SII9234=y # CONFIG_DRM_SIMPLE_BRIDGE is not set # CONFIG_DRM_THINE_THC63LVD1024 is not set +# CONFIG_DRM_TOSHIBA_TC358762 is not set CONFIG_DRM_TOSHIBA_TC358764=y # CONFIG_DRM_TOSHIBA_TC358767 is not set # CONFIG_DRM_TOSHIBA_TC358768 is not set +# CONFIG_DRM_TOSHIBA_TC358775 is not set # CONFIG_DRM_TI_TFP410 is not set # CONFIG_DRM_TI_SN65DSI86 is not set # CONFIG_DRM_TI_TPD12S015 is not set @@ -3111,6 +3129,7 @@ CONFIG_DRM_TOSHIBA_TC358764=y # CONFIG_DRM_ANALOGIX_ANX78XX is not set CONFIG_DRM_ANALOGIX_DP=y # CONFIG_DRM_I2C_ADV7511 is not set +# CONFIG_DRM_CDNS_MHDP8546 is not set # end of Display Interface Bridges # CONFIG_DRM_STI is not set @@ -3186,6 +3205,7 @@ CONFIG_LCD_PLATFORM=y # CONFIG_LCD_HX8357 is not set # CONFIG_LCD_OTM3225A is not set CONFIG_BACKLIGHT_CLASS_DEVICE=y +# CONFIG_BACKLIGHT_KTD253 is not set CONFIG_BACKLIGHT_PWM=y # CONFIG_BACKLIGHT_QCOM_WLED is not set # CONFIG_BACKLIGHT_ADP8860 is not set @@ -3351,6 +3371,7 @@ CONFIG_SND_SOC_WM_HUBS=y # CONFIG_SND_SOC_CS42L52 is not set # CONFIG_SND_SOC_CS42L56 is not set # CONFIG_SND_SOC_CS42L73 is not set +# CONFIG_SND_SOC_CS4234 is not set # CONFIG_SND_SOC_CS4265 is not set # CONFIG_SND_SOC_CS4270 is not set # CONFIG_SND_SOC_CS4271_I2C is not set @@ -3410,6 +3431,7 @@ CONFIG_SND_SOC_RT5631=y # CONFIG_SND_SOC_STI_SAS is not set # CONFIG_SND_SOC_TAS2552 is not set # CONFIG_SND_SOC_TAS2562 is not set +# CONFIG_SND_SOC_TAS2764 is not set # CONFIG_SND_SOC_TAS2770 is not set # CONFIG_SND_SOC_TAS5086 is not set # CONFIG_SND_SOC_TAS571X is not set @@ -3511,6 +3533,7 @@ CONFIG_HID_EZKEY=y # CONFIG_HID_GLORIOUS is not set # CONFIG_HID_HOLTEK is not set # CONFIG_HID_GOOGLE_HAMMER is not set +# CONFIG_HID_VIVALDI is not set # CONFIG_HID_GT683R is not set # CONFIG_HID_KEYTOUCH is not set # CONFIG_HID_KYE is not set @@ -3605,6 +3628,7 @@ CONFIG_USB_ANNOUNCE_NEW_DEVICES=y # Miscellaneous USB options # CONFIG_USB_DEFAULT_PERSIST=y +# CONFIG_USB_FEW_INIT_RETRIES is not set # CONFIG_USB_DYNAMIC_MINORS is not set # CONFIG_USB_OTG is not set # CONFIG_USB_OTG_PRODUCTLIST is not set @@ -3862,6 +3886,7 @@ CONFIG_LEDS_AAT1290=y CONFIG_LEDS_GPIO=y # CONFIG_LEDS_LP3944 is not set # CONFIG_LEDS_LP3952 is not set +# CONFIG_LEDS_LP50XX is not set # CONFIG_LEDS_LP55XX_COMMON is not set # CONFIG_LEDS_LP8860 is not set # CONFIG_LEDS_PCA955X is not set @@ -3969,6 +3994,7 @@ CONFIG_RTC_DRV_MAX77686=y # CONFIG_RTC_DRV_RX8025 is not set # CONFIG_RTC_DRV_EM3027 is not set # CONFIG_RTC_DRV_RV3028 is not set +# CONFIG_RTC_DRV_RV3032 is not set # CONFIG_RTC_DRV_RV8803 is not set CONFIG_RTC_DRV_S5M=y # CONFIG_RTC_DRV_SD3078 is not set @@ -4183,7 +4209,6 @@ CONFIG_ASHMEM=y # CONFIG_FIELDBUS_DEV is not set # CONFIG_WFX is not set # CONFIG_GOLDFISH is not set -# CONFIG_MFD_CROS_EC is not set CONFIG_CHROME_PLATFORMS=y CONFIG_CROS_EC=y CONFIG_CROS_EC_I2C=y @@ -4201,7 +4226,6 @@ CONFIG_HAVE_CLK=y CONFIG_CLKDEV_LOOKUP=y CONFIG_HAVE_CLK_PREPARE=y CONFIG_COMMON_CLK=y -# CONFIG_CLK_HSDK is not set CONFIG_COMMON_CLK_MAX77686=y # CONFIG_COMMON_CLK_MAX9485 is not set # CONFIG_COMMON_CLK_SI5341 is not set @@ -4365,6 +4389,8 @@ CONFIG_EXYNOS_SROM=y CONFIG_IIO=y CONFIG_IIO_BUFFER=y # CONFIG_IIO_BUFFER_CB is not set +# CONFIG_IIO_BUFFER_DMA is not set +# CONFIG_IIO_BUFFER_DMAENGINE is not set # CONFIG_IIO_BUFFER_HW_CONSUMER is not set CONFIG_IIO_KFIFO_BUF=y CONFIG_IIO_TRIGGERED_BUFFER=y @@ -4373,6 +4399,7 @@ CONFIG_IIO_TRIGGER=y CONFIG_IIO_CONSUMERS_PER_TRIGGER=2 # CONFIG_IIO_SW_DEVICE is not set # CONFIG_IIO_SW_TRIGGER is not set +# CONFIG_IIO_TRIGGERED_EVENT is not set # # Accelerometers @@ -4580,6 +4607,7 @@ CONFIG_EXYNOS_ADC=y # CONFIG_ADIS16130 is not set # CONFIG_ADIS16136 is not set # CONFIG_ADIS16260 is not set +# CONFIG_ADXRS290 is not set # CONFIG_ADXRS450 is not set # CONFIG_BMG160 is not set # CONFIG_FXAS21002C is not set @@ -4608,6 +4636,7 @@ CONFIG_EXYNOS_ADC=y # CONFIG_AM2315 is not set # CONFIG_DHT11 is not set # CONFIG_HDC100X is not set +# CONFIG_HDC2010 is not set # CONFIG_HTS221 is not set # CONFIG_HTU21 is not set # CONFIG_SI7005 is not set @@ -4642,6 +4671,7 @@ CONFIG_EXYNOS_ADC=y # CONFIG_AL3320A is not set # CONFIG_APDS9300 is not set # CONFIG_APDS9960 is not set +# CONFIG_AS73211 is not set # CONFIG_BH1750 is not set # CONFIG_BH1780 is not set # CONFIG_CM32181 is not set @@ -4832,6 +4862,7 @@ CONFIG_EXYNOS_IRQ_COMBINER=y # PHY Subsystem # CONFIG_GENERIC_PHY=y +# CONFIG_USB_LGM_PHY is not set # CONFIG_BCM_KONA_USB2_PHY is not set # CONFIG_PHY_CADENCE_TORRENT is not set # CONFIG_PHY_CADENCE_DPHY is not set @@ -5041,6 +5072,7 @@ CONFIG_ROOT_NFS=y # CONFIG_NFS_USE_LEGACY_DNS is not set CONFIG_NFS_USE_KERNEL_DNS=y CONFIG_NFS_DISABLE_UDP_SUPPORT=y +# CONFIG_NFS_V4_2_READ_PLUS is not set # CONFIG_NFSD is not set CONFIG_GRACE_PERIOD=y CONFIG_LOCKD=y @@ -5137,6 +5169,9 @@ CONFIG_LSM="lockdown,yama,loadpin,safesetid,integrity,bpf" # Memory initialization # CONFIG_INIT_STACK_NONE=y +# CONFIG_GCC_PLUGIN_STRUCTLEAK_USER is not set +# CONFIG_GCC_PLUGIN_STRUCTLEAK_BYREF is not set +# CONFIG_GCC_PLUGIN_STRUCTLEAK_BYREF_ALL is not set # CONFIG_INIT_ON_ALLOC_DEFAULT_ON is not set # CONFIG_INIT_ON_FREE_DEFAULT_ON is not set # end of Memory initialization @@ -5185,6 +5220,7 @@ CONFIG_CRYPTO_DH=m CONFIG_CRYPTO_ECC=m CONFIG_CRYPTO_ECDH=m # CONFIG_CRYPTO_ECRDSA is not set +# CONFIG_CRYPTO_SM2 is not set # CONFIG_CRYPTO_CURVE25519 is not set # @@ -5294,7 +5330,9 @@ CONFIG_CRYPTO_USER_API=m CONFIG_CRYPTO_USER_API_HASH=m CONFIG_CRYPTO_USER_API_SKCIPHER=m CONFIG_CRYPTO_USER_API_RNG=m +# CONFIG_CRYPTO_USER_API_RNG_CAVP is not set CONFIG_CRYPTO_USER_API_AEAD=m +CONFIG_CRYPTO_USER_API_ENABLE_OBSOLETE=y # CONFIG_CRYPTO_STATS is not set CONFIG_CRYPTO_HASH_INFO=y @@ -5394,6 +5432,7 @@ CONFIG_DECOMPRESS_ZSTD=y CONFIG_GENERIC_ALLOCATOR=y CONFIG_ASSOCIATIVE_ARRAY=y CONFIG_HAS_IOMEM=y +CONFIG_HAS_IOPORT_MAP=y CONFIG_HAS_DMA=y CONFIG_DMA_OPS=y CONFIG_NEED_SG_DMA_LENGTH=y @@ -5404,6 +5443,7 @@ CONFIG_ARCH_HAS_TEARDOWN_DMA_OPS=y CONFIG_DMA_NONCOHERENT_MMAP=y CONFIG_DMA_REMAP=y CONFIG_DMA_CMA=y +# CONFIG_DMA_PERNUMA_CMA is not set # # Default contiguous memory area size: @@ -5443,6 +5483,7 @@ CONFIG_FONT_7x14=y # CONFIG_FONT_SUN8x16 is not set # CONFIG_FONT_SUN12x22 is not set # CONFIG_FONT_TER16x32 is not set +# CONFIG_FONT_6x8 is not set CONFIG_SG_POOL=y CONFIG_SBITMAP=y # CONFIG_STRING_SELFTEST is not set @@ -5572,6 +5613,7 @@ CONFIG_LOCK_DEBUGGING_SUPPORT=y # CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set # CONFIG_LOCK_TORTURE_TEST is not set # CONFIG_WW_MUTEX_SELFTEST is not set +# CONFIG_SCF_TORTURE_TEST is not set # end of Lock Debugging (spinlocks, mutexes, etc...) # CONFIG_STACKTRACE is not set @@ -5593,7 +5635,7 @@ CONFIG_LOCK_DEBUGGING_SUPPORT=y # # RCU Debugging # -# CONFIG_RCU_PERF_TEST is not set +# CONFIG_RCU_SCALE_TEST is not set # CONFIG_RCU_TORTURE_TEST is not set # CONFIG_RCU_REF_SCALE_TEST is not set CONFIG_RCU_CPU_STALL_TIMEOUT=21 @@ -5660,7 +5702,6 @@ CONFIG_RUNTIME_TESTING_MENU=y # CONFIG_TEST_KSTRTOX is not set # CONFIG_TEST_PRINTF is not set # CONFIG_TEST_BITMAP is not set -# CONFIG_TEST_BITFIELD is not set # CONFIG_TEST_UUID is not set # CONFIG_TEST_XARRAY is not set # CONFIG_TEST_OVERFLOW is not set