• Mario Huettel's avatar
    can: m_can: Enable M_CAN version dependent initialization · b03cfc5b
    Mario Huettel authored
    This patch adapts the initialization of the M_CAN. So it can be used
    with all versions >= 3.0.x.
    
    Changes:
    * Added version element to m_can_priv structure to hold M_CAN version.
    * Renamed bittiming structs for version 3.0.x
    * Added new bittiming structs for version >= 3.1.x
    * Function alloc_m_can_dev takes 2 new arguments. The TX FIFO size and the
      base address of the module.
    * Chip configuration for CAN_CTRLMODE_LOOPBACK is changed: Enabled
      CCCR_MON bit. In combination with TEST_LBCK it activates the internal
      loopback mode. Leaving CCCR_MON '0' results in external loopback mode.
    * Clocks are temporarily enabled by platform_propbe function in order to
      allow read access to the Core Release register and the Control Register.
      Registers are used to detect M_CAN version and optional Non-ISO Feature.
    
    Initialization of M_CAN for version >= 3.1.x:
    * TX FIFO of M_CAN is used to transmit frames. The driver does not need to
      stop the tx queue after each frame sent.
    * Initialization of TX Event FIFO is added.
    * NON-ISO is fixed for all M_CAN versions < 3.2.x. Version 3.2.x _can_ have
      the NISO (Non-ISO) bit which can switch the mode of the M_CAN to Non-ISO
      mode. This bit does not have to be writeable. Therefore it is checked.
      If it is writable Non-ISO support is added to the controllers supported
      CAN modes.
    
    New Functions:
    * Function to check the Core Release version. The read value determines the
      behaviour of the driver.
    * Function to check if the NISO bit for version >= 3.2.x is implemented.
    Signed-off-by: default avatarMario Huettel <mario.huettel@gmx.net>
    Reviewed-by: default avatarOliver Hartkopp <socketcan@hartkopp.net>
    Tested-by: default avatarQuentin Schulz <quentin.schulz@free-electrons.com>
    Signed-off-by: default avatarMarc Kleine-Budde <mkl@pengutronix.de>
    b03cfc5b
m_can.c 38.5 KB