Re: [PATCH v2 3/3] arm64: dts: qcom: qcs6490-rb3gen2: Enable CAN bus controller
From: Viken Dadhaniya
Date: Fri Mar 20 2026 - 09:19:43 EST
On 3/16/2026 6:59 PM, Marc Kleine-Budde wrote:
> On 16.03.2026 18:49:50, Viken Dadhaniya wrote:
>> Enable the MCP2518FD CAN controller on the QCS6490 RB3 Gen2 platform.
>> The controller is connected via SPI3 and uses a 40 MHz oscillator.
>>
>> The setup was tested with CAN-FD loopback and actual data transfer
>> using an external PCAN-USB FD adapter.
>
> IIRC a board DT update should go independent of the driver update.
Sure, I will send the device tree changes separately.
>
>> Signed-off-by: Viken Dadhaniya <viken.dadhaniya@xxxxxxxxxxxxxxxx>
>> ---
>> v1 -> v2:
>>
>> - Drop the gpio-hog property.
>> - Add the microchip,xstbyen property to enable transceiver standby control.
>>
>> v1 Link: https://lore.kernel.org/all/20260108125200.2803112-3-viken.dadhaniya@xxxxxxxxxxxxxxxx/
>> ---
>> ---
>> arch/arm64/boot/dts/qcom/qcs6490-rb3gen2.dts | 22 ++++++++++++++++++++
>> 1 file changed, 22 insertions(+)
>>
>> diff --git a/arch/arm64/boot/dts/qcom/qcs6490-rb3gen2.dts b/arch/arm64/boot/dts/qcom/qcs6490-rb3gen2.dts
>> index e3d2f01881ae..245961722f84 100644
>> --- a/arch/arm64/boot/dts/qcom/qcs6490-rb3gen2.dts
>> +++ b/arch/arm64/boot/dts/qcom/qcs6490-rb3gen2.dts
>> @@ -44,6 +44,14 @@ chosen {
>> stdout-path = "serial0:115200n8";
>> };
>>
>> + clocks {
>> + mcp2518fd_osc: can-clk {
>> + compatible = "fixed-clock";
>> + clock-frequency = <40000000>;
>> + #clock-cells = <0>;
>> + };
>> + };
>> +
>> dp-connector {
>> compatible = "dp-connector";
>> label = "DP";
>> @@ -1151,6 +1159,20 @@ platform {
>> };
>> };
>>
>> +&spi3 {
>> + status = "okay";
>> +
>> + can@0 {
>> + compatible = "microchip,mcp2518fd";
>> + reg = <0>;
>> + interrupts-extended = <&tlmm 7 IRQ_TYPE_LEVEL_LOW>;
>> + clocks = <&mcp2518fd_osc>;
>> + spi-max-frequency = <10000000>;
>
> Why do you limit the frequency to 10 MHz? Is this a HW limitation?
>
> With a 40 MHz clock the chip supports up to 17 MHz (not 20 MHz due to
> the erratum).
The 10 MHz was overly conservative. Testing on this board shows:
spi-max-frequency = <14000000>: actual SCK = 12.8 MHz => OK
spi-max-frequency = <15000000>: actual SCK = 15.0 MHz => FAIL
Any SCK >= 14.7 MHz fails to initialize the MCP251xFD on this board,
so 12.8 MHz is the highest reliable SCK within the erratum limit of
17 MHz.
Will update to spi-max-frequency = <14000000>.
>
> Marc
>