linux-clockworkpi-uconsole-rpi: new aport

Part-of: <https://gitlab.postmarketos.org/postmarketOS/pmaports/-/merge_requests/8898>
This commit is contained in:
Antoine Martin 2026-06-26 00:00:43 -04:00 committed by The Friendly Meow (merge) Bot
parent 46f2d0f881
commit cec81ecb31
No known key found for this signature in database
9 changed files with 14356 additions and 0 deletions

View file

@ -0,0 +1,322 @@
From 3c5a25f8a804175aa5ab31abba1cb185d2d99bfa Mon Sep 17 00:00:00 2001
From: ayakael <antoine@ayakael.net>
Date: Sun, 8 Feb 2026 09:35:55 -0500
Subject: [PATCH 2/5] video: backlight: Add OCP8178 backlight driver
---
drivers/video/backlight/Kconfig | 6 +
drivers/video/backlight/Makefile | 1 +
drivers/video/backlight/ocp8178_bl.c | 275 +++++++++++++++++++++++++++
3 files changed, 282 insertions(+)
create mode 100644 drivers/video/backlight/ocp8178_bl.c
diff --git a/drivers/video/backlight/Kconfig b/drivers/video/backlight/Kconfig
index d0951c7f375a..35a78702f5f7 100644
--- a/drivers/video/backlight/Kconfig
+++ b/drivers/video/backlight/Kconfig
@@ -497,6 +497,12 @@ config BACKLIGHT_LED
If you have a LCD backlight adjustable by LED class driver, say Y
to enable this driver.
+config BACKLIGHT_OCP8178
+ tristate "OCP8178 Backlight Driver"
+ depends on GPIOLIB
+ help
+ If you have an OCP8178, say Y to enable the backlight driver.
+
endif # BACKLIGHT_CLASS_DEVICE
endmenu
diff --git a/drivers/video/backlight/Makefile b/drivers/video/backlight/Makefile
index 631227dfc1aa..cf92b73f5c77 100644
--- a/drivers/video/backlight/Makefile
+++ b/drivers/video/backlight/Makefile
@@ -61,3 +61,4 @@ obj-$(CONFIG_BACKLIGHT_WM831X) += wm831x_bl.o
obj-$(CONFIG_BACKLIGHT_ARCXCNN) += arcxcnn_bl.o
obj-$(CONFIG_BACKLIGHT_RAVE_SP) += rave-sp-backlight.o
obj-$(CONFIG_BACKLIGHT_LED) += led_bl.o
+obj-$(CONFIG_BACKLIGHT_OCP8178) += ocp8178_bl.o
diff --git a/drivers/video/backlight/ocp8178_bl.c b/drivers/video/backlight/ocp8178_bl.c
new file mode 100644
index 000000000000..a9fb9682adbf
--- /dev/null
+++ b/drivers/video/backlight/ocp8178_bl.c
@@ -0,0 +1,275 @@
+/*
+ * ocp8178_bl.c - ocp8178 backlight driver
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ */
+
+#include <linux/backlight.h>
+#include <linux/err.h>
+#include <linux/fb.h>
+#include <linux/gpio.h> /* Only for legacy support */
+#include <linux/gpio/consumer.h>
+#include <linux/init.h>
+#include <linux/kernel.h>
+#include <linux/module.h>
+#include <linux/of.h>
+#include <linux/of_gpio.h>
+#include <linux/platform_data/gpio_backlight.h>
+#include <linux/platform_device.h>
+#include <linux/slab.h>
+#include <linux/delay.h>
+#include <linux/timer.h>
+#include <linux/poll.h>
+#include <linux/proc_fs.h>
+#include <linux/seq_file.h>
+#include <linux/sched.h>
+#include <linux/interrupt.h>
+#include <linux/irq.h>
+#include <linux/io.h>
+#include <linux/clk.h>
+
+struct ocp8178_backlight {
+ struct device *dev;
+ struct device *fbdev;
+
+ struct gpio_desc *gpiod;
+ int def_value;
+ int current_value;
+};
+
+#define DETECT_DELAY 200
+#define DETECT_TIME 500
+#define DETECT_WINDOW_TIME 1000
+#define START_TIME 10
+#define END_TIME 10
+#define SHUTDOWN_TIME 3000
+#define LOW_BIT_HIGH_TIME 10
+#define LOW_BIT_LOW_TIME 50
+#define HIGH_BIT_HIGH_TIME 50
+#define HIGH_BIT_LOW_TIME 10
+#define MAX_BRIGHTNESS_VALUE 9
+
+static void entry_1wire_mode(struct ocp8178_backlight *gbl)
+{
+ unsigned long flags = 0;
+ local_irq_save(flags);
+ gpiod_set_value(gbl->gpiod, 0);
+ mdelay(SHUTDOWN_TIME/1000);
+ gpiod_set_value(gbl->gpiod, 1);
+ udelay(DETECT_DELAY);
+ gpiod_set_value(gbl->gpiod, 0);
+ udelay(DETECT_TIME);
+ gpiod_set_value(gbl->gpiod, 1);
+ udelay(DETECT_WINDOW_TIME);
+ local_irq_restore(flags);
+}
+
+static inline void write_bit(struct ocp8178_backlight *gbl, int bit)
+{
+ if (bit) {
+ gpiod_set_value(gbl->gpiod, 0);
+ udelay(HIGH_BIT_LOW_TIME);
+ gpiod_set_value(gbl->gpiod, 1);
+ udelay(HIGH_BIT_HIGH_TIME);
+ } else {
+ gpiod_set_value(gbl->gpiod, 0);
+ udelay(LOW_BIT_LOW_TIME);
+ gpiod_set_value(gbl->gpiod, 1);
+ udelay(LOW_BIT_HIGH_TIME);
+ }
+}
+
+static void write_byte(struct ocp8178_backlight *gbl, int byte)
+{
+ unsigned long flags = 0;
+ unsigned char data = 0x72;
+ int i;
+
+ local_irq_save(flags);
+
+ gpiod_set_value(gbl->gpiod, 1);
+ udelay(START_TIME);
+ for(i = 0; i < 8; i++) {
+ if(data & 0x80) {
+ write_bit(gbl, 1);
+ } else {
+ write_bit(gbl, 0);
+ }
+ data <<= 1;
+ }
+ gpiod_set_value(gbl->gpiod, 0);
+ udelay(END_TIME);
+
+ data = byte & 0x1f;
+
+ gpiod_set_value(gbl->gpiod, 1);
+ udelay(START_TIME);
+ for(i = 0; i < 8; i++) {
+ if(data & 0x80) {
+ write_bit(gbl, 1);
+ } else {
+ write_bit(gbl, 0);
+ }
+ data <<= 1;
+ }
+ gpiod_set_value(gbl->gpiod, 0);
+ udelay(END_TIME);
+ gpiod_set_value(gbl->gpiod, 1);
+
+ local_irq_restore(flags);
+}
+
+unsigned char ocp8178_bl_table[MAX_BRIGHTNESS_VALUE+1] = {0, 1, 4, 8, 12, 16, 20, 24, 28, 31};
+
+static int ocp8178_update_status(struct backlight_device *bl)
+{
+ struct ocp8178_backlight *gbl = bl_get_data(bl);
+ int brightness = bl->props.brightness, i;
+
+ if (bl->props.power != FB_BLANK_UNBLANK ||
+ bl->props.state & (BL_CORE_SUSPENDED | BL_CORE_FBBLANK))
+ brightness = 0;
+
+ if(brightness > MAX_BRIGHTNESS_VALUE)
+ brightness = MAX_BRIGHTNESS_VALUE;
+
+ for(i = 0; i < 2; i++) {
+ entry_1wire_mode(gbl);
+ write_byte(gbl, ocp8178_bl_table[brightness]);
+ }
+ gbl->current_value = brightness;
+
+ return 0;
+}
+
+static int ocp8178_get_brightness(struct backlight_device *bl)
+{
+ struct ocp8178_backlight *gbl = bl_get_data(bl);
+ return gbl->current_value;
+}
+
+static bool ocp8178_controls_device(struct backlight_device *bl, struct device *display_dev)
+{
+ struct ocp8178_backlight *gbl = bl_get_data(bl);
+ return !gbl->fbdev || gbl->fbdev == display_dev;
+}
+
+static const struct backlight_ops ocp8178_backlight_ops = {
+ .options = BL_CORE_SUSPENDRESUME,
+ .update_status = ocp8178_update_status,
+ .get_brightness = ocp8178_get_brightness,
+ .controls_device = ocp8178_controls_device,
+};
+
+static int ocp8178_probe_dt(struct platform_device *pdev,
+ struct ocp8178_backlight *gbl)
+{
+ struct device *dev = &pdev->dev;
+ struct device_node *np = dev->of_node;
+ enum gpiod_flags flags;
+ int ret = 0;
+ u32 value32;
+
+ of_property_read_u32(np, "default-brightness", &value32);
+ if(value32 > MAX_BRIGHTNESS_VALUE)
+ gbl->def_value = MAX_BRIGHTNESS_VALUE;
+ else
+ gbl->def_value = value32;
+ flags = gbl->def_value ? GPIOD_OUT_HIGH : GPIOD_OUT_LOW;
+
+ gbl->gpiod = devm_gpiod_get(dev, "backlight-control", flags);
+ if (IS_ERR(gbl->gpiod)) {
+ ret = PTR_ERR(gbl->gpiod);
+
+ if (ret != -EPROBE_DEFER) {
+ dev_err(dev,
+ "Error: The gpios parameter is missing or invalid.\n");
+ }
+ }
+
+ return ret;
+}
+
+static struct backlight_device *backlight;
+
+static int ocp8178_probe(struct platform_device *pdev)
+{
+ struct backlight_properties props;
+ struct backlight_device *bl;
+ struct ocp8178_backlight *gbl;
+ struct device_node *np = pdev->dev.of_node;
+ int ret;
+
+ if ( !np) {
+ dev_err(&pdev->dev,
+ "failed to find platform data or device tree node.\n");
+ return -ENODEV;
+ }
+
+ gbl = devm_kzalloc(&pdev->dev, sizeof(*gbl), GFP_KERNEL);
+ if (gbl == NULL)
+ return -ENOMEM;
+
+ gbl->dev = &pdev->dev;
+
+ ret = ocp8178_probe_dt(pdev, gbl);
+ if (ret)
+ return ret;
+
+ gbl->current_value = gbl->def_value;
+
+ memset(&props, 0, sizeof(props));
+ props.type = BACKLIGHT_RAW;
+ props.max_brightness = MAX_BRIGHTNESS_VALUE;
+ bl = devm_backlight_device_register(&pdev->dev, dev_name(&pdev->dev),
+ &pdev->dev, gbl, &ocp8178_backlight_ops,
+ &props);
+ if (IS_ERR(bl)) {
+ dev_err(&pdev->dev, "failed to register backlight\n");
+ return PTR_ERR(bl);
+ }
+
+// entry_1wire_mode(gbl);
+
+ bl->props.brightness = gbl->def_value;
+ backlight_update_status(bl);
+
+ platform_set_drvdata(pdev, bl);
+
+ backlight = bl;
+ return 0;
+}
+
+static int ocp8178_suspend(struct platform_device *pdev, pm_message_t state)
+{
+ return 0;
+}
+
+static int ocp8178_resume(struct platform_device *pdev)
+{
+ return 0;
+}
+
+static struct of_device_id ocp8178_of_match[] = {
+ { .compatible = "ocp8178-backlight" },
+ { /* sentinel */ }
+};
+
+MODULE_DEVICE_TABLE(of, ocp8178_of_match);
+
+static struct platform_driver ocp8178_driver = {
+ .driver = {
+ .name = "ocp8178-backlight",
+ .of_match_table = of_match_ptr(ocp8178_of_match),
+ },
+ .probe = ocp8178_probe,
+ .suspend = ocp8178_suspend,
+ .resume = ocp8178_resume,
+};
+
+module_platform_driver(ocp8178_driver);
+
+MODULE_DESCRIPTION("OCP8178 Driver");
+MODULE_LICENSE("GPL");
--
2.54.0

