[RESEND RFC PATCH v5 3/5] ARM: dts: stm32: add CAN support on stm32f429

Alexandre TORGUE alexandre.torgue at foss.st.com
Mon Jan 9 06:45:10 PST 2023


On 1/8/23 17:25, Dario Binacchi wrote:
> Add support for bxcan (Basic eXtended CAN controller) to STM32F429. The
> chip contains two CAN peripherals, CAN1 the master and CAN2 the slave,
> that share some of the required logic like clock and filters. This means
> that the slave CAN can't be used without the master CAN.
> 
> Signed-off-by: Dario Binacchi <dario.binacchi at amarulasolutions.com>
> 
> ---
> 
> (no changes since v4)
> 
> Changes in v4:
> - Replace the node can at 40006400 (compatible "st,stm32f4-bxcan-core")
>    with the gcan at 40006600 node ("sysnode" compatible). The gcan node
>    contains clocks and memory addresses shared by the two can nodes
>    of which it's no longer the parent.
> - Add to can nodes the "st,gcan" property (global can memory) which
>    references the gcan at 40006600 node ("sysnode compatibble).
> 
> Changes in v3:
> - Remove 'Dario Binacchi <dariobin at libero.it>' SOB.
> - Add "clocks" to can at 0 node.
> 
>   arch/arm/boot/dts/stm32f429.dtsi | 29 +++++++++++++++++++++++++++++
>   1 file changed, 29 insertions(+)
> 
> diff --git a/arch/arm/boot/dts/stm32f429.dtsi b/arch/arm/boot/dts/stm32f429.dtsi
> index c31ceb821231..ce08872109b8 100644
> --- a/arch/arm/boot/dts/stm32f429.dtsi
> +++ b/arch/arm/boot/dts/stm32f429.dtsi
> @@ -362,6 +362,35 @@ i2c3: i2c at 40005c00 {
>   			status = "disabled";
>   		};
>   
> +		gcan: gcan at 40006600 {
> +			compatible = "st,stm32f4-gcan", "syscon";
> +			reg = <0x40006600 0x200>;
> +			clocks = <&rcc 0 STM32F4_APB1_CLOCK(CAN1)>;
> +		};
> +
> +		can1: can at 40006400 {
> +			compatible = "st,stm32f4-bxcan";
> +			reg = <0x40006400 0x200>;
> +			interrupts = <19>, <20>, <21>, <22>;
> +			interrupt-names = "tx", "rx0", "rx1", "sce";
> +			resets = <&rcc STM32F4_APB1_RESET(CAN1)>;
> +			clocks = <&rcc 0 STM32F4_APB1_CLOCK(CAN1)>;
> +			st,can-master;
> +			st,gcan = <&gcan>;
> +			status = "disabled";
> +		};

We try to keep ordering by address. Can you move can1 before gcan ?
Otherwise, it is ok for me.

> +
> +		can2: can at 40006800 {
> +			compatible = "st,stm32f4-bxcan";
> +			reg = <0x40006800 0x200>;
> +			interrupts = <63>, <64>, <65>, <66>;
> +			interrupt-names = "tx", "rx0", "rx1", "sce";
> +			resets = <&rcc STM32F4_APB1_RESET(CAN2)>;
> +			clocks = <&rcc 0 STM32F4_APB1_CLOCK(CAN2)>;
> +			st,gcan = <&gcan>;
> +			status = "disabled";
> +		};
> +
>   		dac: dac at 40007400 {
>   			compatible = "st,stm32f4-dac-core";
>   			reg = <0x40007400 0x400>;




More information about the linux-arm-kernel mailing list