1. 23 11月, 2015 2 次提交
  2. 23 3月, 2015 1 次提交
  3. 20 1月, 2015 1 次提交
  4. 15 1月, 2015 1 次提交
    • O
      can: m_can: tag current CAN FD controllers as non-ISO · 6cfda7fb
      Oliver Hartkopp 提交于
      During the CAN FD standardization process within the ISO it turned out that
      the failure detection capability has to be improved.
      
      The CAN in Automation organization (CiA) defined the already implemented CAN
      FD controllers as 'non-ISO' and the upcoming improved CAN FD controllers as
      'ISO' compliant. See at http://www.can-cia.com/index.php?id=1937
      
      Finally there will be three types of CAN FD controllers in the future:
      
      1. ISO compliant (fixed)
      2. non-ISO compliant (fixed, like the M_CAN IP v3.0.1 in m_can.c)
      3. ISO/non-ISO CAN FD controllers (switchable, like the PEAK USB FD)
      
      So the current M_CAN driver for the M_CAN IP v3.0.1 has to expose its non-ISO
      implementation by setting the CAN_CTRLMODE_FD_NON_ISO ctrlmode at startup.
      As this bit cannot be switched at configuration time CAN_CTRLMODE_FD_NON_ISO
      must not be set in ctrlmode_supported of the current M_CAN driver.
      Signed-off-by: NOliver Hartkopp <socketcan@hartkopp.net>
      Cc: linux-stable <stable@vger.kernel.org>
      Signed-off-by: NMarc Kleine-Budde <mkl@pengutronix.de>
      6cfda7fb
  5. 19 11月, 2014 7 次提交
    • D
      can: m_can: update to support CAN FD features · 80646733
      Dong Aisheng 提交于
      Bosch M_CAN is CAN FD capable device. This patch implements the CAN
      FD features include up to 64 bytes payload and bitrate switch function.
      1) Change the Rx FIFO and Tx Buffer to 64 bytes for support CAN FD
         up to 64 bytes payload. It's backward compatible with old 8 bytes
         normal CAN frame.
      2) Allocate can frame or canfd frame based on EDL bit
      3) Bitrate Switch function is disabled by default and will be enabled
         according to CANFD_BRS bit in cf->flags.
      Acked-by: NOliver Hartkopp <socketcan@hartkopp.net>
      Signed-off-by: NDong Aisheng <b29396@freescale.com>
      Signed-off-by: NMarc Kleine-Budde <mkl@pengutronix.de>
      80646733
    • D
      can: m_can: fix incorrect error messages · a93f5cae
      Dong Aisheng 提交于
      Fix a few error messages.
      Signed-off-by: NDong Aisheng <b29396@freescale.com>
      Signed-off-by: NMarc Kleine-Budde <mkl@pengutronix.de>
      a93f5cae
    • D
      can: m_can: add missing delay after setting CCCR_INIT bit · 7660f633
      Dong Aisheng 提交于
      The spec mentions there may be a delay until the value written to INIT can be
      read back due to the synchronization mechanism between the two clock domains.
      But it does not indicate the exact clock cycles needed. The 5us delay is a
      test value and seems ok.
      
      Without the delay, CCCR.CCE bit may fail to be set and then the initialization
      fail sometimes when do repeatly up and down.
      Signed-off-by: NDong Aisheng <b29396@freescale.com>
      Signed-off-by: NMarc Kleine-Budde <mkl@pengutronix.de>
      7660f633
    • D
      can: m_can: fix not set can_dlc for remote frame · 921f1681
      Dong Aisheng 提交于
      The original code missed to set the cf->can_dlc in the RTR case, so add it.
      Signed-off-by: NDong Aisheng <b29396@freescale.com>
      Signed-off-by: NMarc Kleine-Budde <mkl@pengutronix.de>
      921f1681
    • D
      can: m_can: fix possible sleep in napi poll · f6a99649
      Dong Aisheng 提交于
      The m_can_get_berr_counter function can sleep and it may be called in napi poll
      function. Rework it to fix the following warning.
      
      root@imx6qdlsolo:~# cangen can0 -f -L 12 -D 112233445566778899001122
      [ 1846.017565] m_can 20e8000.can can0: entered error warning state
      [ 1846.023551] ------------[ cut here ]------------
      [ 1846.028216] WARNING: CPU: 0 PID: 560 at kernel/locking/mutex.c:867 mutex_trylock+0x218/0x23c()
      [ 1846.036889] DEBUG_LOCKS_WARN_ON(in_interrupt())
      [ 1846.041263] Modules linked in:
      [ 1846.044594] CPU: 0 PID: 560 Comm: cangen Not tainted 3.17.0-rc4-next-20140915-00010-g032d018-dirty #477
      [ 1846.054033] Backtrace:
      [ 1846.056557] [<80012448>] (dump_backtrace) from [<80012728>] (show_stack+0x18/0x1c)
      [ 1846.064180]  r6:809a07ec r5:809a07ec r4:00000000 r3:00000000
      [ 1846.069966] [<80012710>] (show_stack) from [<806c9ee0>] (dump_stack+0x8c/0xa4)
      [ 1846.077264] [<806c9e54>] (dump_stack) from [<8002aa78>] (warn_slowpath_common+0x70/0x94)
      [ 1846.085403]  r6:806cd1b0 r5:00000009 r4:be1d5c20 r3:be07b0c0
      [ 1846.091204] [<8002aa08>] (warn_slowpath_common) from [<8002aad4>] (warn_slowpath_fmt+0x38/0x40)
      [ 1846.099951]  r8:8119106c r7:80515aa4 r6:be027000 r5:00000001 r4:809d1df4
      [ 1846.106830] [<8002aaa0>] (warn_slowpath_fmt) from [<806cd1b0>] (mutex_trylock+0x218/0x23c)
      [ 1846.115141]  r3:80851c88 r2:8084fb74
      [ 1846.118804] [<806ccf98>] (mutex_trylock) from [<80515aa4>] (clk_prepare_lock+0x14/0xf4)
      [ 1846.126859]  r8:00000040 r7:be1d5cec r6:be027000 r5:be255800 r4:be027000
      [ 1846.133737] [<80515a90>] (clk_prepare_lock) from [<80517660>] (clk_prepare+0x14/0x2c)
      [ 1846.141583]  r5:be255800 r4:be027000
      [ 1846.145272] [<8051764c>] (clk_prepare) from [<8041ff14>] (m_can_get_berr_counter+0x20/0xd4)
      [ 1846.153672]  r4:be255800 r3:be07b0c0
      [ 1846.157325] [<8041fef4>] (m_can_get_berr_counter) from [<80420428>] (m_can_poll+0x310/0x8fc)
      [ 1846.165809]  r7:bd4dc540 r6:00000744 r5:11300000 r4:be255800
      [ 1846.171590] [<80420118>] (m_can_poll) from [<8056a468>] (net_rx_action+0xcc/0x1b4)
      [ 1846.179204]  r10:00000101 r9:be255ebc r8:00000040 r7:be7c3208 r6:8097c100 r5:be7c3200
      [ 1846.187192]  r4:0000012c
      [ 1846.189779] [<8056a39c>] (net_rx_action) from [<8002deec>] (__do_softirq+0xfc/0x2c4)
      [ 1846.197568]  r10:00000101 r9:8097c088 r8:00000003 r7:8097c080 r6:40000001 r5:8097c08c
      [ 1846.205559]  r4:00000020
      [ 1846.208144] [<8002ddf0>] (__do_softirq) from [<8002e194>] (do_softirq+0x7c/0x88)
      [ 1846.215588]  r10:00000000 r9:bd516a60 r8:be18ce00 r7:00000000 r6:be255800 r5:8056c0ec
      [ 1846.223578]  r4:60000093
      [ 1846.226163] [<8002e118>] (do_softirq) from [<8002e288>] (__local_bh_enable_ip+0xe8/0x10c)
      [ 1846.234386]  r4:00000200 r3:be1d4000
      [ 1846.238036] [<8002e1a0>] (__local_bh_enable_ip) from [<8056c108>] (__dev_queue_xmit+0x314/0x6b0)
      [ 1846.246868]  r6:be255800 r5:bd516a00 r4:00000000 r3:be07b0c0
      [ 1846.252645] [<8056bdf4>] (__dev_queue_xmit) from [<8056c4b8>] (dev_queue_xmit+0x14/0x18)
      Signed-off-by: NDong Aisheng <b29396@freescale.com>
      Signed-off-by: NMarc Kleine-Budde <mkl@pengutronix.de>
      f6a99649
    • D
      can: m_can: add missing message RAM initialization · 962845da
      Dong Aisheng 提交于
      The M_CAN message RAM is usually equipped with a parity or ECC functionality.
      But RAM cells suffer a hardware reset and can therefore hold arbitrary content
      at startup - including parity and/or ECC bits.
      
      To prevent the M_CAN controller detecting checksum errors when reading
      potentially uninitialized TX message RAM content to transmit CAN frames the TX
      message RAM has to be written with (any kind of) initial data.
      Signed-off-by: NDong Aisheng <b29396@freescale.com>
      Signed-off-by: NMarc Kleine-Budde <mkl@pengutronix.de>
      962845da
    • D
      can: m_can: add .ndo_change_mtu function · d6fdb38b
      Dong Aisheng 提交于
      Use common can_change_mtu function.
      Signed-off-by: NDong Aisheng <b29396@freescale.com>
      Signed-off-by: NMarc Kleine-Budde <mkl@pengutronix.de>
      d6fdb38b
  6. 18 8月, 2014 1 次提交
    • D
      can: m_can: add Bosch M_CAN controller support · e0d1f481
      Dong Aisheng 提交于
      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@grandegger.com>
      Cc: Marc Kleine-Budde <mkl@pengutronix.de>
      Cc: Mark Rutland <mark.rutland@arm.com>
      Cc: Oliver Hartkopp <socketcan@hartkopp.net>
      Cc: Varka Bhadram <varkabhadram@gmail.com>
      Signed-off-by: NDong Aisheng <b29396@freescale.com>
      Reviewed-by: NVarka Bhadram <varkabhadram@gmail.com>
      Signed-off-by: NFengguang Wu <fengguang.wu@intel.com>
      [mkl: Squahed semicolon cleanup by Fengguang Wu]
      Signed-off-by: NMarc Kleine-Budde <mkl@pengutronix.de>
      e0d1f481