diff --git a/Kbuild b/Kbuild index 40222efc..fda148df 100644 --- a/Kbuild +++ b/Kbuild @@ -7,6 +7,11 @@ dtbo-y += tuna-wcn7750-bt.dtbo dtbo-y += tuna-kiwi-bt.dtbo endif +ifeq ($(CONFIG_ARCH_KERA), y) +dtbo-y += kera-qca6750-bt.dtbo +dtbo-y += kera-wcn7750-bt.dtbo +endif + ifeq ($(CONFIG_ARCH_SUN), y) dtbo-y += sun-peach-bt.dtbo dtbo-y += sun-kiwi-bt.dtbo diff --git a/kera-qca6750-bt.dts b/kera-qca6750-bt.dts new file mode 100644 index 00000000..112c5eae --- /dev/null +++ b/kera-qca6750-bt.dts @@ -0,0 +1,21 @@ +// SPDX-License-Identifier: BSD-3-Clause +/* + * Copyright (c) 2024 Qualcomm Innovation Center, Inc. All rights reserved. + */ + +/dts-v1/; +/plugin/; + +#include "kera-qca6750-bt.dtsi" + +/ { + model = "Qualcomm Technologies, Inc. Kera"; + compatible = "qcom,kera-atp", "qcom,kera", "qcom,atp", + "qcom,kera-cdp", "qcom,cdp", "qcom,kera-mtp", + "qcom,mtp", "qcom,kera-rcm", "qcom,rcm"; + qcom,msm-id = <686 0x10000>, <659 0x10000>; + qcom,board-id = <0x000021 0>, <0x010001 0>, <0x020001 0>, + <0x030001 0>, <0x040001 0>, <0x010008 0>, + <0x020008 0>, <0x030008 0>, <0x010015 0>, + <0x020015 0>; +}; diff --git a/kera-qca6750-bt.dtsi b/kera-qca6750-bt.dtsi new file mode 100644 index 00000000..6f915426 --- /dev/null +++ b/kera-qca6750-bt.dtsi @@ -0,0 +1,68 @@ +// SPDX-License-Identifier: BSD-3-Clause + +/* + * Copyright (c) 2024 Qualcomm Innovation Center, Inc. All rights reserved. + */ + +#include +#include +#include + +&pm8550vs_g_gpios { + bt_en: bt_en { + pins = "gpio4"; + function = "normal"; + input-disable; + output-enable; + bias-disable; + power-source = <1>; + }; +}; + +&tlmm { + cnss_bt_sw_ctrl: cnss_wlan_sw_ctrl { + mux { + pins = "gpio81"; + function = "wcn_sw_ctrl"; + }; + }; +}; + +&soc { + bluetooth: bt_wcn6750 { + compatible = "qcom,wcn6750-bt"; + + pinctrl-names = "bt_en", "sw_ctrl"; + pinctrl-0 = <&bt_en>; + pinctrl-1 = <&cnss_bt_sw_ctrl>; + + qcom,wl-reset-gpio = <&tlmm 35 0>; /* WCN_WLAN_EN */ + qcom,bt-sw-ctrl-gpio = <&tlmm 81 0>; /* WCN_SW_CTRL */ + qcom,bt-reset-gpio = <&pm8550vs_g_gpios 4 0>; /* WCN_BT_EN */ + + qcom,bt-vdd-io-supply = <&L11B>; /* IO */ + qcom,bt-vdd-aon-supply = <&S3B>; + qcom,bt-vdd-dig-supply = <&S3B>; /* BT_CX_MX */ + qcom,bt-vdd-rfacmn-supply = <&S3B>; + qcom,bt-vdd-rfa-0p8-supply = <&S3B>; + qcom,bt-vdd-rfa1-supply = <&S1B>; /*RFA 1p7*/ + qcom,bt-vdd-rfa2-supply = <&S2B>; /*RFA 1p2*/ + qcom,bt-vdd-ipa-2p2-supply = <&S4B>; /*IPA 2p2*/ + + /* max voltage are set to regulator max voltage supported */ + qcom,bt-vdd-io-config = <1620000 1800000 0 1>; + qcom,bt-vdd-aon-config = <920000 2736000 0 1>; + qcom,bt-vdd-dig-config = <920000 2736000 0 1>; + qcom,bt-vdd-rfacmn-config = <920000 2736000 0 1>; + qcom,bt-vdd-rfa-0p8-config = <920000 2736000 0 1>; + qcom,bt-vdd-rfa1-config = <1856000 2044000 0 1>; + qcom,bt-vdd-rfa2-config = <1256000 2092000 0 1>; + qcom,bt-vdd-ipa-2p2-config = <2200000 2700000 0 1>; + }; + +}; + +//uart instance +&qupv3_se5_4uart { + status = "ok"; +}; diff --git a/kera-wcn7750-bt.dts b/kera-wcn7750-bt.dts new file mode 100644 index 00000000..af23dd62 --- /dev/null +++ b/kera-wcn7750-bt.dts @@ -0,0 +1,20 @@ +// SPDX-License-Identifier: BSD-3-Clause +/* + * Copyright (c) 2024 Qualcomm Innovation Center, Inc. All rights reserved. + */ + +/dts-v1/; +/plugin/; + +#include "kera-wcn7750-bt.dtsi" + +/ { + model = "Qualcomm Technologies, Inc. Kera"; + compatible = "qcom,kera-mtp", "qcom,kera", "qcom,mtp", + "qcom,kera-qrd", "qcom,qrd", "qcom,kera-rcm", + "qcom,rcm"; + qcom,msm-id = <686 0x10000>, <659 0x10000>; + qcom,board-id = <0x010008 1>, <0x020008 1>, <0x030008 1>, + <0x01000B 0>, <0x02000B 0>, <0x03000B 0>, + <0x010015 1>, <0x020015 1>; +}; \ No newline at end of file diff --git a/kera-wcn7750-bt.dtsi b/kera-wcn7750-bt.dtsi new file mode 100644 index 00000000..83d36435 --- /dev/null +++ b/kera-wcn7750-bt.dtsi @@ -0,0 +1,84 @@ +// SPDX-License-Identifier: BSD-3-Clause + +/* + * Copyright (c) 2024 Qualcomm Innovation Center, Inc. All rights reserved. + */ + +#include +#include +#include + +&pm8550vs_g_gpios { + bt_en: bt_en { + pins = "gpio4"; + function = "normal"; + input-disable; + output-enable; + bias-disable; + power-source = <1>; + }; + bt_fmd_clk_en: bt_fmd_clk_en { + pins = "gpio3"; + function = "normal"; + input-enable; + output-disable; + bias-disable; + power-source = <1>; + }; +}; + +&tlmm { + cnss_bt_sw_ctrl: cnss_wlan_sw_ctrl { + mux { + pins = "gpio81"; + function = "wcn_sw_ctrl"; + }; + }; +}; + +&soc { + bluetooth: bt_kera { + compatible = "qcom,wcn7750-bt"; + qcom,wcn7750-bt; + + nvmem-cell-names = "fmd_set", "fmd_chg_pon", "fmd_cnt2_stop"; + nvmem-cells = <&fmd_set>, <&fmd_chg_pon>, <&fmd_cnt2_stop>; + + pinctrl-names = "bt_en", "sw_ctrl", "bt_fmd_clk_en"; + pinctrl-0 = <&bt_en>; + pinctrl-1 = <&cnss_bt_sw_ctrl>; + pinctrl-2 = <&bt_fmd_clk_en>; + + clock-names = "bt_rf_clk1"; + clocks = <&rpmhcc RPMH_RF_CLK1>; + + mpm_wake_set_gpios = <81>; + qcom,wl-reset-gpio = <&tlmm 35 0>; /* WCN_WIFI_EN */ + qcom,bt-sw-ctrl-gpio = <&tlmm 81 0>; /* WCN_SW_CTRL */ + qcom,bt-fmd-clk-gpio = <&pm8550vs_g_gpios 3 0>; /* FMD_CLK_EN */ + qcom,bt-reset-gpio = <&pm8550vs_g_gpios 4 0>; /* WCN_BT_EN */ + + qcom,bt-vdd-io-supply = <&L7B>; /* WCN_1P8_IO */ + qcom,bt-vdd-aon-supply = <&L11B>; /* AON LDO */ + qcom,bt-vdd-rfacmn-supply = <&S3B>; /* RF 0p8/CMN */ + qcom,bt-vdd-dig-supply = <&S3B>; /* BT LDO/BT_CX_MX */ + qcom,bt-vdd-rfa-0p8-supply = <&L6K>; /* RFA 0p8 / AV91C_VDD */ + qcom,bt-vdd-rfa1-supply = <&S1B>; /* RFA 1p7 */ + qcom,bt-vdd-rfa2-supply = <&S2B>; /* RFA 1p2 */ + qcom,bt-vdd-ipa-2p2-supply = <&S4B>; /* WCN_2p2_RFA */ + + qcom,bt-vdd-io-config = <1620000 1800000 0 1 1>; + qcom,bt-vdd-aon-config = <1800000 1800000 0 1 1>; + qcom,bt-vdd-rfacmn-config = <880000 2736000 0 1 1>; + qcom,bt-vdd-dig-config = <880000 2736000 0 1 1>; + qcom,bt-vdd-rfa-0p8-config = <900000 2000000 0 1 1>; + qcom,bt-vdd-rfa1-config = <1856000 2044000 0 1 1>; + qcom,bt-vdd-rfa2-config = <1256000 2092000 0 1 1>; + qcom,bt-vdd-ipa-2p2-config = <2156000 2700000 0 1 1>; + }; +}; + +//uart instance +&qupv3_se5_4uart { + status = "ok"; +};