Messages in this thread | | | From | Dario Binacchi <> | Subject | [PATCH v4 0/6] can: c_can: add support to 64 message objects | Date | Tue, 2 Mar 2021 22:54:29 +0100 |
| |
The D_CAN controller supports up to 128 messages. Until now the driver only managed 32 messages although Sitara processors and DRA7 SOC can handle 64.
The series was tested on a beaglebone board.
Note: I have not changed the type of tx_field (belonging to the c_can_priv structure) to atomic64_t because I think the atomic_t type has size of at least 32 bits on x86 and arm, which is enough to handle 64 messages. http://marc.info/?l=linux-can&m=139746476821294&w=2 reports the results of tests performed just on x86 and arm architectures.
Changes in v4: - Restore IF_RX interface. - Add a comment to clarify why IF_RX interface is used instead of IF_TX. - Use GENMASK() for setting msg_obj_rx_mask. - Use BIT() for setting single bits and GENMASK() for setting masks.
Changes in v3: - Use unsigned int instead of int as type of the msg_obj_* fields in the c_can_priv structure. - Replace (u64)1 with 1UL in msg_obj_rx_mask setting. - Use unsigned int instead of int as type of the msg_obj_num field in c_can_driver_data and c_can_pci_data structures.
Changes in v2: - Fix compiling error reported by kernel test robot. - Add Reported-by tag. - Pass larger size to alloc_candev() routine to avoid an additional memory allocation/deallocation. - Add message objects number to PCI driver data.
Dario Binacchi (6): can: c_can: remove unused code can: c_can: fix indentation can: c_can: add a comment about IF_RX interface's use can: c_can: use 32-bit write to set arbitration register can: c_can: prepare to up the message objects number can: c_can: add support to 64 message objects
drivers/net/can/c_can/c_can.c | 90 ++++++++++++++++---------- drivers/net/can/c_can/c_can.h | 32 ++++----- drivers/net/can/c_can/c_can_pci.c | 6 +- drivers/net/can/c_can/c_can_platform.c | 6 +- 4 files changed, 78 insertions(+), 56 deletions(-)
-- 2.17.1
| |