blob: b359db31c922ab0d2772e9ba1f7e6d5e50868dd6 [file] [log] [blame]
/*
* Copyright (c) 2018, The Linux Foundation. All rights reserved.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 and
* only version 2 as published by the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*/
#include "msm8953.dtsi"
#include "msm8953-pinctrl.dtsi"
/ {
model = "Qualcomm Technologies, Inc. APQ 8953";
compatible = "qcom,apq8053";
qcom,msm-id = <304 0x0>;
};
/ {
/delete-property/ aliases;
aliases {
/* smdtty devices */
smd1 = &smdtty_apps_fm;
smd2 = &smdtty_apps_riva_bt_acl;
smd3 = &smdtty_apps_riva_bt_cmd;
smd4 = &smdtty_mbalbridge;
smd5 = &smdtty_apps_riva_ant_cmd;
smd6 = &smdtty_apps_riva_ant_data;
smd7 = &smdtty_data1;
smd8 = &smdtty_data4;
smd11 = &smdtty_data11;
smd21 = &smdtty_data21;
smd36 = &smdtty_loopback;
sdhc1 = &sdhc_1; /* SDC1 eMMC slot */
sdhc2 = &sdhc_2; /* SDC2 for SD card */
i2c1 = &i2c_1;
i2c2 = &i2c_2;
i2c3 = &i2c_3;
i2c4 = &i2c_4;
i2c5 = &i2c_5;
i2c7 = &i2c_7;
i2c8 = &i2c_8;
spi3 = &spi_3;
};
};
&sdhc_2 {
nest,workaround-ocr-add-vio = "VIO_3_3";
};
&soc {
i2c_4: i2c@78b8000 { /* BLSP1 QUP3 */
compatible = "qcom,i2c-msm-v2";
#address-cells = <1>;
#size-cells = <0>;
reg-names = "qup_phys_addr";
reg = <0x78b8000 0x600>;
interrupt-names = "qup_irq";
interrupts = <0 98 0>;
qcom,clk-freq-out = <400000>;
qcom,clk-freq-in = <19200000>;
clock-names = "iface_clk", "core_clk";
clocks = <&clock_gcc clk_gcc_blsp1_ahb_clk>,
<&clock_gcc clk_gcc_blsp1_qup4_i2c_apps_clk>;
pinctrl-names = "i2c_active", "i2c_sleep";
pinctrl-0 = <&i2c_4_active>;
pinctrl-1 = <&i2c_4_sleep>;
qcom,noise-rjct-scl = <0>;
qcom,noise-rjct-sda = <0>;
qcom,master-id = <86>;
dmas = <&dma_blsp1 10 64 0x20000020 0x20>,
<&dma_blsp1 11 32 0x20000020 0x20>;
dma-names = "tx", "rx";
status = "disabled";
};
i2c_7: i2c@7AF7000 { /* BLSP2 QUP2 */
compatible = "qcom,i2c-msm-v2";
#address-cells = <1>;
#size-cells = <0>;
reg-names = "qup_phys_addr";
reg = <0x7AF7000 0x600>;
interrupt-names = "qup_irq";
interrupts = <0 301 0>;
qcom,clk-freq-out = <400000>;
qcom,clk-freq-in = <19200000>;
clock-names = "iface_clk", "core_clk";
clocks = <&clock_gcc clk_gcc_blsp2_ahb_clk>,
<&clock_gcc clk_gcc_blsp2_qup3_i2c_apps_clk>;
pinctrl-names = "i2c_active", "i2c_sleep";
pinctrl-0 = <&i2c_7_active>;
pinctrl-1 = <&i2c_7_sleep>;
qcom,noise-rjct-scl = <0>;
qcom,noise-rjct-sda = <0>;
qcom,master-id = <84>;
dmas = <&dma_blsp1 8 64 0x20000020 0x20>,
<&dma_blsp1 9 32 0x20000020 0x20>;
dma-names = "tx", "rx";
status = "disabled";
};
i2c_8: i2c@7AF8000 { /* BLSP2 QUP3 */
compatible = "qcom,i2c-msm-v2";
#address-cells = <1>;
#size-cells = <0>;
reg-names = "qup_phys_addr";
reg = <0x7AF8000 0x600>;
interrupt-names = "qup_irq";
interrupts = <0 302 0>;
qcom,clk-freq-out = <400000>;
qcom,clk-freq-in = <19200000>;
clock-names = "iface_clk", "core_clk";
clocks = <&clock_gcc clk_gcc_blsp2_ahb_clk>,
<&clock_gcc clk_gcc_blsp2_qup4_i2c_apps_clk>;
pinctrl-names = "i2c_active", "i2c_sleep";
pinctrl-0 = <&i2c_8_active>;
pinctrl-1 = <&i2c_8_sleep>;
qcom,noise-rjct-scl = <0>;
qcom,noise-rjct-sda = <0>;
qcom,master-id = <84>;
dmas = <&dma_blsp1 10 64 0x20000020 0x20>,
<&dma_blsp1 11 32 0x20000020 0x20>;
dma-names = "tx", "rx";
status = "disabled";
};
gpio_keys {
compatible = "gpio-keys";
input-name = "gpio-keys";
pinctrl-names = "tlmm_gpio_key_active","tlmm_gpio_key_suspend";
pinctrl-0 = <&gpio_key_active>;
pinctrl-1 = <&gpio_key_suspend>;
camera_focus {
label = "camera_focus";
gpios = <&tlmm 87 0x1>;
linux,input-type = <1>;
linux,code = <0x210>;
debounce-interval = <15>;
};
camera_snapshot {
label = "camera_snapshot";
gpios = <&tlmm 86 0x1>;
linux,input-type = <1>;
linux,code = <0x2fe>;
debounce-interval = <15>;
};
vol_up {
label = "volume_up";
gpios = <&tlmm 85 0x1>;
linux,input-type = <1>;
linux,code = <115>;
debounce-interval = <15>;
};
};
hbtp {
compatible = "qcom,hbtp-input";
vcc_ana-supply = <&pm8953_l10>;
vcc_dig-supply = <&pm8953_l5>;
qcom,afe-load = <50000>;
qcom,afe-vtg-min = <2850000>;
qcom,afe-vtg-max = <2850000>;
qcom,dig-load = <15000>;
qcom,dig-vtg-min = <1800000>;
qcom,dig-vtg-max = <1800000>;
};
};
&soc {
qcom,rmnet-ipa {
status = "disabled";
};
};
&ipa_hw {
status = "disabled";
};
&secure_mem {
status = "disabled";
};
&tlmm {
i2c_4 {
i2c_4_active: i2c_4_active {
/* active state */
mux {
pins = "gpio14", "gpio15";
function = "blsp_i2c4";
};
config {
pins = "gpio14", "gpio15";
drive-strength = <2>;
bias-disable;
};
};
i2c_4_sleep: i2c_4_sleep {
/* suspended state */
mux {
pins = "gpio14", "gpio15";
function = "gpio";
};
config {
pins = "gpio14", "gpio15";
drive-strength = <2>;
bias-disable;
};
};
};
i2c_7 {
i2c_7_active: i2c_7_active {
/* active state */
mux {
pins = "gpio135", "gpio136";
function = "blsp_i2c7";
};
config {
pins = "gpio135", "gpio136";
drive-strength = <2>;
bias-disable;
};
};
i2c_7_sleep: i2c_7_sleep {
/* suspended state */
mux {
pins = "gpio135", "gpio136";
function = "gpio";
};
config {
pins = "gpio135", "gpio136";
drive-strength = <2>;
bias-disable;
};
};
};
i2c_8 {
i2c_8_active: i2c_8_active {
/* active state */
mux {
pins = "gpio98", "gpio99";
function = "blsp_i2c8";
};
config {
pins = "gpio98", "gpio99";
drive-strength = <2>;
bias-disable;
};
};
i2c_8_sleep: i2c_8_sleep {
/* suspended state */
mux {
pins = "gpio98", "gpio99";
function = "gpio";
};
config {
pins = "gpio98", "gpio99";
drive-strength = <2>;
bias-disable;
};
};
};
};
&blsp1_uart0 {
status = "ok";
pinctrl-names = "default";
pinctrl-0 = <&uart_console_active>;
};
&i2c_4 {
status = "ok";
opt3001@44 {
compatible = "ti,opt3001";
reg = <0x44>; /* ALS_ADDR connected to ground */
status = "okay";
};
ina231@40 {
compatible = "ti,ina231";
reg = <0x40>;
shunt-resistor = <10000>;
};
};
&sdhc_1 {
/* device core power supply */
vdd-supply = <&pm8953_l8>;
qcom,vdd-voltage-level = <2900000 2900000>;
qcom,vdd-current-level = <200 570000>;
/* device communication power supply */
vdd-io-supply = <&pm8953_l5>;
qcom,vdd-io-always-on;
qcom,vdd-io-lpm-sup;
qcom,vdd-io-voltage-level = <1800000 1800000>;
qcom,vdd-io-current-level = <200 325000>;
pinctrl-names = "active", "sleep";
pinctrl-0 = <&sdc1_clk_on &sdc1_cmd_on &sdc1_data_on &sdc1_rclk_on>;
pinctrl-1 = <&sdc1_clk_off &sdc1_cmd_off &sdc1_data_off &sdc1_rclk_off>;
qcom,clk-rates = <400000 20000000 25000000 50000000 100000000 192000000
384000000>;
qcom,nonremovable;
qcom,bus-speed-mode = "HS200_1p8v";
status = "ok";
};
&i2c_8 {
status = "ok";
tlc59108@42 {
#address-cells = <1>;
#size-cells = <0>;
#gpio-cells = <2>;
enable-gpio = <&tlmm 61 GPIO_ACTIVE_HIGH>;
compatible = "ti,tlc59108";
label = "tlc59108";
reg = <0x42>;
chan0@0 {
label = "tlc59108:chan0";
reg = <0x0>;
};
chan1@1 {
label = "tlc59108:chan1";
reg = <0x1>;
};
chan2@2 {
label = "tlc59108:chan2";
reg = <0x2>;
};
chan3@3 {
label = "tlc59108:chan3";
reg = <0x3>;
};
chan4@4 {
label = "tlc59108:chan4";
reg = <0x4>;
};
chan5@5 {
label = "tlc59108:chan5";
reg = <0x5>;
};
chan6@6 {
label = "tlc59108:chan6";
reg = <0x6>;
};
chan7@7 {
label = "tlc59108:chan7";
reg = <0x7>;
};
};
tlc59116@68 {
#address-cells = <1>;
#size-cells = <0>;
#gpio-cells = <2>;
enable-gpio = <&tlmm 61 GPIO_ACTIVE_HIGH>;
compatible = "ti,tlc59116";
label = "tlc59116";
reg = <0x68>;
chan0@0 {
label = "tlc59116:chan0";
reg = <0x0>;
};
chan1@1 {
label = "tlc59116:chan1";
reg = <0x1>;
};
chan2@2 {
label = "tlc59116:chan2";
reg = <0x2>;
};
chan3@3 {
label = "tlc59116:chan3";
reg = <0x3>;
};
chan4@4 {
label = "tlc59116:chan4";
reg = <0x4>;
};
chan5@5 {
label = "tlc59116:chan5";
reg = <0x5>;
};
chan6@6 {
label = "tlc59116:chan6";
reg = <0x6>;
};
chan7@7 {
label = "tlc59116:chan7";
reg = <0x7>;
};
chan8@8 {
label = "tlc59116:chan8";
reg = <0x8>;
};
chan9@9 {
label = "tlc59116:chan9";
reg = <0x9>;
};
chan10@10 {
label = "tlc59116:chan10";
reg = <0xa>;
};
chan11@11 {
label = "tlc59116:chan11";
reg = <0xb>;
};
chan12@12 {
label = "tlc59116:chan12";
reg = <0xc>;
};
chan13@13 {
label = "tlc59116:chan13";
reg = <0xd>;
};
chan14@14 {
label = "tlc59116:chan14";
reg = <0xe>;
};
chan15@15 {
label = "tlc59116:chan15";
reg = <0xf>;
};
};
};
&i2c_3 {
status = "ok";
eeprom0: qcom,eeprom@0 {
cell-index = <0>;
reg = <0x56>;
qcom,eeprom-name = "cat24c512";
compatible = "qcom,eeprom";
qcom,slave-addr = <0x56>;
qcom,cci-master = <0>;
/* For 512 Kb eeprom chip
* add 8 logic eeprom blcoks each is 8KB
*/
qcom,num-blocks = <8>;
qcom,page0 = <0 0 0 0 0 0>;
qcom,poll0 = <0 0 0 0 0 0>;
qcom,saddr0 = <0x56>;
qcom,mem0 = <8192 0x0000 2 0 1 0>;
qcom,page1 = <0 0 0 0 0 0>;
qcom,poll1 = <0 0 0 0 0 0>;
qcom,saddr1 = <0x56>;
qcom,mem1 = <8192 0x2000 2 0 1 0>;
qcom,page2 = <0 0 0 0 0 0>;
qcom,poll2 = <0 0 0 0 0 0>;
qcom,saddr2 = <0x56>;
qcom,mem2 = <8192 0x4000 2 0 1 0>;
qcom,page3 = <0 0 0 0 0 0>;
qcom,poll3 = <0 0 0 0 0 0>;
qcom,saddr3 = <0x56>;
qcom,mem3 = <8192 0x6000 2 0 1 0>;
qcom,page4 = <0 0 0 0 0 0>;
qcom,poll4 = <0 0 0 0 0 0>;
qcom,saddr4 = <0x56>;
qcom,mem4 = <8192 0x8000 2 0 1 0>;
qcom,page5 = <0 0 0 0 0 0>;
qcom,poll5 = <0 0 0 0 0 0>;
qcom,saddr5 = <0x56>;
qcom,mem5 = <8192 0xA000 2 0 1 0>;
qcom,page6 = <0 0 0 0 0 0>;
qcom,poll6 = <0 0 0 0 0 0>;
qcom,saddr6 = <0x56>;
qcom,mem6 = <8192 0xC000 2 0 1 0>;
qcom,page7 = <0 0 0 0 0 0>;
qcom,poll7 = <0 0 0 0 0 0>;
qcom,saddr7 = <0x56>;
qcom,mem7 = <8192 0xE000 2 0 1 0>;
cam_vio-supply = <&pm8953_l6>;
qcom,cam-vreg-name = "cam_vio";
qcom,cam-vreg-min-voltage = <0>;
qcom,cam-vreg-max-voltage = <0>;
qcom,cam-vreg-op-mode = <0>;
qcom,cam-power-seq-type = "sensor_vreg";
qcom,cam-power-seq-val = "cam_vio";
qcom,cam-power-seq-cfg-val = <1>;
qcom,cam-power-seq-delay = <1>;
status = "ok";
};
};
&sdhc_2 {
/* device core power supply */
vdd-supply = <&pm8953_l10>;
qcom,vdd-voltage-level = <18000000 1800000>;
qcom,vdd-current-level = <200 22000>;
/* device communication power supply */
vdd-io-supply = <&pm8953_l12>;
qcom,vdd-io-voltage-level = <1800000 1800000>;
qcom,vdd-io-current-level = <200 22000>;
pinctrl-names = "active", "sleep";
pinctrl-0 = <&sdc2_clk_on &sdc2_cmd_on &sdc2_data_on>;
pinctrl-1 = <&sdc2_clk_off &sdc2_cmd_off &sdc2_data_off>;
#address-cells = <0>;
interrupt-parent = <&sdhc_2>;
interrupts = <0 1 2>;
#interrupt-cells = <1>;
interrupt-map-mask = <0xffffffff>;
interrupt-map = <0 &intc 0 125 0
1 &intc 0 221 0
2 &tlmm 45 0>;
interrupt-names = "hc_irq", "pwr_irq", "sdiowakeup_irq";
/*cd-gpios = <&tlmm 45 0x1>;*/
qcom,clk-rates = <400000 20000000 25000000 50000000 100000000
200000000>;
qcom,bus-speed-mode = "SDR12", "SDR25", "SDR50", "DDR50", "SDR104";
status = "ok";
};
&pm8953_typec {
status = "disabled";
};