device-motorola-rtwo: new device (Motorola Moto Edge 40 Pro), WIP

Bring-up for the Motorola Moto Edge 40 Pro (codename "rtwo", SM8550 /
Snapdragon 8 Gen 2).

New linux-postmarketos-qcom-sm8550 aport:
 - Built from the postmarketOS soc/qcom-sm8550 tree (branch bringup,
   6.13-rc3, commit 22591bbc).
 - Kernel config is generated at build time from the in-tree upstream
   defconfig plus the repo's pmos.config and devices.config fragments.
 - Ships a WIP sm8550-motorola-rtwo.dts: SoC + PMICs + the sm8550-mtp
   regulator tree, UART7 debug console, USB in high-speed peripheral mode,
   UFS and SD card. Display panel, touchscreen, modem, WiFi/BT, GPU zap
   shader and reserved-memory carveouts still need to be described from
   Motorola's downstream sources.

device-motorola-rtwo:
 - deviceinfo completed from bootimg analysis of the stock boot.img:
   Android boot header v4, 4096-byte pages, no qcdt, fastboot flashing.
   Added screen geometry, UFS sector size and a serial getty; framebuffer
   disabled until the panel works.
 - Depends on the new kernel, soc-qcom and mkbootimg.

Both packages still need 'pmbootstrap checksum' for the kernel tarball and
a real boot test; see the TODO comments in the APKBUILDs and the .dts.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01QF5HebjUsRaxbW4cBX6HJP
This commit is contained in:
2026-09-08 13:35:56 -03:00
co-authored by Claude Sonnet 5
parent 9479a409e3
commit a5ae1ad9b8
5 changed files with 659 additions and 0 deletions
@@ -0,0 +1,41 @@
# Reference: <https://postmarketos.org/devicepkg>
maintainer="snlavaise <snlavaise@gmail.com>"
pkgname=device-motorola-rtwo
pkgver=1
pkgrel=0
pkgdesc="Motorola Moto Edge 40 Pro"
url="https://postmarketos.org"
arch="aarch64"
license="MIT"
depends="
linux-postmarketos-qcom-sm8550
mkbootimg
postmarketos-base
soc-qcom
"
makedepends="devicepkg-dev"
source="
deviceinfo
modules-initfs
"
options="!archcheck !check"
# TODO (as hardware comes up):
# - firmware-motorola-rtwo (WiFi/BT/modem/GPU blobs, generate from the
# stock image with 'pmbootstrap ...' or extract manually)
# - firmware-qcom-adreno-* for the Adreno 740 (GPU / mesa-vulkan-freedreno)
# - make-dynpart-mappings once super partitions are mapped
# - soc-qcom-modem, qbootctl (A/B slot handling) once booting
build() {
devicepkg_build $startdir $pkgname
}
package() {
devicepkg_package $startdir $pkgname
}
sha512sums="
2dee03e8320880337767f0f6523c2f85ba24940a4499ea6f470a7e1655e7c6e69122018daa03ddbba34b5302dc5f40ae48a7bcabfb9aedcfab10b112227e3052 deviceinfo
977b5009bf750b3ff1419afc9ccb6a955f79c62f0bddd07af9f75a687a939eddda5c697b38a29ad8fea172693506dd353ce0b01bedd4dac72b105c060c343188 modules-initfs
"
@@ -0,0 +1,42 @@
# Reference: <https://postmarketos.org/deviceinfo>
# Please use double quotes only. You can source this file in shell
# scripts.
deviceinfo_format_version="0"
deviceinfo_name="Motorola Moto Edge 40 Pro"
deviceinfo_manufacturer="Motorola"
deviceinfo_codename="motorola-rtwo"
deviceinfo_year="2023"
deviceinfo_dtb="qcom/sm8550-motorola-rtwo"
deviceinfo_append_dtb="true"
deviceinfo_arch="aarch64"
# Device related
deviceinfo_chassis="handset"
deviceinfo_keyboard="false"
deviceinfo_external_storage="true"
deviceinfo_screen_width="1220"
deviceinfo_screen_height="2712"
deviceinfo_getty="ttyMSM0;115200"
# The panel is not described in the device tree yet, so there is no display
# output. Flip this to "false" once mdss_dsi0 + a panel node work.
deviceinfo_no_framebuffer="true"
# Bootloader related
deviceinfo_flash_method="fastboot"
deviceinfo_kernel_cmdline="console=ttyMSM0,115200n8 earlycon"
deviceinfo_generate_bootimg="true"
deviceinfo_bootimg_qcdt="false"
deviceinfo_header_version="4"
deviceinfo_flash_pagesize="4096"
deviceinfo_flash_sparse="true"
# UFS storage
deviceinfo_rootfs_image_sector_size="4096"
# A/B + dynamic (super) partitions. Fill in the 'super' block device once
# known (from the initramfs debug shell:
# ls -l /dev/disk/by-partlabel/super
# ), then uncomment:
# deviceinfo_super_partitions="/dev/sda1 /dev/sda1"
@@ -0,0 +1,12 @@
# Modules to include in the initramfs (one name per line, '#' = comment).
# Needed for: USB networking + telnet debug-shell, and later FDE unlock
# (touchscreen + panel).
#
# Most of the SM8550 USB gadget path is built-in with the postmarketOS
# kernel config, so nothing is strictly required yet. Add modules here as
# the port progresses, e.g.:
#
# phy-qcom-eusb2-repeater
# phy-qcom-qmp-combo
# panel-<vendor>-<name>
# <touchscreen driver>
@@ -0,0 +1,108 @@
# Reference: <https://postmarketos.org/vendorkernel>
# Kernel config based on: arch/arm64/configs/defconfig (+ pmos.config, devices.config)
maintainer="snlavaise <snlavaise@gmail.com>"
_flavor="postmarketos-qcom-sm8550"
pkgname=linux-$_flavor
pkgver=6.13_rc3
pkgrel=0
pkgdesc="Mainline kernel fork for Qualcomm SM8550 (Snapdragon 8 Gen 2) devices"
arch="aarch64"
_carch="arm64"
url="https://gitlab.postmarketos.org/soc/qcom-sm8550/linux"
license="GPL-2.0-only"
options="
!check
!strip
!tracedeps
pmb:cross-native
pmb:kconfigcheck-community
pmb:kconfigcheck-uefi
"
makedepends="
bash
bison
clang
elfutils-dev
findutils
flex
linux-headers
lld
llvm
openssl-dev
pahole
perl
postmarketos-installkernel
python3
zstd
"
# Source: snapshot of the postmarketOS SM8550 bring-up tree (branch: bringup).
# Bump _commit to move forward; then run 'pmbootstrap checksum linux-postmarketos-qcom-sm8550'.
_commit="22591bbc21da5cc0c6e37503b77bd2d852fe241c"
source="
$pkgname-$_commit.tar.gz::https://gitlab.postmarketos.org/soc/qcom-sm8550/linux/-/archive/$_commit/linux-$_commit.tar.gz
sm8550-motorola-rtwo.dts
"
builddir="$srcdir/linux-$_commit"
prepare() {
default_prepare
# The Motorola rtwo (Moto Edge 40 Pro) device tree is not upstream yet, so
# drop it into the tree and register it in the Makefile before configuring.
local _dtsdir="$builddir/arch/$_carch/boot/dts/qcom"
cp "$srcdir/sm8550-motorola-rtwo.dts" "$_dtsdir/sm8550-motorola-rtwo.dts"
if ! grep -q "sm8550-motorola-rtwo.dtb" "$_dtsdir/Makefile"; then
sed -i '/sm8550-mtp\.dtb/a dtb-$(CONFIG_ARCH_QCOM) += sm8550-motorola-rtwo.dtb' \
"$_dtsdir/Makefile"
fi
# Generate .config from the in-tree upstream defconfig plus the postmarketOS
# and device config fragments shipped by the kernel repo.
# To "freeze" this config: build once, copy "$builddir"/.config to
# config-$_flavor.$CARCH, add it to source= and switch prepare() to a plain
# 'cp "$srcdir/config-$_flavor.$CARCH" .config' (like the other qcom kernels).
make ARCH="$_carch" LLVM=1 HOSTLDFLAGS="-fuse-ld=lld" \
defconfig pmos.config devices.config
}
build() {
unset LDFLAGS
make ARCH="$_carch" LLVM=1 HOSTLDFLAGS="-fuse-ld=lld" \
KBUILD_BUILD_VERSION="$((pkgrel + 1))-$_flavor"
}
package() {
mkdir -p "$pkgdir"/boot
if [ -e "$builddir/arch/$_carch/boot/vmlinuz.efi" ]; then
# ZBOOT EFI decompressor for EFI booting
install -Dm644 "$builddir/arch/$_carch/boot/vmlinuz.efi" \
"$pkgdir/boot/linux.efi"
# gzip'd image for Android boot.img compatibility
install -Dm644 "$builddir/arch/$_carch/boot/vmlinuz" \
"$pkgdir/boot/vmlinuz"
else
echo "WARNING: CONFIG_EFI_ZBOOT not enabled!"
install -Dm644 "$builddir/arch/$_carch/boot/Image.gz" \
"$pkgdir/boot/vmlinuz"
fi
make modules_install dtbs_install \
ARCH="$_carch" \
LLVM=1 \
INSTALL_PATH="$pkgdir"/boot \
INSTALL_MOD_PATH="$pkgdir"/usr \
INSTALL_MOD_STRIP=1 \
INSTALL_DTBS_PATH="$pkgdir"/boot/dtbs
rm -f "$pkgdir"/usr/lib/modules/*/build "$pkgdir"/usr/lib/modules/*/source
install -D "$builddir"/include/config/kernel.release \
"$pkgdir"/usr/share/kernel/"$_flavor"/kernel.release
}
# The kernel tarball checksum is filled in by
# 'pmbootstrap checksum linux-postmarketos-qcom-sm8550' (it downloads ~250 MB).
sha512sums="
ed1e3a57c30dff3f40026c2e318965fa7f62dfb0eef428ee0354341137bffde324f93cf5a500619e476e44ac616351ac9cafec6dc3ecefa69b68f24b9c94bbb2 sm8550-motorola-rtwo.dts
"
@@ -0,0 +1,456 @@
// SPDX-License-Identifier: BSD-3-Clause
/*
* Motorola Moto Edge 40 Pro / Razr 40 Ultra platform (codename "rtwo"), SM8550
*
* WIP bring-up device tree for postmarketOS. This is NOT a finished port:
* - The regulator tree below is copied from sm8550-mtp.dts (the Qualcomm
* reference design). Verify every rail against Motorola's downstream
* (LineageOS: kernel/motorola/sm8550, arch/arm64/boot/dts/vendor/qcom/*rtwo*).
* - reserved-memory / memory@ is left to the bootloader. If the board hangs
* early, add the carveouts from the downstream DT (cont_splash, ramoops,
* adsp/cdsp/mpss/... regions).
* - Display panel, touchscreen, WiFi/BT, NFC, modem, charger/fuel-gauge,
* haptics and the GPU zap shader still need to be described.
*
* Goal of this file as-is: reach the postmarketOS initramfs debug shell over
* USB (and the UART if you have a cable), then iterate.
*/
/dts-v1/;
#include <dt-bindings/gpio/gpio.h>
#include <dt-bindings/regulator/qcom,rpmh-regulator.h>
#include "sm8550.dtsi"
#include "pm8550.dtsi"
#include "pm8550b.dtsi"
#define PMK8550VE_SID 5
#include "pm8550ve.dtsi"
#include "pm8550vs.dtsi"
#include "pmk8550.dtsi"
/ {
model = "Motorola Moto Edge 40 Pro";
compatible = "motorola,rtwo", "qcom,sm8550";
chassis-type = "handset";
aliases {
serial0 = &uart7;
};
chosen {
stdout-path = "serial0:115200n8";
/*
* TODO: a simple-framebuffer node pointing at the bootloader
* framebuffer would give an early console on the panel. The
* base address / geometry must come from the downstream DT or
* from 'fastboot oem' / the LK log.
*/
};
vph_pwr: vph-pwr-regulator {
compatible = "regulator-fixed";
regulator-name = "vph_pwr";
regulator-min-microvolt = <3700000>;
regulator-max-microvolt = <3700000>;
regulator-always-on;
regulator-boot-on;
};
};
&apps_rsc {
/* Copied from sm8550-mtp.dts - VERIFY against Motorola downstream */
regulators-0 {
compatible = "qcom,pm8550-rpmh-regulators";
qcom,pmic-id = "b";
vdd-bob1-supply = <&vph_pwr>;
vdd-bob2-supply = <&vph_pwr>;
vdd-l1-l4-l10-supply = <&vreg_s6g_1p8>;
vdd-l2-l13-l14-supply = <&vreg_bob1>;
vdd-l3-supply = <&vreg_s4g_1p3>;
vdd-l5-l16-supply = <&vreg_bob1>;
vdd-l6-l7-supply = <&vreg_bob1>;
vdd-l8-l9-supply = <&vreg_bob1>;
vdd-l11-supply = <&vreg_s4g_1p3>;
vdd-l12-supply = <&vreg_s6g_1p8>;
vdd-l15-supply = <&vreg_s6g_1p8>;
vdd-l17-supply = <&vreg_bob2>;
vreg_bob1: bob1 {
regulator-name = "vreg_bob1";
regulator-min-microvolt = <3296000>;
regulator-max-microvolt = <3960000>;
regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
};
vreg_bob2: bob2 {
regulator-name = "vreg_bob2";
regulator-min-microvolt = <2720000>;
regulator-max-microvolt = <3960000>;
regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
};
vreg_l1b_1p8: ldo1 {
regulator-name = "vreg_l1b_1p8";
regulator-min-microvolt = <1800000>;
regulator-max-microvolt = <1800000>;
regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
};
vreg_l2b_3p0: ldo2 {
regulator-name = "vreg_l2b_3p0";
regulator-min-microvolt = <3008000>;
regulator-max-microvolt = <3008000>;
regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
};
vreg_l5b_3p1: ldo5 {
regulator-name = "vreg_l5b_3p1";
regulator-min-microvolt = <3104000>;
regulator-max-microvolt = <3104000>;
regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
};
vreg_l6b_1p8: ldo6 {
regulator-name = "vreg_l6b_1p8";
regulator-min-microvolt = <1800000>;
regulator-max-microvolt = <3008000>;
regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
};
vreg_l7b_1p8: ldo7 {
regulator-name = "vreg_l7b_1p8";
regulator-min-microvolt = <1800000>;
regulator-max-microvolt = <3008000>;
regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
};
vreg_l8b_1p8: ldo8 {
regulator-name = "vreg_l8b_1p8";
regulator-min-microvolt = <1800000>;
regulator-max-microvolt = <3008000>;
regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
};
vreg_l9b_2p9: ldo9 {
regulator-name = "vreg_l9b_2p9";
regulator-min-microvolt = <2960000>;
regulator-max-microvolt = <3008000>;
regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
};
vreg_l11b_1p2: ldo11 {
regulator-name = "vreg_l11b_1p2";
regulator-min-microvolt = <1200000>;
regulator-max-microvolt = <1504000>;
regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
};
vreg_l12b_1p8: ldo12 {
regulator-name = "vreg_l12b_1p8";
regulator-min-microvolt = <1800000>;
regulator-max-microvolt = <1800000>;
regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
};
vreg_l13b_3p0: ldo13 {
regulator-name = "vreg_l13b_3p0";
regulator-min-microvolt = <3000000>;
regulator-max-microvolt = <3000000>;
regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
};
vreg_l14b_3p2: ldo14 {
regulator-name = "vreg_l14b_3p2";
regulator-min-microvolt = <3200000>;
regulator-max-microvolt = <3200000>;
regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
};
vreg_l15b_1p8: ldo15 {
regulator-name = "vreg_l15b_1p8";
regulator-min-microvolt = <1800000>;
regulator-max-microvolt = <1800000>;
regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
};
vreg_l16b_2p8: ldo16 {
regulator-name = "vreg_l16b_2p8";
regulator-min-microvolt = <2800000>;
regulator-max-microvolt = <2800000>;
regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
};
vreg_l17b_2p5: ldo17 {
regulator-name = "vreg_l17b_2p5";
regulator-min-microvolt = <2504000>;
regulator-max-microvolt = <2504000>;
regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
};
};
regulators-1 {
compatible = "qcom,pm8550vs-rpmh-regulators";
qcom,pmic-id = "c";
vdd-l3-supply = <&vreg_s4e_0p9>;
vreg_l3c_0p91: ldo3 {
regulator-name = "vreg_l3c_0p9";
regulator-min-microvolt = <880000>;
regulator-max-microvolt = <912000>;
regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
};
};
regulators-2 {
compatible = "qcom,pm8550vs-rpmh-regulators";
qcom,pmic-id = "d";
vdd-l1-supply = <&vreg_s4e_0p9>;
vreg_l1d_0p88: ldo1 {
regulator-name = "vreg_l1d_0p88";
regulator-min-microvolt = <880000>;
regulator-max-microvolt = <920000>;
regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
};
};
regulators-3 {
compatible = "qcom,pm8550vs-rpmh-regulators";
qcom,pmic-id = "e";
vdd-l1-supply = <&vreg_s4e_0p9>;
vdd-l2-supply = <&vreg_s4e_0p9>;
vdd-l3-supply = <&vreg_s4g_1p3>;
vdd-s4-supply = <&vph_pwr>;
vdd-s5-supply = <&vph_pwr>;
vreg_s4e_0p9: smps4 {
regulator-name = "vreg_s4e_0p9";
regulator-min-microvolt = <904000>;
regulator-max-microvolt = <984000>;
regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
};
vreg_s5e_1p1: smps5 {
regulator-name = "vreg_s5e_1p1";
regulator-min-microvolt = <1080000>;
regulator-max-microvolt = <1120000>;
regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
};
vreg_l1e_0p88: ldo1 {
regulator-name = "vreg_l1e_0p88";
regulator-min-microvolt = <880000>;
regulator-max-microvolt = <880000>;
regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
};
vreg_l2e_0p9: ldo2 {
regulator-name = "vreg_l2e_0p9";
regulator-min-microvolt = <904000>;
regulator-max-microvolt = <970000>;
regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
};
vreg_l3e_1p2: ldo3 {
regulator-name = "vreg_l3e_1p2";
regulator-min-microvolt = <1200000>;
regulator-max-microvolt = <1200000>;
regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
};
};
regulators-4 {
compatible = "qcom,pm8550ve-rpmh-regulators";
qcom,pmic-id = "f";
vdd-l1-supply = <&vreg_s4e_0p9>;
vdd-l2-supply = <&vreg_s4e_0p9>;
vdd-l3-supply = <&vreg_s4e_0p9>;
vdd-s4-supply = <&vph_pwr>;
vreg_s4f_0p5: smps4 {
regulator-name = "vreg_s4f_0p5";
regulator-min-microvolt = <500000>;
regulator-max-microvolt = <700000>;
regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
};
vreg_l1f_0p9: ldo1 {
regulator-name = "vreg_l1f_0p9";
regulator-min-microvolt = <912000>;
regulator-max-microvolt = <912000>;
regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
};
vreg_l2f_0p88: ldo2 {
regulator-name = "vreg_l2f_0p88";
regulator-min-microvolt = <880000>;
regulator-max-microvolt = <912000>;
regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
};
vreg_l3f_0p91: ldo3 {
regulator-name = "vreg_l3f_0p91";
regulator-min-microvolt = <880000>;
regulator-max-microvolt = <912000>;
regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
};
};
regulators-5 {
compatible = "qcom,pm8550vs-rpmh-regulators";
qcom,pmic-id = "g";
vdd-l1-supply = <&vreg_s4g_1p3>;
vdd-l2-supply = <&vreg_s4g_1p3>;
vdd-l3-supply = <&vreg_s4g_1p3>;
vdd-s1-supply = <&vph_pwr>;
vdd-s2-supply = <&vph_pwr>;
vdd-s3-supply = <&vph_pwr>;
vdd-s4-supply = <&vph_pwr>;
vdd-s5-supply = <&vph_pwr>;
vdd-s6-supply = <&vph_pwr>;
vreg_s1g_1p2: smps1 {
regulator-name = "vreg_s1g_1p2";
regulator-min-microvolt = <1200000>;
regulator-max-microvolt = <1300000>;
regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
};
vreg_s2g_0p8: smps2 {
regulator-name = "vreg_s2g_0p8";
regulator-min-microvolt = <800000>;
regulator-max-microvolt = <1000000>;
regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
};
vreg_s3g_0p7: smps3 {
regulator-name = "vreg_s3g_0p7";
regulator-min-microvolt = <300000>;
regulator-max-microvolt = <1004000>;
regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
};
vreg_s4g_1p3: smps4 {
regulator-name = "vreg_s4g_1p3";
regulator-min-microvolt = <1200000>;
regulator-max-microvolt = <1352000>;
regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
};
vreg_s5g_0p8: smps5 {
regulator-name = "vreg_s5g_0p8";
regulator-min-microvolt = <500000>;
regulator-max-microvolt = <1004000>;
regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
};
vreg_s6g_1p8: smps6 {
regulator-name = "vreg_s6g_1p8";
regulator-min-microvolt = <1800000>;
regulator-max-microvolt = <2000000>;
regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
};
vreg_l1g_1p2: ldo1 {
regulator-name = "vreg_l1g_1p2";
regulator-min-microvolt = <1200000>;
regulator-max-microvolt = <1200000>;
regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
};
vreg_l2g_1p2: ldo2 {
regulator-name = "vreg_l2g_1p2";
regulator-min-microvolt = <1200000>;
regulator-max-microvolt = <1200000>;
regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
};
vreg_l3g_1p2: ldo3 {
regulator-name = "vreg_l3g_1p2";
regulator-min-microvolt = <1200000>;
regulator-max-microvolt = <1200000>;
regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
};
};
};
&pm8550b_eusb2_repeater {
vdd18-supply = <&vreg_l15b_1p8>;
vdd3-supply = <&vreg_l5b_3p1>;
};
/* GENI QUP wrapper that hosts the debug UART (uart7) */
&qupv3_id_1 {
status = "okay";
};
&sdhc_2 {
vmmc-supply = <&vreg_l9b_2p9>;
vqmmc-supply = <&vreg_l8b_1p8>;
bus-width = <4>;
no-sdio;
no-mmc;
/* TODO: card-detect gpio from downstream DT */
broken-cd;
status = "okay";
};
&sleep_clk {
clock-frequency = <32000>;
};
&uart7 {
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 {
status = "okay";
};
&usb_1_dwc3 {
/* peripheral-only is safest for bring-up (USB networking in initramfs) */
dr_mode = "peripheral";
maximum-speed = "high-speed";
};
&usb_1_hsphy {
vdd-supply = <&vreg_l1e_0p88>;
vdda12-supply = <&vreg_l3e_1p2>;
phys = <&pm8550b_eusb2_repeater>;
status = "okay";
};
/*
* The USB3/DP combo PHY is left disabled for now; high-speed gadget mode is
* enough for the initramfs debug shell. Enable &usb_dp_qmpphy and drop
* "maximum-speed" above once SuperSpeed / DisplayPort is needed.
*/
&xo_board {
clock-frequency = <76800000>;
};