[0/2] RB2 bluetooth

Message ID 20231120-topic-rb2_bt-v1-0-509db2e28e70@linaro.org
Headers
Series RB2 bluetooth |

Message

Konrad Dybcio Nov. 25, 2023, 1:04 p.m. UTC
  The bluetooth module on RB2 seems to work ootb with the WCN3988 setup.
Enable it.

Scanning for devices works, couldn't test pairing on a remote board.

Signed-off-by: Konrad Dybcio <konrad.dybcio@linaro.org>
---
Konrad Dybcio (2):
      arm64: dts: qcom: sm6115: Add UART3
      arm64: dts: qcom: qrb4210-rb2: Enable bluetooth

 arch/arm64/boot/dts/qcom/qrb4210-rb2.dts | 81 +++++++++++++++++++++++++++++++-
 arch/arm64/boot/dts/qcom/sm6115.dtsi     | 30 ++++++++++++
 2 files changed, 110 insertions(+), 1 deletion(-)
---
base-commit: 8c9660f6515396aba78d1168d2e17951d653ebf2
change-id: 20231120-topic-rb2_bt-ad4b8abc750f

Best regards,
  

Comments

Bryan O'Donoghue Nov. 25, 2023, 3:04 p.m. UTC | #1
On 25/11/2023 13:04, Konrad Dybcio wrote:
> Enable the QCA bluetooth on RB2. It identifies like the following:
> 
> Bluetooth: hci0: QCA Product ID   :0x0000000a
> Bluetooth: hci0: QCA SOC Version  :0x40020150
> Bluetooth: hci0: QCA ROM Version  :0x00000201
> Bluetooth: hci0: QCA Patch Version:0x00000001
> Bluetooth: hci0: QCA controller version 0x01500201
> 
> Signed-off-by: Konrad Dybcio <konrad.dybcio@linaro.org>
> ---
>   arch/arm64/boot/dts/qcom/qrb4210-rb2.dts | 81 +++++++++++++++++++++++++++++++-
>   1 file changed, 80 insertions(+), 1 deletion(-)
> 
> diff --git a/arch/arm64/boot/dts/qcom/qrb4210-rb2.dts b/arch/arm64/boot/dts/qcom/qrb4210-rb2.dts
> index 9738c0dacd58..bd751236f983 100644
> --- a/arch/arm64/boot/dts/qcom/qrb4210-rb2.dts
> +++ b/arch/arm64/boot/dts/qcom/qrb4210-rb2.dts
> @@ -15,6 +15,7 @@ / {
>   
>   	aliases {
>   		serial0 = &uart4;
> +		serial1 = &uart3;
>   	};
>   
>   	chosen {
> @@ -352,7 +353,8 @@ vreg_l8a_0p664: l8 {
>   
>   		vreg_l9a_1p8: l9 {
>   			regulator-min-microvolt = <1800000>;
> -			regulator-max-microvolt = <2000000>;
> +			regulator-max-microvolt = <1800000>;
> +			regulator-allow-set-load;
>   		};
>   
>   		vreg_l10a_1p8: l10 {
> @@ -389,11 +391,13 @@ vreg_l15a_3p128: l15 {
>   		vreg_l16a_1p3: l16 {
>   			regulator-min-microvolt = <1704000>;
>   			regulator-max-microvolt = <1904000>;
> +			regulator-allow-set-load;
>   		};
>   
>   		vreg_l17a_1p3: l17 {
>   			regulator-min-microvolt = <1152000>;
>   			regulator-max-microvolt = <1384000>;
> +			regulator-allow-set-load;
>   		};
>   
>   		vreg_l18a_1p232: l18 {
> @@ -426,6 +430,7 @@ vreg_l22a_2p96: l22 {
>   		vreg_l23a_3p3: l23 {
>   			regulator-min-microvolt = <3200000>;
>   			regulator-max-microvolt = <3400000>;
> +			regulator-allow-set-load;
>   		};
>   
>   		vreg_l24a_2p96: l24 {
> @@ -487,6 +492,60 @@ &tlmm {
>   			       <56 3>, <61 2>, <64 1>,
>   			       <68 1>, <72 8>, <96 1>;
>   
> +	uart3_default: uart3-default-state {
> +		cts-pins {
> +			pins = "gpio8";
> +			function = "qup3";
> +			bias-bus-hold;
> +		};
> +
> +		rts-pins {
> +			pins = "gpio9";
> +			function = "qup3";
> +			drive-strength = <2>;
> +			bias-disable;
> +		};
> +
> +		tx-pins {
> +			pins = "gpio10";
> +			function = "qup3";
> +			drive-strength = <2>;
> +			bias-disable;
> +		};
> +
> +		rx-pins {
> +			pins = "gpio11";
> +			function = "qup3";
> +			bias-pull-up;
> +		};
> +	};
> +
> +	uart3_sleep: uart3-sleep-state {
> +		cts-pins {
> +			pins = "gpio8";
> +			function = "gpio";
> +			bias-bus-hold;
> +		};
> +
> +		rts-pins {
> +			pins = "gpio9";
> +			function = "gpio";
> +			bias-pull-down;
> +		};
> +
> +		tx-pins {
> +			pins = "gpio10";
> +			function = "gpio";
> +			bias-pull-up;
> +		};
> +
> +		rx-pins {
> +			pins = "gpio11";
> +			function = "gpio";
> +			bias-pull-up;
> +		};
> +	};
> +

My reading of downstream has all of these pins drive-strength = <2>.


>   	lt9611_rst_pin: lt9611-rst-state {
>   		pins = "gpio41";
>   		function = "gpio";
> @@ -508,6 +567,26 @@ sdc2_card_det_n: sd-card-det-n-state {
>   	};
>   };
>   
> +&uart3 {
> +	interrupts-extended = <&intc GIC_SPI 330 IRQ_TYPE_LEVEL_HIGH>,
> +			      <&tlmm 11 IRQ_TYPE_LEVEL_HIGH>;
> +	pinctrl-0 = <&uart3_default>;
> +	pinctrl-1 = <&uart3_sleep>;
> +	pinctrl-names = "default", "sleep";
> +	status = "okay";
> +
> +	bluetooth {
> +		compatible = "qcom,wcn3988-bt";
> +
> +		vddio-supply = <&vreg_l9a_1p8>;
> +		vddxo-supply = <&vreg_l16a_1p3>;
> +		vddrf-supply = <&vreg_l17a_1p3>;
> +		vddch0-supply = <&vreg_l23a_3p3>;
> +		enable-gpios = <&tlmm 87 GPIO_ACTIVE_HIGH>;
> +		max-speed = <3200000>;
> +	};
> +};

Does firmware name not matter here ?

bluetooth {
     compatible = "qcom,wcn3990-bt";
     vddio-supply = <&vreg_s4a_1p8>;
     vddxo-supply = <&vreg_l7a_1p8>;
     vddrf-supply = <&vreg_l17a_1p3>;
     vddch0-supply = <&vreg_l25a_3p3>;
     max-speed = <3200000>;
     firmware-name = "crnv21.bin";
};

> +
>   &uart4 {
>   	status = "okay";
>   };

---
bod
  
Konrad Dybcio Nov. 25, 2023, 3:28 p.m. UTC | #2
On 25.11.2023 16:04, Bryan O'Donoghue wrote:
> On 25/11/2023 13:04, Konrad Dybcio wrote:
>> Enable the QCA bluetooth on RB2. It identifies like the following:
>>
>> Bluetooth: hci0: QCA Product ID   :0x0000000a
>> Bluetooth: hci0: QCA SOC Version  :0x40020150
>> Bluetooth: hci0: QCA ROM Version  :0x00000201
>> Bluetooth: hci0: QCA Patch Version:0x00000001
>> Bluetooth: hci0: QCA controller version 0x01500201
>>
>> Signed-off-by: Konrad Dybcio <konrad.dybcio@linaro.org>
>> ---
[...]

>> +
>> +        rx-pins {
>> +            pins = "gpio11";
>> +            function = "gpio";
>> +            bias-pull-up;
>> +        };
>> +    };
>> +
> 
> My reading of downstream has all of these pins drive-strength = <2>.
Right, I'll fix it up.

> 
> 
>>       lt9611_rst_pin: lt9611-rst-state {
>>           pins = "gpio41";
>>           function = "gpio";
>> @@ -508,6 +567,26 @@ sdc2_card_det_n: sd-card-det-n-state {
>>       };
>>   };
>>   +&uart3 {
>> +    interrupts-extended = <&intc GIC_SPI 330 IRQ_TYPE_LEVEL_HIGH>,
>> +                  <&tlmm 11 IRQ_TYPE_LEVEL_HIGH>;
>> +    pinctrl-0 = <&uart3_default>;
>> +    pinctrl-1 = <&uart3_sleep>;
>> +    pinctrl-names = "default", "sleep";
>> +    status = "okay";
>> +
>> +    bluetooth {
>> +        compatible = "qcom,wcn3988-bt";
>> +
>> +        vddio-supply = <&vreg_l9a_1p8>;
>> +        vddxo-supply = <&vreg_l16a_1p3>;
>> +        vddrf-supply = <&vreg_l17a_1p3>;
>> +        vddch0-supply = <&vreg_l23a_3p3>;
>> +        enable-gpios = <&tlmm 87 GPIO_ACTIVE_HIGH>;
>> +        max-speed = <3200000>;
>> +    };
>> +};
> 
> Does firmware name not matter here ?
The driver figures it out, see
drivers/bluetooth/btqca.c : qca_uart_setup()

Konrad