mirror of
git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2025-09-18 22:14:16 +00:00

In preparation of adding a new console UART specific pinctrl template, move the pinctrl reference to the board DT part. This forces people porting new boards to consider what exactly they need for their board. No functional change for the boards upstream. Reviewed-by: Konrad Dybcio <konrad.dybcio@oss.qualcomm.com> Signed-off-by: Stephan Gerhold <stephan.gerhold@linaro.org> Link: https://lore.kernel.org/r/20250422-msm8916-console-pinctrl-v2-1-f345b7a53c91@linaro.org Signed-off-by: Bjorn Andersson <andersson@kernel.org>
582 lines
11 KiB
Text
582 lines
11 KiB
Text
// SPDX-License-Identifier: GPL-2.0-only
|
|
|
|
#include "msm8916-pm8916.dtsi"
|
|
#include "msm8916-modem-qdsp6.dtsi"
|
|
|
|
#include <dt-bindings/gpio/gpio.h>
|
|
#include <dt-bindings/input/input.h>
|
|
#include <dt-bindings/interrupt-controller/irq.h>
|
|
#include <dt-bindings/pinctrl/qcom,pmic-gpio.h>
|
|
#include <dt-bindings/sound/apq8016-lpass.h>
|
|
|
|
/ {
|
|
aliases {
|
|
mmc0 = &sdhc_1; /* eMMC */
|
|
mmc1 = &sdhc_2; /* SD card */
|
|
serial0 = &blsp_uart2;
|
|
};
|
|
|
|
chosen {
|
|
stdout-path = "serial0";
|
|
};
|
|
|
|
reserved-memory {
|
|
/* Additional memory used by Samsung firmware modifications */
|
|
tz-apps@85500000 {
|
|
reg = <0x0 0x85500000 0x0 0xb00000>;
|
|
no-map;
|
|
};
|
|
};
|
|
|
|
battery: battery {
|
|
compatible = "simple-battery";
|
|
precharge-current-microamp = <450000>;
|
|
precharge-upper-limit-microvolt = <3500000>;
|
|
};
|
|
|
|
clk_pwm: pwm {
|
|
compatible = "clk-pwm";
|
|
#pwm-cells = <2>;
|
|
|
|
clocks = <&gcc GCC_GP2_CLK>;
|
|
|
|
pinctrl-names = "default";
|
|
pinctrl-0 = <&motor_pwm_default>;
|
|
status = "disabled";
|
|
};
|
|
|
|
gpio-keys {
|
|
compatible = "gpio-keys";
|
|
|
|
pinctrl-names = "default";
|
|
pinctrl-0 = <&gpio_keys_default>;
|
|
|
|
label = "GPIO Buttons";
|
|
|
|
button-volume-up {
|
|
label = "Volume Up";
|
|
gpios = <&tlmm 107 GPIO_ACTIVE_LOW>;
|
|
linux,code = <KEY_VOLUMEUP>;
|
|
};
|
|
|
|
button-home {
|
|
label = "Home";
|
|
gpios = <&tlmm 109 GPIO_ACTIVE_LOW>;
|
|
linux,code = <KEY_HOMEPAGE>;
|
|
};
|
|
};
|
|
|
|
gpio-hall-sensor {
|
|
compatible = "gpio-keys";
|
|
|
|
pinctrl-names = "default";
|
|
pinctrl-0 = <&gpio_hall_sensor_default>;
|
|
|
|
label = "GPIO Hall Effect Sensor";
|
|
|
|
event-hall-sensor {
|
|
label = "Hall Effect Sensor";
|
|
gpios = <&tlmm 52 GPIO_ACTIVE_LOW>;
|
|
linux,input-type = <EV_SW>;
|
|
linux,code = <SW_LID>;
|
|
linux,can-disable;
|
|
};
|
|
};
|
|
|
|
/*
|
|
* NOTE: A5 connects GPIO 76 to a reglator powering the motor
|
|
* driver IC but A3 connects the same signal to an ENABLE pin of
|
|
* the driver.
|
|
*/
|
|
reg_motor_vdd: regulator-motor-vdd {
|
|
compatible = "regulator-fixed";
|
|
regulator-name = "motor_vdd";
|
|
regulator-min-microvolt = <3000000>;
|
|
regulator-max-microvolt = <3000000>;
|
|
|
|
gpio = <&tlmm 76 GPIO_ACTIVE_HIGH>;
|
|
enable-active-high;
|
|
|
|
pinctrl-names = "default";
|
|
pinctrl-0 = <&motor_en_default>;
|
|
};
|
|
|
|
reg_vdd_tsp_a: regulator-vdd-tsp-a {
|
|
compatible = "regulator-fixed";
|
|
regulator-name = "vdd_tsp_a";
|
|
regulator-min-microvolt = <3300000>;
|
|
regulator-max-microvolt = <3300000>;
|
|
|
|
gpio = <&tlmm 73 GPIO_ACTIVE_HIGH>;
|
|
enable-active-high;
|
|
|
|
pinctrl-names = "default";
|
|
pinctrl-0 = <&tsp_en_default>;
|
|
};
|
|
|
|
i2c-muic {
|
|
compatible = "i2c-gpio";
|
|
sda-gpios = <&tlmm 105 (GPIO_ACTIVE_HIGH|GPIO_OPEN_DRAIN)>;
|
|
scl-gpios = <&tlmm 106 (GPIO_ACTIVE_HIGH|GPIO_OPEN_DRAIN)>;
|
|
|
|
pinctrl-names = "default";
|
|
pinctrl-0 = <&muic_i2c_default>;
|
|
|
|
#address-cells = <1>;
|
|
#size-cells = <0>;
|
|
|
|
muic: extcon@25 {
|
|
compatible = "siliconmitus,sm5502-muic";
|
|
|
|
reg = <0x25>;
|
|
interrupt-parent = <&tlmm>;
|
|
interrupts = <12 IRQ_TYPE_EDGE_FALLING>;
|
|
|
|
pinctrl-names = "default";
|
|
pinctrl-0 = <&muic_int_default>;
|
|
|
|
usb_con: connector {
|
|
compatible = "usb-b-connector";
|
|
label = "micro-USB";
|
|
type = "micro";
|
|
};
|
|
};
|
|
};
|
|
|
|
i2c-tkey {
|
|
compatible = "i2c-gpio";
|
|
sda-gpios = <&tlmm 16 (GPIO_ACTIVE_HIGH|GPIO_OPEN_DRAIN)>;
|
|
scl-gpios = <&tlmm 17 (GPIO_ACTIVE_HIGH|GPIO_OPEN_DRAIN)>;
|
|
|
|
pinctrl-names = "default";
|
|
pinctrl-0 = <&tkey_i2c_default>;
|
|
|
|
#address-cells = <1>;
|
|
#size-cells = <0>;
|
|
|
|
touchkey: touchkey@20 {
|
|
/* Note: Actually an ABOV MCU that implements same interface */
|
|
compatible = "coreriver,tc360-touchkey";
|
|
reg = <0x20>;
|
|
|
|
interrupt-parent = <&tlmm>;
|
|
interrupts = <98 IRQ_TYPE_EDGE_FALLING>;
|
|
|
|
/* vcc/vdd-supply are board-specific */
|
|
vddio-supply = <&pm8916_l6>;
|
|
|
|
linux,keycodes = <KEY_APPSELECT KEY_BACK>;
|
|
|
|
pinctrl-names = "default";
|
|
pinctrl-0 = <&tkey_default>;
|
|
};
|
|
};
|
|
|
|
i2c-nfc {
|
|
compatible = "i2c-gpio";
|
|
sda-gpios = <&tlmm 0 (GPIO_ACTIVE_HIGH|GPIO_OPEN_DRAIN)>;
|
|
scl-gpios = <&tlmm 1 (GPIO_ACTIVE_HIGH|GPIO_OPEN_DRAIN)>;
|
|
|
|
pinctrl-names = "default";
|
|
pinctrl-0 = <&nfc_i2c_default>;
|
|
|
|
#address-cells = <1>;
|
|
#size-cells = <0>;
|
|
|
|
nfc@27 {
|
|
compatible = "samsung,s3fwrn5-i2c";
|
|
reg = <0x27>;
|
|
|
|
interrupt-parent = <&tlmm>;
|
|
interrupts = <21 IRQ_TYPE_EDGE_RISING>;
|
|
|
|
en-gpios = <&tlmm 20 GPIO_ACTIVE_LOW>;
|
|
wake-gpios = <&tlmm 49 GPIO_ACTIVE_HIGH>;
|
|
|
|
clocks = <&rpmcc RPM_SMD_BB_CLK2_PIN>;
|
|
|
|
pinctrl-names = "default";
|
|
pinctrl-0 = <&nfc_default &nfc_clk_req>;
|
|
};
|
|
};
|
|
|
|
vibrator: vibrator {
|
|
compatible = "pwm-vibrator";
|
|
|
|
pwms = <&clk_pwm 0 100000>;
|
|
pwm-names = "enable";
|
|
|
|
vcc-supply = <®_motor_vdd>;
|
|
status = "disabled";
|
|
};
|
|
};
|
|
|
|
&blsp_i2c1 {
|
|
status = "okay";
|
|
|
|
speaker_codec: audio-codec@34 {
|
|
compatible = "nxp,tfa9895";
|
|
reg = <0x34>;
|
|
vddd-supply = <&pm8916_l5>;
|
|
sound-name-prefix = "Speaker";
|
|
#sound-dai-cells = <0>;
|
|
};
|
|
};
|
|
|
|
&blsp_i2c2 {
|
|
status = "okay";
|
|
|
|
accelerometer: accelerometer@10 {
|
|
compatible = "bosch,bmc150_accel";
|
|
reg = <0x10>;
|
|
interrupt-parent = <&tlmm>;
|
|
interrupts = <115 IRQ_TYPE_EDGE_RISING>;
|
|
|
|
vdd-supply = <&pm8916_l17>;
|
|
vddio-supply = <&pm8916_l5>;
|
|
|
|
pinctrl-names = "default";
|
|
pinctrl-0 = <&accel_int_default>;
|
|
};
|
|
|
|
magnetometer@12 {
|
|
compatible = "bosch,bmc150_magn";
|
|
reg = <0x12>;
|
|
|
|
vdd-supply = <&pm8916_l17>;
|
|
vddio-supply = <&pm8916_l5>;
|
|
};
|
|
};
|
|
|
|
&blsp_i2c4 {
|
|
status = "okay";
|
|
|
|
fuel-gauge@35 {
|
|
compatible = "richtek,rt5033-battery";
|
|
reg = <0x35>;
|
|
interrupt-parent = <&tlmm>;
|
|
interrupts = <121 IRQ_TYPE_EDGE_BOTH>;
|
|
|
|
pinctrl-names = "default";
|
|
pinctrl-0 = <&fg_alert_default>;
|
|
|
|
power-supplies = <&charger>;
|
|
};
|
|
};
|
|
|
|
&blsp_i2c6 {
|
|
status = "okay";
|
|
|
|
pmic@34 {
|
|
compatible = "richtek,rt5033";
|
|
reg = <0x34>;
|
|
|
|
interrupts-extended = <&tlmm 62 IRQ_TYPE_EDGE_FALLING>;
|
|
|
|
pinctrl-0 = <&pmic_int_default>;
|
|
pinctrl-names = "default";
|
|
|
|
regulators {
|
|
rt5033_reg_safe_ldo: SAFE_LDO {
|
|
regulator-min-microvolt = <4900000>;
|
|
regulator-max-microvolt = <4900000>;
|
|
regulator-always-on;
|
|
};
|
|
|
|
/*
|
|
* Needed for camera, but not used yet.
|
|
* Define empty nodes to allow disabling the unused
|
|
* regulators.
|
|
*/
|
|
LDO {};
|
|
BUCK {};
|
|
};
|
|
|
|
charger: charger {
|
|
compatible = "richtek,rt5033-charger";
|
|
monitored-battery = <&battery>;
|
|
richtek,usb-connector = <&usb_con>;
|
|
};
|
|
};
|
|
};
|
|
|
|
&blsp_uart2 {
|
|
status = "okay";
|
|
pinctrl-0 = <&blsp_uart2_default>;
|
|
pinctrl-1 = <&blsp_uart2_sleep>;
|
|
pinctrl-names = "default", "sleep";
|
|
};
|
|
|
|
&gpu {
|
|
status = "okay";
|
|
};
|
|
|
|
/*
|
|
* For some reason the speaker amplifier is connected to the second SD line
|
|
* (MI2S_2_D1) instead of the first (MI2S_2_D0). This must be configured in the
|
|
* device tree, otherwise audio will seemingly play fine on the wrong SD line
|
|
* but the speaker stays silent.
|
|
*
|
|
* When routing audio via QDSP6 (the default) the &lpass node is reserved and
|
|
* the definitions from &q6afedai are used. When the modem is disabled audio can
|
|
* be alternatively routed directly to the LPASS hardware with reduced latency.
|
|
* The definitions for &lpass are here for completeness to simplify changing the
|
|
* setup with minor changes to the DT (either manually or with DT overlays).
|
|
*/
|
|
&lpass {
|
|
dai-link@3 {
|
|
reg = <MI2S_QUATERNARY>;
|
|
qcom,playback-sd-lines = <1>;
|
|
};
|
|
};
|
|
|
|
&mdss {
|
|
status = "okay";
|
|
};
|
|
|
|
&mdss_dsi0 {
|
|
pinctrl-names = "default", "sleep";
|
|
pinctrl-0 = <&mdss_default>;
|
|
pinctrl-1 = <&mdss_sleep>;
|
|
};
|
|
|
|
&mpss_mem {
|
|
reg = <0x0 0x86800000 0x0 0x5400000>;
|
|
};
|
|
|
|
&pm8916_resin {
|
|
status = "okay";
|
|
linux,code = <KEY_VOLUMEDOWN>;
|
|
};
|
|
|
|
&pm8916_rpm_regulators {
|
|
pm8916_l17: l17 {
|
|
regulator-min-microvolt = <2850000>;
|
|
regulator-max-microvolt = <2850000>;
|
|
};
|
|
};
|
|
|
|
&q6afedai {
|
|
dai@22 {
|
|
reg = <QUATERNARY_MI2S_RX>;
|
|
qcom,sd-lines = <1>;
|
|
};
|
|
};
|
|
|
|
&sdhc_1 {
|
|
status = "okay";
|
|
};
|
|
|
|
&sdhc_2 {
|
|
status = "okay";
|
|
|
|
pinctrl-names = "default", "sleep";
|
|
pinctrl-0 = <&sdc2_default &sdc2_cd_default>;
|
|
pinctrl-1 = <&sdc2_sleep &sdc2_cd_default>;
|
|
|
|
cd-gpios = <&tlmm 38 GPIO_ACTIVE_LOW>;
|
|
};
|
|
|
|
&sound {
|
|
model = "samsung-a2015";
|
|
audio-routing =
|
|
"AMIC1", "MIC BIAS External1",
|
|
"AMIC2", "MIC BIAS Internal2",
|
|
"AMIC3", "MIC BIAS External1";
|
|
|
|
pinctrl-0 = <&cdc_pdm_default &sec_mi2s_default>;
|
|
pinctrl-1 = <&cdc_pdm_sleep &sec_mi2s_sleep>;
|
|
pinctrl-names = "default", "sleep";
|
|
|
|
sound_link_backend2: backend2-dai-link {
|
|
link-name = "Quaternary MI2S";
|
|
|
|
cpu {
|
|
sound-dai = <&q6afedai QUATERNARY_MI2S_RX>;
|
|
};
|
|
platform {
|
|
sound-dai = <&q6routing>;
|
|
};
|
|
codec {
|
|
sound-dai = <&speaker_codec>;
|
|
};
|
|
};
|
|
};
|
|
|
|
&usb {
|
|
status = "okay";
|
|
extcon = <&muic>, <&muic>;
|
|
};
|
|
|
|
&usb_hs_phy {
|
|
extcon = <&muic>;
|
|
};
|
|
|
|
&venus {
|
|
status = "okay";
|
|
};
|
|
|
|
&venus_mem {
|
|
status = "okay";
|
|
};
|
|
|
|
&tlmm {
|
|
accel_int_default: accel-int-default-state {
|
|
pins = "gpio115";
|
|
function = "gpio";
|
|
|
|
drive-strength = <2>;
|
|
bias-disable;
|
|
};
|
|
|
|
fg_alert_default: fg-alert-default-state {
|
|
pins = "gpio121";
|
|
function = "gpio";
|
|
|
|
drive-strength = <2>;
|
|
bias-disable;
|
|
};
|
|
|
|
gpio_keys_default: gpio-keys-default-state {
|
|
pins = "gpio107", "gpio109";
|
|
function = "gpio";
|
|
|
|
drive-strength = <2>;
|
|
bias-pull-up;
|
|
};
|
|
|
|
gpio_hall_sensor_default: gpio-hall-sensor-default-state {
|
|
pins = "gpio52";
|
|
function = "gpio";
|
|
|
|
drive-strength = <2>;
|
|
bias-disable;
|
|
};
|
|
|
|
mdss_default: mdss-default-state {
|
|
pins = "gpio25";
|
|
function = "gpio";
|
|
|
|
drive-strength = <8>;
|
|
bias-disable;
|
|
};
|
|
mdss_sleep: mdss-sleep-state {
|
|
pins = "gpio25";
|
|
function = "gpio";
|
|
|
|
drive-strength = <2>;
|
|
bias-pull-down;
|
|
};
|
|
|
|
motor_en_default: motor-en-default-state {
|
|
pins = "gpio76";
|
|
function = "gpio";
|
|
|
|
drive-strength = <2>;
|
|
bias-disable;
|
|
};
|
|
|
|
motor_pwm_default: motor-pwm-default-state {
|
|
pins = "gpio50";
|
|
function = "gcc_gp2_clk_a";
|
|
};
|
|
|
|
muic_i2c_default: muic-i2c-default-state {
|
|
pins = "gpio105", "gpio106";
|
|
function = "gpio";
|
|
|
|
drive-strength = <2>;
|
|
bias-disable;
|
|
};
|
|
|
|
muic_int_default: muic-int-default-state {
|
|
pins = "gpio12";
|
|
function = "gpio";
|
|
|
|
drive-strength = <2>;
|
|
bias-disable;
|
|
};
|
|
|
|
nfc_default: nfc-default-state {
|
|
nfc-pins {
|
|
pins = "gpio20", "gpio49";
|
|
function = "gpio";
|
|
|
|
drive-strength = <2>;
|
|
bias-disable;
|
|
};
|
|
|
|
irq-pins {
|
|
pins = "gpio21";
|
|
function = "gpio";
|
|
|
|
drive-strength = <2>;
|
|
bias-pull-down;
|
|
};
|
|
};
|
|
|
|
nfc_i2c_default: nfc-i2c-default-state {
|
|
pins = "gpio0", "gpio1";
|
|
function = "gpio";
|
|
|
|
drive-strength = <2>;
|
|
bias-disable;
|
|
};
|
|
|
|
pmic_int_default: pmic-int-default-state {
|
|
pins = "gpio62";
|
|
function = "gpio";
|
|
drive-strength = <2>;
|
|
bias-disable;
|
|
};
|
|
|
|
sdc2_cd_default: sdc2-cd-default-state {
|
|
pins = "gpio38";
|
|
function = "gpio";
|
|
drive-strength = <2>;
|
|
bias-disable;
|
|
};
|
|
|
|
tkey_default: tkey-default-state {
|
|
pins = "gpio98";
|
|
function = "gpio";
|
|
|
|
drive-strength = <2>;
|
|
bias-disable;
|
|
};
|
|
|
|
tkey_i2c_default: tkey-i2c-default-state {
|
|
pins = "gpio16", "gpio17";
|
|
function = "gpio";
|
|
|
|
drive-strength = <2>;
|
|
bias-disable;
|
|
};
|
|
|
|
tsp_en_default: tsp-en-default-state {
|
|
pins = "gpio73";
|
|
function = "gpio";
|
|
|
|
drive-strength = <2>;
|
|
bias-disable;
|
|
};
|
|
|
|
ts_int_default: ts-int-default-state {
|
|
pins = "gpio13";
|
|
function = "gpio";
|
|
|
|
drive-strength = <2>;
|
|
bias-disable;
|
|
};
|
|
};
|
|
|
|
&pm8916_gpios {
|
|
nfc_clk_req: nfc-clk-req-state {
|
|
pins = "gpio2";
|
|
function = "func1";
|
|
|
|
input-enable;
|
|
bias-disable;
|
|
power-source = <PM8916_GPIO_L2>;
|
|
};
|
|
};
|