On 07/16/2014 03:00 PM, Dong Aisheng wrote:
The patch adds the basic CAN TX/RX function support for Bosch M_CAN controller. For TX, only one dedicated tx buffer is used for sending data. For RX, RXFIFO 0 is used for receiving data to avoid overflow. Rx FIFO 1 and Rx Buffers are not used currently, as well as Tx Event FIFO. Due to the message ram can be shared by multi m_can instances and the fifo element is configurable which is SoC dependant, the design is to parse the message ram related configuration data from device tree rather than hardcode define it in driver which can make the message ram sharing fully transparent to M_CAN controller driver, then we can gain better driver maintainability and future features upgrade. 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. Cc: Wolfgang Grandegger <wg@xxxxxxxxxxxxxx> Cc: Marc Kleine-Budde <mkl@xxxxxxxxxxxxxx> Cc: Mark Rutland <mark.rutland@xxxxxxx> Cc: Oliver Hartkopp <socketcan@xxxxxxxxxxxx> Cc: Varka Bhadram <varkabhadram@xxxxxxxxx> Signed-off-by: Dong Aisheng <b29396@xxxxxxxxxxxxx> --- changes since v4: some minor changes: - introduce m_can_fifo_write and is_lec_err functin - define macro M_CAN_FIFO_XXX for FIFO - move m_can_of_table before platform_driver - a few indent fix Changes since v3: A few minor changes: - use the updated name of bosch,mram-cfg - remove .owner = THIS_MODULE - add a line comment for mram_cfg structure Changes since v2: - fix checkpatch warnings - handle CAN_CTRLMODE_BERR_REPORTING properly that disable LEC error interrupts (Bus error) if no CAN_CTRLMODE_BERR_REPORTING. - introduce struct mram_cfg array to store message ram configuration data for each fifo - fix txb offset calculate wrong issue(should not plus mram_off again) - check return for clk_prepare_enable - split doc part into a separate patch Changes since v1: Addressed all comments from Mark Rutland, Hartkopp and Marc Kleine-Budde - merge three patches into one - create directory drivers/net/can/m_can - improve binding doc - make sure using valid pointer before netif_receive_skb(skb) - remove debug info a bit - let the stats are updated even if alloc_can_err_skb() fails - other small fixes --- drivers/net/can/Kconfig | 2 + drivers/net/can/Makefile | 1 + drivers/net/can/m_can/Kconfig | 4 + drivers/net/can/m_can/Makefile | 7 + drivers/net/can/m_can/m_can.c | 1202 ++++++++++++++++++++++++++++++++++++++++ 5 files changed, 1216 insertions(+), 0 deletions(-) create mode 100644 drivers/net/can/m_can/Kconfig create mode 100644 drivers/net/can/m_can/Makefile create mode 100644 drivers/net/can/m_can/m_can.c
This series addressed all of my comments ...Thanks :-) Reviewed-by: Varka Bhadram <varkabhadram@xxxxxxxxx> -- Regards, Varka Bhadram. -- To unsubscribe from this list: send the line "unsubscribe devicetree" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html