From 2a8588f9e2685271789578a62f1fb732719d69fe Mon Sep 17 00:00:00 2001 From: snlavaise Date: Tue, 8 Sep 2026 20:31:22 -0300 Subject: [PATCH] motorola-rtwo: strip .dts to the minimum for early-panic bisection Full .dts + fixed 7.2 kernel still resets in <2s with no output. Cut the .dts to SoC + regulators + debug UART + HS-peripheral USB only - no reserved-memory, no simple-framebuffer, no touch/SD/UFS/keys. If this reaches the initramfs the fault was in a removed node; if it also resets the problem is the kernel/config/boot image. Co-Authored-By: Claude Sonnet 5 Claude-Session: https://claude.ai/code/session_01QF5HebjUsRaxbW4cBX6HJP --- device/testing/device-motorola-rtwo/APKBUILD | 4 +- .../testing/device-motorola-rtwo/deviceinfo | 2 +- .../linux-postmarketos-qcom-sm8550/APKBUILD | 4 +- .../sm8550-motorola-rtwo.dts | 159 +----------------- 4 files changed, 13 insertions(+), 156 deletions(-) diff --git a/device/testing/device-motorola-rtwo/APKBUILD b/device/testing/device-motorola-rtwo/APKBUILD index 600bdb431..57fd574d2 100644 --- a/device/testing/device-motorola-rtwo/APKBUILD +++ b/device/testing/device-motorola-rtwo/APKBUILD @@ -2,7 +2,7 @@ maintainer="snlavaise " pkgname=device-motorola-rtwo pkgver=1 -pkgrel=3 +pkgrel=4 pkgdesc="Motorola Moto Edge 40 Pro" url="https://postmarketos.org" arch="aarch64" @@ -36,6 +36,6 @@ package() { } sha512sums=" -785cb3c8c9e56d78c63b6e0cce5c4eee429160220358cf76379dfde2badecedbb4d5d88472ded57852fc5dd8fa0dd827f6f4f9d88fd26fba956e2dd945a1260a deviceinfo +beca2835f2ea99426eed39607259aab0b4ef119bd9855a961476b6fbca6e55a4d7985407d46067df760919814b8b97dd1f6a350c1f6f1a7ebdc0fb839e6cc0e7 deviceinfo c572e21cb0624b554a22a218b0c4faab9b6412654bed6bfef530f3068d076b21c573bd7f4b3ca65f510f8756f636a861191cce925ef49587db7d68d09558826c modules-initfs " diff --git a/device/testing/device-motorola-rtwo/deviceinfo b/device/testing/device-motorola-rtwo/deviceinfo index 84c464e0d..d90792e55 100644 --- a/device/testing/device-motorola-rtwo/deviceinfo +++ b/device/testing/device-motorola-rtwo/deviceinfo @@ -23,7 +23,7 @@ deviceinfo_getty="ttyMSM0;115200" # splash buffer, so there should be an early console on the panel. If the # screen stays black, set this to "true" (and fix the framebuffer@ node). # There is no DRM/mdss yet, so no mode setting / backlight control. -deviceinfo_no_framebuffer="false" +deviceinfo_no_framebuffer="true" # Split the initramfs: a small base archive (fits in init_boot, 8 MB) plus a # separate initramfs-extra loaded from the rootfs later. diff --git a/device/testing/linux-postmarketos-qcom-sm8550/APKBUILD b/device/testing/linux-postmarketos-qcom-sm8550/APKBUILD index ddc1c1552..15c00b7a0 100644 --- a/device/testing/linux-postmarketos-qcom-sm8550/APKBUILD +++ b/device/testing/linux-postmarketos-qcom-sm8550/APKBUILD @@ -5,7 +5,7 @@ maintainer="snlavaise " _flavor="postmarketos-qcom-sm8550" pkgname=linux-$_flavor pkgver=7.2 -pkgrel=0 +pkgrel=1 pkgdesc="Mainline kernel for Qualcomm SM8550 (Snapdragon 8 Gen 2) + Motorola rtwo" arch="aarch64" _carch="arm64" @@ -99,5 +99,5 @@ sha512sums=" 52d5aa7f94f6aa6141debf4ceb4fc7a2e75505a7cd38b8854e501be83c2b57863020f463f2fdb2fc93667e6cfe13274d077e5207a611e4797bd9404ee0e64c58 linux-postmarketos-qcom-sm8550-7.2.tar.gz f9ae52489f6b9e6fef64952943cd09732a5bef90a0e8765db03c256483028368687d6d5a1d80dd813a513e7e80d91f8b47f49b91cff67266b76f1d6275a7fea0 config-motorola-rtwo.aarch64 ca36b981736b94d93120bea60d84614a5f943b0577a87ce0c650a7c065dc8b8b889eeee766b8fb941e15af4db5d426583d2d85e3e243faf89aa9cac472f78388 rtwo.config -d3b10b54539c85eab2f200544710a63771518a1fb6aa9fed0d453a69f85de03c36d6da392e0671d6bbe0b79443169042779897b1c00c771a89a19d1540473693 sm8550-motorola-rtwo.dts +0781703a9d4da45854c1472802753dca9baf3a44541f4cee19ee95d34b857b8fce329fbb3fa0871f19f19b86877ba7299361218b41e000fe82bd9219374b69bd sm8550-motorola-rtwo.dts " diff --git a/device/testing/linux-postmarketos-qcom-sm8550/sm8550-motorola-rtwo.dts b/device/testing/linux-postmarketos-qcom-sm8550/sm8550-motorola-rtwo.dts index db66e7c31..91b002579 100644 --- a/device/testing/linux-postmarketos-qcom-sm8550/sm8550-motorola-rtwo.dts +++ b/device/testing/linux-postmarketos-qcom-sm8550/sm8550-motorola-rtwo.dts @@ -2,34 +2,17 @@ /* * Motorola Moto Edge 40 Pro (codename "rtwo"), SM8550 / Snapdragon 8 Gen 2 * - * WIP mainline bring-up device tree for postmarketOS. + * MINIMAL bring-up device tree: SoC + PMIC regulators + debug UART + USB + * (high-speed peripheral). No reserved-memory, no framebuffer, no touch, + * no SD/UFS, no keys - everything that could fault early is stripped. * - * Hardware facts gathered from the stock LineageOS 23.2 sources and the live - * DTB dumped from the device: - * - board-id / model "rtwo", XT2301-x, PVT, UFS (KIOXIA 256 GB) at 1d84000 - * - debug UART: GENI SE7 @ac0000/a9c000 -> mainline &uart7 (qupv3_id_0) - * - touchscreen: Goodix GT9916 on SPI SE4 (spi@a90000 -> &spi4), - * reset TLMM24, irq TLMM25, avdd = pm8550 L9B, iovdd = pm8550 L10B - * - keys: volume-up on pm8550 GPIO6, volume-down = PMIC resin, power = pwrkey - * - SD card: sdhc_2, CD on pm8550 GPIO12, vmmc L9B, vqmmc L8B - * - panel: CSOT/Tianma Novatek NT37705 / NT37701A, 1080x2400 DSC cmd-mode, - * reset TLMM133, vdd L11B (1.23-1.28 V), vci L13B (3.0 V), vddio 1.8 V - * - cont_splash framebuffer at 0xb8000000 - * - haptics: pm8550b (SoundWire), speakers: 2x WSA883x, WiFi/BT: WCN7850 "kiwi" - * - * Still TODO before this is a real port: DSI panel driver + &mdss, GPU zap - * shader, modem/remoteprocs, WiFi/BT (PCIe), charger (pmic-glink battmgr), - * NFC, fingerprint, camera (external wl2868c LDO on the i2c hub). - * - * Immediate goal: initramfs debug shell over USB (+ UART if wired), pstore - * console via ramoops, and ideally the bootloader framebuffer. + * If this reaches the initramfs (USB net / telnet works), the problem was + * in the removed nodes; add them back one at a time. If this also resets + * in <2s, the problem is the kernel/config/boot image, not the .dts. */ /dts-v1/; -#include -#include -#include #include #include "sm8550.dtsi" @@ -50,63 +33,7 @@ }; chosen { - #address-cells = <2>; - #size-cells = <2>; - ranges; - stdout-path = "serial0:115200n8"; - - /* - * Bootloader continuous-splash framebuffer, reused as an early - * console (CONFIG_FB_SIMPLE). Needs no panel driver. - * - * Panel is 1080x2400 (NT37705). Format/base are a best guess - * from the stock cont_splash / disp_rdump regions. If the screen - * is garbled: try format "x8r8g8b8" -> "r5g6b5" (and stride - * 1080*2) -> drop the node. If it is offset/torn, the stride is - * wrong. If it shows briefly then freezes, the display clocks - * got gated - add "clk_ignore_unused" to the kernel cmdline. - */ - framebuffer0: framebuffer@b8000000 { - compatible = "simple-framebuffer"; - reg = <0x0 0xb8000000 0x0 (1080 * 2400 * 4)>; - width = <1080>; - height = <2400>; - stride = <(1080 * 4)>; - format = "x8r8g8b8"; - }; - }; - - gpio-keys { - compatible = "gpio-keys"; - - pinctrl-0 = <&vol_up_n>; - pinctrl-names = "default"; - - key-volume-up { - label = "Volume Up"; - gpios = <&pm8550_gpios 6 GPIO_ACTIVE_LOW>; - linux,code = ; - debounce-interval = <15>; - linux,can-disable; - wakeup-source; - }; - }; - - reserved-memory { - /* Bootloader crash/console log ring, kept across reboots */ - ramoops@ae000000 { - compatible = "ramoops"; - reg = <0x0 0xae000000 0x0 0x60000>; - console-size = <0x40000>; - record-size = <0x20000>; - no-map; - }; - - cont_splash_mem: cont-splash@b8000000 { - reg = <0x0 0xb8000000 0x0 0x2b00000>; - no-map; - }; }; vph_pwr: vph-pwr-regulator { @@ -458,65 +385,16 @@ }; }; -&pm8550_gpios { - vol_up_n: volume-up-n-state { - pins = "gpio6"; - function = "normal"; - bias-pull-up; - input-enable; - power-source = <1>; - }; -}; - &pm8550b_eusb2_repeater { vdd18-supply = <&vreg_l15b_1p8>; vdd3-supply = <&vreg_l5b_3p1>; }; -&pon_pwrkey { - status = "okay"; -}; - -&pon_resin { - linux,code = ; - status = "okay"; -}; - -/* GENI QUP0 wrapper: hosts the debug UART (SE7) and the touch SPI (SE4) */ +/* GENI QUP0 wrapper: hosts the debug UART (SE7) */ &qupv3_id_0 { status = "okay"; }; -&spi4 { - status = "okay"; - - touchscreen@0 { - compatible = "goodix,gt9916"; - reg = <0>; - spi-max-frequency = <15000000>; - - interrupt-parent = <&tlmm>; - interrupts = <25 IRQ_TYPE_LEVEL_LOW>; - reset-gpios = <&tlmm 24 GPIO_ACTIVE_LOW>; - - avdd-supply = <&vreg_l9b_2p9>; - vddio-supply = <&vreg_l10b_1p8>; - - touchscreen-size-x = <1080>; - touchscreen-size-y = <2400>; - }; -}; - -&sdhc_2 { - cd-gpios = <&pm8550_gpios 12 GPIO_ACTIVE_LOW>; - vmmc-supply = <&vreg_l9b_2p9>; - vqmmc-supply = <&vreg_l8b_1p8>; - bus-width = <4>; - no-sdio; - no-mmc; - status = "okay"; -}; - &sleep_clk { clock-frequency = <32000>; }; @@ -525,29 +403,8 @@ status = "okay"; }; -&ufs_mem_hc { - reset-gpios = <&tlmm 210 GPIO_ACTIVE_LOW>; - vcc-supply = <&vreg_l17b_2p5>; - vcc-max-microamp = <1300000>; - vccq-supply = <&vreg_l1g_1p2>; - vccq-max-microamp = <1200000>; - vdd-hba-supply = <&vreg_l3g_1p2>; - status = "okay"; -}; - -&ufs_mem_phy { - vdda-phy-supply = <&vreg_l1d_0p88>; - vdda-pll-supply = <&vreg_l3e_1p2>; - status = "okay"; -}; - &usb_1 { - /* - * High-speed peripheral only for bring-up (USB networking in the - * initramfs). Drop the SuperSpeed PHY + the type-C role switch so dwc3 - * comes up without pmic-glink / a connector. Restore usb-role-switch, - * the usb3-phy and &usb_dp_qmpphy once type-C is described. - */ + /* high-speed peripheral only, no type-C / SuperSpeed */ dr_mode = "peripheral"; maximum-speed = "high-speed"; /delete-property/ usb-role-switch;