Subject: Re: [PATCH 1/3] can: m_can: add Bosch M_CAN controller support

From: Oliver Hartkopp <[email-masked]>
Date: Fri, 27 Jun 2014 20:03:20 +0200

Hello Dong,

some general remarks from my side ...

On 27.06.2014 12:00, Dong Aisheng wrote:
>
> M_CAN also supports CANFD protocol features like data payload up to 64 bytes
> and bitrate switch at runtime, however, this patch still does not add the
> support for these features.

What is the reason for not supporting CAN FD?
The infrastructure is ready for it since Linux 3.15.

http://www.can-newsletter.org/engineering/standardization/140513_can-fd-linux-tools-and-driver-infrastructure_peak_vw/

For details see my commits for Linux 3.15.

> +  The left cell are all the number of each elements inside the message ram.
> +  Please refer to 2.4.1 Message RAM Con.guration in Bosch M_CAN user mannual
                                         ^^^
typo.

> +  for each elements definition.
> +
> +Example:
> +canfd1: canfd@020e8000 {
   ^^^^^^  ^^^^^

There's no reason to name this canfd. The fact that the controller supports
CAN FD is provided by priv->ctrlmode_supported and the CAN_CTRLMODE_FD bit.

Just write

can1: can@020e8000 {

> +	compatible = "bosch,m_can";
> +	reg = <0x020e8000 0x4000>, <0x02298000 0x4000>;
> +	reg-names = "canfd", "message_ram";
                     ^^^^^
dito.

> +	interrupts = <0 114 0x04>;
> +	clocks = <&clks IMX6SX_CLK_CANFD>;
                                   ^^^^^
dito.

> --- a/drivers/net/can/Kconfig
> +++ b/drivers/net/can/Kconfig
> @@ -137,6 +137,11 @@ config CAN_XILINXCAN
>  	  Xilinx CAN driver. This driver supports both soft AXI CAN IP and
>  	  Zynq CANPS IP.
>  
> +config CAN_M_CAN
> +	tristate "Bosch M_CAN devices"
> +	---help---
> +	  Say Y here if you want to support for Bosch M_CAN controller.
> +

source "drivers/net/can/m_can/Kconfig"

>  source "drivers/net/can/mscan/Kconfig"
>  
>  source "drivers/net/can/sja1000/Kconfig"
> diff --git a/drivers/net/can/Makefile b/drivers/net/can/Makefile
> index 1697f22..69dee2c 100644
> --- a/drivers/net/can/Makefile
> +++ b/drivers/net/can/Makefile
> @@ -17,6 +17,7 @@ obj-y				+= softing/
>  obj-$(CONFIG_CAN_SJA1000)	+= sja1000/
>  obj-$(CONFIG_CAN_MSCAN)		+= mscan/
>  obj-$(CONFIG_CAN_C_CAN)		+= c_can/
> +obj-$(CONFIG_CAN_M_CAN)		+= m_can.o

Please create a new m_can directory and a Kconfig in this directory analogue
to the c_can IP core approach.

>  obj-$(CONFIG_CAN_CC770)		+= cc770/
>  obj-$(CONFIG_CAN_AT91)		+= at91_can.o
>  obj-$(CONFIG_CAN_TI_HECC)	+= ti_hecc.o

Thanks for your contribution,
Oliver