diff --git a/bindings/arm/msm/msm.txt b/bindings/arm/msm/msm.txt index e993afb45b1f..f92135ac9964 100644 --- a/bindings/arm/msm/msm.txt +++ b/bindings/arm/msm/msm.txt @@ -163,6 +163,9 @@ Generic board variants: - HDK device: compatible = "qcom,hdk" +- SA2150P + compatible = "qcom,sa2150p" + Boards (SoC type + board variant): @@ -272,6 +275,7 @@ compatible = "qcom,sa6155-adp-air" compatible = "qcom,sa6155p-adp-air" compatible = "qcom,qcs405-rumi" compatible = "qcom,qcs405-iot" +compatible = "qcom,sa2150p-ccard" compatible = "qcom,qcs403-iot" compatible = "qcom,sa8150-adp-star" compatible = "qcom,adp-star" diff --git a/bindings/interrupt-controller/qcom,mpm.txt b/bindings/interrupt-controller/qcom,mpm.txt index 2b4beeeb7a37..dcce6028e872 100644 --- a/bindings/interrupt-controller/qcom,mpm.txt +++ b/bindings/interrupt-controller/qcom,mpm.txt @@ -27,6 +27,7 @@ Properties: "qcom,mpm-gic-scuba" "qcom,mpm-gic-sdxnightjar" "qcom,mpm-gic-monaco" + "qcom,mpm-gic-qcs405" - interrupts: Usage: required diff --git a/qcom/Makefile b/qcom/Makefile index 9d5d6f68bb88..dd35dd16b986 100644 --- a/qcom/Makefile +++ b/qcom/Makefile @@ -357,6 +357,8 @@ else dtb-$(CONFIG_ARCH_SA8195) += sa8195p-adp-star.dtb \ sa8195p-v2-adp-air.dtb endif + +dtb-$(CONFIG_ARCH_SA2150P) += sa2150p-ccard-emmc.dtb endif ifeq ($(CONFIG_ARCH_LAHAINA), y) diff --git a/qcom/qcs405-cpu.dtsi b/qcom/qcs405-cpu.dtsi new file mode 100644 index 000000000000..07c83a54cb13 --- /dev/null +++ b/qcom/qcs405-cpu.dtsi @@ -0,0 +1,114 @@ +/ { + psci { + compatible = "arm,psci-1.0"; + method = "smc"; + }; + + cpus { + #address-cells = <1>; + #size-cells = <0>; + cpu-map { + cluster0 { + core0 { + cpu = <&CPU0>; + }; + + core1 { + cpu = <&CPU1>; + }; + + core2 { + cpu = <&CPU2>; + }; + + core3 { + cpu = <&CPU3>; + }; + }; + }; + + CPU0: cpu@100 { + device_type = "cpu"; + compatible = "arm,cortex-a53"; + reg = <0x100>; + enable-method = "psci"; + capacity-dmips-mhz = <1024>; + next-level-cache = <&L2_1>; + #cooling-cells = <2>; + L2_1: l2-cache { + compatible = "arm,arch-cache"; + cache-level = <2>; + /* A53 L2 dump not supported */ + qcom,dump-size = <0x0>; + }; + + L1_I_100: l1-icache { + compatible = "arm,arch-cache"; + qcom,dump-size = <0x8800>; + }; + + L1_D_100: l1-dcache { + compatible = "arm,arch-cache"; + qcom,dump-size = <0x9000>; + }; + }; + + CPU1: cpu@101 { + device_type = "cpu"; + compatible = "arm,cortex-a53"; + reg = <0x101>; + enable-method = "psci"; + capacity-dmips-mhz = <1024>; + next-level-cache = <&L2_1>; + #cooling-cells = <2>; + L1_I_101: l1-icache { + compatible = "arm,arch-cache"; + qcom,dump-size = <0x8800>; + }; + + L1_D_101: l1-dcache { + compatible = "arm,arch-cache"; + qcom,dump-size = <0x9000>; + }; + }; + + CPU2: cpu@102 { + device_type = "cpu"; + compatible = "arm,cortex-a53"; + reg = <0x102>; + enable-method = "psci"; + capacity-dmips-mhz = <1024>; + next-level-cache = <&L2_1>; + #cooling-cells = <2>; + L1_I_102: l1-icache { + compatible = "arm,arch-cache"; + qcom,dump-size = <0x8800>; + }; + + L1_D_102: l1-dcache { + compatible = "arm,arch-cache"; + qcom,dump-size = <0x9000>; + }; + }; + + CPU3: cpu@103 { + device_type = "cpu"; + compatible = "arm,cortex-a53"; + reg = <0x103>; + enable-method = "psci"; + capacity-dmips-mhz = <1024>; + next-level-cache = <&L2_1>; + #cooling-cells = <2>; + L1_I_103: l1-icache { + compatible = "arm,arch-cache"; + qcom,dump-size = <0x8800>; + }; + + L1_D_103: l1-dcache { + compatible = "arm,arch-cache"; + qcom,dump-size = <0x9000>; + }; + }; + }; + +}; diff --git a/qcom/qcs405-pinctrl.dtsi b/qcom/qcs405-pinctrl.dtsi new file mode 100644 index 000000000000..80d8fef22aca --- /dev/null +++ b/qcom/qcs405-pinctrl.dtsi @@ -0,0 +1,28 @@ +&soc { + tlmm: pinctrl@1000000 { + compatible = "qcom,qcs404-pinctrl"; + reg = <0x01000000 0x200000>, + <0x01300000 0x200000>, + <0x07b00000 0x200000>; + reg-names = "south", "north", "east"; + interrupts = ; + interrupt-controller; + #interrupt-cells = <2>; + gpio-ranges = <&tlmm 0 0 120>; + gpio-controller; + #gpio-cells = <2>; + + blsp1_uart2_default: blsp1-uart2-default { + rx { + pins = "gpio18"; + function = "blsp_uart_rx_a2"; + }; + + tx { + pins = "gpio17"; + function = "blsp_uart_tx_a2"; + }; + }; + + }; +}; diff --git a/qcom/qcs405.dtsi b/qcom/qcs405.dtsi new file mode 100644 index 000000000000..10ff3f6bab3b --- /dev/null +++ b/qcom/qcs405.dtsi @@ -0,0 +1,286 @@ +#include +#include +#include +#include +#include + + +/ { + model = "Qualcomm Technologies, Inc. QCS405"; + compatible = "qcom,qcs405"; + qcom,msm-id = <352 0x0>, <452 0x0>; + interrupt-parent = <&intc>; + + #address-cells = <2>; + #size-cells = <2>; + + aliases { + serial0 = &blsp1_uart2_console; + }; + + chosen { + }; + + memory { device_type = "memory"; reg = <0 0 0 0>; }; + + reserved_mem: reserved-memory { + #address-cells = <2>; + #size-cells = <2>; + ranges; + + removed_region0: removed_region@85900000 { + no-map; + reg = <0x0 0x85900000 0x0 0x600000>; + }; + + smem_region: smem@85f00000 { + no-map; + reg = <0x0 0x85f00000 0x0 0x200000>; + }; + + removed_region1: removed_region@86100000 { + no-map; + reg = <0x0 0x86100000 0x0 0x300000>; + }; + + wlan_fw_mem: wlan_fw_mem@86400000 { + no-map; + reg = <0x0 0x86400000 0x0 0x1000000>; + }; + + adsp_fw_mem: adsp_fw_mem@87400000 { + no-map; + reg = <0x0 0x87400000 0x0 0x1400000>; + }; + + cdsp_fw_mem: cdsp_fw_mem@88800000 { + no-map; + reg = <0x0 0x88800000 0x0 0x800000>; + }; + + wlan_msa_mem: wlan_msa_region@88E00000 { + no-map; + reg = <0x0 0x89000000 0x0 0x100000>; + }; + + secure_mem: secure_region { + status = "disabled"; + compatible = "shared-dma-pool"; + reusable; + alignment = <0 0x400000>; + size = <0 0x7000000>; + }; + + mdf_mem: mdf_region { + compatible = "shared-dma-pool"; + alloc-ranges = <0 0x00000000 0 0xffffffff>; + reusable; + alignment = <0 0x400000>; + size = <0 0x800000>; + }; + + qseecom_mem: qseecom_region { + compatible = "shared-dma-pool"; + reusable; + alignment = <0 0x400000>; + size = <0 0x1000000>; + }; + + qseecom_ta_mem: qseecom_ta_region { + compatible = "shared-dma-pool"; + reusable; + alignment = <0 0x400000>; + size = <0 0x400000>; + }; + + adsp_mem: adsp_region { + compatible = "shared-dma-pool"; + reusable; + alignment = <0 0x400000>; + size = <0 0x800000>; + }; + + dump_mem: mem_dump_region { + compatible = "shared-dma-pool"; + reusable; + size = <0 0x400000>; + }; + /* global autoconfigured region for contiguous allocations */ + linux,cma { + compatible = "shared-dma-pool"; + alloc-ranges = <0 0x00000000 0 0xffffffff>; + reusable; + alignment = <0 0x400000>; + size = <0 0x1000000>; + linux,cma-default; + }; + }; + + soc: soc { }; + +}; + +&soc { + #address-cells = <1>; + #size-cells = <1>; + ranges = <0 0 0 0xffffffff>; + compatible = "simple-bus"; + + intc: interrupt-controller@b000000 { + compatible = "qcom,msm-qgic2"; + interrupt-controller; + interrupt-parent = <&intc>; + #interrupt-cells = <3>; + reg = <0x0b000000 0x1000>, + <0x0b002000 0x1000>; + }; + + wakegic: wake-gic { + compatible = "qcom,mpm-gic-qcs405", "qcom,mpm"; + interrupts = ; + reg = <0x601b8 0x1000>, + <0xb011008 0x4>; /* MSM_APCS_GCC_BASE 4K */ + reg-names = "vmpm", "ipc"; + qcom,num-mpm-irqs = <96>; + interrupt-controller; + interrupt-parent = <&intc>; + #interrupt-cells = <2>; + }; + + arch_timer: timer { + compatible = "arm,armv8-timer"; + interrupts = , + , + , + ; + clock-frequency = <19200000>; + }; + + timer@b120000 { + #address-cells = <1>; + #size-cells = <1>; + ranges; + compatible = "arm,armv7-timer-mem"; + reg = <0xb120000 0x1000>; + clock-frequency = <19200000>; + + frame@b121000 { + frame-number = <0>; + interrupts = <0 8 0x4>, + <0 7 0x4>; + reg = <0xb121000 0x1000>, + <0xb122000 0x1000>; + }; + + frame@b123000 { + frame-number = <1>; + interrupts = <0 9 0x4>; + reg = <0xb123000 0x1000>; + status = "disabled"; + }; + + frame@b124000 { + frame-number = <2>; + interrupts = <0 10 0x4>; + reg = <0xb124000 0x1000>; + status = "disabled"; + }; + + frame@b125000 { + frame-number = <3>; + interrupts = <0 11 0x4>; + reg = <0xb125000 0x1000>; + status = "disabled"; + }; + + frame@b126000 { + frame-number = <4>; + interrupts = <0 12 0x4>; + reg = <0xb126000 0x1000>; + status = "disabled"; + }; + + frame@b127000 { + frame-number = <5>; + interrupts = <0 13 0x4>; + reg = <0xb127000 0x1000>; + status = "disabled"; + }; + + frame@b128000 { + frame-number = <6>; + interrupts = <0 14 0x4>; + reg = <0xb128000 0x1000>; + status = "disabled"; + }; + }; + + clocks { + xo_board { + compatible = "fixed-clock"; + #clock-cells = <0>; + clock-frequency = <19200000>; + clock-output-names = "xo_board"; + }; + }; + + qcom,msm-rtb { + compatible = "qcom,msm-rtb"; + qcom,rtb-size = <0x100000>; + }; + + blsp1_uart2_console: serial@78b1000 { + compatible = "qcom,msm-uartdm-v1.4", "qcom,msm-uartdm"; + reg = <0x078b1000 0x200>; + interrupts = <0 118 0>; + pinctrl-names = "default"; + pinctrl-0 = <&blsp1_uart2_default>; + status = "okay"; + }; + + qcom,msm-imem@8600000 { + compatible = "qcom,msm-imem"; + reg = <0x08600000 0x1000>; /* Address and size of IMEM */ + ranges = <0x0 0x08600000 0x1000>; + #address-cells = <1>; + #size-cells = <1>; + + mem_dump_table@10 { + compatible = "qcom,msm-imem-mem_dump_table"; + reg = <0x10 0x8>; + }; + + dload_type@18 { + compatible = "qcom,msm-imem-dload-type"; + reg = <0x18 0x4>; + }; + + restart_reason@65c { + compatible = "qcom,msm-imem-restart_reason"; + reg = <0x65c 0x4>; + }; + + boot_stats@6b0 { + compatible = "qcom,msm-imem-boot_stats"; + reg = <0x6b0 0x20>; + }; + + pil@94c { + compatible = "qcom,msm-imem-pil"; + reg = <0x94c 0xc8>; + }; + + diag_dload@c8 { + compatible = "qcom,msm-imem-diag-dload"; + reg = <0xc8 0xc8>; + }; + + kaslr_offset@6d0 { + compatible = "qcom,msm-imem-kaslr_offset"; + reg = <0x6d0 0xc>; + }; + }; +}; + +#include "qcs405-pinctrl.dtsi" +#include "qcs405-cpu.dtsi" diff --git a/qcom/sa2150p-ccard-emmc.dts b/qcom/sa2150p-ccard-emmc.dts new file mode 100644 index 000000000000..96df6db65fc8 --- /dev/null +++ b/qcom/sa2150p-ccard-emmc.dts @@ -0,0 +1,10 @@ +/dts-v1/; + +#include "sa2150p-ccard.dtsi" + +/ { + model = "Qualcomm Technologies, Inc. SA2150P CCARD EMMC"; + compatible = "qcom,sa2150p-ccard", "qcom,qcs405", "qcom,sa2150p", + "qcom,ccard"; + qcom,board-id = <25 0>, <25 0x100>; +}; diff --git a/qcom/sa2150p-ccard.dtsi b/qcom/sa2150p-ccard.dtsi new file mode 100644 index 000000000000..d6cbcc922f26 --- /dev/null +++ b/qcom/sa2150p-ccard.dtsi @@ -0,0 +1 @@ +#include "qcs405.dtsi"