View file

@ -0,0 +1,64 @@
From 9d06c333c8a4057f4e0164900421b71005240e75 Mon Sep 17 00:00:00 2001
From: ayakael <antoine@ayakael.net>
Date: Sun, 8 Feb 2026 09:36:28 -0500
Subject: [PATCH 3/5] arch: configs: update defconfig for uconsole
---
arch/arm64/configs/bcm2711_defconfig | 16 ++++++++++++++++
arch/arm64/configs/bcm2712_defconfig | 15 +++++++++++++++
2 files changed, 31 insertions(+)
diff --git a/arch/arm64/configs/bcm2711_defconfig b/arch/arm64/configs/bcm2711_defconfig
index 65d1c6a10a7a..498738ed77c3 100644
--- a/arch/arm64/configs/bcm2711_defconfig
+++ b/arch/arm64/configs/bcm2711_defconfig
@@ -1776,5 +1776,21 @@ CONFIG_STACK_TRACER=y
CONFIG_SCHED_TRACER=y
CONFIG_FTRACE_SYSCALLS=y
CONFIG_BLK_DEV_IO_TRACE=y
+CONFIG_REGMAP_I2C=y
+CONFIG_INPUT_AXP20X_PEK=y
+CONFIG_CHARGER_AXP20X=m
+CONFIG_BATTERY_AXP20X=m
+CONFIG_AXP20X_POWER=m
+CONFIG_MFD_AXP20X=y
+CONFIG_MFD_AXP20X_I2C=y
+CONFIG_REGULATOR_AXP20X=y
+CONFIG_DRM_PANEL_CWD686=m
+CONFIG_DRM_PANEL_CWD686_CM3=m
+CONFIG_DRM_PANEL_CWU50=m
+CONFIG_BACKLIGHT_OCP8178=m
+CONFIG_AXP20X_ADC=m
+CONFIG_TI_ADC081C=m
+CONFIG_CRYPTO_LIB_ARC4=y
+CONFIG_CRC_CCITT=y
# CONFIG_UPROBE_EVENTS is not set
# CONFIG_STRICT_DEVMEM is not set
diff --git a/arch/arm64/configs/bcm2712_defconfig b/arch/arm64/configs/bcm2712_defconfig
index 6e561d41c3f1..b29f0a3ecc06 100644
--- a/arch/arm64/configs/bcm2712_defconfig
+++ b/arch/arm64/configs/bcm2712_defconfig
@@ -1778,5 +1778,20 @@ CONFIG_STACK_TRACER=y
CONFIG_SCHED_TRACER=y
CONFIG_FTRACE_SYSCALLS=y
CONFIG_BLK_DEV_IO_TRACE=y
+CONFIG_REGMAP_I2C=y
+CONFIG_INPUT_AXP20X_PEK=y
+CONFIG_CHARGER_AXP20X=m
+CONFIG_BATTERY_AXP20X=m
+CONFIG_AXP20X_POWER=m
+CONFIG_MFD_AXP20X=y
+CONFIG_MFD_AXP20X_I2C=y
+CONFIG_REGULATOR_AXP20X=y
+CONFIG_DRM_PANEL_CWD686=m
+CONFIG_DRM_PANEL_CWU50=m
+CONFIG_BACKLIGHT_OCP8178=m
+CONFIG_AXP20X_ADC=m
+CONFIG_TI_ADC081C=m
+CONFIG_CRYPTO_LIB_ARC4=y
+CONFIG_CRC_CCITT=y
# CONFIG_UPROBE_EVENTS is not set
# CONFIG_STRICT_DEVMEM is not set
--
2.54.0

