linux-loongson/arch/arm64/boot/dts/qcom/apq8016-schneider-hmibsc.dts
Stephan Gerhold 979b65d8f4 arm64: dts: qcom: msm8916: Drop generic UART pinctrl templates
Remove the generic UART pinctrl templates from msm8916.dtsi and copy the
definition for the custom UART use cases into the board DT files. This
makes it clear that the set of pins/pull etc are specific to the board and
UART use case.

No functional change.

Signed-off-by: Stephan Gerhold <stephan.gerhold@linaro.org>
Link: https://lore.kernel.org/r/20250422-msm8916-console-pinctrl-v2-5-f345b7a53c91@linaro.org
Signed-off-by: Bjorn Andersson <andersson@kernel.org>
2025-05-06 22:38:21 -07:00

525 lines
10 KiB
Plaintext

// SPDX-License-Identifier: GPL-2.0-only
/*
* Copyright (c) 2015, The Linux Foundation. All rights reserved.
* Copyright (c) 2024, Linaro Ltd.
*/
/dts-v1/;
#include "msm8916-pm8916.dtsi"
#include <dt-bindings/gpio/gpio.h>
#include <dt-bindings/input/input.h>
#include <dt-bindings/leds/common.h>
#include <dt-bindings/pinctrl/qcom,pmic-gpio.h>
#include <dt-bindings/pinctrl/qcom,pmic-mpp.h>
#include <dt-bindings/sound/apq8016-lpass.h>
/ {
model = "Schneider Electric HMIBSC Board";
compatible = "schneider,apq8016-hmibsc", "qcom,apq8016";
aliases {
i2c1 = &blsp_i2c6;
i2c3 = &blsp_i2c4;
i2c4 = &blsp_i2c3;
mmc0 = &sdhc_1; /* eMMC */
mmc1 = &sdhc_2; /* SD card */
serial0 = &blsp_uart1;
serial1 = &blsp_uart2;
spi0 = &blsp_spi5;
usid0 = &pm8916_0;
};
chosen {
stdout-path = "serial0";
};
hdmi-out {
compatible = "hdmi-connector";
type = "a";
port {
hdmi_con: endpoint {
remote-endpoint = <&adv7533_out>;
};
};
};
gpio-keys {
compatible = "gpio-keys";
autorepeat;
pinctrl-0 = <&msm_key_volp_n_default>;
pinctrl-names = "default";
button {
label = "Volume Up";
linux,code = <KEY_VOLUMEUP>;
gpios = <&tlmm 107 GPIO_ACTIVE_LOW>;
};
};
leds {
compatible = "gpio-leds";
pinctrl-0 = <&pm8916_mpps_leds>;
pinctrl-names = "default";
led-1 {
function = LED_FUNCTION_WLAN;
color = <LED_COLOR_ID_YELLOW>;
gpios = <&pm8916_mpps 2 GPIO_ACTIVE_HIGH>;
linux,default-trigger = "phy0tx";
default-state = "off";
};
led-2 {
function = LED_FUNCTION_BLUETOOTH;
color = <LED_COLOR_ID_BLUE>;
gpios = <&pm8916_mpps 3 GPIO_ACTIVE_HIGH>;
linux,default-trigger = "bluetooth-power";
default-state = "off";
};
};
memory@80000000 {
reg = <0 0x80000000 0 0x40000000>;
};
reserved-memory {
ramoops@bff00000 {
compatible = "ramoops";
reg = <0x0 0xbff00000 0x0 0x100000>;
record-size = <0x20000>;
console-size = <0x20000>;
ftrace-size = <0x20000>;
ecc-size = <16>;
};
};
usb-hub {
compatible = "smsc,usb3503";
reset-gpios = <&pm8916_gpios 1 GPIO_ACTIVE_LOW>;
initial-mode = <1>;
};
usb_id: usb-id {
compatible = "linux,extcon-usb-gpio";
id-gpios = <&tlmm 110 GPIO_ACTIVE_HIGH>;
pinctrl-0 = <&usb_id_default>;
pinctrl-names = "default";
};
};
&blsp_i2c3 {
status = "okay";
eeprom@50 {
compatible = "atmel,24c32";
reg = <0x50>;
};
};
&blsp_i2c4 {
status = "okay";
adv_bridge: bridge@39 {
compatible = "adi,adv7533";
reg = <0x39>;
interrupts-extended = <&tlmm 31 IRQ_TYPE_EDGE_FALLING>;
adi,dsi-lanes = <4>;
clocks = <&rpmcc RPM_SMD_BB_CLK2>;
clock-names = "cec";
pd-gpios = <&tlmm 32 GPIO_ACTIVE_HIGH>;
avdd-supply = <&pm8916_l6>;
a2vdd-supply = <&pm8916_l6>;
dvdd-supply = <&pm8916_l6>;
pvdd-supply = <&pm8916_l6>;
v1p2-supply = <&pm8916_l6>;
v3p3-supply = <&pm8916_l17>;
pinctrl-0 = <&adv7533_int_active &adv7533_switch_active>;
pinctrl-1 = <&adv7533_int_suspend &adv7533_switch_suspend>;
pinctrl-names = "default","sleep";
#sound-dai-cells = <0>;
ports {
#address-cells = <1>;
#size-cells = <0>;
port@0 {
reg = <0>;
adv7533_in: endpoint {
remote-endpoint = <&mdss_dsi0_out>;
};
};
port@1 {
reg = <1>;
adv7533_out: endpoint {
remote-endpoint = <&hdmi_con>;
};
};
};
};
};
&blsp_i2c6 {
status = "okay";
rtc@30 {
compatible = "sii,s35390a";
reg = <0x30>;
};
eeprom@50 {
compatible = "atmel,24c256";
reg = <0x50>;
};
};
&blsp_spi5 {
cs-gpios = <&tlmm 18 GPIO_ACTIVE_LOW>;
status = "okay";
tpm@0 {
compatible = "infineon,slb9670", "tcg,tpm_tis-spi";
reg = <0>;
spi-max-frequency = <500000>;
};
};
&blsp_uart1 {
pinctrl-0 = <&blsp_uart1_default>;
pinctrl-1 = <&blsp_uart1_sleep>;
pinctrl-names = "default", "sleep";
label = "UART0";
status = "okay";
};
&blsp_uart2 {
pinctrl-0 = <&blsp_uart2_default>;
pinctrl-1 = <&blsp_uart2_sleep>;
pinctrl-names = "default", "sleep";
label = "UART1";
status = "okay";
};
&lpass {
status = "okay";
};
&mdss {
status = "okay";
};
&mdss_dsi0_out {
data-lanes = <0 1 2 3>;
remote-endpoint = <&adv7533_in>;
};
&pm8916_codec {
qcom,mbhc-vthreshold-low = <75 150 237 450 500>;
qcom,mbhc-vthreshold-high = <75 150 237 450 500>;
status = "okay";
};
&pm8916_gpios {
gpio-line-names =
"USB_HUB_RESET_N_PM",
"USB_SW_SEL_PM",
"NC",
"NC";
usb_hub_reset_pm: usb-hub-reset-pm-state {
pins = "gpio1";
function = PMIC_GPIO_FUNC_NORMAL;
input-disable;
output-high;
};
usb_hub_reset_pm_device: usb-hub-reset-pm-device-state {
pins = "gpio1";
function = PMIC_GPIO_FUNC_NORMAL;
input-disable;
output-low;
};
usb_sw_sel_pm: usb-sw-sel-pm-state {
pins = "gpio2";
function = PMIC_GPIO_FUNC_NORMAL;
power-source = <PM8916_GPIO_VPH>;
input-disable;
output-high;
};
usb_sw_sel_pm_device: usb-sw-sel-pm-device-state {
pins = "gpio2";
function = PMIC_GPIO_FUNC_NORMAL;
power-source = <PM8916_GPIO_VPH>;
input-disable;
output-low;
};
};
&pm8916_mpps {
gpio-line-names =
"NC",
"WLAN_LED_CTRL",
"BT_LED_CTRL",
"NC";
pm8916_mpps_leds: pm8916-mpps-state {
pins = "mpp2", "mpp3";
function = "digital";
output-low;
};
};
&pm8916_resin {
linux,code = <KEY_POWER>;
status = "okay";
};
&pm8916_rpm_regulators {
pm8916_l17: l17 {
regulator-min-microvolt = <3300000>;
regulator-max-microvolt = <3300000>;
};
};
&sdhc_1 {
status = "okay";
};
&sdhc_2 {
pinctrl-0 = <&sdc2_default &sdc2_cd_default>;
pinctrl-1 = <&sdc2_sleep &sdc2_cd_default>;
pinctrl-names = "default", "sleep";
cd-gpios = <&tlmm 38 GPIO_ACTIVE_LOW>;
status = "okay";
};
&sound {
pinctrl-0 = <&cdc_pdm_default &sec_mi2s_default>;
pinctrl-1 = <&cdc_pdm_sleep &sec_mi2s_sleep>;
pinctrl-names = "default", "sleep";
model = "HMIBSC";
audio-routing =
"AMIC2", "MIC BIAS Internal2",
"AMIC3", "MIC BIAS External1";
status = "okay";
quaternary-dai-link {
link-name = "ADV7533";
cpu {
sound-dai = <&lpass MI2S_QUATERNARY>;
};
codec {
sound-dai = <&adv_bridge 0>;
};
};
primary-dai-link {
link-name = "WCD";
cpu {
sound-dai = <&lpass MI2S_PRIMARY>;
};
codec {
sound-dai = <&lpass_codec 0>, <&pm8916_codec 0>;
};
};
tertiary-dai-link {
link-name = "WCD-Capture";
cpu {
sound-dai = <&lpass MI2S_TERTIARY>;
};
codec {
sound-dai = <&lpass_codec 1>, <&pm8916_codec 1>;
};
};
};
&tlmm {
pinctrl-0 = <&uart1_mux0_rs232_high &uart1_mux1_rs232_low>;
pinctrl-names = "default";
adv7533_int_active: adv533-int-active-state {
pins = "gpio31";
function = "gpio";
drive-strength = <16>;
bias-disable;
};
adv7533_int_suspend: adv7533-int-suspend-state {
pins = "gpio31";
function = "gpio";
drive-strength = <2>;
bias-disable;
};
adv7533_switch_active: adv7533-switch-active-state {
pins = "gpio32";
function = "gpio";
drive-strength = <16>;
bias-disable;
};
adv7533_switch_suspend: adv7533-switch-suspend-state {
pins = "gpio32";
function = "gpio";
drive-strength = <2>;
bias-disable;
};
blsp_uart1_default: blsp-uart1-default-state {
/* TX, RX, CTS_N, RTS_N */
pins = "gpio0", "gpio1", "gpio2", "gpio3";
function = "blsp_uart1";
drive-strength = <16>;
bias-disable;
bootph-all;
};
blsp_uart1_sleep: blsp-uart1-sleep-state {
pins = "gpio0", "gpio1", "gpio2", "gpio3";
function = "gpio";
drive-strength = <2>;
bias-pull-down;
};
blsp_uart2_default: blsp-uart2-default-state {
/* TX, RX */
pins = "gpio4", "gpio5";
function = "blsp_uart2";
drive-strength = <16>;
bias-disable;
};
blsp_uart2_sleep: blsp-uart2-sleep-state {
pins = "gpio4", "gpio5";
function = "gpio";
drive-strength = <2>;
bias-pull-down;
};
msm_key_volp_n_default: msm-key-volp-n-default-state {
pins = "gpio107";
function = "gpio";
drive-strength = <8>;
bias-pull-up;
};
sdc2_cd_default: sdc2-cd-default-state {
pins = "gpio38";
function = "gpio";
drive-strength = <2>;
bias-disable;
};
/*
* UART1 being the debug console supports various modes of
* operation (RS-232/485/422) controlled via GPIOs configured
* mux as follows:
*
* gpio100 gpio99 UART mode
* 0 0 loopback
* 0 1 RS-232
* 1 0 RS-485
* 1 1 RS-422
*
* The default mode configured here is RS-232 mode.
*/
uart1_mux0_rs232_high: uart1-mux0-rs232-state {
bootph-all;
pins = "gpio99";
function = "gpio";
drive-strength = <16>;
bias-disable;
output-high;
};
uart1_mux1_rs232_low: uart1-mux1-rs232-state {
bootph-all;
pins = "gpio100";
function = "gpio";
drive-strength = <16>;
bias-disable;
output-low;
};
usb_id_default: usb-id-default-state {
pins = "gpio110";
function = "gpio";
drive-strength = <8>;
bias-pull-up;
};
};
&usb {
extcon = <&usb_id>, <&usb_id>;
pinctrl-0 = <&usb_sw_sel_pm &usb_hub_reset_pm>;
pinctrl-1 = <&usb_sw_sel_pm_device &usb_hub_reset_pm_device>;
pinctrl-names = "default", "device";
status = "okay";
};
&usb_hs_phy {
extcon = <&usb_id>;
};
&wcnss {
firmware-name = "qcom/apq8016/wcnss.mbn";
status = "okay";
};
&wcnss_ctrl {
firmware-name = "qcom/apq8016/WCNSS_qcom_wlan_nv_sbc.bin";
};
&wcnss_iris {
compatible = "qcom,wcn3620";
};
&wcnss_mem {
status = "okay";
};
/* PINCTRL - additions to nodes defined in msm8916.dtsi */
/*
* 2mA drive strength is not enough when connecting multiple
* I2C devices with different pull up resistors.
*/
&blsp_i2c4_default {
drive-strength = <16>;
};
&blsp_i2c6_default {
drive-strength = <16>;
};
/* Enable CoreSight */
&cti0 { status = "okay"; };
&cti1 { status = "okay"; };
&cti12 { status = "okay"; };
&cti13 { status = "okay"; };
&cti14 { status = "okay"; };
&cti15 { status = "okay"; };
&debug0 { status = "okay"; };
&debug1 { status = "okay"; };
&debug2 { status = "okay"; };
&debug3 { status = "okay"; };
&etf { status = "okay"; };
&etm0 { status = "okay"; };
&etm1 { status = "okay"; };
&etm2 { status = "okay"; };
&etm3 { status = "okay"; };
&etr { status = "okay"; };
&funnel0 { status = "okay"; };
&funnel1 { status = "okay"; };
&replicator { status = "okay"; };
&stm { status = "okay"; };
&tpiu { status = "okay"; };