From eae85c6e635ba4853125e834935d4af2be313081 Mon Sep 17 00:00:00 2001 From: Miguel Fuertes Date: Sat, 11 Oct 2025 11:31:26 +0200 Subject: [PATCH 01/94] initial mf68e --- mf86e_diffconfig | 92 +++++++++++++++++++ msm89xx/config-6.12 | 4 +- msm89xx/image/msm8916.mk | 11 +++ ...01-arm64-dts-qcom-add-mf68e-makefile.patch | 21 +++++ ...802-arm64-dts-qcom-add-msm8916-mf68e.patch | 83 +++++++++++++++++ 5 files changed, 210 insertions(+), 1 deletion(-) create mode 100644 mf86e_diffconfig create mode 100644 msm89xx/patches-6.12/801-arm64-dts-qcom-add-mf68e-makefile.patch create mode 100644 msm89xx/patches-6.12/802-arm64-dts-qcom-add-msm8916-mf68e.patch diff --git a/mf86e_diffconfig b/mf86e_diffconfig new file mode 100644 index 0000000..0b1b59c --- /dev/null +++ b/mf86e_diffconfig @@ -0,0 +1,92 @@ +CONFIG_TARGET_msm89xx=y +CONFIG_TARGET_msm89xx_msm8916=y +CONFIG_TARGET_msm89xx_msm8916_DEVICE_generic-mf68e=y +CONFIG_LIBQMI_COLLECTION_BASIC=y +CONFIG_LIBQMI_WITH_MBIM_QMUX=y +CONFIG_LIBQMI_WITH_QRTR_GLIB=y +CONFIG_MODEMMANAGER_WITH_MBIM=y +CONFIG_MODEMMANAGER_WITH_NETIFD=y +CONFIG_MODEMMANAGER_WITH_QMI=y +CONFIG_MODEMMANAGER_WITH_QRTR=y +CONFIG_PACKAGE_bash=y +CONFIG_PACKAGE_cgi-io=y +CONFIG_PACKAGE_dbus=y +CONFIG_PACKAGE_glib2=y +CONFIG_PACKAGE_ip-tiny=y +CONFIG_PACKAGE_kmod-crypto-kpp=y +CONFIG_PACKAGE_kmod-crypto-lib-chacha20=y +CONFIG_PACKAGE_kmod-crypto-lib-chacha20poly1305=y +CONFIG_PACKAGE_kmod-crypto-lib-curve25519=y +CONFIG_PACKAGE_kmod-crypto-lib-poly1305=y +CONFIG_PACKAGE_kmod-tun=y +CONFIG_PACKAGE_kmod-udptunnel4=y +CONFIG_PACKAGE_kmod-udptunnel6=y +CONFIG_PACKAGE_kmod-wireguard=y +CONFIG_PACKAGE_ledcontrol=y +CONFIG_PACKAGE_libattr=y +CONFIG_PACKAGE_libdbus=y +CONFIG_PACKAGE_libexpat=y +CONFIG_PACKAGE_libfdisk=y +CONFIG_PACKAGE_libffi=y +CONFIG_PACKAGE_libiwinfo=y +CONFIG_PACKAGE_libiwinfo-data=y +CONFIG_PACKAGE_liblua=y +CONFIG_PACKAGE_liblucihttp=y +CONFIG_PACKAGE_liblucihttp-lua=y +CONFIG_PACKAGE_liblucihttp-ucode=y +CONFIG_PACKAGE_libmbim=y +CONFIG_PACKAGE_libmount=y +CONFIG_PACKAGE_libncurses=y +CONFIG_PACKAGE_libpcre2=y +CONFIG_PACKAGE_libqmi=y +CONFIG_PACKAGE_libqrtr-glib=y +CONFIG_PACKAGE_libreadline=y +CONFIG_PACKAGE_libubus-lua=y +CONFIG_PACKAGE_lsblk=y +CONFIG_PACKAGE_lua=y +CONFIG_PACKAGE_luci=y +CONFIG_PACKAGE_luci-app-firewall=y +CONFIG_PACKAGE_luci-app-package-manager=y +CONFIG_PACKAGE_luci-app-usb-gadget=y +CONFIG_PACKAGE_luci-base=y +CONFIG_PACKAGE_luci-lib-base=y +CONFIG_PACKAGE_luci-lib-ip=y +CONFIG_PACKAGE_luci-lib-json=y +CONFIG_PACKAGE_luci-lib-jsonc=y +CONFIG_PACKAGE_luci-lib-nixio=y +CONFIG_PACKAGE_luci-lib-uqr=y +CONFIG_PACKAGE_luci-light=y +CONFIG_PACKAGE_luci-lua-runtime=y +CONFIG_PACKAGE_luci-mod-admin-full=y +CONFIG_PACKAGE_luci-mod-network=y +CONFIG_PACKAGE_luci-mod-rpc=y +CONFIG_PACKAGE_luci-mod-status=y +CONFIG_PACKAGE_luci-mod-system=y +CONFIG_PACKAGE_luci-proto-ipv6=y +CONFIG_PACKAGE_luci-proto-modemmanager=y +CONFIG_PACKAGE_luci-proto-ppp=y +CONFIG_PACKAGE_luci-proto-wireguard=y +CONFIG_PACKAGE_luci-theme-bootstrap=y +CONFIG_PACKAGE_modemmanager=y +CONFIG_PACKAGE_mount-utils=y +CONFIG_PACKAGE_mtools=y +CONFIG_PACKAGE_nano=y +CONFIG_PACKAGE_resize2fs=y +CONFIG_PACKAGE_resolveip=y +CONFIG_PACKAGE_rpcd=y +CONFIG_PACKAGE_rpcd-mod-file=y +CONFIG_PACKAGE_rpcd-mod-iwinfo=y +CONFIG_PACKAGE_rpcd-mod-luci=y +CONFIG_PACKAGE_rpcd-mod-rrdns=y +CONFIG_PACKAGE_rpcd-mod-ucode=y +CONFIG_PACKAGE_sfdisk=y +CONFIG_PACKAGE_terminfo=y +CONFIG_PACKAGE_tune2fs=y +CONFIG_PACKAGE_ucode-mod-html=y +CONFIG_PACKAGE_ucode-mod-log=y +CONFIG_PACKAGE_ucode-mod-lua=y +CONFIG_PACKAGE_ucode-mod-math=y +CONFIG_PACKAGE_uhttpd=y +CONFIG_PACKAGE_uhttpd-mod-ubus=y +CONFIG_PACKAGE_wireguard-tools=y +# CONFIG_TARGET_ROOTFS_EXT4FS is not set diff --git a/msm89xx/config-6.12 b/msm89xx/config-6.12 index 0098fc8..b1c1f24 100644 --- a/msm89xx/config-6.12 +++ b/msm89xx/config-6.12 @@ -324,6 +324,7 @@ CONFIG_AUDIT_ARCH_COMPAT_GENERIC=y CONFIG_AUTOFS_FS=y CONFIG_BACKLIGHT_CLASS_DEVICE=y CONFIG_BACKLIGHT_PWM=y +CONFIG_BATTERY_PM8916_BMS=y CONFIG_BLK_DEBUG_FS=y CONFIG_BLK_DEV_LOOP=y CONFIG_BLK_DEV_SD=y @@ -342,6 +343,7 @@ CONFIG_BUILTIN_RETURN_ADDRESS_STRIPS_PAC=y CONFIG_CACHESTAT_SYSCALL=y CONFIG_CC_HAVE_SHADOW_CALL_STACK=y CONFIG_CC_HAVE_STACKPROTECTOR_SYSREG=y +CONFIG_CHARGER_PM8916_LBC=y CONFIG_CLONE_BACKWARDS=y CONFIG_CLZ_TAB=y CONFIG_CMA_ALIGNMENT=8 @@ -988,4 +990,4 @@ CONFIG_ZLIB_INFLATE=y CONFIG_ZONE_DMA32=y CONFIG_ZSTD_COMMON=y CONFIG_ZSTD_COMPRESS=y -CONFIG_ZSTD_DECOMPRESS=y +CONFIG_ZSTD_DECOMPRESS=y \ No newline at end of file diff --git a/msm89xx/image/msm8916.mk b/msm89xx/image/msm8916.mk index 0d0f205..53bf4e9 100644 --- a/msm89xx/image/msm8916.mk +++ b/msm89xx/image/msm8916.mk @@ -39,4 +39,15 @@ define Device/yiming-uz801v3 endef TARGET_DEVICES += yiming-uz801v3 +define Device/generic-mf68e + $(Device/msm8916) + DEVICE_VENDOR := Generic + DEVICE_MODEL := MF68E + FILESYSTEMS := squashfs + DEVICE_PACKAGES := configs-uz801 wpad-basic-wolfssl rmtfs uci-usb-gadget \ + block-mount f2fs-tools prepare-rootfs-data \ + msm-firmware-dumper +endef +TARGET_DEVICES += generic-mf68e + endif diff --git a/msm89xx/patches-6.12/801-arm64-dts-qcom-add-mf68e-makefile.patch b/msm89xx/patches-6.12/801-arm64-dts-qcom-add-mf68e-makefile.patch new file mode 100644 index 0000000..058b6fc --- /dev/null +++ b/msm89xx/patches-6.12/801-arm64-dts-qcom-add-mf68e-makefile.patch @@ -0,0 +1,21 @@ +From: hkfuertes +Date: Sat, 11 Oct 2025 11:25:00 +0200 +Subject: [PATCH] arm64: dts: qcom: Add MF68E MiFi to Makefile + +Add msm8916-mf68e.dtb to Makefile. + +Signed-off-by: hkfuertes +--- + arch/arm64/boot/dts/qcom/Makefile | 1 + + 1 file changed, 1 insertion(+) + +--- a/arch/arm64/boot/dts/qcom/Makefile ++++ b/arch/arm64/boot/dts/qcom/Makefile +@@ -50,6 +50,7 @@ dtb-$(CONFIG_ARCH_QCOM) += msm8916-longc + dtb-$(CONFIG_ARCH_QCOM) += msm8916-samsung-a3u-eur.dtb + dtb-$(CONFIG_ARCH_QCOM) += msm8916-samsung-a5u-eur.dtb + dtb-$(CONFIG_ARCH_QCOM) += msm8916-thwc-ufi001c.dtb ++dtb-$(CONFIG_ARCH_QCOM) += msm8916-generic-mf68e.dtb + dtb-$(CONFIG_ARCH_QCOM) += msm8916-wingtech-wt88047.dtb + dtb-$(CONFIG_ARCH_QCOM) += msm8916-yiming-uz801-v3.dtb + dtb-$(CONFIG_ARCH_QCOM) += msm8953-xiaomi-daisy.dtb diff --git a/msm89xx/patches-6.12/802-arm64-dts-qcom-add-msm8916-mf68e.patch b/msm89xx/patches-6.12/802-arm64-dts-qcom-add-msm8916-mf68e.patch new file mode 100644 index 0000000..6099d8d --- /dev/null +++ b/msm89xx/patches-6.12/802-arm64-dts-qcom-add-msm8916-mf68e.patch @@ -0,0 +1,83 @@ +From: hkfuertes +Date: Sat, 11 Oct 2025 11:30:00 +0200 +Subject: [PATCH] arm64: dts: qcom: Add MF68E 4G MiFi router + +Add device tree for MF68E 4G LTE MiFi router based on MSM8916 +with PM8916 battery support (3000mAh) and USB OTG. + +Signed-off-by: hkfuertes +--- + .../boot/dts/qcom/msm8916-generic-mf68e.dts | 57 +++++++++++++++++++ + 1 file changed, 57 insertions(+) + create mode 100644 arch/arm64/boot/dts/qcom/msm8916-generic-mf68e.dts + +--- /dev/null ++++ b/arch/arm64/boot/dts/qcom/msm8916-generic-mf68e.dts +@@ -0,0 +1,57 @@ ++// SPDX-License-Identifier: GPL-2.0-only ++ ++/dts-v1/; ++ ++#include "msm8916-ufi.dtsi" ++#include ++ ++/ { ++ model = "MF68E 4G LTE Mobile WiFi Router"; ++ compatible = "generic,mf68e", "qcom,msm8916"; ++ ++ bat: battery { ++ compatible = "simple-battery"; ++ voltage-min-design-microvolt = <3400000>; ++ voltage-max-design-microvolt = <4350000>; ++ energy-full-design-microwatt-hours = <11100000>; ++ charge-full-design-microamp-hours = <3000000>; ++ ++ ocv-capacity-celsius = <25>; ++ ocv-capacity-table-0 = <4330000 100>, <4265000 95>, <4208000 90>, ++ <4154000 85>, <4102000 80>, <4063000 75>, <4006000 70>, ++ <3972000 65>, <3931000 60>, <3880000 55>, <3841000 50>, ++ <3817000 45>, <3798000 40>, <3783000 35>, <3767000 30>, ++ <3747000 25>, <3729000 20>, <3700000 16>, <3687000 13>, ++ <3683000 11>, <3681000 10>, <3680000 9>, <3678000 8>, ++ <3674000 7>, <3666000 6>, <3641000 5>, <3597000 4>, ++ <3537000 3>, <3457000 2>, <3336000 1>, <3000000 0>; ++ }; ++ ++ usb_id: usb-id { ++ compatible = "linux,extcon-usb-gpio"; ++ id-gpios = <&tlmm 110 GPIO_ACTIVE_HIGH>; ++ pinctrl-names = "default"; ++ pinctrl-0 = <&usb_id_default>; ++ }; ++}; ++ ++&pm8916_bms { ++ status = "okay"; ++ monitored-battery = <&bat>; ++ power-supplies = <&pm8916_charger>; ++}; ++ ++&pm8916_charger { ++ status = "okay"; ++ monitored-battery = <&bat>; ++ qcom,fast-charge-safe-current = <900000>; ++ qcom,fast-charge-safe-voltage = <4350000>; ++}; ++ ++&usb { ++ status = "okay"; ++ extcon = <&usb_id>, <&usb_id>; ++}; ++ ++&usb_hs_phy { ++ extcon = <&usb_id>; ++}; ++ ++&tlmm { ++ usb_id_default: usb-id-default-state { ++ pins = "gpio110"; ++ function = "gpio"; ++ drive-strength = <8>; ++ bias-pull-up; ++ }; ++}; From b134007371b0fe35af0494943064c59c825fb479 Mon Sep 17 00:00:00 2001 From: Miguel Fuertes Date: Sat, 11 Oct 2025 11:50:26 +0200 Subject: [PATCH 02/94] changes --- ...01-arm64-dts-qcom-add-mf68e-makefile.patch | 20 +++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/msm89xx/patches-6.12/801-arm64-dts-qcom-add-mf68e-makefile.patch b/msm89xx/patches-6.12/801-arm64-dts-qcom-add-mf68e-makefile.patch index 058b6fc..febf68a 100644 --- a/msm89xx/patches-6.12/801-arm64-dts-qcom-add-mf68e-makefile.patch +++ b/msm89xx/patches-6.12/801-arm64-dts-qcom-add-mf68e-makefile.patch @@ -1,8 +1,8 @@ From: hkfuertes -Date: Sat, 11 Oct 2025 11:25:00 +0200 -Subject: [PATCH] arm64: dts: qcom: Add MF68E MiFi to Makefile +Date: Sat, 11 Oct 2025 11:49:00 +0200 +Subject: [PATCH] arm64: dts: qcom: Add MF68E to Makefile -Add msm8916-mf68e.dtb to Makefile. +Add msm8916-generic-mf68e.dtb to Makefile. Signed-off-by: hkfuertes --- @@ -11,11 +11,11 @@ Signed-off-by: hkfuertes --- a/arch/arm64/boot/dts/qcom/Makefile +++ b/arch/arm64/boot/dts/qcom/Makefile -@@ -50,6 +50,7 @@ dtb-$(CONFIG_ARCH_QCOM) += msm8916-longc - dtb-$(CONFIG_ARCH_QCOM) += msm8916-samsung-a3u-eur.dtb - dtb-$(CONFIG_ARCH_QCOM) += msm8916-samsung-a5u-eur.dtb - dtb-$(CONFIG_ARCH_QCOM) += msm8916-thwc-ufi001c.dtb +@@ -23,6 +23,7 @@ dtb-$(CONFIG_ARCH_QCOM) += msm8916-samsu + dtb-$(CONFIG_ARCH_QCOM) += msm8916-samsung-gt58.dtb + dtb-$(CONFIG_ARCH_QCOM) += msm8916-samsung-j3ltetw.dtb + dtb-$(CONFIG_ARCH_QCOM) += msm8916-samsung-j5.dtb +dtb-$(CONFIG_ARCH_QCOM) += msm8916-generic-mf68e.dtb - dtb-$(CONFIG_ARCH_QCOM) += msm8916-wingtech-wt88047.dtb - dtb-$(CONFIG_ARCH_QCOM) += msm8916-yiming-uz801-v3.dtb - dtb-$(CONFIG_ARCH_QCOM) += msm8953-xiaomi-daisy.dtb + dtb-$(CONFIG_ARCH_QCOM) += msm8916-samsung-j5x.dtb + dtb-$(CONFIG_ARCH_QCOM) += msm8916-samsung-rossa.dtb + dtb-$(CONFIG_ARCH_QCOM) += msm8916-samsung-serranove.dtb From 4b57860800f89629d20f4d2ca3b7f133206a8a73 Mon Sep 17 00:00:00 2001 From: Miguel Fuertes Date: Sat, 11 Oct 2025 11:51:36 +0200 Subject: [PATCH 03/94] renamed --- ...e.patch => 802-arm64-dts-qcom-add-msm8916-generic-mf68e.patch} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename msm89xx/patches-6.12/{802-arm64-dts-qcom-add-msm8916-mf68e.patch => 802-arm64-dts-qcom-add-msm8916-generic-mf68e.patch} (100%) diff --git a/msm89xx/patches-6.12/802-arm64-dts-qcom-add-msm8916-mf68e.patch b/msm89xx/patches-6.12/802-arm64-dts-qcom-add-msm8916-generic-mf68e.patch similarity index 100% rename from msm89xx/patches-6.12/802-arm64-dts-qcom-add-msm8916-mf68e.patch rename to msm89xx/patches-6.12/802-arm64-dts-qcom-add-msm8916-generic-mf68e.patch From 8c905658c7f5afda7f59876ad5b2ddba68110f41 Mon Sep 17 00:00:00 2001 From: Miguel Fuertes Date: Sat, 11 Oct 2025 15:49:56 +0200 Subject: [PATCH 04/94] fixed patch --- ...4-dts-qcom-add-msm8916-generic-mf68e.patch | 45 +++++++++---------- 1 file changed, 22 insertions(+), 23 deletions(-) diff --git a/msm89xx/patches-6.12/802-arm64-dts-qcom-add-msm8916-generic-mf68e.patch b/msm89xx/patches-6.12/802-arm64-dts-qcom-add-msm8916-generic-mf68e.patch index 6099d8d..95af41f 100644 --- a/msm89xx/patches-6.12/802-arm64-dts-qcom-add-msm8916-generic-mf68e.patch +++ b/msm89xx/patches-6.12/802-arm64-dts-qcom-add-msm8916-generic-mf68e.patch @@ -1,19 +1,15 @@ -From: hkfuertes -Date: Sat, 11 Oct 2025 11:30:00 +0200 -Subject: [PATCH] arm64: dts: qcom: Add MF68E 4G MiFi router - -Add device tree for MF68E 4G LTE MiFi router based on MSM8916 -with PM8916 battery support (3000mAh) and USB OTG. - -Signed-off-by: hkfuertes ---- - .../boot/dts/qcom/msm8916-generic-mf68e.dts | 57 +++++++++++++++++++ - 1 file changed, 57 insertions(+) - create mode 100644 arch/arm64/boot/dts/qcom/msm8916-generic-mf68e.dts - +# From: hkfuertes +# Date: Sat, 11 Oct 2025 15:45:00 +0200 +# Subject: [PATCH] arm64: dts: qcom: Add MF68E MiFi router +# +# Add device tree for MF68E 4G LTE MiFi router based on MSM8916. +# +# Signed-off-by: hkfuertes +Index: linux-6.12.51/arch/arm64/boot/dts/qcom/msm8916-generic-mf68e.dts +=================================================================== --- /dev/null -+++ b/arch/arm64/boot/dts/qcom/msm8916-generic-mf68e.dts -@@ -0,0 +1,57 @@ ++++ linux-6.12.51/arch/arm64/boot/dts/qcom/msm8916-generic-mf68e.dts +@@ -0,0 +1,70 @@ +// SPDX-License-Identifier: GPL-2.0-only + +/dts-v1/; @@ -33,14 +29,17 @@ Signed-off-by: hkfuertes + charge-full-design-microamp-hours = <3000000>; + + ocv-capacity-celsius = <25>; -+ ocv-capacity-table-0 = <4330000 100>, <4265000 95>, <4208000 90>, -+ <4154000 85>, <4102000 80>, <4063000 75>, <4006000 70>, -+ <3972000 65>, <3931000 60>, <3880000 55>, <3841000 50>, -+ <3817000 45>, <3798000 40>, <3783000 35>, <3767000 30>, -+ <3747000 25>, <3729000 20>, <3700000 16>, <3687000 13>, -+ <3683000 11>, <3681000 10>, <3680000 9>, <3678000 8>, -+ <3674000 7>, <3666000 6>, <3641000 5>, <3597000 4>, -+ <3537000 3>, <3457000 2>, <3336000 1>, <3000000 0>; ++ ocv-capacity-table-0 = <4330000 100>, <4265000 95>, ++ <4208000 90>, <4154000 85>, <4102000 80>, ++ <4063000 75>, <4006000 70>, <3972000 65>, ++ <3931000 60>, <3880000 55>, <3841000 50>, ++ <3817000 45>, <3798000 40>, <3783000 35>, ++ <3767000 30>, <3747000 25>, <3729000 20>, ++ <3700000 16>, <3687000 13>, <3683000 11>, ++ <3681000 10>, <3680000 9>, <3678000 8>, ++ <3674000 7>, <3666000 6>, <3641000 5>, ++ <3597000 4>, <3537000 3>, <3457000 2>, ++ <3336000 1>, <3000000 0>; + }; + + usb_id: usb-id { From 6ad170caf7946c4605e27cdf42211105e0afa4cf Mon Sep 17 00:00:00 2001 From: Miguel Fuertes Date: Sat, 11 Oct 2025 16:46:43 +0200 Subject: [PATCH 05/94] added battery widget and ... bms? --- msm89xx/config-6.12 | 1 + packages/configs-mf68e/Makefile | 54 ++++++++++++++++++ packages/configs-mf68e/files/battery.htm | 54 ++++++++++++++++++ .../files/luci-app-tailscale-1.2.6-r1.apk | Bin 0 -> 9085 bytes packages/configs-mf68e/files/uci_defaults | 30 ++++++++++ 5 files changed, 139 insertions(+) create mode 100644 packages/configs-mf68e/Makefile create mode 100644 packages/configs-mf68e/files/battery.htm create mode 100644 packages/configs-mf68e/files/luci-app-tailscale-1.2.6-r1.apk create mode 100644 packages/configs-mf68e/files/uci_defaults diff --git a/msm89xx/config-6.12 b/msm89xx/config-6.12 index b1c1f24..b3de424 100644 --- a/msm89xx/config-6.12 +++ b/msm89xx/config-6.12 @@ -324,6 +324,7 @@ CONFIG_AUDIT_ARCH_COMPAT_GENERIC=y CONFIG_AUTOFS_FS=y CONFIG_BACKLIGHT_CLASS_DEVICE=y CONFIG_BACKLIGHT_PWM=y +CONFIG_BATTERY_PM8916_BMS_VM=y CONFIG_BATTERY_PM8916_BMS=y CONFIG_BLK_DEBUG_FS=y CONFIG_BLK_DEV_LOOP=y diff --git a/packages/configs-mf68e/Makefile b/packages/configs-mf68e/Makefile new file mode 100644 index 0000000..643df8a --- /dev/null +++ b/packages/configs-mf68e/Makefile @@ -0,0 +1,54 @@ +include $(TOPDIR)/rules.mk + +PKG_NAME:=configs-uz801 +PKG_VERSION:=1.0 + +PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION) + +include $(INCLUDE_DIR)/package.mk + +define Package/$(PKG_NAME) + SECTION:=Utilities + CATEGORY:=Utilities + TITLE:=Defaults Setting For mf68e + DEPENDS:=+PACKAGE_luci:luci-proto-modemmanager +endef + +# (Opcional) Descripción +define Package/$(PKG_NAME)/description +Tweaks y defaults para mf68e, incluyendo limpieza de feeds APK problemáticos y widget de batería LuCI. +endef + +define Build/Configure +endef + +define Build/Compile +endef + +# Instala ficheros de configuración y payload que ya tenías +define Package/$(PKG_NAME)/install + $(INSTALL_DIR) $(1)/etc/uci-defaults + $(INSTALL_BIN) ./files/uci_defaults $(1)/etc/uci-defaults/99-default-config + + $(INSTALL_DIR) $(1)/root/ + $(INSTALL_BIN) ./files/luci-app-tailscale*.apk $(1)/root/ + + $(INSTALL_DIR) $(1)/usr/lib/lua/luci/view/admin_status/index + $(INSTALL_DATA) ./files/battery.htm $(1)/usr/lib/lua/luci/view/admin_status/index/20_battery.htm +endef + +define Package/$(PKG_NAME)/postinst +#!/bin/sh +set -e +FILE="/etc/apk/repositories.d/distfeeds.list" +ROOT="$${IPKG_INSTROOT:-/}" +TARGET_FILE="$$ROOT$$FILE" + +if [ -f "$$TARGET_FILE" ]; then + sed -i '\|/targets/msm89xx/msm8916/packages|d' "$$TARGET_FILE" || true +fi + +exit 0 +endef + +$(eval $(call BuildPackage,$(PKG_NAME))) diff --git a/packages/configs-mf68e/files/battery.htm b/packages/configs-mf68e/files/battery.htm new file mode 100644 index 0000000..5b02133 --- /dev/null +++ b/packages/configs-mf68e/files/battery.htm @@ -0,0 +1,54 @@ +<%- +local sys = require "luci.sys" +local utl = require "luci.util" + +local bms_path = "/sys/class/power_supply/pm8916-bms-vm" +local charger_path = "/sys/class/power_supply/pm8916-lbc-chgr" + +local function read_file(path) + local f = io.open(path, "r") + if f then + local val = f:read("*all") + f:close() + return utl.trim(val) + end + return nil +end + +local capacity = read_file(bms_path .. "/capacity") +local voltage = read_file(bms_path .. "/voltage_now") +local current = read_file(bms_path .. "/current_now") +local online = read_file(charger_path .. "/online") +-%> + +<% if capacity then %> +
+ <%:Battery Status%> +
+
+
<%:Property%>
+
<%:Value%>
+
+
+
<%:Capacity%>
+
<%=capacity%>%
+
+ <% if voltage then %> +
+
<%:Voltage%>
+
<%=string.format("%.2f V", tonumber(voltage)/1000000)%>
+
+ <% end %> + <% if current then %> +
+
<%:Current%>
+
<%=string.format("%.2f mA", tonumber(current)/1000)%>
+
+ <% end %> +
+
<%:Charging%>
+
<%=online == "1" and "Yes" or "No"%>
+
+
+
+<% end %> diff --git a/packages/configs-mf68e/files/luci-app-tailscale-1.2.6-r1.apk b/packages/configs-mf68e/files/luci-app-tailscale-1.2.6-r1.apk new file mode 100644 index 0000000000000000000000000000000000000000..726f159b4d9b2d5d3708c8f4bbd1d5b18e22995f GIT binary patch literal 9085 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 literal 0 HcmV?d00001 diff --git a/packages/configs-mf68e/files/uci_defaults b/packages/configs-mf68e/files/uci_defaults new file mode 100644 index 0000000..0110f52 --- /dev/null +++ b/packages/configs-mf68e/files/uci_defaults @@ -0,0 +1,30 @@ +#!/bin/sh + +# Enabling WiFi +uci set wireless.@wifi-device[0].disabled='0' +uci set wireless.@wifi-iface[0].disabled='0' + +# Create modem interface +uci set network.modem=interface +uci set network.modem.proto='modemmanager' +uci set network.modem.device='qcom-soc' +uci set network.modem.auth='none' +uci set network.modem.apn='internet' +uci set network.modem.allowedmode='4g|3g' +uci set network.modem.preferredmode='4g' +uci set network.modem.ifname='wwan0' +uci del_list firewall.@zone[1].network='modem' +uci add_list firewall.@zone[1].network='modem' + +# We don't have eth0 +uci -q del_list "network.@device[0].ports=eth0" 2>/dev/null || true +sed -i 's/"device": "eth0"/"device": "br-lan"/g' /etc/board.json + +# Commit all changes +uci commit + +# Apply network and wireless configuration +wifi reload +/etc/init.d/network restart + +exit 0 From b7886bcc8837ac85904f5d518b21f150532c29dd Mon Sep 17 00:00:00 2001 From: Miguel Fuertes Date: Sat, 11 Oct 2025 16:47:38 +0200 Subject: [PATCH 06/94] ingles --- packages/configs-mf68e/Makefile | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/packages/configs-mf68e/Makefile b/packages/configs-mf68e/Makefile index 643df8a..c0a8357 100644 --- a/packages/configs-mf68e/Makefile +++ b/packages/configs-mf68e/Makefile @@ -1,6 +1,6 @@ include $(TOPDIR)/rules.mk -PKG_NAME:=configs-uz801 +PKG_NAME:=configs-mf68e PKG_VERSION:=1.0 PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION) @@ -10,13 +10,13 @@ include $(INCLUDE_DIR)/package.mk define Package/$(PKG_NAME) SECTION:=Utilities CATEGORY:=Utilities - TITLE:=Defaults Setting For mf68e + TITLE:=Default Settings For mf68e DEPENDS:=+PACKAGE_luci:luci-proto-modemmanager endef -# (Opcional) Descripción +# Optional description define Package/$(PKG_NAME)/description -Tweaks y defaults para mf68e, incluyendo limpieza de feeds APK problemáticos y widget de batería LuCI. +Tweaks and defaults for mf68e, including cleanup of problematic APK feeds and LuCI battery widget. endef define Build/Configure @@ -25,7 +25,7 @@ endef define Build/Compile endef -# Instala ficheros de configuración y payload que ya tenías +# Install configuration files and payload you already had define Package/$(PKG_NAME)/install $(INSTALL_DIR) $(1)/etc/uci-defaults $(INSTALL_BIN) ./files/uci_defaults $(1)/etc/uci-defaults/99-default-config @@ -33,6 +33,7 @@ define Package/$(PKG_NAME)/install $(INSTALL_DIR) $(1)/root/ $(INSTALL_BIN) ./files/luci-app-tailscale*.apk $(1)/root/ + # Battery widget for LuCI $(INSTALL_DIR) $(1)/usr/lib/lua/luci/view/admin_status/index $(INSTALL_DATA) ./files/battery.htm $(1)/usr/lib/lua/luci/view/admin_status/index/20_battery.htm endef From ad0e9c80f22754d0770e8cfbfa64ccaaed085ae9 Mon Sep 17 00:00:00 2001 From: Miguel Fuertes Date: Sat, 11 Oct 2025 16:50:23 +0200 Subject: [PATCH 07/94] english configs uz801 --- packages/configs-uz801/Makefile | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/packages/configs-uz801/Makefile b/packages/configs-uz801/Makefile index b70ddff..121c933 100644 --- a/packages/configs-uz801/Makefile +++ b/packages/configs-uz801/Makefile @@ -1,4 +1,3 @@ - include $(TOPDIR)/rules.mk PKG_NAME:=configs-uz801 @@ -11,13 +10,13 @@ include $(INCLUDE_DIR)/package.mk define Package/$(PKG_NAME) SECTION:=Utilities CATEGORY:=Utilities - TITLE:=Defaults Setting For uz801v3 + TITLE:=Default Settings For uz801v3 DEPENDS:=+PACKAGE_luci:luci-proto-modemmanager endef -# (Opcional) Descripción +# Optional description define Package/$(PKG_NAME)/description -Tweaks y defaults para uz801v3, incluyendo limpieza de feeds APK problemáticos. +Tweaks and defaults for uz801v3, including cleanup of problematic APK feeds. endef define Build/Configure @@ -26,7 +25,7 @@ endef define Build/Compile endef -# Instala ficheros de configuración y payload que ya tenías +# Install configuration files and payload you already had define Package/$(PKG_NAME)/install $(INSTALL_DIR) $(1)/etc/uci-defaults $(INSTALL_BIN) ./files/uci_defaults $(1)/etc/uci-defaults/99-default-config From 6b3939c9e7ddb32d028f758972db66593070c42f Mon Sep 17 00:00:00 2001 From: Miguel Fuertes Date: Sat, 11 Oct 2025 17:15:50 +0200 Subject: [PATCH 08/94] changes --- msm89xx/image/msm8916.mk | 2 +- packages/configs-mf68e/files/battery.htm | 41 ++++++++++++++++-------- 2 files changed, 29 insertions(+), 14 deletions(-) diff --git a/msm89xx/image/msm8916.mk b/msm89xx/image/msm8916.mk index 53bf4e9..baeec7f 100644 --- a/msm89xx/image/msm8916.mk +++ b/msm89xx/image/msm8916.mk @@ -44,7 +44,7 @@ define Device/generic-mf68e DEVICE_VENDOR := Generic DEVICE_MODEL := MF68E FILESYSTEMS := squashfs - DEVICE_PACKAGES := configs-uz801 wpad-basic-wolfssl rmtfs uci-usb-gadget \ + DEVICE_PACKAGES := configs-mf68e wpad-basic-wolfssl rmtfs uci-usb-gadget \ block-mount f2fs-tools prepare-rootfs-data \ msm-firmware-dumper endef diff --git a/packages/configs-mf68e/files/battery.htm b/packages/configs-mf68e/files/battery.htm index 5b02133..73bf072 100644 --- a/packages/configs-mf68e/files/battery.htm +++ b/packages/configs-mf68e/files/battery.htm @@ -15,13 +15,28 @@ local function read_file(path) return nil end -local capacity = read_file(bms_path .. "/capacity") local voltage = read_file(bms_path .. "/voltage_now") -local current = read_file(bms_path .. "/current_now") +local status = read_file(bms_path .. "/status") +local health = read_file(bms_path .. "/health") +local vmax = read_file(bms_path .. "/voltage_max_design") +local vmin = read_file(bms_path .. "/voltage_min_design") local online = read_file(charger_path .. "/online") + +-- Calcular porcentaje aproximado basado en voltaje +local percentage = "N/A" +if voltage and vmax and vmin then + local v = tonumber(voltage) + local vmax_n = tonumber(vmax) + local vmin_n = tonumber(vmin) + if v and vmax_n and vmin_n then + local pct = ((v - vmin_n) / (vmax_n - vmin_n)) * 100 + pct = math.max(0, math.min(100, pct)) + percentage = string.format("%.0f%%", pct) + end +end -%> -<% if capacity then %> +<% if voltage then %>
<%:Battery Status%>
@@ -30,24 +45,24 @@ local online = read_file(charger_path .. "/online")
<%:Value%>
-
<%:Capacity%>
-
<%=capacity%>%
+
<%:Estimated Capacity%>
+
<%=percentage%>
- <% if voltage then %>
<%:Voltage%>
<%=string.format("%.2f V", tonumber(voltage)/1000000)%>
- <% end %> - <% if current then %>
-
<%:Current%>
-
<%=string.format("%.2f mA", tonumber(current)/1000)%>
+
<%:Status%>
+
<%=status%>
- <% end %>
-
<%:Charging%>
-
<%=online == "1" and "Yes" or "No"%>
+
<%:Health%>
+
<%=health%>
+
+
+
<%:Charger%>
+
<%=online == "1" and "Connected" or "Disconnected"%>
From 7b90ab19092ebdd0be7deaad168d319b3162e1df Mon Sep 17 00:00:00 2001 From: Miguel Fuertes Date: Sat, 11 Oct 2025 17:25:27 +0200 Subject: [PATCH 09/94] power button --- msm89xx/image/msm8916.mk | 2 +- packages/power-button-daemon/Makefile | 35 ++++++++++++ .../files/power_button.init | 15 +++++ .../files/power_button_monitor.sh | 57 +++++++++++++++++++ 4 files changed, 108 insertions(+), 1 deletion(-) create mode 100644 packages/power-button-daemon/Makefile create mode 100644 packages/power-button-daemon/files/power_button.init create mode 100644 packages/power-button-daemon/files/power_button_monitor.sh diff --git a/msm89xx/image/msm8916.mk b/msm89xx/image/msm8916.mk index baeec7f..1198a2b 100644 --- a/msm89xx/image/msm8916.mk +++ b/msm89xx/image/msm8916.mk @@ -46,7 +46,7 @@ define Device/generic-mf68e FILESYSTEMS := squashfs DEVICE_PACKAGES := configs-mf68e wpad-basic-wolfssl rmtfs uci-usb-gadget \ block-mount f2fs-tools prepare-rootfs-data \ - msm-firmware-dumper + msm-firmware-dumper power-button-daemon endef TARGET_DEVICES += generic-mf68e diff --git a/packages/power-button-daemon/Makefile b/packages/power-button-daemon/Makefile new file mode 100644 index 0000000..b6cae1b --- /dev/null +++ b/packages/power-button-daemon/Makefile @@ -0,0 +1,35 @@ +include $(TOPDIR)/rules.mk + +PKG_NAME:=power-button-daemon +PKG_VERSION:=1.0 +PKG_RELEASE:=1 + +include $(INCLUDE_DIR)/package.mk + +define Package/$(PKG_NAME) + SECTION:=utils + CATEGORY:=Utilities + TITLE:=Power button monitor daemon + DEPENDS:=+evtest +endef + +define Package/$(PKG_NAME)/description + Monitors power button and triggers poweroff on long press (3s). + Designed for MSM8916-based devices with PM8916 PON. +endef + +define Build/Configure +endef + +define Build/Compile +endef + +define Package/$(PKG_NAME)/install + $(INSTALL_DIR) $(1)/usr/sbin + $(INSTALL_BIN) ./files/power_button_monitor.sh $(1)/usr/sbin/power_button_monitor + + $(INSTALL_DIR) $(1)/etc/init.d + $(INSTALL_BIN) ./files/power_button.init $(1)/etc/init.d/power_button +endef + +$(eval $(call BuildPackage,$(PKG_NAME))) \ No newline at end of file diff --git a/packages/power-button-daemon/files/power_button.init b/packages/power-button-daemon/files/power_button.init new file mode 100644 index 0000000..fe07efb --- /dev/null +++ b/packages/power-button-daemon/files/power_button.init @@ -0,0 +1,15 @@ +#!/bin/sh /etc/rc.common + +START=99 +STOP=10 + +USE_PROCD=1 + +start_service() { + procd_open_instance + procd_set_param command /usr/sbin/power_button_monitor + procd_set_param respawn + procd_set_param stdout 1 + procd_set_param stderr 1 + procd_close_instance +} \ No newline at end of file diff --git a/packages/power-button-daemon/files/power_button_monitor.sh b/packages/power-button-daemon/files/power_button_monitor.sh new file mode 100644 index 0000000..ce69da3 --- /dev/null +++ b/packages/power-button-daemon/files/power_button_monitor.sh @@ -0,0 +1,57 @@ +#!/bin/sh + +DEVICE="/dev/input/event0" +LONG_PRESS_TIME=3 # seconds to trigger poweroff + +echo "Power button monitor started" +echo "Hold button for ${LONG_PRESS_TIME}s to shutdown" +logger -t pwrkey "Daemon started" + +PRESS_START=0 + +# Background checker +check_long_press() { + while true; do + if [ "$PRESS_START" -ne 0 ]; then + CURRENT_TIME=$(date +%s) + PRESS_DURATION=$((CURRENT_TIME - PRESS_START)) + + if [ "$PRESS_DURATION" -ge "$LONG_PRESS_TIME" ]; then + echo "Long press detected (${PRESS_DURATION}s) - Shutting down NOW!" + logger -t pwrkey "Long press ${PRESS_DURATION}s: poweroff triggered" + poweroff + exit 0 + fi + fi + sleep 0.2 + done +} + +# Start background checker +check_long_press & +CHECKER_PID=$! + +# Monitor button events +evtest "$DEVICE" 2>/dev/null | while read -r line; do + # Button pressed + if echo "$line" | grep -q "code 116.*value 1"; then + PRESS_START=$(date +%s) + export PRESS_START + logger -t pwrkey "Button pressed at $PRESS_START" + fi + + # Button released + if echo "$line" | grep -q "code 116.*value 0"; then + if [ "$PRESS_START" -ne 0 ]; then + CURRENT_TIME=$(date +%s) + PRESS_DURATION=$((CURRENT_TIME - PRESS_START)) + echo "Button released after ${PRESS_DURATION}s" + logger -t pwrkey "Button released: ${PRESS_DURATION}s" + fi + PRESS_START=0 + export PRESS_START + fi +done + +# Cleanup +kill $CHECKER_PID 2>/dev/null \ No newline at end of file From b65023ee858ef7ffed42e3715eab893fc2150070 Mon Sep 17 00:00:00 2001 From: Miguel Fuertes Date: Sat, 11 Oct 2025 17:47:59 +0200 Subject: [PATCH 10/94] changes --- .../files/power_button_monitor.sh | 77 ++++++++----------- 1 file changed, 32 insertions(+), 45 deletions(-) diff --git a/packages/power-button-daemon/files/power_button_monitor.sh b/packages/power-button-daemon/files/power_button_monitor.sh index ce69da3..a8a9d8d 100644 --- a/packages/power-button-daemon/files/power_button_monitor.sh +++ b/packages/power-button-daemon/files/power_button_monitor.sh @@ -1,57 +1,44 @@ #!/bin/sh DEVICE="/dev/input/event0" -LONG_PRESS_TIME=3 # seconds to trigger poweroff +LONG_PRESS_TIME=3 -echo "Power button monitor started" -echo "Hold button for ${LONG_PRESS_TIME}s to shutdown" +echo "Power button monitor started - Hold ${LONG_PRESS_TIME}s to shutdown" logger -t pwrkey "Daemon started" -PRESS_START=0 - -# Background checker -check_long_press() { - while true; do - if [ "$PRESS_START" -ne 0 ]; then +# Monitor button events and check duration in real-time +evtest "$DEVICE" 2>/dev/null | while read -r line; do + # Button pressed - start background timer + if echo "$line" | grep -q "code 116.*value 1"; then + PRESS_START=$(date +%s) + logger -t pwrkey "Button pressed" + + # Background timer to trigger poweroff + ( + sleep "$LONG_PRESS_TIME" + # Check if button is still pressed (no release event yet) + echo "Long press ${LONG_PRESS_TIME}s reached - Shutting down!" + logger -t pwrkey "Long press ${LONG_PRESS_TIME}s: poweroff triggered" + poweroff + ) & + TIMER_PID=$! + fi + + # Button released - cancel timer + if echo "$line" | grep -q "code 116.*value 0"; then + if [ -n "$TIMER_PID" ]; then + # Kill the background timer if button released early + kill "$TIMER_PID" 2>/dev/null + CURRENT_TIME=$(date +%s) PRESS_DURATION=$((CURRENT_TIME - PRESS_START)) - if [ "$PRESS_DURATION" -ge "$LONG_PRESS_TIME" ]; then - echo "Long press detected (${PRESS_DURATION}s) - Shutting down NOW!" - logger -t pwrkey "Long press ${PRESS_DURATION}s: poweroff triggered" - poweroff - exit 0 + if [ "$PRESS_DURATION" -lt "$LONG_PRESS_TIME" ]; then + echo "Button released after ${PRESS_DURATION}s - Ignored" + logger -t pwrkey "Short press ${PRESS_DURATION}s - Ignored" fi + + TIMER_PID="" fi - sleep 0.2 - done -} - -# Start background checker -check_long_press & -CHECKER_PID=$! - -# Monitor button events -evtest "$DEVICE" 2>/dev/null | while read -r line; do - # Button pressed - if echo "$line" | grep -q "code 116.*value 1"; then - PRESS_START=$(date +%s) - export PRESS_START - logger -t pwrkey "Button pressed at $PRESS_START" fi - - # Button released - if echo "$line" | grep -q "code 116.*value 0"; then - if [ "$PRESS_START" -ne 0 ]; then - CURRENT_TIME=$(date +%s) - PRESS_DURATION=$((CURRENT_TIME - PRESS_START)) - echo "Button released after ${PRESS_DURATION}s" - logger -t pwrkey "Button released: ${PRESS_DURATION}s" - fi - PRESS_START=0 - export PRESS_START - fi -done - -# Cleanup -kill $CHECKER_PID 2>/dev/null \ No newline at end of file +done \ No newline at end of file From cf92d6c109bfd0eb36a348a3ae1d0b98c89c85f4 Mon Sep 17 00:00:00 2001 From: Miguel Fuertes Date: Sat, 11 Oct 2025 17:52:26 +0200 Subject: [PATCH 11/94] changes --- diffconfig | 1 - mf86e_diffconfig | 1 - msm89xx/image/msm8916.mk | 2 +- 3 files changed, 1 insertion(+), 3 deletions(-) diff --git a/diffconfig b/diffconfig index d0f5cba..7d5ce74 100644 --- a/diffconfig +++ b/diffconfig @@ -22,7 +22,6 @@ CONFIG_PACKAGE_kmod-tun=y CONFIG_PACKAGE_kmod-udptunnel4=y CONFIG_PACKAGE_kmod-udptunnel6=y CONFIG_PACKAGE_kmod-wireguard=y -CONFIG_PACKAGE_ledcontrol=y CONFIG_PACKAGE_libattr=y CONFIG_PACKAGE_libdbus=y CONFIG_PACKAGE_libexpat=y diff --git a/mf86e_diffconfig b/mf86e_diffconfig index 0b1b59c..fcac243 100644 --- a/mf86e_diffconfig +++ b/mf86e_diffconfig @@ -22,7 +22,6 @@ CONFIG_PACKAGE_kmod-tun=y CONFIG_PACKAGE_kmod-udptunnel4=y CONFIG_PACKAGE_kmod-udptunnel6=y CONFIG_PACKAGE_kmod-wireguard=y -CONFIG_PACKAGE_ledcontrol=y CONFIG_PACKAGE_libattr=y CONFIG_PACKAGE_libdbus=y CONFIG_PACKAGE_libexpat=y diff --git a/msm89xx/image/msm8916.mk b/msm89xx/image/msm8916.mk index 1198a2b..8ee647d 100644 --- a/msm89xx/image/msm8916.mk +++ b/msm89xx/image/msm8916.mk @@ -35,7 +35,7 @@ define Device/yiming-uz801v3 FILESYSTEMS := squashfs DEVICE_PACKAGES := configs-uz801 wpad-basic-wolfssl rmtfs uci-usb-gadget \ block-mount f2fs-tools prepare-rootfs-data \ - msm-firmware-dumper + msm-firmware-dumper ledcontrol endef TARGET_DEVICES += yiming-uz801v3 From e2636e2f51857c6d21d19a6429645035c062bae3 Mon Sep 17 00:00:00 2001 From: Miguel Fuertes Date: Sat, 11 Oct 2025 18:33:49 +0200 Subject: [PATCH 12/94] changes --- display.dts | 135 ++++++++++++++++++ display_kernel | 6 + msm89xx/config-6.12 | 8 +- ...4-dts-qcom-add-msm8916-generic-mf68e.patch | 77 +++++++++- 4 files changed, 219 insertions(+), 7 deletions(-) create mode 100644 display.dts create mode 100644 display_kernel diff --git a/display.dts b/display.dts new file mode 100644 index 0000000..854ef9c --- /dev/null +++ b/display.dts @@ -0,0 +1,135 @@ +// SPDX-License-Identifier: GPL-2.0-only + +/dts-v1/; + +#include "msm8916-ufi.dtsi" +#include + +/ { + model = "MF68E 4G LTE Mobile WiFi Router"; + compatible = "generic,mf68e", "qcom,msm8916"; + + bat: battery { + compatible = "simple-battery"; + voltage-min-design-microvolt = <3400000>; + voltage-max-design-microvolt = <4350000>; + energy-full-design-microwatt-hours = <11100000>; + charge-full-design-microamp-hours = <3000000>; + + ocv-capacity-celsius = <25>; + ocv-capacity-table-0 = <4330000 100>, <4265000 95>, + <4208000 90>, <4154000 85>, <4102000 80>, + <4063000 75>, <4006000 70>, <3972000 65>, + <3931000 60>, <3880000 55>, <3841000 50>, + <3817000 45>, <3798000 40>, <3783000 35>, + <3767000 30>, <3747000 25>, <3729000 20>, + <3700000 16>, <3687000 13>, <3683000 11>, + <3681000 10>, <3680000 9>, <3678000 8>, + <3674000 7>, <3666000 6>, <3641000 5>, + <3597000 4>, <3537000 3>, <3457000 2>, + <3336000 1>, <3000000 0>; + }; + + usb_id: usb-id { + compatible = "linux,extcon-usb-gpio"; + id-gpios = <&tlmm 110 GPIO_ACTIVE_HIGH>; + pinctrl-names = "default"; + pinctrl-0 = <&usb_id_default>; + }; + + backlight: backlight { + compatible = "gpio-backlight"; + gpios = <&tlmm 98 GPIO_ACTIVE_HIGH>; + default-on; + }; +}; + +&pm8916_bms { + status = "okay"; + monitored-battery = <&bat>; + power-supplies = <&pm8916_charger>; +}; + +&pm8916_charger { + status = "okay"; + monitored-battery = <&bat>; + qcom,fast-charge-safe-current = <900000>; + qcom,fast-charge-safe-voltage = <4350000>; +}; + +/* Panel SPI ST7735S 128x128 */ +&spi5 { + status = "okay"; + + panel@0 { + compatible = "sitronix,st7735r"; + reg = <0>; + spi-max-frequency = <16000000>; + + reset-gpios = <&tlmm 25 GPIO_ACTIVE_LOW>; + dc-gpios = <&tlmm 24 GPIO_ACTIVE_HIGH>; + backlight = <&backlight>; + + width = <128>; + height = <128>; + rotation = <0>; + + vdd-supply = <&pm8916_l17>; + vddio-supply = <&pm8916_l6>; + + pinctrl-names = "default", "sleep"; + pinctrl-0 = <&panel_default>; + pinctrl-1 = <&panel_sleep>; + }; +}; + +&usb { + status = "okay"; + extcon = <&usb_id>, <&usb_id>; +}; + +&usb_hs_phy { + extcon = <&usb_id>; +}; + +&tlmm { + usb_id_default: usb-id-default-state { + pins = "gpio110"; + function = "gpio"; + drive-strength = <8>; + bias-pull-up; + }; + + panel_default: panel-default-state { + reset-pins { + pins = "gpio25"; + function = "gpio"; + drive-strength = <8>; + bias-disable; + output-high; + }; + + dc-pins { + pins = "gpio24"; + function = "gpio"; + drive-strength = <8>; + bias-disable; + }; + + enable-pins { + pins = "gpio97"; + function = "gpio"; + drive-strength = <8>; + bias-disable; + output-high; + }; + }; + + panel_sleep: panel-sleep-state { + pins = "gpio24", "gpio25", "gpio97"; + function = "gpio"; + drive-strength = <2>; + bias-pull-down; + output-low; + }; +}; diff --git a/display_kernel b/display_kernel new file mode 100644 index 0000000..4664250 --- /dev/null +++ b/display_kernel @@ -0,0 +1,6 @@ +CONFIG_SPI=y +CONFIG_SPI_QUP=y +CONFIG_DRM_MIPI_DBI=y +CONFIG_TINYDRM=y +CONFIG_TINYDRM_ST7735R=m +CONFIG_BACKLIGHT_GPIO=y diff --git a/msm89xx/config-6.12 b/msm89xx/config-6.12 index b3de424..b73786f 100644 --- a/msm89xx/config-6.12 +++ b/msm89xx/config-6.12 @@ -323,6 +323,7 @@ CONFIG_ASYMMETRIC_PUBLIC_KEY_SUBTYPE=y CONFIG_AUDIT_ARCH_COMPAT_GENERIC=y CONFIG_AUTOFS_FS=y CONFIG_BACKLIGHT_CLASS_DEVICE=y +CONFIG_BACKLIGHT_GPIO=y CONFIG_BACKLIGHT_PWM=y CONFIG_BATTERY_PM8916_BMS_VM=y CONFIG_BATTERY_PM8916_BMS=y @@ -467,6 +468,7 @@ CONFIG_DMA_SHARED_BUFFER=y CONFIG_DMA_VIRTUAL_CHANNELS=y CONFIG_DMADEVICES=y CONFIG_DNOTIFY=y +CONFIG_DRM_MIPI_DBI=y CONFIG_DST_CACHE=y CONFIG_DT_IDLE_GENPD=y CONFIG_DT_IDLE_STATES=y @@ -888,6 +890,8 @@ CONFIG_SPI_DYNAMIC=y CONFIG_SPI_GPIO=y CONFIG_SPI_MASTER=y CONFIG_SPI_QUP=y +CONFIG_SPI_QUP=y +CONFIG_SPI=y CONFIG_SPI=y CONFIG_SPLIT_PMD_PTLOCKS=y CONFIG_SPLIT_PTE_PTLOCKS=y @@ -926,6 +930,8 @@ CONFIG_TICK_CPU_ACCOUNTING=y CONFIG_TIME_NS=y CONFIG_TIMER_OF=y CONFIG_TIMER_PROBE=y +CONFIG_TINYDRM_ST7735R=m +CONFIG_TINYDRM=y CONFIG_TOOLS_SUPPORT_RELR=y CONFIG_TRACE_IRQFLAGS_NMI_SUPPORT=y CONFIG_TRANSPARENT_HUGEPAGE_ALWAYS=y @@ -991,4 +997,4 @@ CONFIG_ZLIB_INFLATE=y CONFIG_ZONE_DMA32=y CONFIG_ZSTD_COMMON=y CONFIG_ZSTD_COMPRESS=y -CONFIG_ZSTD_DECOMPRESS=y \ No newline at end of file +CONFIG_ZSTD_DECOMPRESS=y diff --git a/msm89xx/patches-6.12/802-arm64-dts-qcom-add-msm8916-generic-mf68e.patch b/msm89xx/patches-6.12/802-arm64-dts-qcom-add-msm8916-generic-mf68e.patch index 95af41f..cf9e355 100644 --- a/msm89xx/patches-6.12/802-arm64-dts-qcom-add-msm8916-generic-mf68e.patch +++ b/msm89xx/patches-6.12/802-arm64-dts-qcom-add-msm8916-generic-mf68e.patch @@ -1,15 +1,15 @@ # From: hkfuertes -# Date: Sat, 11 Oct 2025 15:45:00 +0200 -# Subject: [PATCH] arm64: dts: qcom: Add MF68E MiFi router +# Date: Sat, 11 Oct 2025 18:25:00 +0200 +# Subject: [PATCH] arm64: dts: qcom: Add MF68E MiFi router with ST7735S SPI display # # Add device tree for MF68E 4G LTE MiFi router based on MSM8916. +# Includes ST7735S 128x128 SPI display panel configuration. # # Signed-off-by: hkfuertes -Index: linux-6.12.51/arch/arm64/boot/dts/qcom/msm8916-generic-mf68e.dts -=================================================================== + --- /dev/null -+++ linux-6.12.51/arch/arm64/boot/dts/qcom/msm8916-generic-mf68e.dts -@@ -0,0 +1,70 @@ ++++ b/arch/arm64/boot/dts/qcom/msm8916-generic-mf68e.dts +@@ -0,0 +1,130 @@ +// SPDX-License-Identifier: GPL-2.0-only + +/dts-v1/; @@ -48,6 +48,12 @@ Index: linux-6.12.51/arch/arm64/boot/dts/qcom/msm8916-generic-mf68e.dts + pinctrl-names = "default"; + pinctrl-0 = <&usb_id_default>; + }; ++ ++ backlight: backlight { ++ compatible = "gpio-backlight"; ++ gpios = <&tlmm 98 GPIO_ACTIVE_HIGH>; ++ default-on; ++ }; +}; + +&pm8916_bms { @@ -63,6 +69,32 @@ Index: linux-6.12.51/arch/arm64/boot/dts/qcom/msm8916-generic-mf68e.dts + qcom,fast-charge-safe-voltage = <4350000>; +}; + ++/* ST7735S 128x128 SPI Display Panel */ ++&spi5 { ++ status = "okay"; ++ ++ panel@0 { ++ compatible = "sitronix,st7735r"; ++ reg = <0>; ++ spi-max-frequency = <16000000>; ++ ++ reset-gpios = <&tlmm 25 GPIO_ACTIVE_LOW>; ++ dc-gpios = <&tlmm 24 GPIO_ACTIVE_HIGH>; ++ backlight = <&backlight>; ++ ++ width = <128>; ++ height = <128>; ++ rotation = <0>; ++ ++ vdd-supply = <&pm8916_l17>; ++ vddio-supply = <&pm8916_l6>; ++ ++ pinctrl-names = "default", "sleep"; ++ pinctrl-0 = <&panel_default>; ++ pinctrl-1 = <&panel_sleep>; ++ }; ++}; ++ +&usb { + status = "okay"; + extcon = <&usb_id>, <&usb_id>; @@ -79,4 +111,37 @@ Index: linux-6.12.51/arch/arm64/boot/dts/qcom/msm8916-generic-mf68e.dts + drive-strength = <8>; + bias-pull-up; + }; ++ ++ panel_default: panel-default-state { ++ reset-pins { ++ pins = "gpio25"; ++ function = "gpio"; ++ drive-strength = <8>; ++ bias-disable; ++ output-high; ++ }; ++ ++ dc-pins { ++ pins = "gpio24"; ++ function = "gpio"; ++ drive-strength = <8>; ++ bias-disable; ++ }; ++ ++ enable-pins { ++ pins = "gpio97"; ++ function = "gpio"; ++ drive-strength = <8>; ++ bias-disable; ++ output-high; ++ }; ++ }; ++ ++ panel_sleep: panel-sleep-state { ++ pins = "gpio24", "gpio25", "gpio97"; ++ function = "gpio"; ++ drive-strength = <2>; ++ bias-pull-down; ++ output-low; ++ }; +}; From 8f5d1b11f18a5271f0e335a24fea6dad5e8f72d1 Mon Sep 17 00:00:00 2001 From: Miguel Fuertes Date: Sat, 11 Oct 2025 18:36:38 +0200 Subject: [PATCH 13/94] changes --- display.dts | 135 ------------------ ...4-dts-qcom-add-msm8916-generic-mf68e.patch | 6 +- 2 files changed, 3 insertions(+), 138 deletions(-) delete mode 100644 display.dts diff --git a/display.dts b/display.dts deleted file mode 100644 index 854ef9c..0000000 --- a/display.dts +++ /dev/null @@ -1,135 +0,0 @@ -// SPDX-License-Identifier: GPL-2.0-only - -/dts-v1/; - -#include "msm8916-ufi.dtsi" -#include - -/ { - model = "MF68E 4G LTE Mobile WiFi Router"; - compatible = "generic,mf68e", "qcom,msm8916"; - - bat: battery { - compatible = "simple-battery"; - voltage-min-design-microvolt = <3400000>; - voltage-max-design-microvolt = <4350000>; - energy-full-design-microwatt-hours = <11100000>; - charge-full-design-microamp-hours = <3000000>; - - ocv-capacity-celsius = <25>; - ocv-capacity-table-0 = <4330000 100>, <4265000 95>, - <4208000 90>, <4154000 85>, <4102000 80>, - <4063000 75>, <4006000 70>, <3972000 65>, - <3931000 60>, <3880000 55>, <3841000 50>, - <3817000 45>, <3798000 40>, <3783000 35>, - <3767000 30>, <3747000 25>, <3729000 20>, - <3700000 16>, <3687000 13>, <3683000 11>, - <3681000 10>, <3680000 9>, <3678000 8>, - <3674000 7>, <3666000 6>, <3641000 5>, - <3597000 4>, <3537000 3>, <3457000 2>, - <3336000 1>, <3000000 0>; - }; - - usb_id: usb-id { - compatible = "linux,extcon-usb-gpio"; - id-gpios = <&tlmm 110 GPIO_ACTIVE_HIGH>; - pinctrl-names = "default"; - pinctrl-0 = <&usb_id_default>; - }; - - backlight: backlight { - compatible = "gpio-backlight"; - gpios = <&tlmm 98 GPIO_ACTIVE_HIGH>; - default-on; - }; -}; - -&pm8916_bms { - status = "okay"; - monitored-battery = <&bat>; - power-supplies = <&pm8916_charger>; -}; - -&pm8916_charger { - status = "okay"; - monitored-battery = <&bat>; - qcom,fast-charge-safe-current = <900000>; - qcom,fast-charge-safe-voltage = <4350000>; -}; - -/* Panel SPI ST7735S 128x128 */ -&spi5 { - status = "okay"; - - panel@0 { - compatible = "sitronix,st7735r"; - reg = <0>; - spi-max-frequency = <16000000>; - - reset-gpios = <&tlmm 25 GPIO_ACTIVE_LOW>; - dc-gpios = <&tlmm 24 GPIO_ACTIVE_HIGH>; - backlight = <&backlight>; - - width = <128>; - height = <128>; - rotation = <0>; - - vdd-supply = <&pm8916_l17>; - vddio-supply = <&pm8916_l6>; - - pinctrl-names = "default", "sleep"; - pinctrl-0 = <&panel_default>; - pinctrl-1 = <&panel_sleep>; - }; -}; - -&usb { - status = "okay"; - extcon = <&usb_id>, <&usb_id>; -}; - -&usb_hs_phy { - extcon = <&usb_id>; -}; - -&tlmm { - usb_id_default: usb-id-default-state { - pins = "gpio110"; - function = "gpio"; - drive-strength = <8>; - bias-pull-up; - }; - - panel_default: panel-default-state { - reset-pins { - pins = "gpio25"; - function = "gpio"; - drive-strength = <8>; - bias-disable; - output-high; - }; - - dc-pins { - pins = "gpio24"; - function = "gpio"; - drive-strength = <8>; - bias-disable; - }; - - enable-pins { - pins = "gpio97"; - function = "gpio"; - drive-strength = <8>; - bias-disable; - output-high; - }; - }; - - panel_sleep: panel-sleep-state { - pins = "gpio24", "gpio25", "gpio97"; - function = "gpio"; - drive-strength = <2>; - bias-pull-down; - output-low; - }; -}; diff --git a/msm89xx/patches-6.12/802-arm64-dts-qcom-add-msm8916-generic-mf68e.patch b/msm89xx/patches-6.12/802-arm64-dts-qcom-add-msm8916-generic-mf68e.patch index cf9e355..2cf5797 100644 --- a/msm89xx/patches-6.12/802-arm64-dts-qcom-add-msm8916-generic-mf68e.patch +++ b/msm89xx/patches-6.12/802-arm64-dts-qcom-add-msm8916-generic-mf68e.patch @@ -1,5 +1,5 @@ # From: hkfuertes -# Date: Sat, 11 Oct 2025 18:25:00 +0200 +# Date: Sat, 11 Oct 2025 18:35:00 +0200 # Subject: [PATCH] arm64: dts: qcom: Add MF68E MiFi router with ST7735S SPI display # # Add device tree for MF68E 4G LTE MiFi router based on MSM8916. @@ -9,7 +9,7 @@ --- /dev/null +++ b/arch/arm64/boot/dts/qcom/msm8916-generic-mf68e.dts -@@ -0,0 +1,130 @@ +@@ -0,0 +1,129 @@ +// SPDX-License-Identifier: GPL-2.0-only + +/dts-v1/; @@ -70,7 +70,7 @@ +}; + +/* ST7735S 128x128 SPI Display Panel */ -+&spi5 { ++&spi0 { + status = "okay"; + + panel@0 { From f030b7d1ccf0882535b90211991d458eb58c9e39 Mon Sep 17 00:00:00 2001 From: Miguel Fuertes Date: Sun, 12 Oct 2025 00:21:26 +0200 Subject: [PATCH 14/94] changes --- ...rm64-dts-qcom-add-msm8916-generic-mf68e.patch | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/msm89xx/patches-6.12/802-arm64-dts-qcom-add-msm8916-generic-mf68e.patch b/msm89xx/patches-6.12/802-arm64-dts-qcom-add-msm8916-generic-mf68e.patch index 2cf5797..6f9f4da 100644 --- a/msm89xx/patches-6.12/802-arm64-dts-qcom-add-msm8916-generic-mf68e.patch +++ b/msm89xx/patches-6.12/802-arm64-dts-qcom-add-msm8916-generic-mf68e.patch @@ -1,5 +1,5 @@ # From: hkfuertes -# Date: Sat, 11 Oct 2025 18:35:00 +0200 +# Date: Sun, 12 Oct 2025 00:18:00 +0200 # Subject: [PATCH] arm64: dts: qcom: Add MF68E MiFi router with ST7735S SPI display # # Add device tree for MF68E 4G LTE MiFi router based on MSM8916. @@ -9,7 +9,7 @@ --- /dev/null +++ b/arch/arm64/boot/dts/qcom/msm8916-generic-mf68e.dts -@@ -0,0 +1,129 @@ +@@ -0,0 +1,138 @@ +// SPDX-License-Identifier: GPL-2.0-only + +/dts-v1/; @@ -70,7 +70,7 @@ +}; + +/* ST7735S 128x128 SPI Display Panel */ -+&spi0 { ++&blsp_spi5 { + status = "okay"; + + panel@0 { @@ -95,6 +95,16 @@ + }; +}; + ++/* Define L17 regulator for display VDD (2.85V) */ ++&rpm_requests { ++ pm8916-regulators { ++ pm8916_l17: l17 { ++ regulator-min-microvolt = <2850000>; ++ regulator-max-microvolt = <2850000>; ++ }; ++ }; ++}; ++ +&usb { + status = "okay"; + extcon = <&usb_id>, <&usb_id>; From 0d269b046e688d306b9b05fe3ae2162d4380345f Mon Sep 17 00:00:00 2001 From: Miguel Fuertes Date: Sun, 12 Oct 2025 00:32:31 +0200 Subject: [PATCH 15/94] changes --- .../802-arm64-dts-qcom-add-msm8916-generic-mf68e.patch | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/msm89xx/patches-6.12/802-arm64-dts-qcom-add-msm8916-generic-mf68e.patch b/msm89xx/patches-6.12/802-arm64-dts-qcom-add-msm8916-generic-mf68e.patch index 6f9f4da..58712f9 100644 --- a/msm89xx/patches-6.12/802-arm64-dts-qcom-add-msm8916-generic-mf68e.patch +++ b/msm89xx/patches-6.12/802-arm64-dts-qcom-add-msm8916-generic-mf68e.patch @@ -9,7 +9,7 @@ --- /dev/null +++ b/arch/arm64/boot/dts/qcom/msm8916-generic-mf68e.dts -@@ -0,0 +1,138 @@ +@@ -0,0 +1,145 @@ +// SPDX-License-Identifier: GPL-2.0-only + +/dts-v1/; From 01d32cad94964673358019272b49bed2f72f4692 Mon Sep 17 00:00:00 2001 From: Miguel Fuertes Date: Sun, 12 Oct 2025 09:19:59 +0200 Subject: [PATCH 16/94] changes --- ...4-dts-qcom-add-msm8916-generic-mf68e.patch | 249 ++++++++++++++---- 1 file changed, 195 insertions(+), 54 deletions(-) diff --git a/msm89xx/patches-6.12/802-arm64-dts-qcom-add-msm8916-generic-mf68e.patch b/msm89xx/patches-6.12/802-arm64-dts-qcom-add-msm8916-generic-mf68e.patch index 58712f9..bce18bd 100644 --- a/msm89xx/patches-6.12/802-arm64-dts-qcom-add-msm8916-generic-mf68e.patch +++ b/msm89xx/patches-6.12/802-arm64-dts-qcom-add-msm8916-generic-mf68e.patch @@ -1,21 +1,16 @@ -# From: hkfuertes -# Date: Sun, 12 Oct 2025 00:18:00 +0200 -# Subject: [PATCH] arm64: dts: qcom: Add MF68E MiFi router with ST7735S SPI display -# -# Add device tree for MF68E 4G LTE MiFi router based on MSM8916. -# Includes ST7735S 128x128 SPI display panel configuration. -# -# Signed-off-by: hkfuertes - +Index: linux-6.12.51/arch/arm64/boot/dts/qcom/msm8916-generic-mf68e.dts +=================================================================== --- /dev/null -+++ b/arch/arm64/boot/dts/qcom/msm8916-generic-mf68e.dts -@@ -0,0 +1,145 @@ ++++ linux-6.12.51/arch/arm64/boot/dts/qcom/msm8916-generic-mf68e.dts +@@ -0,0 +1,293 @@ +// SPDX-License-Identifier: GPL-2.0-only + +/dts-v1/; + +#include "msm8916-ufi.dtsi" +#include ++#include ++#include + +/ { + model = "MF68E 4G LTE Mobile WiFi Router"; @@ -54,6 +49,151 @@ + gpios = <&tlmm 98 GPIO_ACTIVE_HIGH>; + default-on; + }; ++ ++ gpio-keys { ++ compatible = "gpio-keys"; ++ pinctrl-names = "default"; ++ pinctrl-0 = <&button_default>; ++ ++ label = "GPIO Buttons"; ++ ++ button-wps { ++ label = "WPS"; ++ gpios = <&tlmm 27 GPIO_ACTIVE_LOW>; ++ linux,code = ; ++ debounce-interval = <15>; ++ }; ++ ++ button-reset { ++ label = "Reset"; ++ gpios = <&tlmm 102 GPIO_ACTIVE_LOW>; ++ linux,code = ; ++ debounce-interval = <15>; ++ }; ++ }; ++ ++ leds { ++ compatible = "gpio-leds"; ++ pinctrl-names = "default"; ++ pinctrl-0 = <&led_default>; ++ ++ led-bat-1 { ++ color = ; ++ function = LED_FUNCTION_CHARGING; ++ gpios = <&tlmm 1 GPIO_ACTIVE_HIGH>; ++ default-state = "off"; ++ }; ++ ++ led-bat-2 { ++ color = ; ++ function = LED_FUNCTION_CHARGING; ++ gpios = <&tlmm 0 GPIO_ACTIVE_HIGH>; ++ default-state = "off"; ++ }; ++ ++ led-bat-3 { ++ color = ; ++ function = LED_FUNCTION_CHARGING; ++ gpios = <&tlmm 91 GPIO_ACTIVE_HIGH>; ++ default-state = "off"; ++ }; ++ ++ led-bat-4 { ++ color = ; ++ function = LED_FUNCTION_CHARGING; ++ gpios = <&tlmm 100 GPIO_ACTIVE_HIGH>; ++ default-state = "off"; ++ }; ++ ++ led-wifi { ++ color = ; ++ function = LED_FUNCTION_WLAN; ++ gpios = <&tlmm 73 GPIO_ACTIVE_HIGH>; ++ linux,default-trigger = "phy0tx"; ++ }; ++ ++ led-4g-1 { ++ color = ; ++ function = LED_FUNCTION_WAN; ++ gpios = <&tlmm 84 GPIO_ACTIVE_HIGH>; ++ default-state = "off"; ++ }; ++ ++ led-4g-2 { ++ color = ; ++ function = LED_FUNCTION_WAN; ++ gpios = <&tlmm 85 GPIO_ACTIVE_HIGH>; ++ default-state = "off"; ++ }; ++ }; ++ ++ esim-control { ++ compatible = "gpio-leds"; ++ pinctrl-names = "default"; ++ pinctrl-0 = <&esim_default>; ++ ++ esim1 { ++ gpios = <&tlmm 119 GPIO_ACTIVE_HIGH>; ++ default-state = "on"; ++ }; ++ ++ esim2 { ++ gpios = <&tlmm 112 GPIO_ACTIVE_HIGH>; ++ default-state = "off"; ++ }; ++ ++ esim3 { ++ gpios = <&tlmm 12 GPIO_ACTIVE_HIGH>; ++ default-state = "off"; ++ }; ++ }; ++ ++ sim-detect { ++ compatible = "gpio-keys"; ++ pinctrl-names = "default"; ++ pinctrl-0 = <&sim_default>; ++ ++ sim-hotplug { ++ label = "SIM Hotplug"; ++ gpios = <&tlmm 114 GPIO_ACTIVE_LOW>; ++ linux,code = ; ++ linux,input-type = ; ++ }; ++ }; ++ ++ modem-detect { ++ compatible = "gpio-keys"; ++ ++ modem-type { ++ gpios = <&tlmm 72 GPIO_ACTIVE_HIGH>; ++ linux,code = ; ++ }; ++ }; ++}; ++ ++&blsp_spi5 { ++ status = "okay"; ++ ++ panel@0 { ++ compatible = "sitronix,st7735r"; ++ reg = <0>; ++ spi-max-frequency = <16000000>; ++ ++ reset-gpios = <&tlmm 25 GPIO_ACTIVE_LOW>; ++ dc-gpios = <&tlmm 30 GPIO_ACTIVE_HIGH>; ++ backlight = <&backlight>; ++ ++ width = <128>; ++ height = <128>; ++ rotation = <0>; ++ ++ vdd-supply = <&pm8916_l17>; ++ vddio-supply = <&pm8916_l6>; ++ ++ pinctrl-names = "default", "sleep"; ++ pinctrl-0 = <&panel_default>; ++ pinctrl-1 = <&panel_sleep>; ++ }; +}; + +&pm8916_bms { @@ -69,33 +209,6 @@ + qcom,fast-charge-safe-voltage = <4350000>; +}; + -+/* ST7735S 128x128 SPI Display Panel */ -+&blsp_spi5 { -+ status = "okay"; -+ -+ panel@0 { -+ compatible = "sitronix,st7735r"; -+ reg = <0>; -+ spi-max-frequency = <16000000>; -+ -+ reset-gpios = <&tlmm 25 GPIO_ACTIVE_LOW>; -+ dc-gpios = <&tlmm 24 GPIO_ACTIVE_HIGH>; -+ backlight = <&backlight>; -+ -+ width = <128>; -+ height = <128>; -+ rotation = <0>; -+ -+ vdd-supply = <&pm8916_l17>; -+ vddio-supply = <&pm8916_l6>; -+ -+ pinctrl-names = "default", "sleep"; -+ pinctrl-0 = <&panel_default>; -+ pinctrl-1 = <&panel_sleep>; -+ }; -+}; -+ -+/* Define L17 regulator for display VDD (2.85V) */ +&rpm_requests { + pm8916-regulators { + pm8916_l17: l17 { @@ -115,29 +228,35 @@ +}; + +&tlmm { -+ usb_id_default: usb-id-default-state { -+ pins = "gpio110"; ++ button_default: button-default-state { ++ pins = "gpio27", "gpio102"; + function = "gpio"; -+ drive-strength = <8>; ++ drive-strength = <2>; + bias-pull-up; + }; -+ ++ ++ esim_default: esim-default-state { ++ pins = "gpio12", "gpio112", "gpio119"; ++ function = "gpio"; ++ drive-strength = <2>; ++ bias-disable; ++ }; ++ ++ led_default: led-default-state { ++ pins = "gpio0", "gpio1", "gpio72", "gpio73", "gpio84", "gpio85", "gpio91", "gpio100"; ++ function = "gpio"; ++ drive-strength = <2>; ++ bias-disable; ++ }; ++ + panel_default: panel-default-state { -+ reset-pins { -+ pins = "gpio25"; -+ function = "gpio"; -+ drive-strength = <8>; -+ bias-disable; -+ output-high; -+ }; -+ + dc-pins { -+ pins = "gpio24"; ++ pins = "gpio30"; + function = "gpio"; + drive-strength = <8>; + bias-disable; + }; -+ ++ + enable-pins { + pins = "gpio97"; + function = "gpio"; @@ -145,13 +264,35 @@ + bias-disable; + output-high; + }; ++ ++ reset-pins { ++ pins = "gpio25"; ++ function = "gpio"; ++ drive-strength = <8>; ++ bias-disable; ++ output-high; ++ }; + }; -+ ++ + panel_sleep: panel-sleep-state { -+ pins = "gpio24", "gpio25", "gpio97"; ++ pins = "gpio25", "gpio30", "gpio97"; + function = "gpio"; + drive-strength = <2>; + bias-pull-down; + output-low; + }; ++ ++ sim_default: sim-default-state { ++ pins = "gpio114"; ++ function = "gpio"; ++ drive-strength = <2>; ++ bias-pull-up; ++ }; ++ ++ usb_id_default: usb-id-default-state { ++ pins = "gpio110"; ++ function = "gpio"; ++ drive-strength = <8>; ++ bias-pull-up; ++ }; +}; From 53aa9a7798618b53297abee0c0d8b9ab05eb6efd Mon Sep 17 00:00:00 2001 From: Miguel Fuertes Date: Sun, 12 Oct 2025 10:10:26 +0200 Subject: [PATCH 17/94] back to begining --- msm89xx/config-6.12 | 8 +- ...4-dts-qcom-add-msm8916-generic-mf68e.patch | 234 +----------------- 2 files changed, 10 insertions(+), 232 deletions(-) diff --git a/msm89xx/config-6.12 b/msm89xx/config-6.12 index b73786f..b3de424 100644 --- a/msm89xx/config-6.12 +++ b/msm89xx/config-6.12 @@ -323,7 +323,6 @@ CONFIG_ASYMMETRIC_PUBLIC_KEY_SUBTYPE=y CONFIG_AUDIT_ARCH_COMPAT_GENERIC=y CONFIG_AUTOFS_FS=y CONFIG_BACKLIGHT_CLASS_DEVICE=y -CONFIG_BACKLIGHT_GPIO=y CONFIG_BACKLIGHT_PWM=y CONFIG_BATTERY_PM8916_BMS_VM=y CONFIG_BATTERY_PM8916_BMS=y @@ -468,7 +467,6 @@ CONFIG_DMA_SHARED_BUFFER=y CONFIG_DMA_VIRTUAL_CHANNELS=y CONFIG_DMADEVICES=y CONFIG_DNOTIFY=y -CONFIG_DRM_MIPI_DBI=y CONFIG_DST_CACHE=y CONFIG_DT_IDLE_GENPD=y CONFIG_DT_IDLE_STATES=y @@ -890,8 +888,6 @@ CONFIG_SPI_DYNAMIC=y CONFIG_SPI_GPIO=y CONFIG_SPI_MASTER=y CONFIG_SPI_QUP=y -CONFIG_SPI_QUP=y -CONFIG_SPI=y CONFIG_SPI=y CONFIG_SPLIT_PMD_PTLOCKS=y CONFIG_SPLIT_PTE_PTLOCKS=y @@ -930,8 +926,6 @@ CONFIG_TICK_CPU_ACCOUNTING=y CONFIG_TIME_NS=y CONFIG_TIMER_OF=y CONFIG_TIMER_PROBE=y -CONFIG_TINYDRM_ST7735R=m -CONFIG_TINYDRM=y CONFIG_TOOLS_SUPPORT_RELR=y CONFIG_TRACE_IRQFLAGS_NMI_SUPPORT=y CONFIG_TRANSPARENT_HUGEPAGE_ALWAYS=y @@ -997,4 +991,4 @@ CONFIG_ZLIB_INFLATE=y CONFIG_ZONE_DMA32=y CONFIG_ZSTD_COMMON=y CONFIG_ZSTD_COMPRESS=y -CONFIG_ZSTD_DECOMPRESS=y +CONFIG_ZSTD_DECOMPRESS=y \ No newline at end of file diff --git a/msm89xx/patches-6.12/802-arm64-dts-qcom-add-msm8916-generic-mf68e.patch b/msm89xx/patches-6.12/802-arm64-dts-qcom-add-msm8916-generic-mf68e.patch index bce18bd..bb53fd5 100644 --- a/msm89xx/patches-6.12/802-arm64-dts-qcom-add-msm8916-generic-mf68e.patch +++ b/msm89xx/patches-6.12/802-arm64-dts-qcom-add-msm8916-generic-mf68e.patch @@ -1,16 +1,21 @@ +# From: hkfuertes +# Date: Sat, 11 Oct 2025 15:45:00 +0200 +# Subject: [PATCH] arm64: dts: qcom: Add MF68E MiFi router +# +# Add device tree for MF68E 4G LTE MiFi router based on MSM8916. +# +# Signed-off-by: hkfuertes Index: linux-6.12.51/arch/arm64/boot/dts/qcom/msm8916-generic-mf68e.dts =================================================================== --- /dev/null +++ linux-6.12.51/arch/arm64/boot/dts/qcom/msm8916-generic-mf68e.dts -@@ -0,0 +1,293 @@ +@@ -0,0 +1,70 @@ +// SPDX-License-Identifier: GPL-2.0-only + +/dts-v1/; + +#include "msm8916-ufi.dtsi" +#include -+#include -+#include + +/ { + model = "MF68E 4G LTE Mobile WiFi Router"; @@ -43,157 +48,6 @@ Index: linux-6.12.51/arch/arm64/boot/dts/qcom/msm8916-generic-mf68e.dts + pinctrl-names = "default"; + pinctrl-0 = <&usb_id_default>; + }; -+ -+ backlight: backlight { -+ compatible = "gpio-backlight"; -+ gpios = <&tlmm 98 GPIO_ACTIVE_HIGH>; -+ default-on; -+ }; -+ -+ gpio-keys { -+ compatible = "gpio-keys"; -+ pinctrl-names = "default"; -+ pinctrl-0 = <&button_default>; -+ -+ label = "GPIO Buttons"; -+ -+ button-wps { -+ label = "WPS"; -+ gpios = <&tlmm 27 GPIO_ACTIVE_LOW>; -+ linux,code = ; -+ debounce-interval = <15>; -+ }; -+ -+ button-reset { -+ label = "Reset"; -+ gpios = <&tlmm 102 GPIO_ACTIVE_LOW>; -+ linux,code = ; -+ debounce-interval = <15>; -+ }; -+ }; -+ -+ leds { -+ compatible = "gpio-leds"; -+ pinctrl-names = "default"; -+ pinctrl-0 = <&led_default>; -+ -+ led-bat-1 { -+ color = ; -+ function = LED_FUNCTION_CHARGING; -+ gpios = <&tlmm 1 GPIO_ACTIVE_HIGH>; -+ default-state = "off"; -+ }; -+ -+ led-bat-2 { -+ color = ; -+ function = LED_FUNCTION_CHARGING; -+ gpios = <&tlmm 0 GPIO_ACTIVE_HIGH>; -+ default-state = "off"; -+ }; -+ -+ led-bat-3 { -+ color = ; -+ function = LED_FUNCTION_CHARGING; -+ gpios = <&tlmm 91 GPIO_ACTIVE_HIGH>; -+ default-state = "off"; -+ }; -+ -+ led-bat-4 { -+ color = ; -+ function = LED_FUNCTION_CHARGING; -+ gpios = <&tlmm 100 GPIO_ACTIVE_HIGH>; -+ default-state = "off"; -+ }; -+ -+ led-wifi { -+ color = ; -+ function = LED_FUNCTION_WLAN; -+ gpios = <&tlmm 73 GPIO_ACTIVE_HIGH>; -+ linux,default-trigger = "phy0tx"; -+ }; -+ -+ led-4g-1 { -+ color = ; -+ function = LED_FUNCTION_WAN; -+ gpios = <&tlmm 84 GPIO_ACTIVE_HIGH>; -+ default-state = "off"; -+ }; -+ -+ led-4g-2 { -+ color = ; -+ function = LED_FUNCTION_WAN; -+ gpios = <&tlmm 85 GPIO_ACTIVE_HIGH>; -+ default-state = "off"; -+ }; -+ }; -+ -+ esim-control { -+ compatible = "gpio-leds"; -+ pinctrl-names = "default"; -+ pinctrl-0 = <&esim_default>; -+ -+ esim1 { -+ gpios = <&tlmm 119 GPIO_ACTIVE_HIGH>; -+ default-state = "on"; -+ }; -+ -+ esim2 { -+ gpios = <&tlmm 112 GPIO_ACTIVE_HIGH>; -+ default-state = "off"; -+ }; -+ -+ esim3 { -+ gpios = <&tlmm 12 GPIO_ACTIVE_HIGH>; -+ default-state = "off"; -+ }; -+ }; -+ -+ sim-detect { -+ compatible = "gpio-keys"; -+ pinctrl-names = "default"; -+ pinctrl-0 = <&sim_default>; -+ -+ sim-hotplug { -+ label = "SIM Hotplug"; -+ gpios = <&tlmm 114 GPIO_ACTIVE_LOW>; -+ linux,code = ; -+ linux,input-type = ; -+ }; -+ }; -+ -+ modem-detect { -+ compatible = "gpio-keys"; -+ -+ modem-type { -+ gpios = <&tlmm 72 GPIO_ACTIVE_HIGH>; -+ linux,code = ; -+ }; -+ }; -+}; -+ -+&blsp_spi5 { -+ status = "okay"; -+ -+ panel@0 { -+ compatible = "sitronix,st7735r"; -+ reg = <0>; -+ spi-max-frequency = <16000000>; -+ -+ reset-gpios = <&tlmm 25 GPIO_ACTIVE_LOW>; -+ dc-gpios = <&tlmm 30 GPIO_ACTIVE_HIGH>; -+ backlight = <&backlight>; -+ -+ width = <128>; -+ height = <128>; -+ rotation = <0>; -+ -+ vdd-supply = <&pm8916_l17>; -+ vddio-supply = <&pm8916_l6>; -+ -+ pinctrl-names = "default", "sleep"; -+ pinctrl-0 = <&panel_default>; -+ pinctrl-1 = <&panel_sleep>; -+ }; +}; + +&pm8916_bms { @@ -209,15 +63,6 @@ Index: linux-6.12.51/arch/arm64/boot/dts/qcom/msm8916-generic-mf68e.dts + qcom,fast-charge-safe-voltage = <4350000>; +}; + -+&rpm_requests { -+ pm8916-regulators { -+ pm8916_l17: l17 { -+ regulator-min-microvolt = <2850000>; -+ regulator-max-microvolt = <2850000>; -+ }; -+ }; -+}; -+ +&usb { + status = "okay"; + extcon = <&usb_id>, <&usb_id>; @@ -228,71 +73,10 @@ Index: linux-6.12.51/arch/arm64/boot/dts/qcom/msm8916-generic-mf68e.dts +}; + +&tlmm { -+ button_default: button-default-state { -+ pins = "gpio27", "gpio102"; -+ function = "gpio"; -+ drive-strength = <2>; -+ bias-pull-up; -+ }; -+ -+ esim_default: esim-default-state { -+ pins = "gpio12", "gpio112", "gpio119"; -+ function = "gpio"; -+ drive-strength = <2>; -+ bias-disable; -+ }; -+ -+ led_default: led-default-state { -+ pins = "gpio0", "gpio1", "gpio72", "gpio73", "gpio84", "gpio85", "gpio91", "gpio100"; -+ function = "gpio"; -+ drive-strength = <2>; -+ bias-disable; -+ }; -+ -+ panel_default: panel-default-state { -+ dc-pins { -+ pins = "gpio30"; -+ function = "gpio"; -+ drive-strength = <8>; -+ bias-disable; -+ }; -+ -+ enable-pins { -+ pins = "gpio97"; -+ function = "gpio"; -+ drive-strength = <8>; -+ bias-disable; -+ output-high; -+ }; -+ -+ reset-pins { -+ pins = "gpio25"; -+ function = "gpio"; -+ drive-strength = <8>; -+ bias-disable; -+ output-high; -+ }; -+ }; -+ -+ panel_sleep: panel-sleep-state { -+ pins = "gpio25", "gpio30", "gpio97"; -+ function = "gpio"; -+ drive-strength = <2>; -+ bias-pull-down; -+ output-low; -+ }; -+ -+ sim_default: sim-default-state { -+ pins = "gpio114"; -+ function = "gpio"; -+ drive-strength = <2>; -+ bias-pull-up; -+ }; -+ + usb_id_default: usb-id-default-state { + pins = "gpio110"; + function = "gpio"; + drive-strength = <8>; + bias-pull-up; + }; -+}; ++}; \ No newline at end of file From eb53c1f0fdba184a4cbcec16e223f85d98726d48 Mon Sep 17 00:00:00 2001 From: Miguel Fuertes Date: Sun, 12 Oct 2025 11:51:57 +0200 Subject: [PATCH 18/94] changed manually --- msm89xx/config-6.12 | 24 ++++++++++ ...4-dts-qcom-add-msm8916-generic-mf68e.patch | 45 +++++++++++++++---- 2 files changed, 60 insertions(+), 9 deletions(-) diff --git a/msm89xx/config-6.12 b/msm89xx/config-6.12 index b3de424..b27361b 100644 --- a/msm89xx/config-6.12 +++ b/msm89xx/config-6.12 @@ -35,6 +35,8 @@ # CONFIG_DEVFREQ_GOV_POWERSAVE is not set # CONFIG_DEVFREQ_GOV_USERSPACE is not set # CONFIG_DEVFREQ_THERMAL is not set +# CONFIG_DRM_MSM is not set +# CONFIG_EC_ACER_ASPIRE1 is not set # CONFIG_EXPERT is not set # CONFIG_FIPS_SIGNATURE_SELFTEST is not set # CONFIG_FORTIFY_SOURCE is not set @@ -69,6 +71,7 @@ # CONFIG_KPSS_XCC is not set # CONFIG_LEDS_BRIGHTNESS_HW_CHANGED is not set # CONFIG_LEDS_TRIGGER_NETDEV is not set +# CONFIG_LOGO is not set # CONFIG_LWTUNNEL_BPF is not set # CONFIG_MAILBOX_TEST is not set # CONFIG_MFD_HI6421_SPMI is not set @@ -323,6 +326,8 @@ CONFIG_ASYMMETRIC_PUBLIC_KEY_SUBTYPE=y CONFIG_AUDIT_ARCH_COMPAT_GENERIC=y CONFIG_AUTOFS_FS=y CONFIG_BACKLIGHT_CLASS_DEVICE=y +CONFIG_BACKLIGHT_CLASS_DEVICE=y +CONFIG_BACKLIGHT_GPIO=y CONFIG_BACKLIGHT_PWM=y CONFIG_BATTERY_PM8916_BMS_VM=y CONFIG_BATTERY_PM8916_BMS=y @@ -467,6 +472,14 @@ CONFIG_DMA_SHARED_BUFFER=y CONFIG_DMA_VIRTUAL_CHANNELS=y CONFIG_DMADEVICES=y CONFIG_DNOTIFY=y +CONFIG_DRM_BRIDGE=y +CONFIG_DRM_FBDEV_EMULATION=y +CONFIG_DRM_FBDEV_OVERALLOC=100 +CONFIG_DRM_GEM_SHMEM_HELPER=y +CONFIG_DRM_KMS_HELPER=y +CONFIG_DRM_MIPI_DBI=y +CONFIG_DRM_PANEL_SITRONIX_ST7735R=y +CONFIG_DRM=y CONFIG_DST_CACHE=y CONFIG_DT_IDLE_GENPD=y CONFIG_DT_IDLE_STATES=y @@ -484,7 +497,16 @@ CONFIG_EXTCON_USB_GPIO=y CONFIG_EXTCON=y CONFIG_FANOTIFY=y CONFIG_FAT_FS=y +CONFIG_FB_CFB_COPYAREA=y +CONFIG_FB_CFB_FILLRECT=y +CONFIG_FB_CFB_IMAGEBLIT=y CONFIG_FB_CORE=y +CONFIG_FB_DEFERRED_IO=y +CONFIG_FB_SYS_COPYAREA=y +CONFIG_FB_SYS_FILLRECT=y +CONFIG_FB_SYS_FOPS=y +CONFIG_FB_SYS_IMAGEBLIT=y +CONFIG_FB=y CONFIG_FB=y CONFIG_FHANDLE=y CONFIG_FIX_EARLYCON_MEM=y @@ -638,6 +660,7 @@ CONFIG_LOCK_SPIN_ON_OWNER=y CONFIG_LOGO_LINUX_CLUT224=y CONFIG_LOGO_LINUX_MONO=y CONFIG_LOGO_LINUX_VGA16=y +CONFIG_LOGO=n CONFIG_LOGO=y CONFIG_LRU_GEN_WALKS_MMU=y CONFIG_LSM="landlock,lockdown,yama,loadpin,safesetid,integrity,bpf" @@ -962,6 +985,7 @@ CONFIG_UTS_NS=y CONFIG_VDSO_GETRANDOM=y CONFIG_VFAT_FS=y CONFIG_VIDEO=y +CONFIG_VIDEOMODE_HELPERS=y CONFIG_VIRTIO_ANCHOR=y CONFIG_VIRTIO=y CONFIG_VLAN_8021Q_GVRP=y diff --git a/msm89xx/patches-6.12/802-arm64-dts-qcom-add-msm8916-generic-mf68e.patch b/msm89xx/patches-6.12/802-arm64-dts-qcom-add-msm8916-generic-mf68e.patch index bb53fd5..27c8d10 100644 --- a/msm89xx/patches-6.12/802-arm64-dts-qcom-add-msm8916-generic-mf68e.patch +++ b/msm89xx/patches-6.12/802-arm64-dts-qcom-add-msm8916-generic-mf68e.patch @@ -1,15 +1,8 @@ -# From: hkfuertes -# Date: Sat, 11 Oct 2025 15:45:00 +0200 -# Subject: [PATCH] arm64: dts: qcom: Add MF68E MiFi router -# -# Add device tree for MF68E 4G LTE MiFi router based on MSM8916. -# -# Signed-off-by: hkfuertes Index: linux-6.12.51/arch/arm64/boot/dts/qcom/msm8916-generic-mf68e.dts =================================================================== --- /dev/null +++ linux-6.12.51/arch/arm64/boot/dts/qcom/msm8916-generic-mf68e.dts -@@ -0,0 +1,70 @@ +@@ -0,0 +1,104 @@ +// SPDX-License-Identifier: GPL-2.0-only + +/dts-v1/; @@ -48,6 +41,32 @@ Index: linux-6.12.51/arch/arm64/boot/dts/qcom/msm8916-generic-mf68e.dts + pinctrl-names = "default"; + pinctrl-0 = <&usb_id_default>; + }; ++ ++ backlight: backlight { ++ compatible = "gpio-backlight"; ++ gpios = <&tlmm 98 GPIO_ACTIVE_HIGH>; ++ default-on; ++ }; ++}; ++ ++&blsp_spi5 { ++ status = "okay"; ++ ++ panel@0 { ++ compatible = "sitronix,st7735r"; ++ reg = <0>; ++ spi-max-frequency = <32000000>; ++ ++ reset-gpios = <&tlmm 25 GPIO_ACTIVE_LOW>; ++ dc-gpios = <&tlmm 30 GPIO_ACTIVE_HIGH>; ++ backlight = <&backlight>; ++ ++ width = <128>; ++ height = <128>; ++ ++ pinctrl-names = "default"; ++ pinctrl-0 = <&panel_default>; ++ }; +}; + +&pm8916_bms { @@ -73,10 +92,18 @@ Index: linux-6.12.51/arch/arm64/boot/dts/qcom/msm8916-generic-mf68e.dts +}; + +&tlmm { ++ panel_default: panel-default-state { ++ pins = "gpio25", "gpio30", "gpio97"; ++ function = "gpio"; ++ drive-strength = <8>; ++ bias-disable; ++ output-high; ++ }; ++ + usb_id_default: usb-id-default-state { + pins = "gpio110"; + function = "gpio"; + drive-strength = <8>; + bias-pull-up; + }; -+}; \ No newline at end of file ++}; From 00ec7e52d91b1f9eb6491aa6419ed37a8bd2aedd Mon Sep 17 00:00:00 2001 From: Miguel Fuertes Date: Sun, 12 Oct 2025 11:54:02 +0200 Subject: [PATCH 19/94] changes --- msm89xx/config-6.12 | 5 ----- 1 file changed, 5 deletions(-) diff --git a/msm89xx/config-6.12 b/msm89xx/config-6.12 index b27361b..b9246a3 100644 --- a/msm89xx/config-6.12 +++ b/msm89xx/config-6.12 @@ -657,11 +657,6 @@ CONFIG_LOCALVERSION_AUTO=y CONFIG_LOCALVERSION="-msm8916" CONFIG_LOCK_DEBUGGING_SUPPORT=y CONFIG_LOCK_SPIN_ON_OWNER=y -CONFIG_LOGO_LINUX_CLUT224=y -CONFIG_LOGO_LINUX_MONO=y -CONFIG_LOGO_LINUX_VGA16=y -CONFIG_LOGO=n -CONFIG_LOGO=y CONFIG_LRU_GEN_WALKS_MMU=y CONFIG_LSM="landlock,lockdown,yama,loadpin,safesetid,integrity,bpf" CONFIG_LWTUNNEL=y From 12a7c259dd44c252f880f301334ecd75e6fe1743 Mon Sep 17 00:00:00 2001 From: Miguel Fuertes Date: Sun, 12 Oct 2025 12:43:03 +0200 Subject: [PATCH 20/94] changes --- msm89xx/config-6.12 | 39 ++++++++++++++++++- ...4-dts-qcom-add-msm8916-generic-mf68e.patch | 11 ++---- 2 files changed, 42 insertions(+), 8 deletions(-) diff --git a/msm89xx/config-6.12 b/msm89xx/config-6.12 index b9246a3..3f7d1dc 100644 --- a/msm89xx/config-6.12 +++ b/msm89xx/config-6.12 @@ -478,7 +478,11 @@ CONFIG_DRM_FBDEV_OVERALLOC=100 CONFIG_DRM_GEM_SHMEM_HELPER=y CONFIG_DRM_KMS_HELPER=y CONFIG_DRM_MIPI_DBI=y +CONFIG_DRM_MIPI_DSI=y +CONFIG_DRM_PANEL_BRIDGE=y +CONFIG_DRM_PANEL_MIPI_DBI=y CONFIG_DRM_PANEL_SITRONIX_ST7735R=y +CONFIG_DRM_PANEL=y CONFIG_DRM=y CONFIG_DST_CACHE=y CONFIG_DT_IDLE_GENPD=y @@ -731,6 +735,7 @@ CONFIG_OF_DYNAMIC=y CONFIG_OF_EARLY_FLATTREE=y CONFIG_OF_FLATTREE=y CONFIG_OF_GPIO=y +CONFIG_OF_GRAPH=y CONFIG_OF_IOMMU=y CONFIG_OF_IRQ=y CONFIG_OF_KOBJ=y @@ -1010,4 +1015,36 @@ CONFIG_ZLIB_INFLATE=y CONFIG_ZONE_DMA32=y CONFIG_ZSTD_COMMON=y CONFIG_ZSTD_COMPRESS=y -CONFIG_ZSTD_DECOMPRESS=y \ No newline at end of file +CONFIG_ZSTD_DECOMPRESS=y + +# ---- +# Graphics Core +CONFIG_DRM=y +CONFIG_DRM_KMS_HELPER=y +CONFIG_DRM_FBDEV_EMULATION=y +CONFIG_DRM_FBDEV_OVERALLOC=100 +CONFIG_DRM_GEM_DMA_HELPER=y +CONFIG_DRM_GEM_SHMEM_HELPER=y + +# MIPI Support +CONFIG_DRM_MIPI_DBI=y + +# TinyDRM ST7735R Driver +CONFIG_TINYDRM_ST7735R=y + +# Framebuffer +CONFIG_FB=y +CONFIG_FB_DEFERRED_IO=y +CONFIG_FB_SYS_COPYAREA=y +CONFIG_FB_SYS_FILLRECT=y +CONFIG_FB_SYS_FOPS=y +CONFIG_FB_SYS_IMAGEBLIT=y + +# Backlight +CONFIG_BACKLIGHT_CLASS_DEVICE=y +CONFIG_BACKLIGHT_GPIO=y + +# Video Mode +CONFIG_VIDEOMODE_HELPERS=y + +CONFIG_FB_DEVICE=y diff --git a/msm89xx/patches-6.12/802-arm64-dts-qcom-add-msm8916-generic-mf68e.patch b/msm89xx/patches-6.12/802-arm64-dts-qcom-add-msm8916-generic-mf68e.patch index 27c8d10..ecdd7c8 100644 --- a/msm89xx/patches-6.12/802-arm64-dts-qcom-add-msm8916-generic-mf68e.patch +++ b/msm89xx/patches-6.12/802-arm64-dts-qcom-add-msm8916-generic-mf68e.patch @@ -2,7 +2,7 @@ Index: linux-6.12.51/arch/arm64/boot/dts/qcom/msm8916-generic-mf68e.dts =================================================================== --- /dev/null +++ linux-6.12.51/arch/arm64/boot/dts/qcom/msm8916-generic-mf68e.dts -@@ -0,0 +1,104 @@ +@@ -0,0 +1,101 @@ +// SPDX-License-Identifier: GPL-2.0-only + +/dts-v1/; @@ -53,17 +53,14 @@ Index: linux-6.12.51/arch/arm64/boot/dts/qcom/msm8916-generic-mf68e.dts + status = "okay"; + + panel@0 { -+ compatible = "sitronix,st7735r"; ++ compatible = "okaya,rh128128t", "sitronix,st7715r"; + reg = <0>; + spi-max-frequency = <32000000>; + -+ reset-gpios = <&tlmm 25 GPIO_ACTIVE_LOW>; ++ reset-gpios = <&tlmm 25 GPIO_ACTIVE_HIGH>; + dc-gpios = <&tlmm 30 GPIO_ACTIVE_HIGH>; + backlight = <&backlight>; + -+ width = <128>; -+ height = <128>; -+ + pinctrl-names = "default"; + pinctrl-0 = <&panel_default>; + }; @@ -93,7 +90,7 @@ Index: linux-6.12.51/arch/arm64/boot/dts/qcom/msm8916-generic-mf68e.dts + +&tlmm { + panel_default: panel-default-state { -+ pins = "gpio25", "gpio30", "gpio97"; ++ pins = "gpio25", "gpio30", "gpio97", "gpio98"; + function = "gpio"; + drive-strength = <8>; + bias-disable; From 6274a1f24cc5a25b067869274532f8c340c727ff Mon Sep 17 00:00:00 2001 From: Miguel Fuertes Date: Sun, 12 Oct 2025 13:43:14 +0200 Subject: [PATCH 21/94] more changes --- display_kernel | 39 ++++- msm89xx/config-6.12 | 6 + ...4-dts-qcom-add-msm8916-generic-mf68e.patch | 152 ++++++++++-------- 3 files changed, 126 insertions(+), 71 deletions(-) diff --git a/display_kernel b/display_kernel index 4664250..15de751 100644 --- a/display_kernel +++ b/display_kernel @@ -1,6 +1,37 @@ -CONFIG_SPI=y -CONFIG_SPI_QUP=y +# Graphics Core +CONFIG_DRM=y +CONFIG_DRM_KMS_HELPER=y +CONFIG_DRM_FBDEV_EMULATION=y +CONFIG_DRM_FBDEV_OVERALLOC=100 +CONFIG_DRM_GEM_DMA_HELPER=y +CONFIG_DRM_GEM_SHMEM_HELPER=y + +# MIPI Support CONFIG_DRM_MIPI_DBI=y -CONFIG_TINYDRM=y -CONFIG_TINYDRM_ST7735R=m + +# TinyDRM ST7735R Driver +CONFIG_TINYDRM_ST7735R=y + +# Framebuffer +CONFIG_FB=y +CONFIG_FB_DEFERRED_IO=y +CONFIG_FB_SYS_COPYAREA=y +CONFIG_FB_SYS_FILLRECT=y +CONFIG_FB_SYS_FOPS=y +CONFIG_FB_SYS_IMAGEBLIT=y + +# Backlight +CONFIG_BACKLIGHT_CLASS_DEVICE=y CONFIG_BACKLIGHT_GPIO=y + +# Video Mode +CONFIG_VIDEOMODE_HELPERS=y + +CONFIG_FB_DEVICE=y + + +CONFIG_LEDS_CLASS=y +CONFIG_LEDS_PM8916_WLED=y +CONFIG_LEDS_TRIGGER_BACKLIGHT=y +CONFIG_BACKLIGHT_PWM=y +CONFIG_PWM_PM8916=y \ No newline at end of file diff --git a/msm89xx/config-6.12 b/msm89xx/config-6.12 index 3f7d1dc..370a294 100644 --- a/msm89xx/config-6.12 +++ b/msm89xx/config-6.12 @@ -1048,3 +1048,9 @@ CONFIG_BACKLIGHT_GPIO=y CONFIG_VIDEOMODE_HELPERS=y CONFIG_FB_DEVICE=y + +CONFIG_LEDS_CLASS=y +CONFIG_LEDS_PM8916_WLED=y +CONFIG_LEDS_TRIGGER_BACKLIGHT=y +CONFIG_BACKLIGHT_PWM=y +CONFIG_PWM_PM8916=y \ No newline at end of file diff --git a/msm89xx/patches-6.12/802-arm64-dts-qcom-add-msm8916-generic-mf68e.patch b/msm89xx/patches-6.12/802-arm64-dts-qcom-add-msm8916-generic-mf68e.patch index ecdd7c8..c5c6fe1 100644 --- a/msm89xx/patches-6.12/802-arm64-dts-qcom-add-msm8916-generic-mf68e.patch +++ b/msm89xx/patches-6.12/802-arm64-dts-qcom-add-msm8916-generic-mf68e.patch @@ -2,105 +2,123 @@ Index: linux-6.12.51/arch/arm64/boot/dts/qcom/msm8916-generic-mf68e.dts =================================================================== --- /dev/null +++ linux-6.12.51/arch/arm64/boot/dts/qcom/msm8916-generic-mf68e.dts -@@ -0,0 +1,101 @@ +@@ -0,0 +1,119 @@ +// SPDX-License-Identifier: GPL-2.0-only + +/dts-v1/; + +#include "msm8916-ufi.dtsi" +#include ++#include + +/ { -+ model = "MF68E 4G LTE Mobile WiFi Router"; -+ compatible = "generic,mf68e", "qcom,msm8916"; ++ model = "MF68E 4G LTE Mobile WiFi Router"; ++ compatible = "generic,mf68e", "qcom,msm8916"; + -+ bat: battery { -+ compatible = "simple-battery"; -+ voltage-min-design-microvolt = <3400000>; -+ voltage-max-design-microvolt = <4350000>; -+ energy-full-design-microwatt-hours = <11100000>; -+ charge-full-design-microamp-hours = <3000000>; ++ bat: battery { ++ compatible = "simple-battery"; ++ voltage-min-design-microvolt = <3400000>; ++ voltage-max-design-microvolt = <4350000>; ++ energy-full-design-microwatt-hours = <11100000>; ++ charge-full-design-microamp-hours = <3000000>; + -+ ocv-capacity-celsius = <25>; -+ ocv-capacity-table-0 = <4330000 100>, <4265000 95>, -+ <4208000 90>, <4154000 85>, <4102000 80>, -+ <4063000 75>, <4006000 70>, <3972000 65>, -+ <3931000 60>, <3880000 55>, <3841000 50>, -+ <3817000 45>, <3798000 40>, <3783000 35>, -+ <3767000 30>, <3747000 25>, <3729000 20>, -+ <3700000 16>, <3687000 13>, <3683000 11>, -+ <3681000 10>, <3680000 9>, <3678000 8>, -+ <3674000 7>, <3666000 6>, <3641000 5>, -+ <3597000 4>, <3537000 3>, <3457000 2>, -+ <3336000 1>, <3000000 0>; -+ }; ++ ocv-capacity-celsius = <25>; ++ ocv-capacity-table-0 = <4330000 100>, <4265000 95>, ++ <4208000 90>, <4154000 85>, <4102000 80>, ++ <4063000 75>, <4006000 70>, <3972000 65>, ++ <3931000 60>, <3880000 55>, <3841000 50>, ++ <3817000 45>, <3798000 40>, <3783000 35>, ++ <3767000 30>, <3747000 25>, <3729000 20>, ++ <3700000 16>, <3687000 13>, <3683000 11>, ++ <3681000 10>, <3680000 9>, <3678000 8>, ++ <3674000 7>, <3666000 6>, <3641000 5>, ++ <3597000 4>, <3537000 3>, <3457000 2>, ++ <3336000 1>, <3000000 0>; ++ }; + -+ usb_id: usb-id { -+ compatible = "linux,extcon-usb-gpio"; -+ id-gpios = <&tlmm 110 GPIO_ACTIVE_HIGH>; -+ pinctrl-names = "default"; -+ pinctrl-0 = <&usb_id_default>; -+ }; ++ usb_id: usb-id { ++ compatible = "linux,extcon-usb-gpio"; ++ id-gpios = <&tlmm 110 GPIO_ACTIVE_HIGH>; ++ pinctrl-names = "default"; ++ pinctrl-0 = <&usb_id_default>; ++ }; + -+ backlight: backlight { -+ compatible = "gpio-backlight"; -+ gpios = <&tlmm 98 GPIO_ACTIVE_HIGH>; -+ default-on; -+ }; ++ backlight: backlight { ++ compatible = "pwm-backlight"; ++ pwms = <&pm8916_pwm 0 100000>; ++ brightness-levels = <0 4 8 16 32 64 128 255>; ++ default-brightness-level = <6>; ++ }; +}; + +&blsp_spi5 { -+ status = "okay"; ++ status = "okay"; + -+ panel@0 { -+ compatible = "okaya,rh128128t", "sitronix,st7715r"; -+ reg = <0>; -+ spi-max-frequency = <32000000>; ++ panel@0 { ++ compatible = "okaya,rh128128t", "sitronix,st7715r"; ++ reg = <0>; ++ spi-max-frequency = <32000000>; + -+ reset-gpios = <&tlmm 25 GPIO_ACTIVE_HIGH>; -+ dc-gpios = <&tlmm 30 GPIO_ACTIVE_HIGH>; -+ backlight = <&backlight>; ++ reset-gpios = <&tlmm 25 GPIO_ACTIVE_HIGH>; ++ dc-gpios = <&tlmm 30 GPIO_ACTIVE_HIGH>; ++ backlight = <&backlight>; + -+ pinctrl-names = "default"; -+ pinctrl-0 = <&panel_default>; -+ }; ++ pinctrl-names = "default"; ++ pinctrl-0 = <&panel_default>; ++ }; ++}; ++ ++&pm8916_pwm { ++ status = "okay"; ++ pinctrl-names = "default"; ++ pinctrl-0 = <&pwm_out>; ++}; ++ ++&pm8916_mpps { ++ pwm_out: mpp4-state { ++ pins = "mpp4"; ++ function = "digital"; ++ output-low; ++ qcom,dtest = <1>; ++ power-source = ; ++ }; +}; + +&pm8916_bms { -+ status = "okay"; -+ monitored-battery = <&bat>; -+ power-supplies = <&pm8916_charger>; ++ status = "okay"; ++ monitored-battery = <&bat>; ++ power-supplies = <&pm8916_charger>; +}; + +&pm8916_charger { -+ status = "okay"; -+ monitored-battery = <&bat>; -+ qcom,fast-charge-safe-current = <900000>; -+ qcom,fast-charge-safe-voltage = <4350000>; ++ status = "okay"; ++ monitored-battery = <&bat>; ++ qcom,fast-charge-safe-current = <900000>; ++ qcom,fast-charge-safe-voltage = <4350000>; +}; + +&usb { -+ status = "okay"; -+ extcon = <&usb_id>, <&usb_id>; ++ status = "okay"; ++ extcon = <&usb_id>, <&usb_id>; +}; + +&usb_hs_phy { -+ extcon = <&usb_id>; ++ extcon = <&usb_id>; +}; + +&tlmm { -+ panel_default: panel-default-state { -+ pins = "gpio25", "gpio30", "gpio97", "gpio98"; -+ function = "gpio"; -+ drive-strength = <8>; -+ bias-disable; -+ output-high; -+ }; ++ panel_default: panel-default-state { ++ pins = "gpio25", "gpio30", "gpio97"; ++ function = "gpio"; ++ drive-strength = <8>; ++ bias-disable; ++ output-high; ++ }; + -+ usb_id_default: usb-id-default-state { -+ pins = "gpio110"; -+ function = "gpio"; -+ drive-strength = <8>; -+ bias-pull-up; -+ }; ++ usb_id_default: usb-id-default-state { ++ pins = "gpio110"; ++ function = "gpio"; ++ drive-strength = <8>; ++ bias-pull-up; ++ }; +}; From 87f303fbc47f985b43785ccb4b7538f0afdb5d2f Mon Sep 17 00:00:00 2001 From: Miguel Fuertes Date: Sun, 12 Oct 2025 13:49:53 +0200 Subject: [PATCH 22/94] display mostly working --- .../802-arm64-dts-qcom-add-msm8916-generic-mf68e.patch | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/msm89xx/patches-6.12/802-arm64-dts-qcom-add-msm8916-generic-mf68e.patch b/msm89xx/patches-6.12/802-arm64-dts-qcom-add-msm8916-generic-mf68e.patch index c5c6fe1..a59d30e 100644 --- a/msm89xx/patches-6.12/802-arm64-dts-qcom-add-msm8916-generic-mf68e.patch +++ b/msm89xx/patches-6.12/802-arm64-dts-qcom-add-msm8916-generic-mf68e.patch @@ -2,7 +2,7 @@ Index: linux-6.12.51/arch/arm64/boot/dts/qcom/msm8916-generic-mf68e.dts =================================================================== --- /dev/null +++ linux-6.12.51/arch/arm64/boot/dts/qcom/msm8916-generic-mf68e.dts -@@ -0,0 +1,119 @@ +@@ -0,0 +1,120 @@ +// SPDX-License-Identifier: GPL-2.0-only + +/dts-v1/; @@ -48,6 +48,7 @@ Index: linux-6.12.51/arch/arm64/boot/dts/qcom/msm8916-generic-mf68e.dts + pwms = <&pm8916_pwm 0 100000>; + brightness-levels = <0 4 8 16 32 64 128 255>; + default-brightness-level = <6>; ++ inverted-polarity; + }; +}; + From 60ee04491a5e3ffc59c1a25cf7118d0899725f2d Mon Sep 17 00:00:00 2001 From: Miguel Fuertes Date: Sun, 12 Oct 2025 14:08:03 +0200 Subject: [PATCH 23/94] changes --- display_kernel | 4 +++- mf86e_diffconfig | 1 + msm89xx/config-6.12 | 15 ++++++--------- 3 files changed, 10 insertions(+), 10 deletions(-) diff --git a/display_kernel b/display_kernel index 15de751..c60a4ce 100644 --- a/display_kernel +++ b/display_kernel @@ -34,4 +34,6 @@ CONFIG_LEDS_CLASS=y CONFIG_LEDS_PM8916_WLED=y CONFIG_LEDS_TRIGGER_BACKLIGHT=y CONFIG_BACKLIGHT_PWM=y -CONFIG_PWM_PM8916=y \ No newline at end of file +CONFIG_PWM_PM8916=y + +CONFIG_DRM_FBDEV_LEAK_PHYS_SMEM=y # Para acceso directo diff --git a/mf86e_diffconfig b/mf86e_diffconfig index fcac243..d005d73 100644 --- a/mf86e_diffconfig +++ b/mf86e_diffconfig @@ -89,3 +89,4 @@ CONFIG_PACKAGE_uhttpd=y CONFIG_PACKAGE_uhttpd-mod-ubus=y CONFIG_PACKAGE_wireguard-tools=y # CONFIG_TARGET_ROOTFS_EXT4FS is not set +CONFIG_PACKAGE_libdrm=y \ No newline at end of file diff --git a/msm89xx/config-6.12 b/msm89xx/config-6.12 index 370a294..ab47c26 100644 --- a/msm89xx/config-6.12 +++ b/msm89xx/config-6.12 @@ -473,7 +473,6 @@ CONFIG_DMA_VIRTUAL_CHANNELS=y CONFIG_DMADEVICES=y CONFIG_DNOTIFY=y CONFIG_DRM_BRIDGE=y -CONFIG_DRM_FBDEV_EMULATION=y CONFIG_DRM_FBDEV_OVERALLOC=100 CONFIG_DRM_GEM_SHMEM_HELPER=y CONFIG_DRM_KMS_HELPER=y @@ -505,11 +504,6 @@ CONFIG_FB_CFB_COPYAREA=y CONFIG_FB_CFB_FILLRECT=y CONFIG_FB_CFB_IMAGEBLIT=y CONFIG_FB_CORE=y -CONFIG_FB_DEFERRED_IO=y -CONFIG_FB_SYS_COPYAREA=y -CONFIG_FB_SYS_FILLRECT=y -CONFIG_FB_SYS_FOPS=y -CONFIG_FB_SYS_IMAGEBLIT=y CONFIG_FB=y CONFIG_FB=y CONFIG_FHANDLE=y @@ -519,9 +513,7 @@ CONFIG_FONT_8x16=y CONFIG_FONT_8x8=y CONFIG_FONT_SUPPORT=y CONFIG_FRAME_POINTER=y -CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY=y CONFIG_FRAMEBUFFER_CONSOLE_ROTATION=y -CONFIG_FRAMEBUFFER_CONSOLE=y CONFIG_FS_IOMAP=y CONFIG_FS_MBCACHE=y CONFIG_FS_POSIX_ACL=y @@ -1053,4 +1045,9 @@ CONFIG_LEDS_CLASS=y CONFIG_LEDS_PM8916_WLED=y CONFIG_LEDS_TRIGGER_BACKLIGHT=y CONFIG_BACKLIGHT_PWM=y -CONFIG_PWM_PM8916=y \ No newline at end of file +CONFIG_PWM_PM8916=y + +CONFIG_DRM_FBDEV_LEAK_PHYS_SMEM=y # Para acceso directo + +CONFIG_FRAMEBUFFER_CONSOLE=y +CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY=y \ No newline at end of file From d2e3c58226b9cfcabba6d50d913e3717b94f6e80 Mon Sep 17 00:00:00 2001 From: Miguel Fuertes Date: Sun, 12 Oct 2025 14:23:52 +0200 Subject: [PATCH 24/94] changes in dts --- ...m64-dts-qcom-add-msm8916-generic-mf68e.patch | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/msm89xx/patches-6.12/802-arm64-dts-qcom-add-msm8916-generic-mf68e.patch b/msm89xx/patches-6.12/802-arm64-dts-qcom-add-msm8916-generic-mf68e.patch index a59d30e..a87bf97 100644 --- a/msm89xx/patches-6.12/802-arm64-dts-qcom-add-msm8916-generic-mf68e.patch +++ b/msm89xx/patches-6.12/802-arm64-dts-qcom-add-msm8916-generic-mf68e.patch @@ -2,7 +2,7 @@ Index: linux-6.12.51/arch/arm64/boot/dts/qcom/msm8916-generic-mf68e.dts =================================================================== --- /dev/null +++ linux-6.12.51/arch/arm64/boot/dts/qcom/msm8916-generic-mf68e.dts -@@ -0,0 +1,120 @@ +@@ -0,0 +1,135 @@ +// SPDX-License-Identifier: GPL-2.0-only + +/dts-v1/; @@ -64,11 +64,26 @@ Index: linux-6.12.51/arch/arm64/boot/dts/qcom/msm8916-generic-mf68e.dts + dc-gpios = <&tlmm 30 GPIO_ACTIVE_HIGH>; + backlight = <&backlight>; + ++ vdd-supply = <&pm8916_l17>; ++ vddio-supply = <&pm8916_l6>; ++ + pinctrl-names = "default"; + pinctrl-0 = <&panel_default>; + }; +}; + ++&pm8916_l17 { ++ regulator-min-microvolt = <2850000>; ++ regulator-max-microvolt = <2850000>; ++ regulator-always-on; ++}; ++ ++&pm8916_l6 { ++ regulator-min-microvolt = <1800000>; ++ regulator-max-microvolt = <1800000>; ++ regulator-always-on; ++}; ++ +&pm8916_pwm { + status = "okay"; + pinctrl-names = "default"; From adf86dfaa6f412943be39b7654a04825042b7745 Mon Sep 17 00:00:00 2001 From: Miguel Fuertes Date: Sun, 12 Oct 2025 15:23:51 +0200 Subject: [PATCH 25/94] added regulators --- ...4-dts-qcom-add-msm8916-generic-mf68e.patch | 186 +++++++++--------- 1 file changed, 96 insertions(+), 90 deletions(-) diff --git a/msm89xx/patches-6.12/802-arm64-dts-qcom-add-msm8916-generic-mf68e.patch b/msm89xx/patches-6.12/802-arm64-dts-qcom-add-msm8916-generic-mf68e.patch index a87bf97..ae250ea 100644 --- a/msm89xx/patches-6.12/802-arm64-dts-qcom-add-msm8916-generic-mf68e.patch +++ b/msm89xx/patches-6.12/802-arm64-dts-qcom-add-msm8916-generic-mf68e.patch @@ -2,7 +2,7 @@ Index: linux-6.12.51/arch/arm64/boot/dts/qcom/msm8916-generic-mf68e.dts =================================================================== --- /dev/null +++ linux-6.12.51/arch/arm64/boot/dts/qcom/msm8916-generic-mf68e.dts -@@ -0,0 +1,135 @@ +@@ -0,0 +1,142 @@ +// SPDX-License-Identifier: GPL-2.0-only + +/dts-v1/; @@ -12,129 +12,135 @@ Index: linux-6.12.51/arch/arm64/boot/dts/qcom/msm8916-generic-mf68e.dts +#include + +/ { -+ model = "MF68E 4G LTE Mobile WiFi Router"; -+ compatible = "generic,mf68e", "qcom,msm8916"; ++ model = "MF68E 4G LTE Mobile WiFi Router"; ++ compatible = "generic,mf68e", "qcom,msm8916"; + -+ bat: battery { -+ compatible = "simple-battery"; -+ voltage-min-design-microvolt = <3400000>; -+ voltage-max-design-microvolt = <4350000>; -+ energy-full-design-microwatt-hours = <11100000>; -+ charge-full-design-microamp-hours = <3000000>; ++ bat: battery { ++ compatible = "simple-battery"; ++ voltage-min-design-microvolt = <3400000>; ++ voltage-max-design-microvolt = <4350000>; ++ energy-full-design-microwatt-hours = <11100000>; ++ charge-full-design-microamp-hours = <3000000>; + -+ ocv-capacity-celsius = <25>; -+ ocv-capacity-table-0 = <4330000 100>, <4265000 95>, -+ <4208000 90>, <4154000 85>, <4102000 80>, -+ <4063000 75>, <4006000 70>, <3972000 65>, -+ <3931000 60>, <3880000 55>, <3841000 50>, -+ <3817000 45>, <3798000 40>, <3783000 35>, -+ <3767000 30>, <3747000 25>, <3729000 20>, -+ <3700000 16>, <3687000 13>, <3683000 11>, -+ <3681000 10>, <3680000 9>, <3678000 8>, -+ <3674000 7>, <3666000 6>, <3641000 5>, -+ <3597000 4>, <3537000 3>, <3457000 2>, -+ <3336000 1>, <3000000 0>; -+ }; ++ ocv-capacity-celsius = <25>; ++ ocv-capacity-table-0 = <4330000 100>, <4265000 95>, ++ <4208000 90>, <4154000 85>, <4102000 80>, ++ <4063000 75>, <4006000 70>, <3972000 65>, ++ <3931000 60>, <3880000 55>, <3841000 50>, ++ <3817000 45>, <3798000 40>, <3783000 35>, ++ <3767000 30>, <3747000 25>, <3729000 20>, ++ <3700000 16>, <3687000 13>, <3683000 11>, ++ <3681000 10>, <3680000 9>, <3678000 8>, ++ <3674000 7>, <3666000 6>, <3641000 5>, ++ <3597000 4>, <3537000 3>, <3457000 2>, ++ <3336000 1>, <3000000 0>; ++ }; + -+ usb_id: usb-id { -+ compatible = "linux,extcon-usb-gpio"; -+ id-gpios = <&tlmm 110 GPIO_ACTIVE_HIGH>; -+ pinctrl-names = "default"; -+ pinctrl-0 = <&usb_id_default>; -+ }; ++ usb_id: usb-id { ++ compatible = "linux,extcon-usb-gpio"; ++ id-gpios = <&tlmm 110 GPIO_ACTIVE_HIGH>; ++ pinctrl-names = "default"; ++ pinctrl-0 = <&usb_id_default>; ++ }; + -+ backlight: backlight { -+ compatible = "pwm-backlight"; -+ pwms = <&pm8916_pwm 0 100000>; -+ brightness-levels = <0 4 8 16 32 64 128 255>; -+ default-brightness-level = <6>; -+ inverted-polarity; -+ }; ++ backlight: backlight { ++ compatible = "pwm-backlight"; ++ pwms = <&pm8916_pwm 0 100000>; ++ brightness-levels = <255 128 64 32 16 8 4 0>; ++ num-interpolated-steps = <255>; ++ default-brightness-level = <6>; ++ }; +}; + +&blsp_spi5 { -+ status = "okay"; ++ status = "okay"; + -+ panel@0 { -+ compatible = "okaya,rh128128t", "sitronix,st7715r"; -+ reg = <0>; -+ spi-max-frequency = <32000000>; ++ panel@0 { ++ compatible = "okaya,rh128128t", "sitronix,st7715r"; ++ reg = <0>; ++ spi-max-frequency = <32000000>; + -+ reset-gpios = <&tlmm 25 GPIO_ACTIVE_HIGH>; -+ dc-gpios = <&tlmm 30 GPIO_ACTIVE_HIGH>; -+ backlight = <&backlight>; ++ reset-gpios = <&tlmm 25 GPIO_ACTIVE_HIGH>; ++ dc-gpios = <&tlmm 30 GPIO_ACTIVE_HIGH>; ++ backlight = <&backlight>; + -+ vdd-supply = <&pm8916_l17>; -+ vddio-supply = <&pm8916_l6>; ++ vdd-supply = <&pm8916_l17>; ++ vddio-supply = <&pm8916_l6>; + -+ pinctrl-names = "default"; -+ pinctrl-0 = <&panel_default>; -+ }; ++ pinctrl-names = "default"; ++ pinctrl-0 = <&panel_default>; ++ }; +}; + -+&pm8916_l17 { -+ regulator-min-microvolt = <2850000>; -+ regulator-max-microvolt = <2850000>; -+ regulator-always-on; -+}; ++&rpm_requests { ++ pm8916_rpm_regulators: regulators { ++ compatible = "qcom,rpm-pm8916-regulators"; + -+&pm8916_l6 { -+ regulator-min-microvolt = <1800000>; -+ regulator-max-microvolt = <1800000>; -+ regulator-always-on; ++ pm8916_l6: l6 { ++ regulator-min-microvolt = <1800000>; ++ regulator-max-microvolt = <1800000>; ++ regulator-always-on; ++ }; ++ ++ pm8916_l17: l17 { ++ regulator-min-microvolt = <2850000>; ++ regulator-max-microvolt = <2850000>; ++ regulator-always-on; ++ }; ++ }; +}; + +&pm8916_pwm { -+ status = "okay"; -+ pinctrl-names = "default"; -+ pinctrl-0 = <&pwm_out>; ++ status = "okay"; ++ pinctrl-names = "default"; ++ pinctrl-0 = <&pwm_out>; +}; + +&pm8916_mpps { -+ pwm_out: mpp4-state { -+ pins = "mpp4"; -+ function = "digital"; -+ output-low; -+ qcom,dtest = <1>; -+ power-source = ; -+ }; ++ pwm_out: mpp4-state { ++ pins = "mpp4"; ++ function = "digital"; ++ output-low; ++ qcom,dtest = <1>; ++ power-source = ; ++ }; +}; + +&pm8916_bms { -+ status = "okay"; -+ monitored-battery = <&bat>; -+ power-supplies = <&pm8916_charger>; ++ status = "okay"; ++ monitored-battery = <&bat>; ++ power-supplies = <&pm8916_charger>; +}; + +&pm8916_charger { -+ status = "okay"; -+ monitored-battery = <&bat>; -+ qcom,fast-charge-safe-current = <900000>; -+ qcom,fast-charge-safe-voltage = <4350000>; ++ status = "okay"; ++ monitored-battery = <&bat>; ++ qcom,fast-charge-safe-current = <900000>; ++ qcom,fast-charge-safe-voltage = <4350000>; +}; + +&usb { -+ status = "okay"; -+ extcon = <&usb_id>, <&usb_id>; ++ status = "okay"; ++ extcon = <&usb_id>, <&usb_id>; +}; + +&usb_hs_phy { -+ extcon = <&usb_id>; ++ extcon = <&usb_id>; +}; + +&tlmm { -+ panel_default: panel-default-state { -+ pins = "gpio25", "gpio30", "gpio97"; -+ function = "gpio"; -+ drive-strength = <8>; -+ bias-disable; -+ output-high; -+ }; ++ panel_default: panel-default-state { ++ pins = "gpio25", "gpio30", "gpio97"; ++ function = "gpio"; ++ drive-strength = <8>; ++ bias-disable; ++ output-high; ++ }; + -+ usb_id_default: usb-id-default-state { -+ pins = "gpio110"; -+ function = "gpio"; -+ drive-strength = <8>; -+ bias-pull-up; -+ }; ++ usb_id_default: usb-id-default-state { ++ pins = "gpio110"; ++ function = "gpio"; ++ drive-strength = <8>; ++ bias-pull-up; ++ }; +}; From 1eb2ac423d02539deb12b93dcf0b9f11b206abc2 Mon Sep 17 00:00:00 2001 From: Miguel Fuertes Date: Sun, 12 Oct 2025 15:26:24 +0200 Subject: [PATCH 26/94] changes --- .../802-arm64-dts-qcom-add-msm8916-generic-mf68e.patch | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/msm89xx/patches-6.12/802-arm64-dts-qcom-add-msm8916-generic-mf68e.patch b/msm89xx/patches-6.12/802-arm64-dts-qcom-add-msm8916-generic-mf68e.patch index ae250ea..de956d2 100644 --- a/msm89xx/patches-6.12/802-arm64-dts-qcom-add-msm8916-generic-mf68e.patch +++ b/msm89xx/patches-6.12/802-arm64-dts-qcom-add-msm8916-generic-mf68e.patch @@ -2,7 +2,7 @@ Index: linux-6.12.51/arch/arm64/boot/dts/qcom/msm8916-generic-mf68e.dts =================================================================== --- /dev/null +++ linux-6.12.51/arch/arm64/boot/dts/qcom/msm8916-generic-mf68e.dts -@@ -0,0 +1,142 @@ +@@ -0,0 +1,141 @@ +// SPDX-License-Identifier: GPL-2.0-only + +/dts-v1/; From 037c22763e296d9a95fbed1ee64ec67083836c68 Mon Sep 17 00:00:00 2001 From: Miguel Fuertes Date: Sun, 12 Oct 2025 15:38:14 +0200 Subject: [PATCH 27/94] proper regulators --- ...4-dts-qcom-add-msm8916-generic-mf68e.patch | 26 +++++++------------ 1 file changed, 10 insertions(+), 16 deletions(-) diff --git a/msm89xx/patches-6.12/802-arm64-dts-qcom-add-msm8916-generic-mf68e.patch b/msm89xx/patches-6.12/802-arm64-dts-qcom-add-msm8916-generic-mf68e.patch index de956d2..0bfe036 100644 --- a/msm89xx/patches-6.12/802-arm64-dts-qcom-add-msm8916-generic-mf68e.patch +++ b/msm89xx/patches-6.12/802-arm64-dts-qcom-add-msm8916-generic-mf68e.patch @@ -2,7 +2,7 @@ Index: linux-6.12.51/arch/arm64/boot/dts/qcom/msm8916-generic-mf68e.dts =================================================================== --- /dev/null +++ linux-6.12.51/arch/arm64/boot/dts/qcom/msm8916-generic-mf68e.dts -@@ -0,0 +1,141 @@ +@@ -0,0 +1,135 @@ +// SPDX-License-Identifier: GPL-2.0-only + +/dts-v1/; @@ -48,7 +48,7 @@ Index: linux-6.12.51/arch/arm64/boot/dts/qcom/msm8916-generic-mf68e.dts + pwms = <&pm8916_pwm 0 100000>; + brightness-levels = <255 128 64 32 16 8 4 0>; + num-interpolated-steps = <255>; -+ default-brightness-level = <6>; ++ default-brightness-level = <1>; + }; +}; + @@ -72,21 +72,15 @@ Index: linux-6.12.51/arch/arm64/boot/dts/qcom/msm8916-generic-mf68e.dts + }; +}; + -+&rpm_requests { -+ pm8916_rpm_regulators: regulators { -+ compatible = "qcom,rpm-pm8916-regulators"; ++&pm8916_l6 { ++ regulator-always-on; ++}; + -+ pm8916_l6: l6 { -+ regulator-min-microvolt = <1800000>; -+ regulator-max-microvolt = <1800000>; -+ regulator-always-on; -+ }; -+ -+ pm8916_l17: l17 { -+ regulator-min-microvolt = <2850000>; -+ regulator-max-microvolt = <2850000>; -+ regulator-always-on; -+ }; ++&pm8916_rpm_regulators { ++ pm8916_l17: l17 { ++ regulator-min-microvolt = <2850000>; ++ regulator-max-microvolt = <2850000>; ++ regulator-always-on; + }; +}; + From 75d45b94997a1da0adba96de8f7c5857b2174011 Mon Sep 17 00:00:00 2001 From: Miguel Fuertes Date: Sun, 12 Oct 2025 16:58:14 +0200 Subject: [PATCH 28/94] changes --- mf86e_diffconfig | 4 +++- ...m64-dts-qcom-add-msm8916-generic-mf68e.patch | 6 +++--- .../999-st7735r-fix-rh128128t.patch | 17 +++++++++++++++++ 3 files changed, 23 insertions(+), 4 deletions(-) create mode 100644 msm89xx/patches-6.12/999-st7735r-fix-rh128128t.patch diff --git a/mf86e_diffconfig b/mf86e_diffconfig index d005d73..7f50695 100644 --- a/mf86e_diffconfig +++ b/mf86e_diffconfig @@ -89,4 +89,6 @@ CONFIG_PACKAGE_uhttpd=y CONFIG_PACKAGE_uhttpd-mod-ubus=y CONFIG_PACKAGE_wireguard-tools=y # CONFIG_TARGET_ROOTFS_EXT4FS is not set -CONFIG_PACKAGE_libdrm=y \ No newline at end of file +CONFIG_PACKAGE_libdrm=y +CONFIG_BUSYBOX_CUSTOM=y +CONFIG_BUSYBOX_CONFIG_FBSET=y \ No newline at end of file diff --git a/msm89xx/patches-6.12/802-arm64-dts-qcom-add-msm8916-generic-mf68e.patch b/msm89xx/patches-6.12/802-arm64-dts-qcom-add-msm8916-generic-mf68e.patch index 0bfe036..2ada735 100644 --- a/msm89xx/patches-6.12/802-arm64-dts-qcom-add-msm8916-generic-mf68e.patch +++ b/msm89xx/patches-6.12/802-arm64-dts-qcom-add-msm8916-generic-mf68e.patch @@ -1,7 +1,7 @@ -Index: linux-6.12.51/arch/arm64/boot/dts/qcom/msm8916-generic-mf68e.dts +Index: arch/arm64/boot/dts/qcom/msm8916-generic-mf68e.dts =================================================================== ---- /dev/null -+++ linux-6.12.51/arch/arm64/boot/dts/qcom/msm8916-generic-mf68e.dts +--- a/arch/arm64/boot/dts/qcom/msm8916-generic-mf68e.dts ++++ b/arch/arm64/boot/dts/qcom/msm8916-generic-mf68e.dts @@ -0,0 +1,135 @@ +// SPDX-License-Identifier: GPL-2.0-only + diff --git a/msm89xx/patches-6.12/999-st7735r-fix-rh128128t.patch b/msm89xx/patches-6.12/999-st7735r-fix-rh128128t.patch new file mode 100644 index 0000000..8252dc1 --- /dev/null +++ b/msm89xx/patches-6.12/999-st7735r-fix-rh128128t.patch @@ -0,0 +1,17 @@ +Index: drivers/gpu/drm/tiny/st7735r.c +=================================================================== +--- a/drivers/gpu/drm/tiny/st7735r.c ++++ b/drivers/gpu/drm/tiny/st7735r.c +@@ -144,9 +144,9 @@ static const struct st7735r_cfg jd_t1800 + + static const struct st7735r_cfg rh128128t_cfg = { + .mode = { DRM_SIMPLE_MODE(128, 128, 25, 26) }, +- .left_offset = 2, +- .top_offset = 3, +- .rgb = true, ++ .left_offset = 0, ++ .top_offset = 0, ++ .rgb = false, + }; + + DEFINE_DRM_GEM_DMA_FOPS(st7735r_fops); From 7a2f93f057e30d4d8200eba867799716bdbc542d Mon Sep 17 00:00:00 2001 From: Miguel Fuertes Date: Sun, 12 Oct 2025 20:47:17 +0200 Subject: [PATCH 29/94] changes --- ...m64-dts-qcom-add-msm8916-generic-mf68e.patch | 2 +- .../999-st7735r-fix-rh128128t.patch | 17 ----------------- 2 files changed, 1 insertion(+), 18 deletions(-) delete mode 100644 msm89xx/patches-6.12/999-st7735r-fix-rh128128t.patch diff --git a/msm89xx/patches-6.12/802-arm64-dts-qcom-add-msm8916-generic-mf68e.patch b/msm89xx/patches-6.12/802-arm64-dts-qcom-add-msm8916-generic-mf68e.patch index 2ada735..f710368 100644 --- a/msm89xx/patches-6.12/802-arm64-dts-qcom-add-msm8916-generic-mf68e.patch +++ b/msm89xx/patches-6.12/802-arm64-dts-qcom-add-msm8916-generic-mf68e.patch @@ -56,7 +56,7 @@ Index: arch/arm64/boot/dts/qcom/msm8916-generic-mf68e.dts + status = "okay"; + + panel@0 { -+ compatible = "okaya,rh128128t", "sitronix,st7715r"; ++ compatible = "okaya,rh128128t"; + reg = <0>; + spi-max-frequency = <32000000>; + diff --git a/msm89xx/patches-6.12/999-st7735r-fix-rh128128t.patch b/msm89xx/patches-6.12/999-st7735r-fix-rh128128t.patch deleted file mode 100644 index 8252dc1..0000000 --- a/msm89xx/patches-6.12/999-st7735r-fix-rh128128t.patch +++ /dev/null @@ -1,17 +0,0 @@ -Index: drivers/gpu/drm/tiny/st7735r.c -=================================================================== ---- a/drivers/gpu/drm/tiny/st7735r.c -+++ b/drivers/gpu/drm/tiny/st7735r.c -@@ -144,9 +144,9 @@ static const struct st7735r_cfg jd_t1800 - - static const struct st7735r_cfg rh128128t_cfg = { - .mode = { DRM_SIMPLE_MODE(128, 128, 25, 26) }, -- .left_offset = 2, -- .top_offset = 3, -- .rgb = true, -+ .left_offset = 0, -+ .top_offset = 0, -+ .rgb = false, - }; - - DEFINE_DRM_GEM_DMA_FOPS(st7735r_fops); From 48fa72c97bbc50f53d889a2a501e3f54f8afbf7c Mon Sep 17 00:00:00 2001 From: Miguel Fuertes Date: Sun, 12 Oct 2025 21:06:59 +0200 Subject: [PATCH 30/94] changes --- .../999-st7735r-fix-rh128128t.patch | 24 +++++++++++++++++++ 1 file changed, 24 insertions(+) create mode 100644 msm89xx/patches-6.12/999-st7735r-fix-rh128128t.patch diff --git a/msm89xx/patches-6.12/999-st7735r-fix-rh128128t.patch b/msm89xx/patches-6.12/999-st7735r-fix-rh128128t.patch new file mode 100644 index 0000000..96edc0d --- /dev/null +++ b/msm89xx/patches-6.12/999-st7735r-fix-rh128128t.patch @@ -0,0 +1,24 @@ +--- a/drivers/gpu/drm/tiny/st7735r.c ++++ b/drivers/gpu/drm/tiny/st7735r.c +@@ -113,6 +113,8 @@ static void st7735r_pipe_enable(struct d + mipi_dbi_command(dbi, MIPI_DCS_SET_ADDRESS_MODE, addr_mode); + mipi_dbi_command(dbi, MIPI_DCS_SET_PIXEL_FORMAT, + MIPI_DCS_PIXEL_FMT_16BIT); ++ mipi_dbi_command(dbi, MIPI_DCS_SET_COLUMN_ADDRESS, 0x00, 0x00, 0x00, 0x7F); ++ mipi_dbi_command(dbi, MIPI_DCS_SET_PAGE_ADDRESS, 0x00, 0x00, 0x00, 0x7F); + mipi_dbi_command(dbi, ST7735R_GAMCTRP1, 0x02, 0x1c, 0x07, 0x12, 0x37, + 0x32, 0x29, 0x2d, 0x29, 0x25, 0x2b, 0x39, 0x00, 0x01, + 0x03, 0x10); +@@ -144,9 +146,9 @@ static const struct st7735r_cfg jd_t1800 + + static const struct st7735r_cfg rh128128t_cfg = { + .mode = { DRM_SIMPLE_MODE(128, 128, 25, 26) }, +- .left_offset = 2, +- .top_offset = 3, +- .rgb = true, ++ .left_offset = 0, ++ .top_offset = 0, ++ .rgb = false, + }; + + DEFINE_DRM_GEM_DMA_FOPS(st7735r_fops); From c326e45beeaf12192a527fb262ae33d722e6b57d Mon Sep 17 00:00:00 2001 From: Miguel Fuertes Date: Sun, 12 Oct 2025 21:27:55 +0200 Subject: [PATCH 31/94] new driver --- msm89xx/config-6.12 | 2 +- ...4-dts-qcom-add-msm8916-generic-mf68e.patch | 2 +- .../998-drm-tiny-add-st7735s-driver.patch | 289 ++++++++++++++++++ .../999-st7735r-fix-rh128128t.patch | 24 -- 4 files changed, 291 insertions(+), 26 deletions(-) create mode 100644 msm89xx/patches-6.12/998-drm-tiny-add-st7735s-driver.patch delete mode 100644 msm89xx/patches-6.12/999-st7735r-fix-rh128128t.patch diff --git a/msm89xx/config-6.12 b/msm89xx/config-6.12 index ab47c26..0578e2d 100644 --- a/msm89xx/config-6.12 +++ b/msm89xx/config-6.12 @@ -1022,7 +1022,7 @@ CONFIG_DRM_GEM_SHMEM_HELPER=y CONFIG_DRM_MIPI_DBI=y # TinyDRM ST7735R Driver -CONFIG_TINYDRM_ST7735R=y +CONFIG_TINYDRM_ST7735S=y # Framebuffer CONFIG_FB=y diff --git a/msm89xx/patches-6.12/802-arm64-dts-qcom-add-msm8916-generic-mf68e.patch b/msm89xx/patches-6.12/802-arm64-dts-qcom-add-msm8916-generic-mf68e.patch index f710368..61937c4 100644 --- a/msm89xx/patches-6.12/802-arm64-dts-qcom-add-msm8916-generic-mf68e.patch +++ b/msm89xx/patches-6.12/802-arm64-dts-qcom-add-msm8916-generic-mf68e.patch @@ -56,7 +56,7 @@ Index: arch/arm64/boot/dts/qcom/msm8916-generic-mf68e.dts + status = "okay"; + + panel@0 { -+ compatible = "okaya,rh128128t"; ++ compatible = "sitronix,st7735s-128x128"; + reg = <0>; + spi-max-frequency = <32000000>; + diff --git a/msm89xx/patches-6.12/998-drm-tiny-add-st7735s-driver.patch b/msm89xx/patches-6.12/998-drm-tiny-add-st7735s-driver.patch new file mode 100644 index 0000000..c03271e --- /dev/null +++ b/msm89xx/patches-6.12/998-drm-tiny-add-st7735s-driver.patch @@ -0,0 +1,289 @@ +Index: drivers/gpu/drm/tiny/Kconfig +=================================================================== +--- a/drivers/gpu/drm/tiny/Kconfig ++++ b/drivers/gpu/drm/tiny/Kconfig +@@ -213,3 +213,17 @@ config TINYDRM_ST7735R + * Okaya RH128128T 1.44" 128x128 TFT + + If M is selected the module will be called st7735r. ++ ++config TINYDRM_ST7735S ++ tristate "DRM support for Sitronix ST7735S display panels" ++ depends on DRM && SPI ++ select DRM_KMS_HELPER ++ select DRM_GEM_DMA_HELPER ++ select DRM_MIPI_DBI ++ select BACKLIGHT_CLASS_DEVICE ++ help ++ DRM driver for Sitronix ST7735S with one of the following ++ LCDs: ++ * Generic ST7735S 128x128 Color TFT ++ ++ If M is selected the module will be called st7735s. +Index: drivers/gpu/drm/tiny/Makefile +=================================================================== +--- a/drivers/gpu/drm/tiny/Makefile ++++ b/drivers/gpu/drm/tiny/Makefile +@@ -16,3 +16,4 @@ obj-$(CONFIG_TINYDRM_MI0283QT) += mi028 + obj-$(CONFIG_TINYDRM_REPAPER) += repaper.o + obj-$(CONFIG_TINYDRM_ST7586) += st7586.o + obj-$(CONFIG_TINYDRM_ST7735R) += st7735r.o ++obj-$(CONFIG_TINYDRM_ST7735S) += st7735s.o +Index: drivers/gpu/drm/tiny/st7735s.c +=================================================================== +--- a/drivers/gpu/drm/tiny/st7735s.c ++++ b/drivers/gpu/drm/tiny/st7735s.c +@@ -0,0 +1,253 @@ ++// SPDX-License-Identifier: GPL-2.0-only ++/* ++ * DRM driver for Sitronix ST7735S display controller ++ */ ++ ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include