Marc Kleine-Budde
dfe99ba29e
can: mcp251xfd: mcp251xfd_chip_clock_enable(): simplify return
...
This patch simplifies the return of the mcp251xfd_chip_clock_enable()
function by direct returning the error.
Link: https://lore.kernel.org/r/20210128104644.2982125-8-mkl@pengutronix.de
Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de >
2021-01-29 09:31:58 +01:00
Marc Kleine-Budde
49ffacbc4c
can: mcp251xfd: add missing _MASK postfix to MCP251XFD_OBJ_FLAGS_DLC
...
As MCP251XFD_OBJ_FLAGS_DLC is a mask, add the missing _MASK postfix,
that all other masks in the driver have.
Link: https://lore.kernel.org/r/20210128104644.2982125-7-mkl@pengutronix.de
Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de >
2021-01-29 09:31:57 +01:00
Marc Kleine-Budde
f93486a79a
can: mcp251xfd: unify error messages and commets
...
This patch unifies the error messages:
- have a "." and the end of each message
- write controller with a small "c", if not the first word of an error
message.
Link: https://lore.kernel.org/r/20210128104644.2982125-6-mkl@pengutronix.de
Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de >
2021-01-29 09:31:57 +01:00
Marc Kleine-Budde
9f1fbc1c9c
can: mcp251xfd: mcp251xfd_probe(): add imx6 to errata table
...
This patch adds an imx6 as known good to the errata table.
Link: https://lore.kernel.org/r/20210128104644.2982125-5-mkl@pengutronix.de
Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de >
2021-01-29 09:31:57 +01:00
Marc Kleine-Budde
01b2a0e5a0
can: mcp251xfd: mcp251xfd_probe(): remove known bad combinations from errata tabe
...
The published errata specify the maximum allowed SPI frequency to be
max 85% of (FSYSCLK/2). So there's no need to track known bad clock
settings in the driver. As the setup of known good values is a bit
tricky, keep them.
Link: https://lore.kernel.org/r/20210128104644.2982125-4-mkl@pengutronix.de
Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de >
2021-01-29 09:31:57 +01:00
Marc Kleine-Budde
b98e68e91c
can: mcp251xfd: mcp251xfd_probe(): sort errata table alphabetically, fix indention
...
This patch sorts the errata table alphabetically and fixes the
indention.
Link: https://lore.kernel.org/r/20210128104644.2982125-3-mkl@pengutronix.de
Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de >
2021-01-29 09:31:56 +01:00
Marc Kleine-Budde
28eb119c04
can: mcp251xfd: mcp251xfd_probe(): fix errata reference
...
This patch fixes the reference to the errata for both the mcp2517fd
and the mcp2518fd.
Fixes: f5b84dedf7 ("can: mcp25xxfd: mcp25xxfd_probe(): add SPI clk limit related errata information")
Link: https://lore.kernel.org/r/20210128104644.2982125-2-mkl@pengutronix.de
Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de >
2021-01-29 09:31:56 +01:00
Marc Kleine-Budde
4162e18e94
can: mcp251xfd: add BQL support
...
This patch adds BQL support to the driver. Support for netdev_xmit_more() will
be added in a separate patch series.
Link: https://lore.kernel.org/r/20210114153448.1506901-7-mkl@pengutronix.de
Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de >
2021-01-27 10:01:47 +01:00
Marc Kleine-Budde
86f1e3b1dd
can: mcp251xfd: add len8_dlc support
...
This patch adds support for the Classical CAN raw DLC functionality to send and
receive DLC values from 9 ... 15 to the mcp251xfd driver.
Link: https://lore.kernel.org/r/20210114153448.1506901-6-mkl@pengutronix.de
Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de >
2021-01-27 10:01:47 +01:00
Marc Kleine-Budde
a68eda2036
can: mcp251xfd: mcp251xfd_tx_obj_from_skb(): don't copy data for RTR CAN frames in TX-path
...
In Classical CAN there are RTR frames. RTR frames have the RTR bit set, may
have a dlc != 0, but contain no data.
This patch optimizes the TX-path to not copy any data for RTR frames.
Link: https://lore.kernel.org/r/20210114153448.1506901-5-mkl@pengutronix.de
Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de >
2021-01-27 10:01:47 +01:00
Marc Kleine-Budde
e20b85c7eb
can: mcp251xfd: mcp251xfd_hw_rx_obj_to_skb(): don't copy data for RTR CAN frames in RX-path
...
In Classical CAN there are RTR frames. RTR frames have the RTR bit set, may
have a dlc != 0, but contain no data.
This patch changes the RX-path to no copy any data for RTR frames, so that the
data field in the CAN frame stays 0x0.
Link: https://lore.kernel.org/r/20210114153448.1506901-4-mkl@pengutronix.de
Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de >
2021-01-27 10:01:47 +01:00
Marc Kleine-Budde
561aa5b4ce
can: mcp251xfd: mcp251xfd_tx_obj_from_skb(): clean up padding of CAN-FD frames
...
CAN-FD frames have only specific frame length (0, 1, 2, 3, 4, 5, 6, 7, 8, 12,
16, 20, 24, 32, 48, 64). A CAN-FD frame provided by user space might not cover
the whole CAN-FD frame. To avoid sending garbage over the CAN bus the driver
pads the CAN frame with 0x0 (if MCP251XFD_SANITIZE_CAN is activated).
This patch cleans up the pad len calculation. Rounding to full u32 brings no
benefit, in case of CRC transfers, the hw_tx_obj->data is not aligned to u32
anyway.
Link: https://lore.kernel.org/r/20210114153448.1506901-3-mkl@pengutronix.de
Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de >
2021-01-27 10:01:47 +01:00
Marc Kleine-Budde
9845b8f530
can: mcp251xfd: mcp251xfd_start_xmit(): use mcp251xfd_get_tx_free() to check TX is is full
...
This patch replaces an open coded check if the TX ring is full by a check if
mcp251xfd_get_tx_free() returns 0.
Link: https://lore.kernel.org/r/20210114153448.1506901-2-mkl@pengutronix.de
Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de >
2021-01-27 10:01:46 +01:00
Su Yanjun
cdc4c698e4
can: mcp251xfd: replace sizeof(u32) with val_bytes in regmap
...
The sizeof(u32) is hardcoded. It's better to use the config value from the
regmap.
It increases the size of target object, but it's flexible when new mcp chip
need other val_bytes.
Link: https://lore.kernel.org/r/20210122081334.213957-1-suyanjun218@gmail.com
Signed-off-by: Su Yanjun <suyanjun218@gmail.com >
Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de >
2021-01-27 10:01:46 +01:00
Jakub Kicinski
1d9f03c0a1
Merge git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net
...
Signed-off-by: Jakub Kicinski <kuba@kernel.org >
2021-01-14 18:34:50 -08:00
Marc Kleine-Budde
99842c9685
can: dev: can_rx_offload_get_echo_skb(): extend to return can frame length
...
In order to implement byte queue limits (bql) in CAN drivers, the length of the
CAN frame needs to be passed into the networking stack after queueing and after
transmission completion.
To avoid to calculate this length twice, extend can_rx_offload_get_echo_skb()
to return that value. Convert all users of this function, too.
Reviewed-by: Vincent Mailhol <mailhol.vincent@wanadoo.fr >
Link: https://lore.kernel.org/r/20210111141930.693847-15-mkl@pengutronix.de
Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de >
2021-01-14 08:43:43 +01:00
Marc Kleine-Budde
9420e1d495
can: dev: can_get_echo_skb(): extend to return can frame length
...
In order to implement byte queue limits (bql) in CAN drivers, the length of the
CAN frame needs to be passed into the networking stack after queueing and after
transmission completion.
To avoid to calculate this length twice, extend can_get_echo_skb() to return
that value. Convert all users of this function, too.
Reviewed-by: Vincent Mailhol <mailhol.vincent@wanadoo.fr >
Link: https://lore.kernel.org/r/20210111141930.693847-14-mkl@pengutronix.de
Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de >
2021-01-14 08:43:43 +01:00
Vincent Mailhol
1dcb6e57db
can: dev: can_put_echo_skb(): extend to handle frame_len
...
Add a frame_len argument to can_put_echo_skb() which is used to save length of
the CAN frame into field frame_len of struct can_skb_priv so that it can be
later used after transmission completion. Convert all users of this function,
too.
Drivers which implement BQL call can_put_echo_skb() with the output of
can_skb_get_frame_len(skb) and drivers which do not simply pass zero as an
input (in the same way that NULL would be given to can_get_echo_skb()). This
way, we have a nice symmetry between the two echo functions.
Link: https://lore.kernel.org/r/20210111061335.39983-1-mailhol.vincent@wanadoo.fr
Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de >
Reviewed-by: Vincent Mailhol <mailhol.vincent@wanadoo.fr >
Link: https://lore.kernel.org/r/20210111141930.693847-13-mkl@pengutronix.de
Signed-off-by: Vincent Mailhol <mailhol.vincent@wanadoo.fr >
2021-01-14 08:43:43 +01:00
Qinglang Miao
ca4c6ebeeb
can: mcp251xfd: mcp251xfd_handle_rxif_one(): fix wrong NULL pointer check
...
If alloc_canfd_skb() returns NULL, 'cfg' is an uninitialized variable, so we
should check 'skb' rather than 'cfd' after calling alloc_canfd_skb(priv->ndev,
&cfd).
Fixes: 55e5b97f00 ("can: mcp25xxfd: add driver for Microchip MCP25xxFD SPI CAN")
Signed-off-by: Qinglang Miao <miaoqinglang@huawei.com >
Reviewed-by: Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org >
Link: https://lore.kernel.org/r/20210113073100.79552-1-miaoqinglang@huawei.com
Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de >
2021-01-13 22:16:16 +01:00
Marc Kleine-Budde
2fbb397f58
can: mcp251xfd: mcp251xfd_handle_rxif_ring(): first increment RX tail pointer in HW, then in driver
...
The previous patch fixes a TEF vs. TX race condition, by first updating the TEF
tail pointer in hardware, and then updating the driver internal pointer.
The same pattern exists in the RX-path, too. This should be no problem, as the
driver accesses the RX-FIFO from the interrupt handler only, thus the access is
properly serialized. Fix the order here, too, so that the TEF- and RX-path look
similar.
Fixes: 1f652bb6ba ("can: mcp25xxfd: rx-path: reduce number of SPI core requests to set UINC bit")
Link: https://lore.kernel.org/r/20210105214138.3150886-3-mkl@pengutronix.de
Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de >
2021-01-07 11:02:09 +01:00
Marc Kleine-Budde
6086f02a18
can: mcp251xfd: mcp251xfd_handle_tefif(): fix TEF vs. TX race condition
...
The mcp251xfd driver uses a TX FIFO for sending CAN frames and a TX Event FIFO
(TEF) for completed TX-requests.
The TEF event handling in the mcp251xfd_handle_tefif() function has a race
condition. It first increments the tx-ring's tail counter to signal that
there's room in the TX and TEF FIFO, then it increments the TEF FIFO in
hardware.
A running mcp251xfd_start_xmit() on a different CPU might not stop the txqueue
(as the tx-ring still shows free space). The next mcp251xfd_start_xmit() will
push a message into the chip and the TX complete event might overflow the TEF
FIFO.
This patch changes the order to fix the problem.
Fixes: 68c0c1c7f9 ("can: mcp251xfd: tef-path: reduce number of SPI core requests to set UINC bit")
Link: https://lore.kernel.org/r/20210105214138.3150886-2-mkl@pengutronix.de
Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de >
2021-01-07 11:02:09 +01:00
Manivannan Sadhasivam
ee42bedc85
can: mcp251xfd: Add support for internal loopback mode
...
MCP251xFD supports internal loopback mode which can be used to verify CAN
functionality in the absence of a real CAN device.
Link: https://lore.kernel.org/r/20201201054019.11012-1-manivannan.sadhasivam@linaro.org
Signed-off-by: Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org >
[mkl: mcp251xfd_get_normal_mode(): move CAN_CTRLMODE_LOOPBACK check to front]
Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de >
2020-12-10 10:40:10 +01:00
Marc Kleine-Budde
68c0c1c7f9
can: mcp251xfd: tef-path: reduce number of SPI core requests to set UINC bit
...
Reduce the number of separate SPI core requests when setting the UINC bit in
the TEF FIFO, and instead batch them up into a single SPI core request.
Link: https://lore.kernel.org/r/20201126132144.351154-6-mkl@pengutronix.de
Tested-by: Thomas Kopp <thomas.kopp@microchip.com >
Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de >
2020-11-29 21:19:12 +01:00
Marc Kleine-Budde
63e70488b4
can: mcp251xfd: move struct mcp251xfd_tef_ring definition
...
This patch moves the struct mcp251xfd_tef_ring upwards, so that the union
mcp251xfd_write_reg_buf and struct spi_transfer can be made members of it.
Link: https://lore.kernel.org/r/20201126132144.351154-5-mkl@pengutronix.de
Tested-by: Thomas Kopp <thomas.kopp@microchip.com >
Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de >
2020-11-29 21:19:12 +01:00
Marc Kleine-Budde
dada6a6c7d
can: mcp251xfd: struct mcp251xfd_priv::tef to array of length 1
...
This patch converts the struct mcp251xfd_tef_ring member within the struct
mcp251xfd_priv into an array of length one. This way all rings (tef, tx and rx)
can be accessed in the same way.
Link: https://lore.kernel.org/r/20201126132144.351154-4-mkl@pengutronix.de
Tested-by: Thomas Kopp <thomas.kopp@microchip.com >
Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de >
2020-11-29 21:19:12 +01:00
Ursula Maplehurst
1f652bb6ba
can: mcp25xxfd: rx-path: reduce number of SPI core requests to set UINC bit
...
Reduce the number of separate SPI core requests when setting the UINC bit in
the RX FIFO, and instead batch them up into a single SPI core request.
Link: https://github.com/marckleinebudde/linux/issues/4
Link: https://lore.kernel.org/r/20201126132144.351154-3-mkl@pengutronix.de
Tested-by: Thomas Kopp <thomas.kopp@microchip.com >
Signed-off-by: Ursula Maplehurst <ursula@kangatronix.co.uk >
Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de >
2020-11-29 21:19:12 +01:00
Marc Kleine-Budde
4843ad9b61
can: mcp251xfd: mcp25xxfd_ring_alloc(): add define instead open coding the maximum number of RX objects
...
This patch add a define for the maximum number of RX objects instead of open
coding it.
Link: https://lore.kernel.org/r/20201126132144.351154-2-mkl@pengutronix.de
Tested-by: Thomas Kopp <thomas.kopp@microchip.com >
Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de >
2020-11-29 21:19:12 +01:00
Jakub Kicinski
5c39f26e67
Merge git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net
...
Trivial conflict in CAN, keep the net-next + the byteswap wrapper.
Conflicts:
drivers/net/can/usb/gs_usb.c
Signed-off-by: Jakub Kicinski <kuba@kernel.org >
2020-11-27 18:25:27 -08:00
Marc Kleine-Budde
1a1c436bad
can: mcp251xfd: mcp251xfd_probe(): bail out if no IRQ was given
...
This patch add a check to the mcp251xfd_probe() function to bail out and give
the user a proper error message if no IRQ is specified. Otherwise the driver
will probe just fine but ifup will fail with a meaningless "RTNETLINK answers:
Invalid argument" error message.
Link: https://lore.kernel.org/r/20201123113522.3820052-1-mkl@pengutronix.de
Reported-by: Niels Petter <petter@ka-long.de >
Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de >
2020-11-26 11:50:32 +01:00
Kaixu Xia
275f6010b6
can: mcp251xfd: remove useless code in mcp251xfd_chip_softreset
...
It would directly return if the variable err equals to 0 or other errors.
Only when the err equals to -ETIMEDOUT it can reach the 'if (err)'
statement, so the 'if (err)' and last 'return -ETIMEDOUT' statements are
useless. Romove them.
Reported-by: Tosk Robot <tencent_os_robot@tencent.com >
Signed-off-by: Kaixu Xia <kaixuxia@tencent.com >
Link: https://lore.kernel.org/r/1605605352-25298-1-git-send-email-kaixuxia@tencent.com
Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de >
2020-11-20 12:06:47 +01:00
Oliver Hartkopp
3ab4ce0d6f
can: rename CAN FD related can_len2dlc and can_dlc2len helpers
...
The helper functions can_len2dlc and can_dlc2len are only relevant for
CAN FD data length code (DLC) conversion.
To fit the introduced can_cc_dlc2len for Classical CAN we rename:
can_dlc2len -> can_fd_dlc2len to get the payload length from the DLC
can_len2dlc -> can_fd_len2dlc to get the DLC from the payload length
Suggested-by: Vincent Mailhol <mailhol.vincent@wanadoo.fr >
Signed-off-by: Oliver Hartkopp <socketcan@hartkopp.net >
Link: https://lore.kernel.org/r/20201110101852.1973-6-socketcan@hartkopp.net
Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de >
2020-11-20 12:05:14 +01:00
Oliver Hartkopp
c7b7496779
can: replace can_dlc as variable/element for payload length
...
The naming of can_dlc as element of struct can_frame and also as variable
name is misleading as it claims to be a 'data length CODE' but in reality
it always was a plain data length.
With the indroduction of a new 'len' element in struct can_frame we can now
remove can_dlc as name and make clear which of the former uses was a plain
length (-> 'len') or a data length code (-> 'dlc') value.
Signed-off-by: Oliver Hartkopp <socketcan@hartkopp.net >
Link: https://lore.kernel.org/r/20201120100444.3199-1-socketcan@hartkopp.net
[mkl: gs_usb: keep struct gs_host_frame::can_dlc as is]
Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de >
2020-11-20 12:04:12 +01:00
Oliver Hartkopp
cd1124e76d
can: remove obsolete get_canfd_dlc() macro
...
The macro was always used together with can_dlc2len() which sanitizes the
given dlc value on its own.
Signed-off-by: Oliver Hartkopp <socketcan@hartkopp.net >
Link: https://lore.kernel.org/r/20201110101852.1973-4-socketcan@hartkopp.net
Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de >
2020-11-20 09:43:30 +01:00
Oliver Hartkopp
69d98969a0
can: rename get_can_dlc() macro with can_cc_dlc2len()
...
The get_can_dlc() macro is used to ensure the payload length information of
the Classical CAN frame to be max 8 bytes (the CAN_MAX_DLEN).
Rename the macro and use the correct constant in preparation of the len/dlc
cleanup for Classical CAN frames.
Signed-off-by: Oliver Hartkopp <socketcan@hartkopp.net >
Link: https://lore.kernel.org/r/20201110101852.1973-3-socketcan@hartkopp.net
Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de >
2020-11-20 09:43:29 +01:00
Tom Rix
78db1aa8b5
can: mcp251xfd: remove unneeded break
...
A break is not needed if it is preceded by a return.
Signed-off-by: Tom Rix <trix@redhat.com >
Link: https://lore.kernel.org/r/20201019172412.31143-1-trix@redhat.com
Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de >
2020-11-03 22:30:33 +01:00
kernel test robot
da623840d8
can: mcp251xfd: mcp251xfd_regmap_nocrc_read(): fix semicolon.cocci warnings
...
drivers/net/can/spi/mcp251xfd/mcp251xfd-regmap.c:176:2-3: Unneeded semicolon
Remove unneeded semicolon.
Generated by: scripts/coccinelle/misc/semicolon.cocci
Fixes: 875347fe57 ("can: mcp25xxfd: add regmap infrastructure")
Signed-off-by: kernel test robot <lkp@intel.com >
Link: https://lore.kernel.org/r/20201019120805.GA63693@ae4257e0ab22
Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de >
2020-11-03 22:30:33 +01:00
Marc Kleine-Budde
b4728920ae
can: mcp251xfd: mcp251xfd_regmap_crc_read(): increase severity of CRC read error messages
...
During debugging it turned out that some people have setups where the SPI
communication is more prone to CRC errors.
Increase the severity of both the transfer retry and transfer failure message
to give users feedback without the need to recompile the driver with debug
enabled.
Cc: Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org >
Cc: Thomas Kopp <thomas.kopp@microchip.com >
Link: http://lore.kernel.org/r/20201019190524.1285319-15-mkl@pengutronix.de
Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de >
2020-11-03 22:30:33 +01:00
Marc Kleine-Budde
eb79a267c9
can: mcp251xfd: rename all remaining occurrence to mcp251xfd
...
In [1] Geert noted that the autodetect compatible for the mcp25xxfd driver,
which is "microchip,mcp25xxfd" might be too generic and overlap with upcoming,
but incompatible chips.
In the previous patch the autodetect DT compatbile has been renamed to
"microchip,mcp251xfd", this patch changes all non user facing occurrence of
"mcp25xxfd" to "mcp251xfd" and "MCP25XXFD" to "MCP251XFD".
[1] http://lore.kernel.org/r/CAMuHMdVkwGjr6dJuMyhQNqFoJqbh6Ec5V2b5LenCshwpM2SDsQ@mail.gmail.com
Link: https://lore.kernel.org/r/20200930091424.792165-10-mkl@pengutronix.de
Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de >
2020-09-30 21:55:28 +02:00
Marc Kleine-Budde
f4f77366f2
can: mcp251xfd: rename all user facing strings to mcp251xfd
...
In [1] Geert noted that the autodetect compatible for the mcp25xxfd driver,
which is "microchip,mcp25xxfd" might be too generic and overlap with upcoming,
but incompatible chips.
In the previous patch the autodetect DT compatbile has been renamed to
"microchip,mcp251xfd", this patch changes all user facing strings from
"mcp25xxfd" to "mcp251xfd" and "MCP25XXFD" to "MCP251XFD", including:
- kconfig symbols
- name of kernel module
- DT and SPI compatible
[1] http://lore.kernel.org/r/CAMuHMdVkwGjr6dJuMyhQNqFoJqbh6Ec5V2b5LenCshwpM2SDsQ@mail.gmail.com
Link: https://lore.kernel.org/r/20200930091424.792165-9-mkl@pengutronix.de
Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de >
2020-09-30 21:55:04 +02:00
Marc Kleine-Budde
1f0e21a0c0
can: mcp251xfd: rename driver files and subdir to mcp251xfd
...
In [1] Geert noted that the autodetect compatible for the mcp25xxfd driver,
which is "microchip,mcp25xxfd" might be too generic and overlap with upcoming,
but incompatible chips.
In the previous patch the autodetect DT compatbile has been renamed to
"microchip,mcp251xfd", this patch changes the name of the driver subdir and the
individual files accordinly.
[1] http://lore.kernel.org/r/CAMuHMdVkwGjr6dJuMyhQNqFoJqbh6Ec5V2b5LenCshwpM2SDsQ@mail.gmail.com
Link: https://lore.kernel.org/r/20200930091424.792165-8-mkl@pengutronix.de
Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de >
2020-09-30 21:54:30 +02:00
Thomas Kopp
dba1572c23
can: mcp25xxfd: narrow down wildcards in device tree bindings to "microchip,mcp251xfd"
...
The wildcard should be narrowed down to prevent existing and future devices
that are not compatible from matching. It is very unlikely that incompatible
devices will be released that do not match the wildcard.
Discussion Reference: https://lore.kernel.org/r/CAMuHMdVkwGjr6dJuMyhQNqFoJqbh6Ec5V2b5LenCshwpM2SDsQ@mail.gmail.com
Reported-by: Geert Uytterhoeven <geert@linux-m68k.org >
Signed-off-by: Thomas Kopp <thomas.kopp@microchip.com >
Link: https://lore.kernel.org/r/20200930091423.755-1-thomas.kopp@microchip.com
Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de >
2020-09-30 11:23:53 +02:00
Marc Kleine-Budde
727fba74b5
can: mcp25xxfd: mcp25xxfd_irq(): add missing initialization of variable set_normal mode
...
This patch fixes the following warning:
drivers/net/can/spi/mcp25xxfd/mcp25xxfd-core.c:2155 mcp25xxfd_irq()
error: uninitialized symbol 'set_normal_mode'.
by adding the missing initialization.
Reported-by: Dan Carpenter <dan.carpenter@oracle.com >
Reviewed-by: Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org >
Fixes: 55e5b97f00 ("can: mcp25xxfd: add driver for Microchip MCP25xxFD SPI CAN")
Link: https://lore.kernel.org/r/20200923114726.2704426-1-mkl@pengutronix.de
Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de >
2020-09-30 10:34:30 +02:00
Dan Carpenter
8cffc6fe65
can: mcp25xxfd: mcp25xxfd_ring_free(): fix memory leak during cleanup
...
This loop doesn't free the first element of the array. The "i > 0" has
to be changed to "i >= 0".
Fixes: 55e5b97f00 ("can: mcp25xxfd: add driver for Microchip MCP25xxFD SPI CAN")
Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com >
Link: https://lore.kernel.org/r/20200923112752.GA1473821@mwanda
Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de >
2020-09-30 10:34:30 +02:00
Thomas Kopp
f5b84dedf7
can: mcp25xxfd: mcp25xxfd_probe(): add SPI clk limit related errata information
...
This patch adds a reference to the recent released MCP2517FD and MCP2518FD
errata sheets and paste the explanation.
The driver already implements the proposed fix.
Signed-off-by: Thomas Kopp <thomas.kopp@microchip.com >
Link: https://lore.kernel.org/r/20200925065606.358-1-thomas.kopp@microchip.com
[mkl: split into two patches, adjust subject and commit message]
Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de >
2020-09-30 10:34:30 +02:00
Thomas Kopp
788b83ea2c
can: mcp25xxfd: mcp25xxfd_handle_eccif(): add ECC related errata and update log messages
...
This patch adds a reference to the recent released MCP2517FD and MCP2518FD
errata sheets and paste the explanation.
The single error correction does not always work, so always indicate that a
single error occurred. If the location of the ECC error is outside of the
TX-RAM always use netdev_notice() to log the problem. For ECC errors in the
TX-RAM, there is a recovery procedure.
Signed-off-by: Thomas Kopp <thomas.kopp@microchip.com >
Link: https://lore.kernel.org/r/20200925065606.358-1-thomas.kopp@microchip.com
[mkl: split into two patches, adjust subject and commit message]
Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de >
2020-09-30 10:34:30 +02:00
Kurt Van Dijck
33ea42f69f
can: mcp25xxfd: add listen-only mode
...
This commit enables listen-only mode, which works internally like CANFD mode.
Signed-off-by: Kurt Van Dijck <dev.kurt@vandijck-laurijssen.be >
Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de >
Link: https://lore.kernel.org/r/20200918172536.2074504-5-mkl@pengutronix.de
2020-09-21 10:13:20 +02:00
Marc Kleine-Budde
55e5b97f00
can: mcp25xxfd: add driver for Microchip MCP25xxFD SPI CAN
...
This patch adds support for the Microchip MCP25xxFD SPI CAN controller family.
Tested-by: Kurt Van Dijck <dev.kurt@vandijck-laurijssen.be >
Tested-by: Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org >
Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de >
Link: https://lore.kernel.org/r/20200918172536.2074504-4-mkl@pengutronix.de
2020-09-21 10:13:20 +02:00
Marc Kleine-Budde
875347fe57
can: mcp25xxfd: add regmap infrastructure
...
This patch adds the regmap infrastructure for the Microchip MCP25xxFD SPI CAN
controller family. The actual driver is added in the next commit.
Tested-by: Kurt Van Dijck <dev.kurt@vandijck-laurijssen.be >
Tested-by: Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org >
Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de >
Link: https://lore.kernel.org/r/20200918172536.2074504-3-mkl@pengutronix.de
2020-09-21 10:13:20 +02:00
Tim Harvey
e0e25001d0
can: mcp251x: add support for half duplex controllers
...
Some SPI host controllers do not support full-duplex SPI and are
marked as such via the SPI_CONTROLLER_HALF_DUPLEX controller flag.
For such controllers use half duplex transactions but retain full
duplex transactions for the controllers that can handle those.
Signed-off-by: Tim Harvey <tharvey@gateworks.com >
Link: https://lore.kernel.org/r/1595516275-1179-1-git-send-email-tharvey@gateworks.com
Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de >
2020-09-21 10:13:19 +02:00
Andy Shevchenko
74fa565b63
can: mcp251x: Use readx_poll_timeout() helper
...
We may use special helper macro to poll IO till condition or timeout occurs.
Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com >
Link: https://lore.kernel.org/r/20200217161038.25009-1-andriy.shevchenko@linux.intel.com
Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de >
2020-09-21 10:13:19 +02:00