The SM8350 HDK has onboard WiFi/BT chip, WCN6851. It is an earlier version of well-known WCN6855 WiFI/BT SoC. Describe the PMU, BT and WiFI parts of the device. The firmware isn't (yet) available as a part of linux-firmware, so it was verified with the firmware files from the vendor-supplied package (wcn prefix was applied to Bluetooth firmware files to make them follow upstream driver changes, vendor provided hpbtfw10.tlv and hpnv10.b06). Bluetooth: hci0: QCA Product ID :0x00000013 Bluetooth: hci0: QCA SOC Version :0x400c0110 Bluetooth: hci0: QCA ROM Version :0x00000100 Bluetooth: hci0: QCA Patch Version:0x00001017 Bluetooth: hci0: QCA controller version 0x01100100 Bluetooth: hci0: QCA Downloading qca/wcnhpbtfw10.tlv Bluetooth: hci0: QCA Downloading qca/wcnhpnv10.b06 Bluetooth: hci0: QCA setup on UART is completed Bluetooth: hci0: HFP non-HCI data transport is supported ath11k_pci 0000:01:00.0: BAR 0 [mem 0x60400000-0x605fffff 64bit]: assigned ath11k_pci 0000:01:00.0: MSI vectors: 32 ath11k_pci 0000:01:00.0: wcn6855 hw1.1 mhi mhi0: Requested to power ON mhi mhi0: Power on setup success mhi mhi0: Wait for device to enter SBL or Mission mode ath11k_pci 0000:01:00.0: chip_id 0x0 chip_family 0xb board_id 0x6 soc_id 0x400c0110 ath11k_pci 0000:01:00.0: fw_version 0x110c80c8 fw_build_timestamp 2021-05-25 21:43 fw_build_id WLAN.HSP.1.1.c3-00200-QCAHSPSWPL_V1_V2_SILICONZ-1 ath11k_pci 0000:01:00.0 wlp1s0: renamed from wlan0 For the reference, the driver looks for the board data for bus=pci,vendor=17cb,device=1103,subsystem-vendor=17cb,subsystem-device=0108,qmi-chip-id=0,qmi-board-id=6,variant=QC_8350_HDK Signed-off-by: Dmitry Baryshkov --- arch/arm64/boot/dts/qcom/sm8350-hdk.dts | 126 ++++++++++++++++++++++++++++++++ 1 file changed, 126 insertions(+) diff --git a/arch/arm64/boot/dts/qcom/sm8350-hdk.dts b/arch/arm64/boot/dts/qcom/sm8350-hdk.dts index 4973a3eb11b5..8e35216e4272 100644 --- a/arch/arm64/boot/dts/qcom/sm8350-hdk.dts +++ b/arch/arm64/boot/dts/qcom/sm8350-hdk.dts @@ -115,6 +115,70 @@ lt9611_3v3: lt9611-3v3-regulator { regulator-boot-on; regulator-always-on; }; + + wcn6855-pmu { + compatible = "qcom,wcn6851-pmu", "qcom,wcn6855-pmu"; + + pinctrl-0 = <&bt_en>, <&wlan_en>, <&swctrl>; + pinctrl-names = "default"; + + wlan-enable-gpios = <&tlmm 64 GPIO_ACTIVE_HIGH>; + bt-enable-gpios = <&tlmm 65 GPIO_ACTIVE_HIGH>; + swctrl-gpios = <&tlmm 153 GPIO_ACTIVE_HIGH>; + + vddio-supply = <&vreg_s10b_1p8>; + vddaon-supply = <&vreg_s11b_0p95>; + vddpmu-supply = <&vreg_s11b_0p95>; + vddpmumx-supply = <&vreg_s2e_0p85>; + vddpmucx-supply = <&vreg_s11b_0p95>; + vddrfa0p95-supply = <&vreg_s11b_0p95>; + vddrfa1p3-supply = <&vreg_s12b_1p25>; + vddrfa1p9-supply = <&vreg_s1c_1p86>; + vddpcie1p3-supply = <&vreg_s12b_1p25>; + vddpcie1p9-supply = <&vreg_s1c_1p86>; + + regulators { + vreg_pmu_rfa_cmn_0p8: ldo0 { + regulator-name = "vreg_pmu_rfa_cmn_0p8"; + }; + + vreg_pmu_aon_0p8: ldo1 { + regulator-name = "vreg_pmu_aon_0p8"; + }; + + vreg_pmu_wlcx_0p8: ldo2 { + regulator-name = "vreg_pmu_wlcx_0p8"; + }; + + vreg_pmu_wlmx_0p8: ldo3 { + regulator-name = "vreg_pmu_wlmx_0p8"; + }; + + vreg_pmu_btcmx_0p8: ldo4 { + regulator-name = "vreg_pmu_btcmx_0p8"; + }; + + vreg_pmu_pcie_1p8: ldo5 { + regulator-name = "vreg_pmu_pcie_1p8"; + }; + + vreg_pmu_pcie_0p9: ldo6 { + regulator-name = "vreg_pmu_pcie_0p9"; + }; + + vreg_pmu_rfa_0p8: ldo7 { + regulator-name = "vreg_pmu_rfa_0p8"; + }; + + vreg_pmu_rfa_1p2: ldo8 { + regulator-name = "vreg_pmu_rfa_1p2"; + }; + + vreg_pmu_rfa_1p7: ldo9 { + regulator-name = "vreg_pmu_rfa_1p7"; + }; + }; + }; }; &adsp { @@ -373,6 +437,13 @@ vreg_l7e_2p8: ldo7 { regulator-name = "vreg_l7e_2p8"; regulator-min-microvolt = <2800000>; regulator-max-microvolt = <2800000>; + + /* + * This is used by the RF front-end for which there is + * no way to represent it in DT (yet?). + */ + regulator-boot-on; + regulator-always-on; }; }; }; @@ -499,6 +570,23 @@ &pcie0 { &pcie0_port0 { reset-gpios = <&tlmm 94 GPIO_ACTIVE_LOW>; wake-gpios = <&tlmm 96 GPIO_ACTIVE_HIGH>; + + wifi@0 { + compatible = "pci17cb,1103"; + reg = <0x10000 0x0 0x0 0x0 0x0>; + + vddrfacmn-supply = <&vreg_pmu_rfa_cmn_0p8>; + vddaon-supply = <&vreg_pmu_aon_0p8>; + vddwlcx-supply = <&vreg_pmu_wlcx_0p8>; + vddwlmx-supply = <&vreg_pmu_wlmx_0p8>; + vddpcie1p8-supply = <&vreg_pmu_pcie_1p8>; + vddpcie0p9-supply = <&vreg_pmu_pcie_0p9>; + vddrfa0p8-supply = <&vreg_pmu_rfa_0p8>; + vddrfa1p2-supply = <&vreg_pmu_rfa_1p2>; + vddrfa1p8-supply = <&vreg_pmu_rfa_1p7>; + + qcom,calibration-variant = "QC_8350_HDK"; + }; }; &pcie0_phy { @@ -763,6 +851,20 @@ &tlmm { "HST_WLAN_UART_TX", "HST_WLAN_UART_RX"; + wlan_en: wlan-en-state { + pins = "gpio64"; + function = "gpio"; + drive-strength = <16>; + bias-disable; + }; + + bt_en: bt-en-state { + pins = "gpio65"; + function = "gpio"; + drive-strength = <16>; + bias-disable; + }; + pcie0_default_state: pcie0-default-state { perst-pins { pins = "gpio94"; @@ -815,12 +917,36 @@ sdc2_card_det_n: sd-card-det-n-state { drive-strength = <2>; bias-pull-up; }; + + swctrl: swctrl-state { + pins = "gpio153"; + function = "gpio"; + drive-strength = <16>; + bias-disable; + }; }; &uart2 { status = "okay"; }; +&uart18 { + status = "okay"; + + bluetooth { + compatible = "qcom,wcn6851-bt", "qcom,wcn6855-bt"; + + vddrfacmn-supply = <&vreg_pmu_rfa_cmn_0p8>; + vddaon-supply = <&vreg_pmu_aon_0p8>; + vddwlcx-supply = <&vreg_pmu_wlcx_0p8>; + vddwlmx-supply = <&vreg_pmu_wlmx_0p8>; + vddbtcmx-supply = <&vreg_pmu_btcmx_0p8>; + vddrfa0p8-supply = <&vreg_pmu_rfa_0p8>; + vddrfa1p2-supply = <&vreg_pmu_rfa_1p2>; + vddrfa1p7-supply = <&vreg_pmu_rfa_1p7>; + }; +}; + &ufs_mem_hc { status = "okay"; -- 2.47.3