// SPDX-License-Identifier: GPL-2.0-only /* * Project Aurora — JZ08AU-XPA-7J-R3 (MSM8916, 512 MB, ST7735S SPI panel). * B9B (RAM test only) = B8B + SPI ST7735S panel (panel-mipi-dbi) + MPP4 backlight. B8B: bam1 + Pronto/WCNSS remoteproc + Iris (no WLAN stack, no NV). * Base was RAM-BOOT MODEM1: EMMC1 + MPSS remoteproc (native Aurora firmware, rmtfs -r). No BAM-DMUX/WWAN/WCNSS. Everything that could touch * storage, radios or power management is explicitly disabled. * * Hardware facts from stock Aurora dtb_01 (see NOTES.md S2.1/S12): * console = BLSP1 UART2 serial@78b0000, GPIO4 (TX) / GPIO5 (RX), 115200 8N1. * RAM size (memory@80000000 reg) is filled in by lk2nd from SMEM. */ /dts-v1/; #include #include "msm8916-pm8916.dtsi" /* + RPM regulators (USB PHY L7/L13) */ / { model = "JZ08AU Aurora (RAM boot B9B)"; compatible = "jz08au,aurora", "qcom,msm8916"; chassis-type = "embedded"; aliases { serial0 = &blsp_uart2; mmc0 = &sdhc_1; /* eMMC */ }; chosen { stdout-path = "serial0:115200n8"; }; /* * B8B: WCNSS/Pronto carve-out at the stock Aurora address. Stock dtb_01 "peripheral_mem" * (pronto PIL region) = 0x8b600000 size 0x600000; wcnss.mdt is linked at 0x8b600000. * Directly follows mpss_mem (0x86800000 + 0x4e00000 = 0x8b600000) -> no overlap. * Same fixed-address pattern as upstream msm8916-longcheer-l8150.dts. */ reserved-memory { /delete-node/ wcnss; wcnss_mem: wcnss@8b600000 { reg = <0x0 0x8b600000 0x0 0x600000>; no-map; }; }; }; &blsp_uart2 { pinctrl-0 = <&blsp_uart2_console_default>; pinctrl-1 = <&blsp_uart2_console_sleep>; pinctrl-names = "default", "sleep"; status = "okay"; }; /* --- RAM boot MODEM1 safety: no SD slot, no Wi-Fi, no modem data plane --- */ /* sdhc_1 (eMMC): enabled below, READ-ONLY enforced by initramfs (blockdev --setro) */ &sdhc_2 { status = "disabled"; }; /* usb: see peripheral block below */ /* mpss: enabled below */ &bam_dmux { status = "okay"; }; /* B4b1: data-plane mux driver (no bearer) */ &bam_dmux_dma { status = "okay"; }; /* wcnss: enabled below (B8B) */ /* * USB peripheral only (ChipIdea ci-hdrc + qcom,usb-hs-phy-msm8916, upstream bindings). * Stock Aurora: HSUSB_1p8 = L7 1.8 V, HSUSB_3p3 = L13 3.075 V, otg-control = 2 (PMIC VBUS detect), * PHY init-seq identical to upstream. VBUS detect via PM8916 USB_IN (as on JZ02). No host, no role switch. */ &pm8916_usbin { status = "okay"; }; &usb { dr_mode = "peripheral"; extcon = <&pm8916_usbin>; status = "okay"; }; &usb_hs_phy { extcon = <&pm8916_usbin>; }; /* * Internal eMMC (stock: bootdevice=7824900.sdhci, qcom,bus-width 8, nonremovable, * vdd = 8916_l8 2.85-2.9 V, vdd-io = 8916_l5 1.8 V). Upstream msm8916.dtsi already provides * bus-width = <8>, non-removable, mmc-ddr-1_8v (no HS200 = conservative), sdc1 pinctrl; * msm8916-pm8916.dtsi provides vmmc = pm8916_l8, vqmmc = pm8916_l5. Only enable it here. */ &sdhc_1 { status = "okay"; }; /* * MPSS (modem) remoteproc, native Aurora firmware from the RO-mounted modem FAT. * mpss_mem: stock Aurora "modem_adsp_region" base 0x86800000 size 78 MiB (0x4e00000); * Aurora modem.mdt load span 0x86800000..0x8b300000 (75 MiB), same as stock PIL log. * mba_mem: upstream dynamic 1 MiB. pll-supply (pm8916_l7), cx/mx rpmpd from msm8916(-pm8916).dtsi. * Driver has auto_boot = false: MSS starts only when rmtfs (-s) requests it. * BAM-DMUX stays disabled (no data plane at this stage). */ &mba_mem { status = "okay"; }; &mpss_mem { reg = <0x0 0x86800000 0x0 0x4e00000>; status = "okay"; }; &mpss { pinctrl-0 = <&sim_ctrl_default>; pinctrl-names = "default"; status = "okay"; }; /* * SIM routing as found on stock Aurora (dtb_01 gpio-leds default-state and live * Android /sys/kernel/debug/gpio): gpio1 (sim3_switch) high, gpio20 (sim_hotdet), * gpio22 (sim1_switch), gpio23 (sim2_switch) low. Passive routing only. */ &tlmm { sim_ctrl_default: sim-ctrl-default-state { sim-low-pins { pins = "gpio20", "gpio22", "gpio23"; function = "gpio"; bias-disable; output-low; }; sim-high-pins { pins = "gpio1"; function = "gpio"; bias-disable; output-high; }; }; }; /* * B8B: Pronto (WCNSS) remoteproc + Iris RF. Firmware = default "wcnss.mdt" from /firmware/image (RO FAT). * Supplies come from msm8916-pm8916.dtsi and match stock dtb_01: vddpx/vddxo = L7 1.8 V, vddrfa = S3, * vddpa = L9 3.3 V, vdddig = L5 1.8 V. * Iris compatible: stock DT has none (generic qcom,wcnss_wlan + qcom,has-autodetect-xo). Stock voltages exclude * WCN3660 (vddpa 2.9-3.0 V, vdddig 1.2 V); WCN3620 vs WCN3680 have identical vregs (differ in 48 MHz XO); * stock Pronto FW caps lack DOT11AC -> WCN3620 (controlled hypothesis, see logs/b8/b8b). * WLAN/cfg80211/wcn36xx are NOT in this kernel; wcnss_ctrl NV download is expected to fail (no NV in rootfs). */ &wcnss { status = "okay"; }; &wcnss_iris { compatible = "qcom,wcn3620"; }; /* * B9B: built-in display, reconstructed from stock Aurora LK (aboot) + stock dtb_01 (logs/b9/b9a/B9A-RESULT.md). * Panel: ST7735S 128x128 on BLSP1 QUP4 (spi@78b8000), MIPI-DBI type C 4-wire: GPIO12 MOSI, 13 MISO, 14 CS0 (native), 15 CLK; * D/C = GPIO116 (stock "disp_dc"), RESET = GPIO118 (stock "disp_rst_n"). Stock LK: 16 MHz, SPI mode 3, TX only. * Supplies per stock dtb_01 qcom,mdss_spi: vdd = 8916_l17 2.85 V, vddio = 8916_l6 1.8 V. * Init sequence = exact stock 19 commands (firmware file jz08au,aurora-st7735s.bin, without trailing RAMWR). * GRAM offset X=2 / Y=3 (stock CASET 2..129, RASET 3..130) via panel-timing back porches (panel-mipi-dbi convention). * Backlight: PM8916 MPP4 current sink 40 mA as in stock LK (MODE_CTL 0x61, SINK_CTL 7, EN_CTL 0x80 when on). * B9B step 1: backlight is NOT linked to the panel -> stays off (MODE_CTL 0x60) until enabled by hand via sysfs after readback. */ &pm8916_rpm_regulators { pm8916_l17: l17 { regulator-min-microvolt = <2850000>; regulator-max-microvolt = <2850000>; }; }; &tlmm { /* stock spi0_active: gpio12/13/15 func blsp_spi4 12 mA; spi0_cs0_active: gpio14 func blsp_spi4 2 mA (native CS0) */ blsp_spi4_b9b_default: blsp-spi4-b9b-default-state { spi-pins { pins = "gpio12", "gpio13", "gpio15"; function = "blsp_spi4"; drive-strength = <12>; bias-disable; }; cs-pins { pins = "gpio14"; function = "blsp_spi4"; drive-strength = <2>; bias-disable; }; }; /* stock pmx_mdss active: gpio116 (D/C) + gpio118 (RESET), func gpio, 8 mA, no bias */ lcd_b9b_default: lcd-b9b-default-state { pins = "gpio116", "gpio118"; function = "gpio"; drive-strength = <8>; bias-disable; }; }; &blsp_spi4 { pinctrl-0 = <&blsp_spi4_b9b_default>; pinctrl-1 = <&blsp_spi4_sleep>; pinctrl-names = "default", "sleep"; status = "okay"; panel@0 { compatible = "jz08au,aurora-st7735s", "panel-mipi-dbi-spi"; reg = <0>; spi-max-frequency = <16000000>; spi-cpol; spi-cpha; write-only; dc-gpios = <&tlmm 116 GPIO_ACTIVE_HIGH>; reset-gpios = <&tlmm 118 GPIO_ACTIVE_HIGH>; /* mipi-dbi drives 0 = in reset, 1 = run */ pinctrl-0 = <&lcd_b9b_default>; pinctrl-names = "default"; power-supply = <&pm8916_l17>; io-supply = <&pm8916_l6>; format = "r5g6b5"; width-mm = <26>; /* 1.44" diagonal, square */ height-mm = <26>; panel-timing { hactive = <128>; vactive = <128>; hback-porch = <2>; /* GRAM column offset */ vback-porch = <3>; /* GRAM row offset */ clock-frequency = <0>; hfront-porch = <0>; vfront-porch = <0>; hsync-len = <0>; vsync-len = <0>; }; }; }; &pm8916_mpps { /* MPP4 current sink: mode 6 (sink), source sel 0, SINK_CTL = 7 (40 mA); output-low = sink off at probe */ lcd_bl_mpp4_default: mpp4-sink-state { pins = "mpp4"; function = "sink"; drive-strength = <7>; output-low; }; }; / { lcd_backlight: backlight { compatible = "gpio-backlight"; gpios = <&pm8916_mpps 4 GPIO_ACTIVE_HIGH>; pinctrl-0 = <&lcd_bl_mpp4_default>; pinctrl-names = "default"; }; };