spi: Add a driver for the RPI RP2040 GPIO bridge

The Raspberry Pi RP2040 GPIO bridge is an I2C-attached device exposing
both a Tx-only SPI controller, and a GPIO controller.

Due to the relative difference in transfer rates between standard-mode
I2C and SPI, the GPIO bridge makes use of 12 MiB of non-volatile storage
to cache repeated transfers. This cache is arranged in ~8 KiB blocks and
is addressed by the MD5 digest of the data contained therein.

Optionally, this driver is able to take advantage of Raspberry Pi RP1
GPIOs to achieve faster than I2C data transfer rates.

Signed-off-by: Richard Oliver <richard.oliver@raspberrypi.com>
This commit is contained in:
Richard Oliver
2024-05-21 13:47:23 +01:00
committed by Dom Cobley
parent 1668711044
commit bba392935b
4 changed files with 1233 additions and 0 deletions

View File

@@ -19144,6 +19144,7 @@ RASPBERRY PI RP2040 GPIO BRIDGE DRIVER
M: Raspberry Pi Kernel Maintenance <kernel-list@raspberrypi.com> M: Raspberry Pi Kernel Maintenance <kernel-list@raspberrypi.com>
S: Maintained S: Maintained
F: Documentation/devicetree/bindings/spi/raspberrypi,rp2040-gpio-bridge.yaml F: Documentation/devicetree/bindings/spi/raspberrypi,rp2040-gpio-bridge.yaml
F: drivers/spi/spi-rp2040-gpio-bridge.c
RASPBERRY PI PISP BACK END RASPBERRY PI PISP BACK END
M: Jacopo Mondi <jacopo.mondi@ideasonboard.com> M: Jacopo Mondi <jacopo.mondi@ideasonboard.com>

View File

@@ -873,6 +873,18 @@ config SPI_RB4XX
help help
SPI controller driver for the Mikrotik RB4xx series boards. SPI controller driver for the Mikrotik RB4xx series boards.
config SPI_RP2040_GPIO_BRIDGE
tristate "Raspberry Pi RP2040 GPIO Bridge"
depends on I2C && SPI && GPIOLIB
help
Support for the Raspberry Pi RP2040 GPIO bridge.
This driver provides support for the Raspberry Pi PR2040 GPIO bridge.
It can be used as a GPIO expander and a Tx-only SPI master.
Optionally, this driver is able to take advantage of Raspberry Pi RP1
GPIOs to achieve faster than I2C data transfer rates.
config SPI_RPCIF config SPI_RPCIF
tristate "Renesas RPC-IF SPI driver" tristate "Renesas RPC-IF SPI driver"
depends on RENESAS_RPCIF depends on RENESAS_RPCIF

View File

@@ -119,6 +119,7 @@ obj-$(CONFIG_SPI_ROCKCHIP) += spi-rockchip.o
obj-$(CONFIG_SPI_ROCKCHIP_SFC) += spi-rockchip-sfc.o obj-$(CONFIG_SPI_ROCKCHIP_SFC) += spi-rockchip-sfc.o
obj-$(CONFIG_SPI_RB4XX) += spi-rb4xx.o obj-$(CONFIG_SPI_RB4XX) += spi-rb4xx.o
obj-$(CONFIG_MACH_REALTEK_RTL) += spi-realtek-rtl.o obj-$(CONFIG_MACH_REALTEK_RTL) += spi-realtek-rtl.o
obj-$(CONFIG_SPI_RP2040_GPIO_BRIDGE) += spi-rp2040-gpio-bridge.o
obj-$(CONFIG_SPI_RPCIF) += spi-rpc-if.o obj-$(CONFIG_SPI_RPCIF) += spi-rpc-if.o
obj-$(CONFIG_SPI_RSPI) += spi-rspi.o obj-$(CONFIG_SPI_RSPI) += spi-rspi.o
obj-$(CONFIG_SPI_RZV2M_CSI) += spi-rzv2m-csi.o obj-$(CONFIG_SPI_RZV2M_CSI) += spi-rzv2m-csi.o

File diff suppressed because it is too large Load Diff