- B9A: read-only audit of stock LK/DT: the panel is an ST7735S 128x128 on SPI (BLSP1 QUP4, 16 MHz, mode 3, D/C GPIO116, RESET GPIO118), backlight = PM8916 MPP4 current sink 40 mA. - B9B: upstream panel-mipi-dbi with the stock init sequence as firmware; MPP4 sink via pinctrl + gpio-backlight; first light with correct colours/orientation/offsets. - B9C: fbcon (6x8, 21x16) on tty1 + getty, UART console kept, aurora-display service; cache B9C b9ce13c9 written and verified, cold boots with LTE + Wi-Fi + display. - B9L (RAM only): lk2nd second stage with an msm8916 SPI panel port shows a picture before Linux. - Sanitizer: whitelist for b8/ and b9/.
257 lines
7.8 KiB
Text
257 lines
7.8 KiB
Text
// 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 <dt-bindings/gpio/gpio.h>
|
|
#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";
|
|
};
|
|
};
|