From caac069a3638293ca447c19397f13ff29b7de03f Mon Sep 17 00:00:00 2001 From: snlavaise Date: Wed, 9 Sep 2026 01:09:17 -0300 Subject: [PATCH] motorola-rtwo: add qcom,msm-id + qcom,board-id + ramoops to the .dts The Sony-modelled minimal DT was electrically correct (verified node by node against the DTB LineageOS 23.2 actually boots: debug UART SE7, eUSB2 phy+repeater, hsphy supplies pm8550vs_2_l1/l3 all match exactly) but missing two things the stock firmware relies on: - qcom,msm-id = <0x218 0x20000 0x207 0x20000 0x207 0x10000 0x218 0x10000> qcom,board-id = <0x241 0xb1b0> The Motorola ABL selects a DTB out of a multi-FDT vendor_boot; without a matching SoC/board table it may reject our blob (-> no DT -> instant reset, which matches the <2s black-screen loop). - ramoops @ 0xae000000 (0x40000 console + 0x20000 record), copied from the stock DT. rtwo.config already builds CONFIG_PSTORE_RAM; with the node in place a failed boot's console can be read back from a later pmOS boot. No 'no-map' (arm64 ramoops needs the linear map). Co-Authored-By: Claude Sonnet 5 Claude-Session: https://claude.ai/code/session_01QF5HebjUsRaxbW4cBX6HJP --- .../linux-postmarketos-qcom-sm8550/APKBUILD | 4 +- .../sm8550-motorola-rtwo.dts | 38 +++++++++++++++++-- 2 files changed, 37 insertions(+), 5 deletions(-) diff --git a/device/testing/linux-postmarketos-qcom-sm8550/APKBUILD b/device/testing/linux-postmarketos-qcom-sm8550/APKBUILD index 09de2db56..bb1fe541c 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=10 +pkgrel=11 pkgdesc="Mainline kernel for Qualcomm SM8550 (Snapdragon 8 Gen 2) + Motorola rtwo" arch="aarch64" _carch="arm64" @@ -106,5 +106,5 @@ sha512sums=" 52d5aa7f94f6aa6141debf4ceb4fc7a2e75505a7cd38b8854e501be83c2b57863020f463f2fdb2fc93667e6cfe13274d077e5207a611e4797bd9404ee0e64c58 linux-postmarketos-qcom-sm8550-7.2.tar.gz f9ae52489f6b9e6fef64952943cd09732a5bef90a0e8765db03c256483028368687d6d5a1d80dd813a513e7e80d91f8b47f49b91cff67266b76f1d6275a7fea0 config-motorola-rtwo.aarch64 53441c23146d76bb0eaa358a25f6cce4f21740cfb65b755df52bbb218daf2cda30b3d80fa6ca4e283ea1afe2b0fa708307b678b421898100710b8fb99b08d6c5 rtwo.config -7399bf2dccbc1584258ea0f3fc19b062d26b4cef94f54cc5b36c8a139115d29c9e3459092fbd9fb7a1008173c7974516058b70b05fba48cf9d43dff8cda4507b sm8550-motorola-rtwo.dts +91f6a22d1c3ae0a2919cdc8d31adb3bb0ef8db0ba9e3b1608eeefc9460ccf19704d54e09338556aa735c3a875a73107785ab33a795d48ad86febc1abd3ad5aba 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 11cf88998..cb2afb4d2 100644 --- a/device/testing/linux-postmarketos-qcom-sm8550/sm8550-motorola-rtwo.dts +++ b/device/testing/linux-postmarketos-qcom-sm8550/sm8550-motorola-rtwo.dts @@ -4,13 +4,17 @@ * * MINIMAL bring-up DT, modelled on the mainline Sony Xperia 1 V * (sm8550-sony-xperia-yodo-pdx234, same SoC, working mainline port): - * - no /memory, no qcom,msm-id, no reserved-memory overrides, no - * framebuffer - exactly like Sony (its Qualcomm bootloader injects - * memory and passes the DT straight through) + * - no /memory, no framebuffer - like Sony, the Qualcomm-derived + * bootloader injects the memory banks and passes the DT through * - regulator tree copied VERBATIM from Sony, including the rails it * deliberately omits ("the board seems to crash on access") * - only the debug UART and USB (high-speed peripheral) are enabled, * enough to reach the initramfs and bring up USB networking + * + * Unlike Sony, this DT does carry qcom,msm-id / qcom,board-id (the + * Motorola ABL selects a DTB from a multi-FDT vendor_boot) and a + * ramoops reserved-memory region (console survives a failed boot), + * both taken from the DT the stock firmware runs. */ /dts-v1/; @@ -30,6 +34,17 @@ compatible = "motorola,rtwo", "qcom,sm8550"; chassis-type = "handset"; + /* + * The Motorola ABL does DTB selection (its stock vendor_boot carries + * several concatenated FDTs). Carry the SoC/board match table from the + * DT the stock firmware runs so the bootloader accepts this blob: + * qcom,msm-id = <0x218 0x20000 0x207 0x20000 0x207 0x10000 0x218 0x10000> + * qcom,board-id = <0x241 0xb1b0> + */ + qcom,msm-id = <0x218 0x20000>, <0x207 0x20000>, + <0x207 0x10000>, <0x218 0x10000>; + qcom,board-id = <0x241 0xb1b0>; + aliases { serial0 = &uart7; }; @@ -38,6 +53,23 @@ stdout-path = "serial0:115200n8"; }; + /* + * pstore/ramoops: rtwo.config enables CONFIG_PSTORE_RAM, so a failed + * boot's console survives in this region and can be read back from a + * later pmOS boot (/sys/fs/pstore/console-ramoops-0). Region + sizes + * copied from the stock DT (0xae000000, 0x40000 console + 0x20000 + * record = 0x60000). No 'no-map': on arm64 ramoops must stay in the + * linear map or memremap of the record area faults. + */ + reserved-memory { + ramoops@ae000000 { + compatible = "ramoops"; + reg = <0x0 0xae000000 0x0 0x60000>; + console-size = <0x40000>; + record-size = <0x20000>; + }; + }; + vph_pwr: vph-pwr-regulator { compatible = "regulator-fixed"; regulator-name = "vph_pwr";