Marc Kleine-Budde
e59986de5f
can: tcan4x5x: regmap: fix max register value
...
The MRAM of the tcan4x5x has a size of 2K and starts at 0x8000. There
are no further registers in the tcan4x5x making 0x87fc the biggest
addressable register.
This patch fixes the max register value of the regmap config from
0x8ffc to 0x87fc.
Fixes: 6e1caaf8ed ("can: tcan4x5x: fix max register value")
Link: https://lore.kernel.org/all/20220119064011.2943292-1-mkl@pengutronix.de
Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de >
2022-01-24 18:27:43 +01:00
Marc Kleine-Budde
0460ecaeba
can: tcan4x5x: add support for half-duplex controllers
...
This patch adds back support for half-duplex controllers, which was removed in
the last patch.
Reviewed-by: Dan Murphy <dmurphy@ti.com >
Tested-by: Sean Nyekjaer <sean@geanix.com >
Link: https://lore.kernel.org/r/20201215231746.1132907-17-mkl@pengutronix.de
Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de >
2021-01-06 15:15:41 +01:00
Marc Kleine-Budde
1c5d0fc48b
can: tcan4x5x: rework SPI access
...
This patch reworks the SPI access and fixes several probems:
- tcan4x5x_regmap_gather_write(), tcan4x5x_regmap_read():
Do not place variable "addr" on stack and use it as buffer for SPI
transfer. Buffers for SPI transfers must be allocated from DMA save
memory.
- tcan4x5x_regmap_gather_write(), tcan4x5x_regmap_read():
Halfe number of SPI transfers by using a single buffer + memcpy().
This improves the performance, especially on SPI controllers, which
use interrupt based transfers.
- Use "8" bits per word, not "32". This makes it possible to use this
driver on SoCs like the Raspberry Pi, which SPI host controller
drivers only support 8 bits per word.
Note: this breaks half duplex only controllers. Support for them will be
re-added in the next patch.
Reviewed-by: Dan Murphy <dmurphy@ti.com >
Tested-by: Sean Nyekjaer <sean@geanix.com >
Link: https://lore.kernel.org/r/20201215231746.1132907-16-mkl@pengutronix.de
Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de >
2021-01-06 15:15:41 +01:00
Marc Kleine-Budde
1e81d5258d
can: tcan4x5x: add {wr,rd}_table
...
The memory space of the chip is not fully populated, so add a regmap range
table to document this.
Reviewed-by: Dan Murphy <dmurphy@ti.com >
Tested-by: Sean Nyekjaer <sean@geanix.com >
Link: https://lore.kernel.org/r/20201215231746.1132907-15-mkl@pengutronix.de
Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de >
2021-01-06 15:15:40 +01:00
Marc Kleine-Budde
5584114b35
can: tcan4x5x: add max_raw_{read,write} of 256
...
The tcan4x5x chip support bulk read/write, but as the length field is only 8
bits wide, the maximum is 256. A length of 0 is treated as 256.
Reviewed-by: Dan Murphy <dmurphy@ti.com >
Tested-by: Sean Nyekjaer <sean@geanix.com >
Link: https://lore.kernel.org/r/20201215231746.1132907-14-mkl@pengutronix.de
Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de >
2021-01-06 15:15:40 +01:00
Marc Kleine-Budde
aaf120c37c
can: tcan4x5x: tcan4x5x_regmap: set reg_stride to 4
...
This patch sets the regmap stide to 4, as the chip only supports access on 32
bit alligned access.
Reviewed-by: Dan Murphy <dmurphy@ti.com >
Tested-by: Sean Nyekjaer <sean@geanix.com >
Link: https://lore.kernel.org/r/20201215231746.1132907-13-mkl@pengutronix.de
Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de >
2021-01-06 15:15:40 +01:00
Marc Kleine-Budde
6e1caaf8ed
can: tcan4x5x: fix max register value
...
This patch fixes the max register value for the regmap.
Reviewed-by: Dan Murphy <dmurphy@ti.com >
Tested-by: Sean Nyekjaer <sean@geanix.com >
Link: https://lore.kernel.org/r/20201215231746.1132907-12-mkl@pengutronix.de
Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de >
2021-01-06 15:15:40 +01:00
Marc Kleine-Budde
bf722fdd3b
can: tcan4x5x: tcan4x5x_regmap_init(): use spi as context pointer
...
This patch replaces the context pointer of the regmap callback functions by a
pointer to the spi_device. This saves one level of indirection in the
callbacks.
Reviewed-by: Dan Murphy <dmurphy@ti.com >
Tested-by: Sean Nyekjaer <sean@geanix.com >
Link: https://lore.kernel.org/r/20201215231746.1132907-11-mkl@pengutronix.de
Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de >
2021-01-06 15:15:39 +01:00
Marc Kleine-Budde
0c05345210
can: tcan4x5x: tcan4x5x_regmap_write(): remove not needed casts and replace 4 by sizeof
...
This patch simplifies the tcan4x5x_regmap_write(0 function by removing not
needed casts and replaces hardcoded "4" by appropriate sizeof()s.
Reviewed-by: Dan Murphy <dmurphy@ti.com >
Tested-by: Sean Nyekjaer <sean@geanix.com >
Link: https://lore.kernel.org/r/20201215231746.1132907-10-mkl@pengutronix.de
Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de >
2021-01-06 15:15:39 +01:00
Marc Kleine-Budde
52be977b3a
can: tcan4x5x: rename regmap_spi_gather_write() -> tcan4x5x_regmap_gather_write()
...
This patch renames the regmap_spi_gather_write() function to
tcan4x5x_regmap_gather_write(). Now it has a "tcan4x5x_" prefix as all other
functions in this driver.
Reviewed-by: Dan Murphy <dmurphy@ti.com >
Tested-by: Sean Nyekjaer <sean@geanix.com >
Link: https://lore.kernel.org/r/20201215231746.1132907-9-mkl@pengutronix.de
Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de >
2021-01-06 15:15:39 +01:00
Marc Kleine-Budde
b9c30ef344
can: tcan4x5x: remove regmap async support
...
The driver doesn't use regmap async support, so remove the stubs.
Reviewed-by: Dan Murphy <dmurphy@ti.com >
Tested-by: Sean Nyekjaer <sean@geanix.com >
Link: https://lore.kernel.org/r/20201215231746.1132907-8-mkl@pengutronix.de
Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de >
2021-01-06 15:15:38 +01:00
Marc Kleine-Budde
5bcd6e10ad
can: tcan4x5x: tcan4x5x_bus: remove not needed read_flag_mask
...
With C99 initializers, all non mentioned members are initialzied to 0, so
remove not needed initialization of read_flag_mask.
Reviewed-by: Dan Murphy <dmurphy@ti.com >
Tested-by: Sean Nyekjaer <sean@geanix.com >
Link: https://lore.kernel.org/r/20201215231746.1132907-7-mkl@pengutronix.de
Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de >
2021-01-06 15:15:38 +01:00
Marc Kleine-Budde
1784aa1449
can: tcan4x5x: mark struct regmap_bus tcan4x5x_bus as constant
...
This patch marks the struct regmap_bus tcan4x5x_bus as constant.
Reviewed-by: Dan Murphy <dmurphy@ti.com >
Tested-by: Sean Nyekjaer <sean@geanix.com >
Link: https://lore.kernel.org/r/20201215231746.1132907-6-mkl@pengutronix.de
Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de >
2021-01-06 15:15:38 +01:00
Marc Kleine-Budde
67def4ef8b
can: tcan4x5x: move regmap code into seperate file
...
This patch moves the regmap code into a seperate file.
Reviewed-by: Dan Murphy <dmurphy@ti.com >
Tested-by: Sean Nyekjaer <sean@geanix.com >
Link: https://lore.kernel.org/r/20201215231746.1132907-5-mkl@pengutronix.de
Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de >
2021-01-06 15:15:37 +01:00