Merge tag 'spi-v4.4' of git://git.kernel.org/pub/scm/linux/kernel/git/broonie/spi
Pull spi updates from Mark Brown: "Quite a lot of activity in SPI this cycle, almost all of it in drivers with a few minor improvements and tweaks in the core. - Updates to pxa2xx to support Intel Broxton and multiple chip selects. - Support for big endian in the bcm63xx driver. - Multiple slave support for the mt8173 - New driver for the auxiliary SPI controller in bcm2835 SoCs. - Support for Layerscale SoCs in the Freescale DSPI driver" * tag 'spi-v4.4' of git://git.kernel.org/pub/scm/linux/kernel/git/broonie/spi: (87 commits) spi: pxa2xx: Rework self-initiated platform data creation for non-ACPI spi: pxa2xx: Add support for Intel Broxton spi: pxa2xx: Detect number of enabled Intel LPSS SPI chip select signals spi: pxa2xx: Add output control for multiple Intel LPSS chip selects spi: pxa2xx: Use LPSS prefix for defines that are Intel LPSS specific spi: Add DSPI support for layerscape family spi: ti-qspi: improve ->remove() callback spi/spi-xilinx: Fix race condition on last word read spi: Drop owner assignment from spi_drivers spi: Add THIS_MODULE to spi_driver in SPI core spi: Setup the master controller driver before setting the chipselect spi: dw: replace magic constant by DW_SPI_DR spi: mediatek: mt8173 spi multiple devices support spi: mediatek: handle controller_data in mtk_spi_setup spi: mediatek: remove mtk_spi_config spi: mediatek: Update document devicetree bindings to support multiple devices spi: fix kernel-doc warnings about missing return desc in spi.c spi: fix kernel-doc warnings about missing return desc in spi.h spi: pxa2xx: Align a few defines spi: pxa2xx: Save other reg_cs_ctrl bits when configuring chip select ...
This commit is contained in:
@@ -198,6 +198,7 @@ enum pxa_ssp_type {
|
||||
LPSS_LPT_SSP, /* Keep LPSS types sorted with lpss_platforms[] */
|
||||
LPSS_BYT_SSP,
|
||||
LPSS_SPT_SSP,
|
||||
LPSS_BXT_SSP,
|
||||
};
|
||||
|
||||
struct ssp_device {
|
||||
|
@@ -51,6 +51,8 @@ extern struct bus_type spi_bus_type;
|
||||
* @bytes_tx: number of bytes sent to device
|
||||
* @bytes_rx: number of bytes received from device
|
||||
*
|
||||
* @transfer_bytes_histo:
|
||||
* transfer bytes histogramm
|
||||
*/
|
||||
struct spi_statistics {
|
||||
spinlock_t lock; /* lock for the whole structure */
|
||||
@@ -68,6 +70,8 @@ struct spi_statistics {
|
||||
unsigned long long bytes_rx;
|
||||
unsigned long long bytes_tx;
|
||||
|
||||
#define SPI_STATISTICS_HISTO_SIZE 17
|
||||
unsigned long transfer_bytes_histo[SPI_STATISTICS_HISTO_SIZE];
|
||||
};
|
||||
|
||||
void spi_statistics_add_transfer_stats(struct spi_statistics *stats,
|
||||
@@ -250,7 +254,7 @@ static inline struct spi_driver *to_spi_driver(struct device_driver *drv)
|
||||
return drv ? container_of(drv, struct spi_driver, driver) : NULL;
|
||||
}
|
||||
|
||||
extern int spi_register_driver(struct spi_driver *sdrv);
|
||||
extern int __spi_register_driver(struct module *owner, struct spi_driver *sdrv);
|
||||
|
||||
/**
|
||||
* spi_unregister_driver - reverse effect of spi_register_driver
|
||||
@@ -263,6 +267,10 @@ static inline void spi_unregister_driver(struct spi_driver *sdrv)
|
||||
driver_unregister(&sdrv->driver);
|
||||
}
|
||||
|
||||
/* use a define to avoid include chaining to get THIS_MODULE */
|
||||
#define spi_register_driver(driver) \
|
||||
__spi_register_driver(THIS_MODULE, driver)
|
||||
|
||||
/**
|
||||
* module_spi_driver() - Helper macro for registering a SPI driver
|
||||
* @__spi_driver: spi_driver struct
|
||||
@@ -843,8 +851,10 @@ extern int spi_bus_unlock(struct spi_master *master);
|
||||
* @len: data buffer size
|
||||
* Context: can sleep
|
||||
*
|
||||
* This writes the buffer and returns zero or a negative error code.
|
||||
* This function writes the buffer @buf.
|
||||
* Callable only from contexts that can sleep.
|
||||
*
|
||||
* Return: zero on success, else a negative error code.
|
||||
*/
|
||||
static inline int
|
||||
spi_write(struct spi_device *spi, const void *buf, size_t len)
|
||||
@@ -867,8 +877,10 @@ spi_write(struct spi_device *spi, const void *buf, size_t len)
|
||||
* @len: data buffer size
|
||||
* Context: can sleep
|
||||
*
|
||||
* This reads the buffer and returns zero or a negative error code.
|
||||
* This function reads the buffer @buf.
|
||||
* Callable only from contexts that can sleep.
|
||||
*
|
||||
* Return: zero on success, else a negative error code.
|
||||
*/
|
||||
static inline int
|
||||
spi_read(struct spi_device *spi, void *buf, size_t len)
|
||||
@@ -895,7 +907,7 @@ spi_read(struct spi_device *spi, void *buf, size_t len)
|
||||
*
|
||||
* For more specific semantics see spi_sync().
|
||||
*
|
||||
* It returns zero on success, else a negative error code.
|
||||
* Return: Return: zero on success, else a negative error code.
|
||||
*/
|
||||
static inline int
|
||||
spi_sync_transfer(struct spi_device *spi, struct spi_transfer *xfers,
|
||||
@@ -919,9 +931,10 @@ extern int spi_write_then_read(struct spi_device *spi,
|
||||
* @cmd: command to be written before data is read back
|
||||
* Context: can sleep
|
||||
*
|
||||
* This returns the (unsigned) eight bit number returned by the
|
||||
* device, or else a negative error code. Callable only from
|
||||
* contexts that can sleep.
|
||||
* Callable only from contexts that can sleep.
|
||||
*
|
||||
* Return: the (unsigned) eight bit number returned by the
|
||||
* device, or else a negative error code.
|
||||
*/
|
||||
static inline ssize_t spi_w8r8(struct spi_device *spi, u8 cmd)
|
||||
{
|
||||
@@ -940,12 +953,13 @@ static inline ssize_t spi_w8r8(struct spi_device *spi, u8 cmd)
|
||||
* @cmd: command to be written before data is read back
|
||||
* Context: can sleep
|
||||
*
|
||||
* This returns the (unsigned) sixteen bit number returned by the
|
||||
* device, or else a negative error code. Callable only from
|
||||
* contexts that can sleep.
|
||||
*
|
||||
* The number is returned in wire-order, which is at least sometimes
|
||||
* big-endian.
|
||||
*
|
||||
* Callable only from contexts that can sleep.
|
||||
*
|
||||
* Return: the (unsigned) sixteen bit number returned by the
|
||||
* device, or else a negative error code.
|
||||
*/
|
||||
static inline ssize_t spi_w8r16(struct spi_device *spi, u8 cmd)
|
||||
{
|
||||
@@ -964,13 +978,13 @@ static inline ssize_t spi_w8r16(struct spi_device *spi, u8 cmd)
|
||||
* @cmd: command to be written before data is read back
|
||||
* Context: can sleep
|
||||
*
|
||||
* This returns the (unsigned) sixteen bit number returned by the device in cpu
|
||||
* endianness, or else a negative error code. Callable only from contexts that
|
||||
* can sleep.
|
||||
*
|
||||
* This function is similar to spi_w8r16, with the exception that it will
|
||||
* convert the read 16 bit data word from big-endian to native endianness.
|
||||
*
|
||||
* Callable only from contexts that can sleep.
|
||||
*
|
||||
* Return: the (unsigned) sixteen bit number returned by the device in cpu
|
||||
* endianness, or else a negative error code.
|
||||
*/
|
||||
static inline ssize_t spi_w8r16be(struct spi_device *spi, u8 cmd)
|
||||
|
||||
|
@@ -4,7 +4,7 @@
|
||||
#include <linux/workqueue.h>
|
||||
|
||||
struct spi_bitbang {
|
||||
spinlock_t lock;
|
||||
struct mutex lock;
|
||||
u8 busy;
|
||||
u8 use_dma;
|
||||
u8 flags; /* extra spi->mode support */
|
||||
|
Reference in New Issue
Block a user