View file

@ -0,0 +1,230 @@
From 6df6b1a9cf607d3cfbff29eccbff9b2aa4a24eaf Mon Sep 17 00:00:00 2001
From: ayakael <antoine@ayakael.net>
Date: Sun, 8 Feb 2026 12:19:50 -0500
Subject: [PATCH 5/5] power: axp20x_battery: implement calibration
---
drivers/power/supply/axp20x_ac_power.c | 3 +
drivers/power/supply/axp20x_battery.c | 136 +++++++++++++++++++++----
2 files changed, 118 insertions(+), 21 deletions(-)
diff --git a/drivers/power/supply/axp20x_ac_power.c b/drivers/power/supply/axp20x_ac_power.c
index e5733cb9e19e..5be12e696fba 100644
--- a/drivers/power/supply/axp20x_ac_power.c
+++ b/drivers/power/supply/axp20x_ac_power.c
@@ -52,6 +52,9 @@ static irqreturn_t axp20x_ac_power_irq(int irq, void *devid)
{
struct axp20x_ac_power *power = devid;
+ regmap_update_bits(power->regmap, AXP20X_VBUS_IPSOUT_MGMT, 0x03, 0x00);
+ regmap_update_bits(power->regmap, AXP20X_VBUS_IPSOUT_MGMT, 0x03, 0x03);
+
power_supply_changed(power->supply);
return IRQ_HANDLED;
diff --git a/./drivers/power/supply/axp20x_battery.c.orig b/./drivers/power/supply/axp20x_battery.c
index 50ca8e1..2506160 100644
--- a/./drivers/power/supply/axp20x_battery.c.orig
+++ b/./drivers/power/supply/axp20x_battery.c
@@ -81,6 +81,10 @@
#define AXP20X_V_OFF_MASK GENMASK(2, 0)
#define AXP717_V_OFF_MASK GENMASK(6, 4)
+#define AXP228_FULL_CAPACITY_CALIBRATE_EN BIT(5)
+#define AXP228_CAPACITY_CALIBRATE BIT(4)
+#define AXP228_CALIBRATE_MASK (BIT(4) | BIT(5))
+
#define AXP717_BAT_VMIN_MIN_UV 2600000
#define AXP717_BAT_VMIN_MAX_UV 3300000
#define AXP717_BAT_VMIN_STEP 100000
@@ -118,8 +122,10 @@ struct axp20x_batt_ps {
struct iio_channel *batt_v;
/* Maximum constant charge current */
unsigned int max_ccc;
- const struct axp_data *data;
- bool ts_disable;
+ int energy_full_design;
+ int current_now;
+ int voltage_now;
+ const struct axp_data *data;
};
static int axp20x_battery_get_max_voltage(struct axp20x_batt_ps *axp20x_batt,
@@ -418,6 +424,61 @@ static int axp20x_battery_get_prop(struct power_supply *psy,
break;
+ case POWER_SUPPLY_PROP_ENERGY_FULL:
+ case POWER_SUPPLY_PROP_ENERGY_NOW:
+ case POWER_SUPPLY_PROP_ENERGY_FULL_DESIGN:
+ /* When no battery is present, return 0 */
+ ret = regmap_read(axp20x_batt->regmap, AXP20X_PWR_OP_MODE,
+ &reg);
+ if (ret)
+ return ret;
+
+ if (!(reg & AXP20X_PWR_OP_BATT_PRESENT)) {
+ val->intval = 0;
+ return 0;
+ }
+
+ if (psp == POWER_SUPPLY_PROP_ENERGY_FULL) {
+ // TODO
+ val->intval = axp20x_batt->energy_full_design;
+ return 0;
+ }
+
+ if (psp == POWER_SUPPLY_PROP_ENERGY_FULL_DESIGN) {
+ val->intval = axp20x_batt->energy_full_design;
+ return 0;
+ }
+
+ ret = regmap_read(axp20x_batt->regmap, AXP20X_FG_RES, &reg);
+ if (ret)
+ return ret;
+
+ if (axp20x_batt->data->has_fg_valid && !(reg & AXP22X_FG_VALID))
+ return -EINVAL;
+
+ val1 = reg & AXP209_FG_PERCENT;
+ val1 = max(min(val1, 100), 0);
+ val->intval =
+ (val1 *
+ ((long long int)axp20x_batt->energy_full_design)) /
+ 100;
+ break;
+
+ case POWER_SUPPLY_PROP_CALIBRATE:
+ // report both calibrate enable flag and calibration status
+ ret = regmap_read(axp20x_batt->regmap, AXP20X_CC_CTRL, &reg);
+ if (ret)
+ return ret;
+ val1 = reg & AXP228_CALIBRATE_MASK;
+ val->intval = val1;
+ break;
+
+ case POWER_SUPPLY_PROP_POWER_NOW:
+ val->intval = (axp20x_batt->voltage_now / 10000) *
+ axp20x_batt->current_now;
+ val->intval = val->intval / 100; // uW
+ break;
+
default:
return -EINVAL;
}
@@ -771,6 +832,7 @@ static int axp20x_battery_set_prop(struct power_supply *psy,
const union power_supply_propval *val)
{
struct axp20x_batt_ps *axp20x_batt = power_supply_get_drvdata(psy);
+ int val1;
switch (psp) {
case POWER_SUPPLY_PROP_VOLTAGE_MIN:
@@ -779,6 +841,17 @@ static int axp20x_battery_set_prop(struct power_supply *psy,
case POWER_SUPPLY_PROP_VOLTAGE_MAX:
return axp20x_batt->data->set_max_voltage(axp20x_batt, val->intval);
+ case POWER_SUPPLY_PROP_CALIBRATE:
+ if (val->intval) {
+ // enable calibrate
+ val1 = AXP228_FULL_CAPACITY_CALIBRATE_EN |
+ AXP228_CAPACITY_CALIBRATE;
+ } else {
+ // disable calibrate
+ val1 = 0;
+ }
+ return regmap_update_bits(axp20x_batt->regmap, AXP20X_CC_CTRL,
+ AXP228_CALIBRATE_MASK, val1);
case POWER_SUPPLY_PROP_CONSTANT_CHARGE_CURRENT:
return axp20x_set_constant_charge_current(axp20x_batt,
val->intval);
@@ -850,6 +923,11 @@ static enum power_supply_property axp20x_battery_props[] = {
POWER_SUPPLY_PROP_VOLTAGE_MAX,
POWER_SUPPLY_PROP_VOLTAGE_MIN,
POWER_SUPPLY_PROP_CAPACITY,
+ POWER_SUPPLY_PROP_ENERGY_FULL,
+ POWER_SUPPLY_PROP_ENERGY_NOW,
+ POWER_SUPPLY_PROP_ENERGY_FULL_DESIGN,
+ POWER_SUPPLY_PROP_CALIBRATE,
+ POWER_SUPPLY_PROP_POWER_NOW,
};
static enum power_supply_property axp717_battery_props[] = {
@@ -873,7 +951,8 @@ static int axp20x_battery_prop_writeable(struct power_supply *psy,
psp == POWER_SUPPLY_PROP_VOLTAGE_MIN ||
psp == POWER_SUPPLY_PROP_VOLTAGE_MAX ||
psp == POWER_SUPPLY_PROP_CONSTANT_CHARGE_CURRENT ||
- psp == POWER_SUPPLY_PROP_CONSTANT_CHARGE_CURRENT_MAX;
+ psp == POWER_SUPPLY_PROP_CONSTANT_CHARGE_CURRENT_MAX ||
+ psp == POWER_SUPPLY_PROP_CALIBRATE;
}
static int axp717_battery_prop_writeable(struct power_supply *psy,
@@ -987,24 +1066,6 @@ static void axp717_set_battery_info(struct platform_device *pdev,
int ccc = info->constant_charge_current_max_ua;
int val;
- axp_batt->ts_disable = (device_property_read_bool(axp_batt->dev,
- "x-powers,no-thermistor"));
-
- /*
- * Under rare conditions an incorrectly programmed efuse for
- * the temp sensor on the PMIC may trigger a fault condition.
- * Allow users to hard-code if the ts pin is not used to work
- * around this problem. Note that this requires the battery
- * be correctly defined in the device tree with a monitored
- * battery node.
- */
- if (axp_batt->ts_disable) {
- regmap_update_bits(axp_batt->regmap,
- AXP717_TS_PIN_CFG,
- AXP717_TS_PIN_DISABLE,
- AXP717_TS_PIN_DISABLE);
- }
-
if (vmin > 0 && axp717_set_voltage_min_design(axp_batt, vmin))
dev_err(&pdev->dev,
"couldn't set voltage_min_design\n");
@@ -1131,6 +1192,29 @@ static int axp20x_power_probe(struct platform_device *pdev)
if (!power_supply_get_battery_info(axp20x_batt->batt, &info)) {
axp20x_batt->data->set_bat_info(pdev, axp20x_batt, info);
power_supply_put_battery_info(axp20x_batt->batt, info);
+ axp20x_batt->energy_full_design = info->energy_full_design_uwh;
+
+ int cfd = info->charge_full_design_uah;
+
+ // tell pmic about our battery
+ if (cfd) {
+ // [14:8], [7:0], cfd = Value * 1.456mAh
+ cfd = cfd / 1456;
+ regmap_update_bits(axp20x_batt->regmap,
+ AXP288_FG_DES_CAP0_REG, 0xff,
+ cfd & 0xff);
+ regmap_update_bits(axp20x_batt->regmap,
+ AXP288_FG_DES_CAP1_REG, 0xff,
+ BIT(7) | ((cfd >> 8) & 0xff));
+ } else {
+ dev_warn(axp20x_batt->dev,
+ "charge full design is not set");
+ }
+ } else {
+ axp20x_batt->energy_full_design = 8000000;
+ dev_warn(axp20x_batt->dev,
+ "energy full design is not set, default to %d\n",
+ axp20x_batt->energy_full_design);
}
/*
@@ -1139,6 +1223,12 @@ static int axp20x_power_probe(struct platform_device *pdev)
*/
axp20x_get_constant_charge_current(axp20x_batt, &axp20x_batt->max_ccc);
+ regmap_update_bits(axp20x_batt->regmap, AXP20X_VBUS_IPSOUT_MGMT, 0x03, 0x03);
+ regmap_update_bits(axp20x_batt->regmap, AXP20X_OFF_CTRL, 0x08, 0x08);
+ regmap_update_bits(axp20x_batt->regmap, AXP20X_CHRG_CTRL2, 0x30, 0x20);
+ regmap_update_bits(axp20x_batt->regmap, AXP20X_PEK_KEY, 0x0f, 0x0b);
+ regmap_update_bits(axp20x_batt->regmap, AXP20X_GPIO0_CTRL, 0x07, 0x00);
+
return 0;
}

View file

@ -0,0 +1,114 @@
maintainer="Antoine Martin (ayakael) <dev@ayakael.net>"
pkgname=linux-clockworkpi-uconsole-rpi
pkgver=6.18.35
_kernver=${pkgver%.*}
pkgrel=0
pkgdesc="Downstream kernel for raspberrypi devices with uConsole patches"
arch="aarch64"
_carch="arm64"
_flavor="${pkgname#linux-}"
url="https://kernel.org"
license="GPL-2.0-only"
options="
!check
!strip
!tracedeps
pmb:cross-native
pmb:kconfigcheck-community
pmb:kconfigcheck-nftables
"
makedepends="
bison
clang
findutils
flex
elfutils-dev
linux-headers
lld
llvm
openssl-dev
pahole
perl
postmarketos-installkernel
python3
zstd
"
replaces="linux-rpi"
# Source
_defconfig=bcm2712_defconfig
_config="config-$_flavor.$arch"
# get patch releases
if [ "${pkgver/*.}" -ne 0 ]; then
source="$pkgname-$pkgver.patch.xz::https://cdn.kernel.org/pub/linux/kernel/v${pkgver%%.*}.x/patch-$pkgver.xz"
fi
source="
$source
https://cdn.kernel.org/pub/linux/kernel/v${pkgver%%.*}.x/linux-$_kernver.tar.xz
https://dev.alpinelinux.org/archive/rpi-patches/rpi-$pkgver-alpine.patch
0001-drm-panel-add-clockwork-cwu50.patch
0002-video-backlight-Add-OCP8178-backlight-driver.patch
0003-arch-configs-update-defconfig-for-uconsole.patch
0004-arch-overlays-add-uconsole-overlays.patch
0005-power-axp20x_battery-implement-calibration.patch
$_config
"
builddir="$srcdir"/linux-$_kernver
prepare() {
default_prepare
cp "$srcdir"/$_config .config
}
build() {
unset LDFLAGS
make ARCH="$_carch" LLVM=1 \
KBUILD_BUILD_VERSION="$((pkgrel + 1 ))-$_flavor"
}
package() {
mkdir -p "$pkgdir"/boot
if [ -e "$builddir/arch/$_carch/boot/vmlinuz.efi" ]; then
# ZBOOT EFI decompressor for EFI booting
install -Dm644 "$builddir/arch/$_carch/boot/vmlinuz.efi" \
"$pkgdir/boot/linux.efi"
# Old GZIP'd kernel image for boot.img/crOS compatibility
install -Dm644 "$builddir/arch/$_carch/boot/vmlinuz" \
"$pkgdir/boot/vmlinuz"
else
echo "WARNING: CONFIG_EFI_ZBOOT not enabled!"
install -Dm644 "$builddir/arch/$_carch/boot/Image.gz" \
"$pkgdir/boot/vmlinuz"
fi
make modules_install dtbs_install \
ARCH="$_carch" \
LLVM=1 \
INSTALL_DTBS_PATH="$pkgdir"/boot \
INSTALL_MOD_PATH="$pkgdir"/usr \
INSTALL_MOD_STRIP=1 \
INSTALL_PATH="$pkgdir"/boot/
rm -f "$pkgdir"/usr/lib/modules/*/build "$pkgdir"/usr/lib/modules/*/source
install -D "$builddir"/include/config/kernel.release \
"$pkgdir"/usr/share/kernel/$_flavor/kernel.release
# rpi boot expects dtbs to be root of boot partition
mv -f "$pkgdir"/boot/broadcom/*.dtb \
"$pkgdir"/boot
rmdir "$pkgdir"/boot/broadcom
}
sha512sums="
e6ee5f39ac4205da637f1bce67eb96b59726a15ef3579ae3850ef73ecfbf6d24d4f622b3e74b04fd119f87cd8864152eba74a14fc753f716fec91f5e91015e96 linux-clockworkpi-uconsole-rpi-6.18.35.patch.xz
88599ffdec96d150c1feb9b261ba93bb0301a9d0e1ad6bef7aeab1f5372cbfc57d8b43c7e902bd8f76921d1dbd8189663c142ea869e51d0e2b483b150ee00fe0 linux-6.18.tar.xz
54dfa909c720a24fca6a0a20a414e77e291ef3e1e8a22f90e8326ed474bc526c098f7c31ec96a25000cbe3cb7442f0fdf353564678a225e90096b3f1c3be0e3d rpi-6.18.35-alpine.patch
689afe10d9247581a529a74481fb0c1352b25c68857b0a6b127330a5324f878bff0b7690c705a31eeeb45c39fef4e0fbd6642272f0dca73a8673713089c2a1c7 0001-drm-panel-add-clockwork-cwu50.patch
79197b33f8d8bd0112d4c05859be871b4609ef706dd7597c42c55e54ce168a5a59cc6fd838a0554b02030324a126adbd379c33c8deb8ac0dff8014d05f22731e 0002-video-backlight-Add-OCP8178-backlight-driver.patch
311b403c071420057ef9d0a23b22641913c8d6915447cfe451fec5bd64bdb6574ba9713e286123f70c1b4484f08c0ce909cd8abc77204741390a4d652fd9fa8e 0003-arch-configs-update-defconfig-for-uconsole.patch
6cfa41639245564fd70cfa85b0da2d609c91f66fb513e9aee3d66ab124e0394b6f33ef263fa21f1d215140f5f6c7dd4a5e05ee7cc36348c565c7d05cbfcbcd77 0004-arch-overlays-add-uconsole-overlays.patch
68b07d9d83074f1af13f1a8c86cb677333d7d9a2f26f47df6990d71d96ce49f53135425874fe2375b934d631ed9d8b7e754c5342d4387ae37f6572649b3b1e5f 0005-power-axp20x_battery-implement-calibration.patch
2def8d2457020842ff6fd22155b2e7be569d9c429e60066ec84db6336001a10b3ccd18bfa4a9622a25f9af5e9b6d5805e5448ee67226e525f928120a84e55112 config-clockworkpi-uconsole-rpi.aarch64
"

View file

@ -0,0 +1,499 @@
# default
# CONFIG_ANDROID_PARANOID_NETWORK is not set
CONFIG_BINFMT_ELF=y
CONFIG_BLK_DEV_INITRD=y
CONFIG_CGROUPS=y
CONFIG_CRYPTO_AES=y
CONFIG_CRYPTO_CBC=y
CONFIG_CRYPTO_XTS=y
CONFIG_DEVTMPFS=y
CONFIG_DM_CRYPT=y
CONFIG_FB=y
CONFIG_INPUT_EVDEV=m
# CONFIG_KINETO_GAN is not set
CONFIG_NLS_ASCII=y
# CONFIG_PFT is not set
# CONFIG_SEC_RESTRICT_ROOTING is not set
CONFIG_SYN_COOKIES=y
CONFIG_SYSVIPC=y
CONFIG_TMPFS_POSIX_ACL=y
# CONFIG_USE_VFB is not set
CONFIG_VFAT_FS=y
CONFIG_VT=y
CONFIG_DRM_FBDEV_EMULATION=y
CONFIG_BINFMT_SCRIPT=y
CONFIG_UEVENT_HELPER=y
CONFIG_USER_NS=y
CONFIG_NULL_TTY=m
CONFIG_MODULE_COMPRESS=y
CONFIG_MODULE_COMPRESS_ZSTD=y
CONFIG_MODULE_DECOMPRESS=y
CONFIG_FW_LOADER_COMPRESS=y
CONFIG_FW_LOADER_COMPRESS_ZSTD=y
CONFIG_PSI=y
# CONFIG_PSI_DEFAULT_DISABLED is not set
CONFIG_UDMABUF=y
CONFIG_BPF=y
CONFIG_BPF_JIT=y
CONFIG_BPF_LSM=y
CONFIG_DEBUG_INFO_BTF=y
CONFIG_DEBUG_INFO_BTF_MODULES=y
CONFIG_DEBUG_INFO_DWARF5=y
# CONFIG_DEBUG_INFO_REDUCED is not set
CONFIG_IPC_NS=y
CONFIG_KPROBES=y
CONFIG_KPROBE_EVENTS=y
CONFIG_NET_NS=y
CONFIG_PID_NS=y
CONFIG_SECURITY=y
CONFIG_SECURITYFS=y
CONFIG_SECURITY_PATH=y
CONFIG_USER_NS=y
CONFIG_UTS_NS=y
# netmount
CONFIG_CACHEFILES=m
CONFIG_CRYPTO_CAMELLIA=m
CONFIG_CRYPTO_CMAC=m
CONFIG_CRYPTO_CTS=y
CONFIG_CRYPTO_HMAC=y
CONFIG_CRYPTO_SHA256=y
CONFIG_CRYPTO_SHA512=y
CONFIG_FSCACHE=y
CONFIG_NFSD=m
CONFIG_NFSD_BLOCKLAYOUT=y
CONFIG_NFSD_PNFS=y
CONFIG_NFSD_SCSILAYOUT=y
CONFIG_NFSD_V3_ACL=y
CONFIG_NFSD_V4=y
CONFIG_NFSD_V4_2_INTER_SSC=y
CONFIG_NFS_FS=m
CONFIG_NFS_FSCACHE=y
CONFIG_NFS_V3=m
CONFIG_NFS_V4=m
CONFIG_NFS_V4_2=y
CONFIG_RPCSEC_GSS_KRB5=m
CONFIG_CRYPTO_AES_ARM64_CE_BLK=y
CONFIG_CRYPTO_KRB5=m
CONFIG_RPCSEC_GSS_KRB5_ENCTYPES_AES_SHA1=y
CONFIG_RPCSEC_GSS_KRB5_ENCTYPES_AES_SHA2=y
CONFIG_RPCSEC_GSS_KRB5_ENCTYPES_CAMELLIA=y
CONFIG_CRYPTO_AES_TI=m
CONFIG_NFS_V4_1=y
# accessibility
CONFIG_A11Y_BRAILLE_CONSOLE=y
CONFIG_ACCESSIBILITY=y
CONFIG_SPEAKUP=m
CONFIG_SPEAKUP_SYNTH_ACNTSA=m
CONFIG_SPEAKUP_SYNTH_APOLLO=m
CONFIG_SPEAKUP_SYNTH_AUDPTR=m
CONFIG_SPEAKUP_SYNTH_BNS=m
CONFIG_SPEAKUP_SYNTH_DECEXT=m
CONFIG_SPEAKUP_SYNTH_DECTLK=m
CONFIG_SPEAKUP_SYNTH_LTLK=m
CONFIG_SPEAKUP_SYNTH_SOFT=m
CONFIG_SPEAKUP_SYNTH_SPKOUT=m
CONFIG_SPEAKUP_SYNTH_TXPRT=m
# waydroid
# CONFIG_ANDROID_BINDERFS is not set
CONFIG_ANDROID_BINDER_DEVICES="binder,hwbinder,vndbinder"
CONFIG_ANDROID_BINDER_IPC=y
# CONFIG_ANDROID_BINDER_IPC_SELFTEST is not set
CONFIG_BLK_DEV_LOOP=y
CONFIG_BPF_SYSCALL=y
CONFIG_BRIDGE=m
CONFIG_BRIDGE_VLAN_FILTERING=y
CONFIG_CGROUP_BPF=y
CONFIG_CROSS_MEMORY_ATTACH=y
CONFIG_FUSE_FS=m
CONFIG_IP_NF_MANGLE=m
CONFIG_NETFILTER_XTABLES=m
CONFIG_NETFILTER_XT_MATCH_COMMENT=m
CONFIG_SQUASHFS=m
CONFIG_SQUASHFS_XATTR=y
CONFIG_SQUASHFS_XZ=y
CONFIG_TMPFS_XATTR=y
CONFIG_TUN=m
CONFIG_VETH=m
CONFIG_VLAN_8021Q=m
CONFIG_IP_NF_IPTABLES_LEGACY=m
CONFIG_NETFILTER_XTABLES_LEGACY=y
# iwd
CONFIG_ASYMMETRIC_KEY_TYPE=y
CONFIG_ASYMMETRIC_PUBLIC_KEY_SUBTYPE=y
CONFIG_CRYPTO_CMAC=m
CONFIG_CRYPTO_DES=m
CONFIG_CRYPTO_ECB=y
CONFIG_CRYPTO_HMAC=y
CONFIG_CRYPTO_MD4=m
CONFIG_CRYPTO_MD5=y
CONFIG_CRYPTO_SHA1=y
CONFIG_CRYPTO_SHA256=y
CONFIG_CRYPTO_SHA512=y
CONFIG_CRYPTO_USER_API_HASH=m
CONFIG_CRYPTO_USER_API_SKCIPHER=m
CONFIG_KEYS=y
CONFIG_KEY_DH_OPERATIONS=y
CONFIG_PKCS7_MESSAGE_PARSER=y
CONFIG_PKCS8_PRIVATE_KEY_PARSER=m
CONFIG_RFKILL=m
CONFIG_X509_CERTIFICATE_PARSER=y
# nftables
CONFIG_IP6_NF_FILTER=m
CONFIG_IP6_NF_IPTABLES=m
CONFIG_IP6_NF_NAT=m
CONFIG_IP6_NF_TARGET_REJECT=m
CONFIG_IP_NF_FILTER=m
CONFIG_IP_NF_IPTABLES=m
CONFIG_IP_NF_NAT=m
CONFIG_IP_NF_TARGET_REJECT=m
CONFIG_NETFILTER=y
CONFIG_NFT_CT=m
CONFIG_NFT_LIMIT=m
CONFIG_NFT_LOG=m
CONFIG_NFT_MASQ=m
CONFIG_NFT_NAT=m
CONFIG_NFT_REJECT=m
CONFIG_NF_CONNTRACK=m
CONFIG_NF_REJECT_IPV4=m
CONFIG_NF_REJECT_IPV6=m
CONFIG_NF_TABLES=m
CONFIG_NF_TABLES_INET=y
CONFIG_NF_TABLES_IPV4=y
CONFIG_NF_TABLES_IPV6=y
CONFIG_IP6_NF_IPTABLES_LEGACY=m
CONFIG_IP_NF_IPTABLES_LEGACY=m
CONFIG_NETFILTER_XTABLES_LEGACY=y
# containers
CONFIG_BLK_CGROUP=y
CONFIG_BLK_DEV_DM=y
CONFIG_BLK_DEV_THROTTLING=y
CONFIG_BRIDGE=m
CONFIG_BRIDGE_NETFILTER=m
CONFIG_BRIDGE_VLAN_FILTERING=y
CONFIG_CFS_BANDWIDTH=y
CONFIG_CGROUP_BPF=y
CONFIG_CGROUP_CPUACCT=y
CONFIG_CGROUP_DEVICE=y
CONFIG_CGROUP_FREEZER=y
CONFIG_CGROUP_NET_PRIO=y
CONFIG_CGROUP_PERF=y
CONFIG_CGROUP_PIDS=y
CONFIG_CGROUP_SCHED=y
CONFIG_CHECKPOINT_RESTORE=y
CONFIG_CPUSETS=y
CONFIG_DM_THIN_PROVISIONING=m
CONFIG_DUMMY=m
CONFIG_EXT4_FS_POSIX_ACL=y
CONFIG_EXT4_FS_SECURITY=y
CONFIG_FAIR_GROUP_SCHED=y
CONFIG_IP6_NF_MANGLE=m
CONFIG_IP6_NF_NAT=m
CONFIG_IP6_NF_RAW=m
CONFIG_IP6_NF_TARGET_MASQUERADE=m
CONFIG_IPC_NS=y
CONFIG_IPVLAN=m
CONFIG_IP_NF_FILTER=m
CONFIG_IP_NF_MANGLE=m
CONFIG_IP_NF_NAT=m
CONFIG_IP_NF_RAW=m
CONFIG_IP_NF_TARGET_MASQUERADE=m
CONFIG_IP_NF_TARGET_REDIRECT=m
CONFIG_IP_VS=m
CONFIG_IP_VS_NFCT=y
CONFIG_IP_VS_PROTO_TCP=y
CONFIG_IP_VS_PROTO_UDP=y
CONFIG_IP_VS_RR=m
CONFIG_KEYS=y
CONFIG_MACVLAN=m
CONFIG_MD=y
CONFIG_MEMCG=y
CONFIG_NAMESPACES=y
CONFIG_NETFILTER_XT_MARK=m
CONFIG_NETFILTER_XT_MATCH_ADDRTYPE=m
CONFIG_NETFILTER_XT_MATCH_CONNTRACK=m
CONFIG_NETFILTER_XT_MATCH_IPVS=m
CONFIG_NETFILTER_XT_TARGET_CHECKSUM=m
CONFIG_NET_CLS_CGROUP=m
CONFIG_NET_NS=y
CONFIG_NET_SCHED=y
CONFIG_NFT_COMPAT=m
CONFIG_NFT_CT=m
CONFIG_NFT_FIB=m
CONFIG_NFT_FIB_IPV4=m
CONFIG_NFT_FIB_IPV6=m
CONFIG_NFT_MASQ=m
CONFIG_NFT_NAT=m
CONFIG_NF_NAT=m
CONFIG_NF_TABLES=m
CONFIG_OVERLAY_FS=m
CONFIG_PID_NS=y
CONFIG_POSIX_MQUEUE=y
CONFIG_SECCOMP=y
CONFIG_SWAP=y
CONFIG_UTS_NS=y
CONFIG_VETH=m
CONFIG_VXLAN=m
CONFIG_IP6_NF_FILTER=m
# zram
CONFIG_SWAP=y
CONFIG_ZRAM=y
CONFIG_ZSMALLOC=y
CONFIG_ZRAM_BACKEND_842=y
CONFIG_ZRAM_BACKEND_DEFLATE=y
CONFIG_ZRAM_BACKEND_LZ4=y
CONFIG_ZRAM_BACKEND_LZ4HC=y
CONFIG_ZRAM_BACKEND_LZO=y
CONFIG_ZRAM_BACKEND_ZSTD=y
# netboot
CONFIG_BLK_DEV_NBD=m
CONFIG_BLK_DEV_UBLK=m
# wireguard
CONFIG_IPV6_MULTIPLE_TABLES=y
CONFIG_IP_ADVANCED_ROUTER=y
CONFIG_IP_MULTIPLE_TABLES=y
CONFIG_NFT_CT=m
CONFIG_NFT_FIB=m
CONFIG_NFT_FIB_IPV4=m
CONFIG_NFT_FIB_IPV6=m
CONFIG_NF_CONNTRACK_MARK=y
CONFIG_NF_TABLES=m
CONFIG_NF_TABLES_IPV4=y
CONFIG_NF_TABLES_IPV6=y
CONFIG_WIREGUARD=m
# filesystems
CONFIG_BTRFS_FS=m
CONFIG_BTRFS_FS_POSIX_ACL=y
CONFIG_EROFS_FS=m
CONFIG_EROFS_FS_ZIP=y
CONFIG_EROFS_FS_ZIP_LZMA=y
CONFIG_EXFAT_FS=m
CONFIG_EXT4_FS=y
CONFIG_F2FS_FS=m
CONFIG_UDF_FS=m
CONFIG_XFS_FS=m
CONFIG_EROFS_FS_ZIP_DEFLATE=y
CONFIG_EROFS_FS_ZIP_ZSTD=y
# usb_gadgets
CONFIG_USB_CONFIGFS=m
CONFIG_USB_CONFIGFS_ACM=y
CONFIG_USB_CONFIGFS_F_FS=y
CONFIG_USB_CONFIGFS_MASS_STORAGE=y
CONFIG_USB_CONFIGFS_NCM=y
CONFIG_USB_CONFIGFS_RNDIS=y
# CONFIG_USB_ETH is not set
# CONFIG_USB_FUNCTIONFS is not set
CONFIG_USB_F_FS=m
CONFIG_USB_GADGET=y
# CONFIG_USB_G_SERIAL is not set
# CONFIG_USB_MASS_STORAGE is not set
# community_various
CONFIG_BINFMT_MISC=m
CONFIG_CIFS=m
CONFIG_CPU_FREQ=y
CONFIG_CPU_FREQ_GOV_SCHEDUTIL=y
CONFIG_DM_INTEGRITY=m
CONFIG_LEDS_TRIGGER_PATTERN=m
CONFIG_LEDS_TRIGGER_TIMER=m
CONFIG_NETFILTER_ADVANCED=y
CONFIG_NETFILTER_XT_MATCH_MARK=m
CONFIG_NETFILTER_XT_MATCH_MULTIPORT=m
CONFIG_NETFILTER_XT_MATCH_STATISTIC=m
CONFIG_NETFILTER_XT_MATCH_TCPMSS=m
CONFIG_NETFILTER_XT_TARGET_TCPMSS=m
CONFIG_NETWORK_FILESYSTEMS=y
# CONFIG_RT_GROUP_SCHED is not set
CONFIG_UCLAMP_TASK=y
CONFIG_UCLAMP_TASK_GROUP=y
# input
CONFIG_BT=m
CONFIG_BT_HIDP=m
CONFIG_GPIOLIB=y
CONFIG_HIDRAW=y
CONFIG_HID_A4TECH=m
CONFIG_HID_ACCUTOUCH=m
CONFIG_HID_ACRUX=m
CONFIG_HID_ACRUX_FF=y
CONFIG_HID_ALPS=m
CONFIG_HID_APPLE=m
CONFIG_HID_APPLEIR=m
CONFIG_HID_AUREAL=m
CONFIG_HID_BATTERY_STRENGTH=y
CONFIG_HID_BELKIN=m
CONFIG_HID_BETOP_FF=m
CONFIG_HID_BIGBEN_FF=m
CONFIG_HID_CHERRY=m
CONFIG_HID_CHICONY=m
CONFIG_HID_CMEDIA=m
CONFIG_HID_CORSAIR=m
CONFIG_HID_COUGAR=m
CONFIG_HID_CP2112=m
CONFIG_HID_CREATIVE_SB0540=m
CONFIG_HID_CYPRESS=m
CONFIG_HID_DRAGONRISE=m
CONFIG_HID_ELAN=m
CONFIG_HID_ELECOM=m
CONFIG_HID_ELO=m
CONFIG_HID_EMS_FF=m
CONFIG_HID_EZKEY=m
CONFIG_HID_FT260=m
CONFIG_HID_GEMBIRD=m
CONFIG_HID_GENERIC=m
CONFIG_HID_GFRM=m
CONFIG_HID_GLORIOUS=m
CONFIG_HID_GREENASIA=m
CONFIG_HID_GT683R=m
CONFIG_HID_GYRATION=m
CONFIG_HID_HOLTEK=m
CONFIG_HID_ICADE=m
CONFIG_HID_ITE=m
CONFIG_HID_JABRA=m
CONFIG_HID_KENSINGTON=m
CONFIG_HID_KEYTOUCH=m
CONFIG_HID_KYE=m
CONFIG_HID_LCPOWER=m
CONFIG_HID_LED=m
CONFIG_HID_LETSKETCH=m
CONFIG_HID_LOGITECH=m
CONFIG_HID_LOGITECH_DJ=m
CONFIG_HID_LOGITECH_HIDPP=m
CONFIG_HID_MACALLY=m
CONFIG_HID_MAGICMOUSE=m
CONFIG_HID_MALTRON=m
CONFIG_HID_MAYFLASH=m
CONFIG_HID_MCP2221=m
CONFIG_HID_MEGAWORLD_FF=m
CONFIG_HID_MICROSOFT=m
CONFIG_HID_MONTEREY=m
CONFIG_HID_MULTITOUCH=m
CONFIG_HID_NINTENDO=m
CONFIG_HID_NTI=m
CONFIG_HID_NTRIG=m
CONFIG_HID_ORTEK=m
CONFIG_HID_PANTHERLORD=m
CONFIG_HID_PENMOUNT=m
CONFIG_HID_PETALYNX=m
CONFIG_HID_PICOLCD=m
CONFIG_HID_PICOLCD_BACKLIGHT=y
CONFIG_HID_PICOLCD_LCD=y
CONFIG_HID_PICOLCD_LEDS=y
CONFIG_HID_PID=y
CONFIG_HID_PLANTRONICS=m
CONFIG_HID_PLAYSTATION=m
CONFIG_HID_PRIMAX=m
CONFIG_HID_PRODIKEYS=m
CONFIG_HID_PXRC=m
CONFIG_HID_RAZER=m
CONFIG_HID_RETRODE=m
CONFIG_HID_RMI=m
CONFIG_HID_ROCCAT=m
CONFIG_HID_SAITEK=m
CONFIG_HID_SAMSUNG=m
CONFIG_HID_SEMITEK=m
CONFIG_HID_SENSOR_ACCEL_3D=m
CONFIG_HID_SENSOR_ALS=m
CONFIG_HID_SENSOR_CUSTOM_INTEL_HINGE=m
CONFIG_HID_SENSOR_DEVICE_ROTATION=m
CONFIG_HID_SENSOR_GYRO_3D=m
CONFIG_HID_SENSOR_HUB=m
CONFIG_HID_SENSOR_HUMIDITY=m
CONFIG_HID_SENSOR_IIO_COMMON=m
CONFIG_HID_SENSOR_IIO_TRIGGER=m
CONFIG_HID_SENSOR_INCLINOMETER_3D=m
CONFIG_HID_SENSOR_MAGNETOMETER_3D=m
CONFIG_HID_SENSOR_TEMP=m
CONFIG_HID_SIGMAMICRO=m
CONFIG_HID_SMARTJOYPLUS=m
CONFIG_HID_SONY=m
CONFIG_HID_SPEEDLINK=m
CONFIG_HID_STEAM=m
CONFIG_HID_STEELSERIES=m
CONFIG_HID_SUNPLUS=m
CONFIG_HID_THINGM=m
CONFIG_HID_THRUSTMASTER=m
CONFIG_HID_TIVO=m
CONFIG_HID_TOPRE=m
CONFIG_HID_TOPSEED=m
CONFIG_HID_TWINHAN=m
CONFIG_HID_U2FZERO=m
CONFIG_HID_UCLOGIC=m
CONFIG_HID_UDRAW_PS3=m
CONFIG_HID_VIEWSONIC=m
CONFIG_HID_VIVALDI=m
CONFIG_HID_WACOM=m
CONFIG_HID_WALTOP=m
CONFIG_HID_WIIMOTE=m
CONFIG_HID_XIAOMI=m
CONFIG_HID_XINMO=m
CONFIG_HID_ZEROPLUS=m
CONFIG_HID_ZYDACRON=m
CONFIG_IIO=y
CONFIG_INPUT_JOYSTICK=y
CONFIG_INPUT_MISC=y
CONFIG_INPUT_UINPUT=y
CONFIG_JOYSTICK_XPAD=m
CONFIG_JOYSTICK_XPAD_FF=y
CONFIG_JOYSTICK_XPAD_LEDS=y
CONFIG_LCD_CLASS_DEVICE=m
CONFIG_LEDS_CLASS_MULTICOLOR=m
CONFIG_UHID=m
CONFIG_USB_ANNOUNCE_NEW_DEVICES=y
CONFIG_USB_HIDDEV=y
CONFIG_USB_PRINTER=m
CONFIG_HID_EVISION=m
CONFIG_HID_SUPPORT=y
CONFIG_HID_NVIDIA_SHIELD=m
CONFIG_HID_GOOGLE_STADIA_FF=m
CONFIG_HID_WINWING=m
CONFIG_HID_GOODIX_SPI=m
CONFIG_SPI=y
# usb
CONFIG_DRM=y
CONFIG_DRM_UDL=m
CONFIG_SND_USB_AUDIO=m
CONFIG_SND_USB_AUDIO_MIDI_V2=y
CONFIG_USB_NET_RNDIS_HOST=m
CONFIG_USB_RTL8152=m
CONFIG_USB_SERIAL=m
CONFIG_USB_SERIAL_CP210X=m
CONFIG_USB_SERIAL_SIMPLE=m
CONFIG_USB_STORAGE=m
CONFIG_USB_UAS=m
CONFIG_USB_USBNET=m
# debug
CONFIG_DYNAMIC_DEBUG=y
CONFIG_DYNAMIC_FTRACE=y
CONFIG_FTRACE=y
CONFIG_FUNCTION_TRACER=y
# immutable
CONFIG_EFIVAR_FS=m
CONFIG_DM_VERITY=m
# hardening
CONFIG_LSM="landlock,lockdown,yama,loadpin,safesetid,selinux,smack,tomoyo,ipe,bpf"
CONFIG_SECURITY_DMESG_RESTRICT=y
CONFIG_SECURITY_LOCKDOWN_LSM=y
CONFIG_SECURITY_LOCKDOWN_LSM_EARLY=y
CONFIG_SECURITY_YAMA=y
CONFIG_SHADOW_CALL_STACK=y
CONFIG_CFI=y
# CONFIG_CFI_PERMISSIVE is not set
CONFIG_CFI_ICALL_NORMALIZE_INTEGERS=y
# wine
CONFIG_NTSYNC=m

View file

@ -0,0 +1,15 @@
CONFIG_REGMAP_I2C=y
CONFIG_INPUT_AXP20X_PEK=y
CONFIG_CHARGER_AXP20X=m
CONFIG_BATTERY_AXP20X=m
CONFIG_AXP20X_POWER=m
CONFIG_MFD_AXP20X=y
CONFIG_MFD_AXP20X_I2C=y
CONFIG_REGULATOR_AXP20X=y
CONFIG_DRM_PANEL_CWD686=m
CONFIG_DRM_PANEL_CWU50=m
CONFIG_BACKLIGHT_OCP8178=m
CONFIG_AXP20X_ADC=m
CONFIG_TI_ADC081C=m
CONFIG_CRYPTO_LIB_ARC4=m
CONFIG_CRC_CCITT=m