linux-postmarketos-exynos4: upgrade to 5.15-rc2 (MR 2546)

Also add patches from the Replicant project to fix so that charging
works, and patches from the linux-pm list to fix the SOC INTR message
that has been spamming our dmesg (issue
https://gitlab.com/postmarketOS/pmaports/-/issues/1214).
This commit is contained in:
Henrik Grimler 2021-09-21 18:04:19 +02:00 committed by Dylan Van Assche
parent 75a395fb9c
commit ed1e314287
No known key found for this signature in database
GPG key ID: 8642571587897EA1
13 changed files with 582 additions and 106 deletions

View file

@ -1,8 +1,8 @@
From 2a6027178ae40c1d3baa965fe21b19cbf09493ce Mon Sep 17 00:00:00 2001
From 70df2c08b907b391d354d80f136e21251efe5d44 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Arve=20Hj=C3=B8nnev=C3=A5g?= <arve@android.com>
Date: Fri, 30 Nov 2012 17:05:40 -0800
Subject: [PATCH] ARM: decompressor: Flush tlb before swiching domain 0 to
client mode
Subject: [PATCH 01/10] ARM: decompressor: Flush tlb before swiching domain 0
to client mode
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
@ -20,10 +20,10 @@ Signed-off-by: Arve Hjønnevåg <arve@android.com>
1 file changed, 2 insertions(+)
diff --git a/arch/arm/boot/compressed/head.S b/arch/arm/boot/compressed/head.S
index 8a756870..5b9e2d4b 100644
index b1cb1972361b..82c220ddf712 100644
--- a/arch/arm/boot/compressed/head.S
+++ b/arch/arm/boot/compressed/head.S
@@ -794,6 +794,8 @@ __armv7_mmu_cache_on:
@@ -895,6 +895,8 @@ __armv7_mmu_cache_on:
bic r6, r6, #1 << 31 @ 32-bit translation system
bic r6, r6, #(7 << 0) | (1 << 4) @ use only ttbr0
mcrne p15, 0, r3, c2, c0, 0 @ load page table pointer
@ -33,5 +33,5 @@ index 8a756870..5b9e2d4b 100644
mcrne p15, 0, r6, c2, c0, 2 @ load ttb control
#endif
--
2.28.0
2.33.0

View file

@ -1,34 +0,0 @@
From 1287ea6219ef4ebc461214e67d6b98ee99023b3e Mon Sep 17 00:00:00 2001
From: Wolfgang Wiedmeyer <wolfgit@wiedmeyer.de>
Date: Sun, 25 Sep 2016 20:06:40 +0200
Subject: [PATCH] power: supply: max17042_battery: use VF SOC register for
capacity property
The capacity property uses the RepSOC register to report the current state
of charge. This register did not provide a reliable SOC value during my
testing with the max17047 variant on a Galaxy S3 (Trats2/GT-I9300). The
reported value did not change or even stayed 0 in some cases.
However, the VF SOC register provided an accurate SOC value at all times.
It uses the voltage fuel gauge to determine the SOC.
Signed-off-by: Wolfgang Wiedmeyer <wolfgit@wiedmeyer.de>
---
drivers/power/supply/max17042_battery.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/power/supply/max17042_battery.c b/drivers/power/supply/max17042_battery.c
index 2e9672fe4df1..87d90eaeed0c 100644
--- a/drivers/power/supply/max17042_battery.c
+++ b/drivers/power/supply/max17042_battery.c
@@ -316,7 +316,7 @@ static int max17042_get_property(struct power_supply *psy,
val->intval = data * 625 / 8;
break;
case POWER_SUPPLY_PROP_CAPACITY:
- ret = regmap_read(map, MAX17042_RepSOC, &data);
+ ret = regmap_read(map, MAX17042_VFSOC, &data);
if (ret < 0)
return ret;
--
2.31.1

View file

@ -1,7 +1,7 @@
From 4b0c208b9506faafbcb06629b35b4cd8cf2636ff Mon Sep 17 00:00:00 2001
From 3163b4525121fd36e44490db1df33121e1ab48d6 Mon Sep 17 00:00:00 2001
From: Denis 'GNUtoo' Carikli <GNUtoo@cyberdimension.org>
Date: Wed, 4 Nov 2020 00:06:26 +0100
Subject: [WIP] ARM: dts: exynos: Add reboot modes to midas
Subject: [PATCH 02/10] ARM: dts: exynos: Add reboot modes to midas
The values have been taken from the sec-reboot.c driver in
the 3.0.101 smdk4412 kernel used in LineageOS which is based
@ -23,10 +23,10 @@ Signed-off-by: Denis 'GNUtoo' Carikli <GNUtoo@cyberdimension.org>
1 file changed, 23 insertions(+)
diff --git a/arch/arm/boot/dts/exynos4412-midas.dtsi b/arch/arm/boot/dts/exynos4412-midas.dtsi
index 0645006..fb949f9 100644
index 968c7943653e..159fd1e21339 100644
--- a/arch/arm/boot/dts/exynos4412-midas.dtsi
+++ b/arch/arm/boot/dts/exynos4412-midas.dtsi
@@ -983,6 +983,29 @@
@@ -981,6 +981,29 @@ &mshc_0 {
&pmu_system_controller {
assigned-clocks = <&pmu_system_controller 0>;
assigned-clock-parents = <&clock CLK_XUSBXTI>;
@ -57,5 +57,5 @@ index 0645006..fb949f9 100644
&pinctrl_0 {
--
cgit v1.1
2.33.0

View file

@ -1,7 +1,8 @@
From 310f85dddffcb1070bf291ca8a97ce17e849828f Mon Sep 17 00:00:00 2001
From 3827de610edb21045623955af5f3c04e10f58d55 Mon Sep 17 00:00:00 2001
From: belgin <belginstirbu@hotmail.com>
Date: Tue, 29 Jun 2021 20:31:12 +0300
Subject: mmc: core: Workaround VTU00M 0xf1 FTL metadata corruption bug
Subject: [PATCH 03/10] mmc: core: Workaround VTU00M 0xf1 FTL metadata
corruption bug
Some versions of the 0xf1 revision of the firmware of the
VTU00M eMMC from Samsung have a bug that triggers an FTL
@ -55,17 +56,17 @@ Signed-off-by: belgin <belginstirbu@hotmail.com>
GNUtoo: Rewrite the commit message
Signed-off-by: Denis 'GNUtoo' Carikli <GNUtoo@cyberdimension.org>
---
drivers/mmc/core/mmc.c | 17 ++++
drivers/mmc/core/mmc_ops.c | 206 +++++++++++++++++++++++++++++++++++++++++++++
drivers/mmc/core/mmc.c | 17 +++
drivers/mmc/core/mmc_ops.c | 206 +++++++++++++++++++++++++++++++++++++
include/linux/mmc/card.h | 1 +
include/linux/mmc/core.h | 3 +
4 files changed, 227 insertions(+)
diff --git a/drivers/mmc/core/mmc.c b/drivers/mmc/core/mmc.c
index 7494d59..8f570fb 100644
index 29e58ffae379..12fa14e88ef6 100644
--- a/drivers/mmc/core/mmc.c
+++ b/drivers/mmc/core/mmc.c
@@ -1895,6 +1895,12 @@ static int mmc_init_card(struct mmc_host *host, u32 ocr,
@@ -1894,6 +1894,12 @@ static int mmc_init_card(struct mmc_host *host, u32 ocr,
if (!oldcard)
host->card = card;
@ -78,7 +79,7 @@ index 7494d59..8f570fb 100644
return 0;
free_card:
@@ -2274,6 +2280,17 @@ int mmc_attach_mmc(struct mmc_host *host)
@@ -2294,6 +2300,17 @@ int mmc_attach_mmc(struct mmc_host *host)
if (err)
goto remove_card;
@ -97,10 +98,10 @@ index 7494d59..8f570fb 100644
return 0;
diff --git a/drivers/mmc/core/mmc_ops.c b/drivers/mmc/core/mmc_ops.c
index ebad70e..0f80dd4 100644
index 0c54858e89c0..b53e1544acba 100644
--- a/drivers/mmc/core/mmc_ops.c
+++ b/drivers/mmc/core/mmc_ops.c
@@ -829,6 +829,212 @@ int mmc_bus_test(struct mmc_card *card, u8 bus_width)
@@ -826,6 +826,212 @@ int mmc_bus_test(struct mmc_card *card, u8 bus_width)
return mmc_send_bus_test(card, card->host, MMC_BUS_TEST_R, width);
}
@ -314,22 +315,22 @@ index ebad70e..0f80dd4 100644
{
unsigned int busy_timeout_ms = card->ext_csd.out_of_int_time;
diff --git a/include/linux/mmc/card.h b/include/linux/mmc/card.h
index 42df06c..4dc435d 100644
index 37f975875102..56a0157c09a3 100644
--- a/include/linux/mmc/card.h
+++ b/include/linux/mmc/card.h
@@ -313,6 +313,7 @@ struct mmc_card {
@@ -336,6 +336,7 @@ struct mmc_card {
unsigned int nr_parts;
unsigned int bouncesz; /* Bounce buffer size */
struct workqueue_struct *complete_wq; /* Private workqueue */
+ unsigned int movi_ops;
};
static inline bool mmc_large_sector(struct mmc_card *card)
diff --git a/include/linux/mmc/core.h b/include/linux/mmc/core.h
index 29aa507..80cbc1a 100644
index 71101d1ec825..72a0568edf6d 100644
--- a/include/linux/mmc/core.h
+++ b/include/linux/mmc/core.h
@@ -174,4 +174,7 @@ int mmc_hw_reset(struct mmc_host *host);
@@ -179,4 +179,7 @@ int mmc_hw_reset(struct mmc_host *host);
int mmc_sw_reset(struct mmc_host *host);
void mmc_set_data_timeout(struct mmc_data *data, const struct mmc_card *card);
@ -338,5 +339,5 @@ index 29aa507..80cbc1a 100644
+
#endif /* LINUX_MMC_CORE_H */
--
cgit v1.1
2.33.0

View file

@ -1,7 +1,7 @@
From 26b78def11ca95209c1b3ee5519c594438d88f21 Mon Sep 17 00:00:00 2001
From c7df8c691375f62424b7cae361e661ca01cc3529 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Joonas=20Kylm=C3=A4l=C3=A4?= <joonas.kylmala@iki.fi>
Date: Tue, 3 Sep 2019 10:45:08 -0400
Subject: [PATCH] drivers: drm: Add backlight control support for s6e8aa0
Subject: [PATCH 04/10] drivers: drm: Add backlight control support for s6e8aa0
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
@ -12,7 +12,7 @@ Signed-off-by: Joonas Kylmälä <joonas.kylmala@iki.fi>
1 file changed, 61 insertions(+), 22 deletions(-)
diff --git a/drivers/gpu/drm/panel/panel-samsung-s6e8aa0.c b/drivers/gpu/drm/panel/panel-samsung-s6e8aa0.c
index 527371120266..a20369fa6b60 100644
index 9b3599d6d2de..8d9c554835a4 100644
--- a/drivers/gpu/drm/panel/panel-samsung-s6e8aa0.c
+++ b/drivers/gpu/drm/panel/panel-samsung-s6e8aa0.c
@@ -3,6 +3,8 @@
@ -178,5 +178,5 @@ index 527371120266..a20369fa6b60 100644
drm_panel_init(&ctx->panel, dev, &s6e8aa0_drm_funcs,
DRM_MODE_CONNECTOR_DSI);
--
2.31.1
2.33.0

View file

@ -0,0 +1,299 @@
From d57fcb3193511c714a278589578a9ba5e0518935 Mon Sep 17 00:00:00 2001
From: Wolfgang Wiedmeyer <wolfgit@wiedmeyer.de>
Date: Tue, 27 Sep 2016 00:56:37 +0200
Subject: [PATCH 05/10] power_supply: max77693: Listen for cable events and
enable charging
This patch adds a listener for extcon cable events and enables
charging if an USB cable is connected. It recognizes SDP and DCP cable
types and treats them the same (same input current and fast charge
current). The maximum input current is set before the charger is
enabled and before the charger gets disabled, the maximum input
current is set to zero. The listener is inspired by the listener
implementation that was used for the AXP288 Charger driver.
The patch also adds support for the CURRENT_NOW property. It reads the
fast charge current that gets set before the charger is enabled or
disabled.
Signed-off-by: Wolfgang Wiedmeyer <wolfgit@wiedmeyer.de>
GNUtoo@cyberdimension.org: small fixes
Signed-off-by: Denis 'GNUtoo' Carikli <GNUtoo@cyberdimension.org>
---
drivers/power/supply/Kconfig | 2 +-
drivers/power/supply/max77693_charger.c | 176 ++++++++++++++++++++++++
2 files changed, 177 insertions(+), 1 deletion(-)
diff --git a/drivers/power/supply/Kconfig b/drivers/power/supply/Kconfig
index fcc7534edcb2..91aaa3172b14 100644
--- a/drivers/power/supply/Kconfig
+++ b/drivers/power/supply/Kconfig
@@ -548,7 +548,7 @@ config CHARGER_MAX77650
config CHARGER_MAX77693
tristate "Maxim MAX77693 battery charger driver"
- depends on MFD_MAX77693
+ depends on MFD_MAX77693 && REGULATOR_MAX77693
help
Say Y to enable support for the Maxim MAX77693 battery charger.
diff --git a/drivers/power/supply/max77693_charger.c b/drivers/power/supply/max77693_charger.c
index a2c5c9858639..b19490cb4a8f 100644
--- a/drivers/power/supply/max77693_charger.c
+++ b/drivers/power/supply/max77693_charger.c
@@ -12,8 +12,11 @@
#include <linux/mfd/max77693.h>
#include <linux/mfd/max77693-common.h>
#include <linux/mfd/max77693-private.h>
+#include <linux/extcon.h>
+#include <linux/regulator/consumer.h>
#define MAX77693_CHARGER_NAME "max77693-charger"
+#define MAX77693_EXTCON_DEV_NAME "max77693-muic"
static const char *max77693_charger_model = "MAX77693";
static const char *max77693_charger_manufacturer = "Maxim Integrated";
@@ -21,12 +24,21 @@ struct max77693_charger {
struct device *dev;
struct max77693_dev *max77693;
struct power_supply *charger;
+ struct regulator *regu;
u32 constant_volt;
u32 min_system_volt;
u32 thermal_regulation_temp;
u32 batttery_overcurrent;
u32 charge_input_threshold_volt;
+
+ /* SDP/DCP USB charging cable notifications */
+ struct {
+ struct extcon_dev *edev;
+ bool connected;
+ struct notifier_block nb;
+ struct work_struct work;
+ } cable;
};
static int max77693_get_charger_state(struct regmap *regmap, int *val)
@@ -197,12 +209,28 @@ static int max77693_get_online(struct regmap *regmap, int *val)
return 0;
}
+int max77693_get_charge_current(struct regmap *regmap, int *val)
+{
+ unsigned int data;
+ int ret;
+
+ ret = regmap_read(regmap, MAX77693_CHG_REG_CHG_CNFG_02, &data);
+ if (ret < 0)
+ return ret;
+
+ data &= CHG_CNFG_02_CC_MASK;
+ *val = data * 333 / 10; /* 3 steps/0.1A */
+
+ return 0;
+}
+
static enum power_supply_property max77693_charger_props[] = {
POWER_SUPPLY_PROP_STATUS,
POWER_SUPPLY_PROP_CHARGE_TYPE,
POWER_SUPPLY_PROP_HEALTH,
POWER_SUPPLY_PROP_PRESENT,
POWER_SUPPLY_PROP_ONLINE,
+ POWER_SUPPLY_PROP_CURRENT_NOW,
POWER_SUPPLY_PROP_MODEL_NAME,
POWER_SUPPLY_PROP_MANUFACTURER,
};
@@ -231,6 +259,9 @@ static int max77693_charger_get_property(struct power_supply *psy,
case POWER_SUPPLY_PROP_ONLINE:
ret = max77693_get_online(regmap, &val->intval);
break;
+ case POWER_SUPPLY_PROP_CURRENT_NOW:
+ ret = max77693_get_charge_current(regmap, &val->intval);
+ break;
case POWER_SUPPLY_PROP_MODEL_NAME:
val->strval = max77693_charger_model;
break;
@@ -285,6 +316,7 @@ static ssize_t fast_charge_timer_show(struct device *dev,
data &= CHG_CNFG_01_FCHGTIME_MASK;
data >>= CHG_CNFG_01_FCHGTIME_SHIFT;
+
switch (data) {
case 0x1 ... 0x7:
/* Starting from 4 hours, step by 2 hours */
@@ -573,6 +605,102 @@ static int max77693_set_charge_input_threshold_volt(struct max77693_charger *chg
CHG_CNFG_12_VCHGINREG_MASK, data);
}
+static int max77693_enable_charger(struct max77693_charger *chg, bool enable)
+{
+ int ret;
+
+ if (enable) {
+ ret = regulator_set_current_limit(
+ chg->regu,
+ CHG_CNFG_09_CHGIN_ILIM_500_MIN,
+ CHG_CNFG_09_CHGIN_ILIM_500_MAX);
+
+ if (ret < 0)
+ return ret;
+
+ ret = regulator_enable(chg->regu);
+ if (ret < 0)
+ return ret;
+ } else {
+ /* sets fast charge current to zero */
+ ret = regulator_set_current_limit(chg->regu,
+ CHG_CNFG_09_CHGIN_ILIM_0_MIN,
+ CHG_CNFG_09_CHGIN_ILIM_0_MAX);
+ if (ret < 0)
+ return ret;
+
+ ret = regulator_disable(chg->regu);
+ if (ret < 0)
+ return ret;
+ }
+
+ return ret;
+}
+
+static void max77693_extcon_evt_worker(struct work_struct *work)
+{
+ struct max77693_charger *chg = container_of(work,
+ struct max77693_charger,
+ cable.work);
+ bool changed = false;
+ struct extcon_dev *edev = chg->cable.edev;
+ bool old_connected = chg->cable.connected;
+ bool is_charger_enabled;
+ int ret;
+
+ /* Determine cable/charger type */
+ if (extcon_get_state(edev, EXTCON_CHG_USB_SDP) ||
+ extcon_get_state(edev, EXTCON_CHG_USB_DCP)) {
+ dev_dbg(chg->dev, "USB charger is connected");
+ chg->cable.connected = true;
+ } else {
+ if (old_connected)
+ dev_dbg(chg->dev, "USB charger disconnected");
+ chg->cable.connected = false;
+ }
+
+ /* Cable status changed */
+ if (old_connected != chg->cable.connected)
+ changed = true;
+
+ if (!changed)
+ return;
+
+ if (regulator_is_enabled(chg->regu))
+ is_charger_enabled = true;
+ else
+ is_charger_enabled = false;
+
+ if (is_charger_enabled && !chg->cable.connected) {
+ ret = max77693_enable_charger(chg, false);
+ if (ret < 0) {
+ dev_err(chg->dev,
+ "failed to disable charger (%d)", ret);
+ }
+ } else if (!is_charger_enabled && chg->cable.connected) {
+ ret = max77693_enable_charger(chg, true);
+ if (ret < 0) {
+ dev_err(chg->dev,
+ "cannot enable charger (%d)", ret);
+ }
+ }
+
+ if (changed)
+ power_supply_changed(chg->charger);
+}
+
+static int max77693_handle_cable_evt(struct notifier_block *nb,
+ unsigned long event, void *param)
+{
+ struct max77693_charger *chg = container_of(nb,
+ struct max77693_charger,
+ cable.nb);
+
+ schedule_work(&chg->cable.work);
+
+ return NOTIFY_OK;
+}
+
/*
* Sets charger registers to proper and safe default values.
*/
@@ -684,6 +812,45 @@ static int max77693_charger_probe(struct platform_device *pdev)
if (ret)
return ret;
+ chg->regu = devm_regulator_get(chg->dev, "CHARGER");
+ if (IS_ERR(chg->regu)) {
+ ret = PTR_ERR(chg->regu);
+ dev_err(&pdev->dev,
+ "failed to get charger regulator %d\n", ret);
+ return ret;
+ }
+
+ chg->cable.edev = extcon_get_extcon_dev(MAX77693_EXTCON_DEV_NAME);
+ if (chg->cable.edev == NULL) {
+ dev_dbg(&pdev->dev, "%s is not ready, probe deferred\n",
+ MAX77693_EXTCON_DEV_NAME);
+ return -EPROBE_DEFER;
+ }
+
+ /* set initial value */
+ chg->cable.connected = false;
+
+ /* Register for extcon notification */
+ INIT_WORK(&chg->cable.work, max77693_extcon_evt_worker);
+ chg->cable.nb.notifier_call = max77693_handle_cable_evt;
+ ret = extcon_register_notifier(chg->cable.edev, EXTCON_CHG_USB_SDP,
+ &chg->cable.nb);
+ if (ret) {
+ dev_err(&pdev->dev,
+ "failed to register extcon notifier for SDP %d\n", ret);
+ return ret;
+ }
+
+ ret = extcon_register_notifier(chg->cable.edev, EXTCON_CHG_USB_DCP,
+ &chg->cable.nb);
+ if (ret) {
+ dev_err(&pdev->dev,
+ "failed to register extcon notifier for DCP %d\n", ret);
+ extcon_unregister_notifier(chg->cable.edev,
+ EXTCON_CHG_USB_SDP, &chg->cable.nb);
+ return ret;
+ }
+
ret = max77693_reg_init(chg);
if (ret)
return ret;
@@ -724,6 +891,10 @@ static int max77693_charger_probe(struct platform_device *pdev)
device_remove_file(&pdev->dev, &dev_attr_top_off_timer);
device_remove_file(&pdev->dev, &dev_attr_top_off_threshold_current);
device_remove_file(&pdev->dev, &dev_attr_fast_charge_timer);
+ extcon_unregister_notifier(chg->cable.edev, EXTCON_CHG_USB_SDP,
+ &chg->cable.nb);
+ extcon_unregister_notifier(chg->cable.edev, EXTCON_CHG_USB_DCP,
+ &chg->cable.nb);
return ret;
}
@@ -736,6 +907,11 @@ static int max77693_charger_remove(struct platform_device *pdev)
device_remove_file(&pdev->dev, &dev_attr_top_off_threshold_current);
device_remove_file(&pdev->dev, &dev_attr_fast_charge_timer);
+ extcon_unregister_notifier(chg->cable.edev, EXTCON_CHG_USB_SDP,
+ &chg->cable.nb);
+ extcon_unregister_notifier(chg->cable.edev, EXTCON_CHG_USB_DCP,
+ &chg->cable.nb);
+
power_supply_unregister(chg->charger);
return 0;
--
2.33.0

View file

@ -0,0 +1,44 @@
From 854cd3c0d4d6a735339ce1c259952c082b8bb894 Mon Sep 17 00:00:00 2001
From: Wolfgang Wiedmeyer <wolfgit@wiedmeyer.de>
Date: Mon, 26 Sep 2016 23:33:05 +0200
Subject: [PATCH 06/10] mfd: max77693: Add defines for charger current control
This prepares for an updated regulator and charger driver. The defines
are needed to set the maximum input current and the fast charge
current.
Signed-off-by: Wolfgang Wiedmeyer <wolfgit@wiedmeyer.de>
GNUtoo@cyberdimension.org: small fix
Signed-off-by: Denis 'GNUtoo' Carikli <GNUtoo@cyberdimension.org>
---
include/linux/mfd/max77693-private.h | 7 +++++++
1 file changed, 7 insertions(+)
diff --git a/include/linux/mfd/max77693-private.h b/include/linux/mfd/max77693-private.h
index 311f7d3d2323..f6df8bafe996 100644
--- a/include/linux/mfd/max77693-private.h
+++ b/include/linux/mfd/max77693-private.h
@@ -217,6 +217,9 @@ enum max77693_charger_battery_state {
#define CHG_CNFG_01_CHGRSTRT_MASK (0x3 << CHG_CNFG_01_CHGRSTRT_SHIFT)
#define CHG_CNFG_01_PQEN_MAKS BIT(CHG_CNFG_01_PQEN_SHIFT)
+/* MAX77693_CHG_REG_CHG_CNFG_02 register */
+#define CHG_CNFG_02_CC_MASK 0x3F
+
/* MAX77693_CHG_REG_CHG_CNFG_03 register */
#define CHG_CNFG_03_TOITH_SHIFT 0
#define CHG_CNFG_03_TOTIME_SHIFT 3
@@ -245,6 +248,10 @@ enum max77693_charger_battery_state {
/* MAX77693 CHG_CNFG_09 Register */
#define CHG_CNFG_09_CHGIN_ILIM_MASK 0x7F
+#define CHG_CNFG_09_CHGIN_ILIM_500_MAX 500000
+#define CHG_CNFG_09_CHGIN_ILIM_500_MIN 470000
+#define CHG_CNFG_09_CHGIN_ILIM_0_MAX 60000
+#define CHG_CNFG_09_CHGIN_ILIM_0_MIN 0
/* MAX77693 CHG_CTRL Register */
#define SAFEOUT_CTRL_SAFEOUT1_MASK 0x3
--
2.33.0

View file

@ -1,7 +1,7 @@
From f91cadd693f173d671f15a6d9386dcb2a033f5b2 Mon Sep 17 00:00:00 2001
From 9f80731e228ae136b1bd9b117c665a542f4b3dc1 Mon Sep 17 00:00:00 2001
From: Shilin Victor <chrono.monochrome@gmail.com>
Date: Fri, 19 Mar 2021 19:10:37 +0300
Subject: [PATCH] power_supply: max77693: change the supply type to
Subject: [PATCH 07/10] power_supply: max77693: change the supply type to
POWER_SUPPLY_TYPE_MAINS
---
@ -9,10 +9,10 @@ Subject: [PATCH] power_supply: max77693: change the supply type to
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/power/supply/max77693_charger.c b/drivers/power/supply/max77693_charger.c
index 00672f132c29..fcd3708718f6 100644
index b19490cb4a8f..c33f0d77b1cc 100644
--- a/drivers/power/supply/max77693_charger.c
+++ b/drivers/power/supply/max77693_charger.c
@@ -590,7 +590,7 @@ static int max77693_charger_get_property(struct power_supply *psy,
@@ -277,7 +277,7 @@ static int max77693_charger_get_property(struct power_supply *psy,
static const struct power_supply_desc max77693_charger_desc = {
.name = MAX77693_CHARGER_NAME,
@ -22,5 +22,5 @@ index 00672f132c29..fcd3708718f6 100644
.num_properties = ARRAY_SIZE(max77693_charger_props),
.get_property = max77693_charger_get_property,
--
2.31.1
2.33.0

View file

@ -0,0 +1,45 @@
From fa898d9eee5dd77af8d536ad85351f80fb3c41a0 Mon Sep 17 00:00:00 2001
From: Henrik Grimler <henrik@grimler.se>
Date: Mon, 13 Sep 2021 11:30:16 +0200
Subject: [PATCH 08/10] power: supply: max17042_battery: use VFSOC for capacity
when no rsns
On Galaxy S3 (i9300/i9305), which has the max17047 fuel gauge and no
current sense resistor (rsns), the RepSOC register does not provide an
accurate state of charge value. The reported value is wrong, and does
not change over time. VFSOC however, which uses the voltage fuel gauge
to determine the state of charge, always shows an accurate value.
At least one max170xx driver, found in Asus' Z00D kernel [1], chooses
how to get the capacity based on if current sense is available or not.
Lets change the mainline driver to match the Asus Z00D driver's
behaviour and thereby fix so that correct state of charge values are
obtained on Galaxy S3.
[1] https://github.com/LineageOS/android_kernel_asus_Z00D/blob/c7ab0e3ec5b5/drivers/power/max17042_battery.c#L1103-L1105
Suggested-by: Wolfgang Wiedmeyer <wolfgit@wiedmeyer.de>
Signed-off-by: Henrik Grimler <henrik@grimler.se>
---
drivers/power/supply/max17042_battery.c | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/drivers/power/supply/max17042_battery.c b/drivers/power/supply/max17042_battery.c
index 8dffae76b6a3..5809ba997093 100644
--- a/drivers/power/supply/max17042_battery.c
+++ b/drivers/power/supply/max17042_battery.c
@@ -313,7 +313,10 @@ static int max17042_get_property(struct power_supply *psy,
val->intval = data * 625 / 8;
break;
case POWER_SUPPLY_PROP_CAPACITY:
- ret = regmap_read(map, MAX17042_RepSOC, &data);
+ if (chip->pdata->enable_current_sense)
+ ret = regmap_read(map, MAX17042_RepSOC, &data);
+ else
+ ret = regmap_read(map, MAX17042_VFSOC, &data);
if (ret < 0)
return ret;
--
2.33.0

View file

@ -0,0 +1,38 @@
From 07c817b8abc53b86c58171fe1f706acf466828f7 Mon Sep 17 00:00:00 2001
From: Sebastian Krzyszkowiak <sebastian.krzyszkowiak@puri.sm>
Date: Tue, 14 Sep 2021 14:18:05 +0200
Subject: [PATCH 09/10] power: supply: max17042_battery: Clear status bits in
interrupt handler
The gauge requires us to clear the status bits manually for some alerts
to be properly dismissed. Previously the IRQ was configured to react only
on falling edge, which wasn't technically correct (the ALRT line is active
low), but it had a happy side-effect of preventing interrupt storms
on uncleared alerts from happening.
Fixes: 7fbf6b731bca ("power: supply: max17042: Do not enforce (incorrect) interrupt trigger type")
Cc: <stable@vger.kernel.org>
Signed-off-by: Sebastian Krzyszkowiak <sebastian.krzyszkowiak@puri.sm>
Reviewed-by: Krzysztof Kozlowski <krzysztof.kozlowski@canonical.com>
---
drivers/power/supply/max17042_battery.c | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/drivers/power/supply/max17042_battery.c b/drivers/power/supply/max17042_battery.c
index 5809ba997093..7cfbca28e703 100644
--- a/drivers/power/supply/max17042_battery.c
+++ b/drivers/power/supply/max17042_battery.c
@@ -879,6 +879,10 @@ static irqreturn_t max17042_thread_handler(int id, void *dev)
max17042_set_soc_threshold(chip, 1);
}
+ /* we implicitly handle all alerts via power_supply_changed */
+ regmap_clear_bits(chip->regmap, MAX17042_STATUS,
+ 0xFFFF & ~(STATUS_POR_BIT | STATUS_BST_BIT));
+
power_supply_changed(chip->battery);
return IRQ_HANDLED;
}
--
2.33.0

View file

@ -0,0 +1,35 @@
From 7a77d08f1f2e0671d5d62dc0ddc445af5b103d1b Mon Sep 17 00:00:00 2001
From: Sebastian Krzyszkowiak <sebastian.krzyszkowiak@puri.sm>
Date: Tue, 14 Sep 2021 14:18:06 +0200
Subject: [PATCH 10/10] power: supply: max17042_battery: Prevent int underflow
in set_soc_threshold
max17042_set_soc_threshold gets called with offset set to 1, which means
that minimum threshold value would underflow once SOC got down to 0,
causing invalid alerts from the gauge.
Fixes: e5f3872d2044 ("max17042: Add support for signalling change in SOC")
Cc: <stable@vger.kernel.org>
Signed-off-by: Sebastian Krzyszkowiak <sebastian.krzyszkowiak@puri.sm>
Reviewed-by: Krzysztof Kozlowski <krzysztof.kozlowski@canonical.com>
---
drivers/power/supply/max17042_battery.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/drivers/power/supply/max17042_battery.c b/drivers/power/supply/max17042_battery.c
index 7cfbca28e703..aaf6f1bd3d29 100644
--- a/drivers/power/supply/max17042_battery.c
+++ b/drivers/power/supply/max17042_battery.c
@@ -860,7 +860,8 @@ static void max17042_set_soc_threshold(struct max17042_chip *chip, u16 off)
regmap_read(map, MAX17042_RepSOC, &soc);
soc >>= 8;
soc_tr = (soc + off) << 8;
- soc_tr |= (soc - off);
+ if (off < soc)
+ soc_tr |= soc - off;
regmap_write(map, MAX17042_SALRT_Th, soc_tr);
}
--
2.33.0

View file

@ -3,7 +3,7 @@
# Kernel config based on: arch/arm/configs/exynos_defconfig
pkgname=linux-postmarketos-exynos4
pkgver=5.14.5
pkgver=5.15_rc2
pkgrel=0
pkgdesc="Mainline kernel fork for Samsung Exynos4 devices"
arch="armv7"
@ -25,18 +25,22 @@ case $pkgver in
*.*) _kernver=$pkgver;;
esac
source="
https://cdn.kernel.org/pub/linux/kernel/v${_kernver%%.*}.x/linux-$_kernver.tar.xz
https://git.kernel.org/torvalds/t/linux-${pkgver//_/-}.tar.gz
$_config
0001-ARM-decompressor-Flush-tlb-before-swiching-domain-0-.patch
0001-drivers-drm-Add-backlight-control-support-for-s6e8aa.patch
0001-power-supply-max17042_battery-use-VF-SOC-register-fo.patch
0001-power_supply-max77693-change-the-supply-type-to-POWE.patch
add-reboot-modes-to-midas.patch
workaround-metadata-corruption-bug.patch
0002-ARM-dts-exynos-Add-reboot-modes-to-midas.patch
0003-mmc-core-Workaround-VTU00M-0xf1-FTL-metadata-corrupt.patch
0004-drivers-drm-Add-backlight-control-support-for-s6e8aa.patch
0005-power_supply-max77693-Listen-for-cable-events-and-en.patch
0006-mfd-max77693-Add-defines-for-charger-current-control.patch
0007-power_supply-max77693-change-the-supply-type-to-POWE.patch
0008-power-supply-max17042_battery-use-VFSOC-for-capacity.patch
0009-power-supply-max17042_battery-Clear-status-bits-in-i.patch
0010-power-supply-max17042_battery-Prevent-int-underflow-.patch
initramfs.list
init
"
builddir="$srcdir/linux-$_kernver"
builddir="$srcdir/linux-${_kernver//_/-}"
prepare_isorec() {
# https://wiki.postmarketos.org/wiki/Boot_process#isorec
@ -72,14 +76,18 @@ package() {
}
sha512sums="
8213a77210a1dc58adf60bc6afe7d6a5e2931fd838f30683bb6503286b3d291ee01ae1f60adc426a36a03d857c18a5fb4d156041aed4e1542d3456e9e459bd1f linux-5.14.5.tar.xz
445f6a42d598ab8388f1176aa0825d632007886eea9084ee7f79405b29742936b6ecd8b07b3fa6505e691d36b09ccb12e7381bb6b1dbca3fe7c55416b32d2f2a config-postmarketos-exynos4.armv7
4bb111db4396a1981ad0883737c6594ca93701699846298b940d2ea202c666be0158a0f9ddc5b95b9147fa4cfe62639512ae78e9315f8d975b379ccc4e15da36 0001-ARM-decompressor-Flush-tlb-before-swiching-domain-0-.patch
4d949df3906b4c7e13ae38345f8a25ec438e18b429d96d42486bb95d0cdc65d1fb68a8cd366e4040ff398633015bbd4db72e2327ad936c3a0069361392923fe1 0001-drivers-drm-Add-backlight-control-support-for-s6e8aa.patch
166fe4dff1cdc451a9a32a5240adb93b534b8c576c5ac8d995401ebbf676385a6d8b5a6a21f556df588dee41cc4e5b8ede9eff3dd4c7835c0ca374882784d42e 0001-power-supply-max17042_battery-use-VF-SOC-register-fo.patch
e581eb55eb4cdfdac2cbe713a5044077a9b2f15881f0bed03cc89ecb1e38d19a1c9cfbaf53ee184c4a64b10bfe071e289f4fb2230e2420e4f0042f1f301a325c 0001-power_supply-max77693-change-the-supply-type-to-POWE.patch
4b1e0db3cb1ea369eb6b28356deaf660e3c6e73a043069dbfbe17b5b5237e854f4e400b484b4ca77a2810ecc0edaec80205c28c6793fcdc031d366b25c1b59f6 add-reboot-modes-to-midas.patch
237f0931adfdafa57f3f194281fd28ed47b3e42636feeb7ffe4d860f2468070d399bf2d8fba075d8eec3047252573009671b45cfafc9b9de273391090f39f3e4 workaround-metadata-corruption-bug.patch
a46232c7b389acc68ae0d969078431c415a060e9f667f0ba772b8f3f49babaa9c75570e3feff6e36455daf235ae04118d5c0a7d8f66e9565234c9f38c5f91bd3 linux-5.15-rc2.tar.gz
0d32f05f3d250ca72913596aadff2a416c25d7d1fda3648851091a012825aef236ac13885c51753c46ca0017f59a305d03222ba6dba905b386786e9c5f5fef00 config-postmarketos-exynos4.armv7
a033fa9afa05825d5c923f1d5a224e230a8b02e75b02a21e0a0077f1b76c01d663ba54204e66db1e85096d9e44cc29fee0acaf919d3187cb47dba9005f94d8be 0001-ARM-decompressor-Flush-tlb-before-swiching-domain-0-.patch
57590b105cb6d01e5f2d860a21c1417b197abbcaf8553bf57633b261ac1e161b0d424f8baeb7b14b3ed923ebac6f6e27401ef02c0b53a4b3e34600368fe85219 0002-ARM-dts-exynos-Add-reboot-modes-to-midas.patch
81430b484a0747717ed8dba45c04c40689d9546b7b9d3eb20f0520e78c94f1438afc1f21a0b06007f60ff718e924d1586acc98f4498671a1a7609ed6e6f2b3f0 0003-mmc-core-Workaround-VTU00M-0xf1-FTL-metadata-corrupt.patch
0e3aad5d8306c5a957cd8351078cedc583517c2821c0e82e57aeaaffdbf27db32214cdff4607134d5a554645186613540867c9f8c2a1456fa090cee7df2f5e3a 0004-drivers-drm-Add-backlight-control-support-for-s6e8aa.patch
65049c997705f3b3fe7feff089009b16f142d9138cd5bdd039535640dcabda8c5b3dac0238e0996e31bd909ff11e4cc82aab94dc5c518b641b71af4f7284cae6 0005-power_supply-max77693-Listen-for-cable-events-and-en.patch
7711e7b7fda4f089fa510ea38431fcf0cad80cbba381b3dddb57118e469b5eb868024cf92c9fa91f892ba2ea060009dbbc522e3bd873d9045338d148cfdd199b 0006-mfd-max77693-Add-defines-for-charger-current-control.patch
de87e6a6608165cdc35a03bd10dedef1c12a2a9e1f66f500879c05b287bae7181cc95021a3a2aad6abefd024f508ed61c19ee9341ad3cc24e260269b647e1010 0007-power_supply-max77693-change-the-supply-type-to-POWE.patch
79e28ed7bd5f5f37dccee71455528ef4680aae73f2abe35ea0480bc09da4206bbcb0734d55d9e591676937cd9bb897d4e1ceb4689751ce28a5624d08d165a25e 0008-power-supply-max17042_battery-use-VFSOC-for-capacity.patch
211457806e8735b330511ae68f6b82f7fc653e37aa58b9af8cfd1eae241e80372fdf3b4c93c29e8452a76a888f3282186652980f80ca74a53c557ebf8ebabcca 0009-power-supply-max17042_battery-Clear-status-bits-in-i.patch
eeeb338ebe4890abd3c15262ed7bb9fb5b5f3d118f249efb384df2b342f94909146d210704d81346734fd3ce9ae2dd7bf9bd433a1ed02f36e8b595a1922bb6a3 0010-power-supply-max17042_battery-Prevent-int-underflow-.patch
aaff0332b90e1f9f62de1128cace934717336e54ab09de46477369fa808302482d97334e43a85ee8597c1bcab64d3484750103559fea2ce8cd51776156bf7591 initramfs.list
09f1f214a24300696809727a7b04378887c06ca6f40803ca51a12bf2176a360b2eb8632139d6a0722094e05cb2038bdb04018a1e3d33fc2697674552ade03bee init
"

View file

@ -1,6 +1,6 @@
#
# Automatically generated file; DO NOT EDIT.
# Linux/arm 5.14.5 Kernel Configuration
# Linux/arm 5.15.0-rc2 Kernel Configuration
#
CONFIG_CC_VERSION_TEXT="armv7-alpine-linux-musleabihf-gcc (Alpine 10.3.1_git20210625) 10.3.1 20210625"
CONFIG_CC_IS_GCC=y
@ -22,6 +22,7 @@ CONFIG_BUILDTIME_TABLE_SORT=y
#
CONFIG_INIT_ENV_ARG_LIMIT=32
# CONFIG_COMPILE_TEST is not set
CONFIG_WERROR=y
CONFIG_LOCALVERSION="-postmarketos-exynos4"
CONFIG_LOCALVERSION_AUTO=y
CONFIG_BUILD_SALT=""
@ -133,6 +134,7 @@ CONFIG_RCU_NEED_SEGCBLIST=y
CONFIG_LOG_BUF_SHIFT=17
CONFIG_LOG_CPU_MAX_BUF_SHIFT=12
CONFIG_PRINTK_SAFE_LOG_BUF_SHIFT=13
CONFIG_PRINTK_INDEX=y
CONFIG_GENERIC_SCHED_CLOCK=y
#
@ -197,7 +199,6 @@ CONFIG_SYSFS_SYSCALL=y
CONFIG_FHANDLE=y
CONFIG_POSIX_TIMERS=y
CONFIG_PRINTK=y
CONFIG_PRINTK_NMI=y
CONFIG_BUG=y
CONFIG_ELF_CORE=y
CONFIG_BASE_FULL=y
@ -252,7 +253,6 @@ CONFIG_SYS_SUPPORTS_APM_EMULATION=y
CONFIG_HAVE_PROC_CPU=y
CONFIG_STACKTRACE_SUPPORT=y
CONFIG_LOCKDEP_SUPPORT=y
CONFIG_TRACE_IRQFLAGS_SUPPORT=y
CONFIG_FIX_EARLYCON_MEM=y
CONFIG_GENERIC_HWEIGHT=y
CONFIG_GENERIC_CALIBRATE_DELAY=y
@ -597,7 +597,15 @@ CONFIG_ARCH_HIBERNATION_POSSIBLE=y
#
# Firmware Drivers
#
#
# ARM System Control and Management Interface Protocol
#
# CONFIG_ARM_SCMI_PROTOCOL is not set
# end of ARM System Control and Management Interface Protocol
# CONFIG_FW_CFG_SYSFS is not set
# CONFIG_QCOM_SCM is not set
# CONFIG_TRUSTED_FOUNDATIONS is not set
# CONFIG_GOOGLE_FIRMWARE is not set
CONFIG_HAVE_ARM_SMCCC=y
@ -631,7 +639,6 @@ CONFIG_AS_VFP_VMRS_FPINST=y
#
# General architecture-dependent options
#
CONFIG_SET_FS=y
# CONFIG_KPROBES is not set
# CONFIG_JUMP_LABEL is not set
CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y
@ -640,6 +647,7 @@ CONFIG_HAVE_KPROBES=y
CONFIG_HAVE_KRETPROBES=y
CONFIG_HAVE_OPTPROBES=y
CONFIG_HAVE_NMI=y
CONFIG_TRACE_IRQFLAGS_SUPPORT=y
CONFIG_HAVE_ARCH_TRACEHOOK=y
CONFIG_HAVE_DMA_CONTIGUOUS=y
CONFIG_GENERIC_SMP_IDLE_THREAD=y
@ -722,12 +730,10 @@ CONFIG_MODULE_COMPRESS_NONE=y
CONFIG_MODPROBE_PATH="/sbin/modprobe"
CONFIG_MODULES_TREE_LOOKUP=y
CONFIG_BLOCK=y
CONFIG_BLK_SCSI_REQUEST=y
CONFIG_BLK_DEV_BSG=y
CONFIG_BLK_DEV_BSG_COMMON=y
# CONFIG_BLK_DEV_BSGLIB is not set
# CONFIG_BLK_DEV_INTEGRITY is not set
# CONFIG_BLK_DEV_ZONED is not set
# CONFIG_BLK_CMDLINE_PARSER is not set
# CONFIG_BLK_WBT is not set
CONFIG_BLK_DEBUG_FS=y
# CONFIG_BLK_SED_OPAL is not set
@ -759,6 +765,7 @@ CONFIG_EFI_PARTITION=y
# end of Partition Types
CONFIG_BLK_PM=y
CONFIG_BLOCK_HOLDER_DEPRECATED=y
#
# IO Schedulers
@ -823,6 +830,12 @@ CONFIG_GENERIC_EARLY_IOREMAP=y
# CONFIG_PERCPU_STATS is not set
# CONFIG_GUP_TEST is not set
CONFIG_KMAP_LOCAL=y
#
# Data Access Monitoring
#
# CONFIG_DAMON is not set
# end of Data Access Monitoring
# end of Memory Management options
CONFIG_NET=y
@ -836,6 +849,7 @@ CONFIG_PACKET=y
# CONFIG_PACKET_DIAG is not set
CONFIG_UNIX=y
CONFIG_UNIX_SCM=y
CONFIG_AF_UNIX_OOB=y
# CONFIG_UNIX_DIAG is not set
# CONFIG_TLS is not set
CONFIG_XFRM=y
@ -893,6 +907,7 @@ CONFIG_IPV6_NDISC_NODETYPE=y
# CONFIG_IPV6_SEG6_LWTUNNEL is not set
# CONFIG_IPV6_SEG6_HMAC is not set
# CONFIG_IPV6_RPL_LWTUNNEL is not set
# CONFIG_IPV6_IOAM6_LWTUNNEL is not set
# CONFIG_MPTCP is not set
# CONFIG_NETWORK_SECMARK is not set
# CONFIG_NETWORK_PHY_TIMESTAMPING is not set
@ -1231,6 +1246,7 @@ CONFIG_BT_ATH3K=m
# CONFIG_AF_RXRPC is not set
# CONFIG_AF_KCM is not set
# CONFIG_MCTP is not set
CONFIG_WIRELESS=y
CONFIG_CFG80211=m
# CONFIG_NL80211_TESTMODE is not set
@ -1448,6 +1464,7 @@ CONFIG_SRAM_EXEC=y
#
CONFIG_SCSI_MOD=y
# CONFIG_RAID_ATTRS is not set
CONFIG_SCSI_COMMON=y
CONFIG_SCSI=y
CONFIG_SCSI_DMA=y
CONFIG_SCSI_PROC_FS=y
@ -1459,6 +1476,7 @@ CONFIG_BLK_DEV_SD=y
# CONFIG_CHR_DEV_ST is not set
# CONFIG_BLK_DEV_SR is not set
CONFIG_CHR_DEV_SG=y
CONFIG_BLK_DEV_BSG=y
# CONFIG_CHR_DEV_SCH is not set
# CONFIG_SCSI_CONSTANTS is not set
# CONFIG_SCSI_LOGGING is not set
@ -1508,7 +1526,6 @@ CONFIG_DM_CRYPT=m
# CONFIG_DM_THIN_PROVISIONING is not set
# CONFIG_DM_CACHE is not set
# CONFIG_DM_WRITECACHE is not set
# CONFIG_DM_EBS is not set
# CONFIG_DM_ERA is not set
# CONFIG_DM_CLONE is not set
# CONFIG_DM_MIRROR is not set
@ -1559,7 +1576,7 @@ CONFIG_NET_VENDOR_CADENCE=y
# CONFIG_MACB is not set
CONFIG_NET_VENDOR_CAVIUM=y
CONFIG_NET_VENDOR_CIRRUS=y
# CONFIG_CS89x0 is not set
# CONFIG_CS89x0_PLATFORM is not set
CONFIG_NET_VENDOR_CORTINA=y
# CONFIG_GEMINI_ETHERNET is not set
# CONFIG_DM9000 is not set
@ -1580,6 +1597,7 @@ CONFIG_NET_VENDOR_HUAWEI=y
CONFIG_NET_VENDOR_I825XX=y
CONFIG_NET_VENDOR_INTEL=y
CONFIG_NET_VENDOR_MICROSOFT=y
# CONFIG_NET_VENDOR_LITEX is not set
CONFIG_NET_VENDOR_MARVELL=y
# CONFIG_MVMDIO is not set
CONFIG_NET_VENDOR_MELLANOX=y
@ -1657,6 +1675,7 @@ CONFIG_AX88796B_PHY=y
# CONFIG_MARVELL_PHY is not set
# CONFIG_MARVELL_10G_PHY is not set
# CONFIG_MARVELL_88X2222_PHY is not set
# CONFIG_MAXLINEAR_GPHY is not set
# CONFIG_MEDIATEK_GE_PHY is not set
# CONFIG_MICREL_PHY is not set
CONFIG_MICROCHIP_PHY=m
@ -1833,7 +1852,6 @@ CONFIG_WLAN_VENDOR_QUANTENNA=y
# CONFIG_NETDEVSIM is not set
# CONFIG_NET_FAILOVER is not set
# CONFIG_ISDN is not set
# CONFIG_NVM is not set
#
# Input device support
@ -2114,9 +2132,8 @@ CONFIG_TCG_TIS_I2C_INFINEON=y
# CONFIG_TCG_TIS_ST33ZP24_SPI is not set
# CONFIG_XILLYBUS is not set
# CONFIG_XILLYUSB is not set
# end of Character devices
# CONFIG_RANDOM_TRUST_BOOTLOADER is not set
# end of Character devices
#
# I2C support
@ -2180,6 +2197,7 @@ CONFIG_I2C_S3C2410=y
# Other I2C/SMBus bus drivers
#
CONFIG_I2C_CROS_EC_TUNNEL=y
# CONFIG_I2C_VIRTIO is not set
# end of I2C Hardware Bus support
# CONFIG_I2C_STUB is not set
@ -2239,6 +2257,7 @@ CONFIG_SPI_S3C64XX=y
# PTP clock support
#
# CONFIG_PTP_1588_CLOCK is not set
CONFIG_PTP_1588_CLOCK_OPTIONAL=y
#
# Enable PHYLIB and NETWORK_PHY_TIMESTAMPING to see the additional clocks.
@ -2396,6 +2415,7 @@ CONFIG_CHARGER_TPS65090=y
# CONFIG_BATTERY_RT5033 is not set
# CONFIG_CHARGER_RT9455 is not set
# CONFIG_CHARGER_CROS_USBPD is not set
# CONFIG_CHARGER_CROS_PCHG is not set
# CONFIG_CHARGER_UCS1002 is not set
# CONFIG_CHARGER_BD99954 is not set
CONFIG_HWMON=y
@ -2421,6 +2441,7 @@ CONFIG_HWMON=y
# CONFIG_SENSORS_ADT7470 is not set
# CONFIG_SENSORS_ADT7475 is not set
# CONFIG_SENSORS_AHT10 is not set
# CONFIG_SENSORS_AQUACOMPUTER_D5NEXT is not set
# CONFIG_SENSORS_AS370 is not set
# CONFIG_SENSORS_ASC7621 is not set
# CONFIG_SENSORS_AXI_FAN_CONTROL is not set
@ -2506,6 +2527,7 @@ CONFIG_SENSORS_NTC_THERMISTOR=y
# CONFIG_PMBUS is not set
CONFIG_SENSORS_PWM_FAN=y
# CONFIG_SENSORS_SBTSI is not set
# CONFIG_SENSORS_SBRMI is not set
# CONFIG_SENSORS_SHT15 is not set
# CONFIG_SENSORS_SHT21 is not set
# CONFIG_SENSORS_SHT3x is not set
@ -2729,6 +2751,8 @@ CONFIG_MFD_WM8994=y
# CONFIG_MFD_QCOM_PM8008 is not set
# CONFIG_RAVE_SP_CORE is not set
# CONFIG_MFD_INTEL_M10_BMC is not set
# CONFIG_MFD_RSMU_I2C is not set
# CONFIG_MFD_RSMU_SPI is not set
# end of Multifunction device drivers
CONFIG_REGULATOR=y
@ -2784,7 +2808,9 @@ CONFIG_REGULATOR_MAX77802=y
# CONFIG_REGULATOR_RT4801 is not set
# CONFIG_REGULATOR_RT6160 is not set
# CONFIG_REGULATOR_RT6245 is not set
# CONFIG_REGULATOR_RTQ2134 is not set
# CONFIG_REGULATOR_RTMV20 is not set
# CONFIG_REGULATOR_RTQ6752 is not set
CONFIG_REGULATOR_S2MPA01=y
CONFIG_REGULATOR_S2MPS11=y
CONFIG_REGULATOR_S5M8767=y
@ -3061,7 +3087,9 @@ CONFIG_VIDEO_S5P_MIPI_CSIS=m
# CONFIG_VIDEO_IMX290 is not set
# CONFIG_VIDEO_IMX319 is not set
# CONFIG_VIDEO_IMX334 is not set
# CONFIG_VIDEO_IMX335 is not set
# CONFIG_VIDEO_IMX355 is not set
# CONFIG_VIDEO_IMX412 is not set
# CONFIG_VIDEO_OV02A10 is not set
# CONFIG_VIDEO_OV2640 is not set
# CONFIG_VIDEO_OV2659 is not set
@ -3082,6 +3110,7 @@ CONFIG_VIDEO_S5P_MIPI_CSIS=m
# CONFIG_VIDEO_OV7740 is not set
# CONFIG_VIDEO_OV8856 is not set
# CONFIG_VIDEO_OV8865 is not set
# CONFIG_VIDEO_OV9282 is not set
# CONFIG_VIDEO_OV9640 is not set
# CONFIG_VIDEO_OV9650 is not set
# CONFIG_VIDEO_OV13858 is not set
@ -3146,6 +3175,7 @@ CONFIG_VIDEO_S5C73M3=m
# CONFIG_IMX_IPUV3_CORE is not set
CONFIG_DRM=y
CONFIG_DRM_MIPI_DSI=y
CONFIG_DRM_DP_AUX_BUS=y
# CONFIG_DRM_DP_AUX_CHARDEV is not set
# CONFIG_DRM_DEBUG_MM is not set
# CONFIG_DRM_DEBUG_SELFTEST is not set
@ -3230,6 +3260,7 @@ CONFIG_DRM_PANEL_SIMPLE=y
# CONFIG_DRM_PANEL_FEIYANG_FY07024DI26A30D is not set
# CONFIG_DRM_PANEL_ILITEK_IL9322 is not set
# CONFIG_DRM_PANEL_ILITEK_ILI9881C is not set
# CONFIG_DRM_PANEL_INNOLUX_EJ030NA is not set
# CONFIG_DRM_PANEL_INNOLUX_P079ZCA is not set
# CONFIG_DRM_PANEL_JDI_LT070ME05000 is not set
# CONFIG_DRM_PANEL_KHADAS_TS050 is not set
@ -3252,6 +3283,8 @@ CONFIG_DRM_PANEL_SAMSUNG_LD9040=y
# CONFIG_DRM_PANEL_RAYDIUM_RM67191 is not set
# CONFIG_DRM_PANEL_RAYDIUM_RM68200 is not set
# CONFIG_DRM_PANEL_RONBO_RB070D30 is not set
# CONFIG_DRM_PANEL_SAMSUNG_ATNA33XC20 is not set
# CONFIG_DRM_PANEL_SAMSUNG_DB7430 is not set
# CONFIG_DRM_PANEL_SAMSUNG_S6D16D0 is not set
# CONFIG_DRM_PANEL_SAMSUNG_S6E3HA2 is not set
CONFIG_DRM_PANEL_SAMSUNG_S6E63J0X03=y
@ -3274,6 +3307,7 @@ CONFIG_DRM_PANEL_SAMSUNG_S6E8AA0=y
# CONFIG_DRM_PANEL_TPO_TPG110 is not set
# CONFIG_DRM_PANEL_TRULY_NT35597_WQXGA is not set
# CONFIG_DRM_PANEL_VISIONOX_RM69299 is not set
# CONFIG_DRM_PANEL_WIDECHIPS_WS2401 is not set
# CONFIG_DRM_PANEL_XINPENG_XPP055C272 is not set
# end of Display Panels
@ -3584,6 +3618,7 @@ CONFIG_SND_SOC_HDMI_CODEC=y
# CONFIG_SND_SOC_ES8328_I2C is not set
# CONFIG_SND_SOC_ES8328_SPI is not set
# CONFIG_SND_SOC_GTM601 is not set
# CONFIG_SND_SOC_ICS43432 is not set
# CONFIG_SND_SOC_INNO_RK3036 is not set
# CONFIG_SND_SOC_MAX98088 is not set
CONFIG_SND_SOC_MAX98090=y
@ -4075,9 +4110,7 @@ CONFIG_LEDS_CLASS_FLASH=y
#
# LED drivers
#
CONFIG_LEDS_AAT1290=y
# CONFIG_LEDS_AN30259A is not set
# CONFIG_LEDS_AS3645A is not set
# CONFIG_LEDS_AW2013 is not set
# CONFIG_LEDS_BCM6328 is not set
# CONFIG_LEDS_BCM6358 is not set
@ -4087,7 +4120,6 @@ CONFIG_LEDS_AAT1290=y
# CONFIG_LEDS_LM3532 is not set
# CONFIG_LEDS_LM3642 is not set
# CONFIG_LEDS_LM3692X is not set
# CONFIG_LEDS_LM3601X is not set
# CONFIG_LEDS_PCA9532 is not set
CONFIG_LEDS_GPIO=y
# CONFIG_LEDS_LP3944 is not set
@ -4104,10 +4136,8 @@ CONFIG_LEDS_PWM=y
# CONFIG_LEDS_LT3593 is not set
# CONFIG_LEDS_TCA6507 is not set
# CONFIG_LEDS_TLC591XX is not set
CONFIG_LEDS_MAX77693=y
CONFIG_LEDS_MAX8997=y
# CONFIG_LEDS_LM355x is not set
# CONFIG_LEDS_KTD2692 is not set
# CONFIG_LEDS_IS31FL319X is not set
# CONFIG_LEDS_IS31FL32XX is not set
@ -4120,13 +4150,18 @@ CONFIG_LEDS_MAX8997=y
# CONFIG_LEDS_USER is not set
# CONFIG_LEDS_SPI_BYTE is not set
# CONFIG_LEDS_TI_LMU_COMMON is not set
# CONFIG_LEDS_SGM3140 is not set
#
# Flash and Torch LED drivers
#
CONFIG_LEDS_AAT1290=y
# CONFIG_LEDS_AS3645A is not set
# CONFIG_LEDS_KTD2692 is not set
# CONFIG_LEDS_LM3601X is not set
CONFIG_LEDS_MAX77693=y
# CONFIG_LEDS_RT4505 is not set
# CONFIG_LEDS_RT8515 is not set
# CONFIG_LEDS_SGM3140 is not set
#
# LED Triggers
@ -4313,6 +4348,7 @@ CONFIG_SYNC_FILE=y
# CONFIG_DMABUF_DEBUG is not set
# CONFIG_DMABUF_SELFTESTS is not set
# CONFIG_DMABUF_HEAPS is not set
# CONFIG_DMABUF_SYSFS_STATS is not set
# end of DMABUF options
# CONFIG_AUXDISPLAY is not set
@ -4490,6 +4526,8 @@ CONFIG_IOMMU_IO_PGTABLE_LPAE=y
# end of Generic IOMMU Pagetable Support
# CONFIG_IOMMU_DEBUGFS is not set
CONFIG_IOMMU_DEFAULT_DMA_STRICT=y
# CONFIG_IOMMU_DEFAULT_DMA_LAZY is not set
# CONFIG_IOMMU_DEFAULT_PASSTHROUGH is not set
CONFIG_OF_IOMMU=y
CONFIG_EXYNOS_IOMMU=y
@ -4751,6 +4789,7 @@ CONFIG_EXYNOS_ADC=y
# CONFIG_PMS7003 is not set
# CONFIG_SCD30_CORE is not set
# CONFIG_SENSIRION_SGP30 is not set
# CONFIG_SENSIRION_SGP40 is not set
# CONFIG_SPS30_I2C is not set
# CONFIG_SPS30_SERIAL is not set
# CONFIG_VZ89X is not set
@ -4995,6 +5034,7 @@ CONFIG_AK8975=y
#
# Digital potentiometers
#
# CONFIG_AD5110 is not set
# CONFIG_AD5272 is not set
# CONFIG_DS1803 is not set
# CONFIG_MAX5432 is not set
@ -5153,6 +5193,7 @@ CONFIG_ANDROID_BINDER_DEVICES="binder,hwbinder,vndbinder"
# CONFIG_DAX is not set
CONFIG_NVMEM=y
CONFIG_NVMEM_SYSFS=y
# CONFIG_NVMEM_NINTENDO_OTP is not set
# CONFIG_NVMEM_RMEM is not set
#
@ -5201,7 +5242,6 @@ CONFIG_FS_POSIX_ACL=y
CONFIG_EXPORTFS=y
# CONFIG_EXPORTFS_BLOCK_OPS is not set
CONFIG_FILE_LOCKING=y
CONFIG_MANDATORY_FILE_LOCKING=y
# CONFIG_FS_ENCRYPTION is not set
# CONFIG_FS_VERITY is not set
CONFIG_FSNOTIFY=y
@ -5240,6 +5280,7 @@ CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
# CONFIG_FAT_DEFAULT_UTF8 is not set
# CONFIG_EXFAT_FS is not set
# CONFIG_NTFS_FS is not set
# CONFIG_NTFS3_FS is not set
# end of DOS/FAT/EXFAT/NT Filesystems
#
@ -5329,6 +5370,7 @@ CONFIG_SUNRPC_BACKCHANNEL=y
# CONFIG_SUNRPC_DEBUG is not set
# CONFIG_CEPH_FS is not set
# CONFIG_CIFS is not set
# CONFIG_SMB_SERVER is not set
# CONFIG_CODA_FS is not set
# CONFIG_AFS_FS is not set
CONFIG_NLS=y
@ -5893,7 +5935,6 @@ CONFIG_RCU_CPU_STALL_TIMEOUT=21
# end of RCU Debugging
# CONFIG_DEBUG_WQ_FORCE_RR_CPU is not set
# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set
# CONFIG_CPU_HOTPLUG_STATE_CONTROL is not set
# CONFIG_LATENCYTOP is not set
CONFIG_HAVE_FUNCTION_TRACER=y
@ -5936,7 +5977,6 @@ CONFIG_CC_HAS_SANCOV_TRACE_PC=y
CONFIG_RUNTIME_TESTING_MENU=y
# CONFIG_LKDTM is not set
# CONFIG_TEST_MIN_HEAP is not set
# CONFIG_TEST_SORT is not set
# CONFIG_TEST_DIV64 is not set
# CONFIG_BACKTRACE_SELF_TEST is not set
# CONFIG_RBTREE_TEST is not set