mirror of
https://git.proxmox.com/git/mirror_ubuntu-kernels.git
synced 2025-11-08 17:19:26 +00:00
In commit 8caab75fd2 ("spi: Generalize SPI "master" to "controller"")
some functions and struct members were renamed. To not break all drivers
compatibility macros were provided.
To be able to remove these compatibility macros push the renaming into
the SPI bitbang controller drivers.
Acked-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
Signed-off-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
Link: https://lore.kernel.org/r/f7f949feb803acb8bea75798f41371a13287f4e8.1707324794.git.u.kleine-koenig@pengutronix.de
Signed-off-by: Mark Brown <broonie@kernel.org>
51 lines
1.6 KiB
C
51 lines
1.6 KiB
C
/* SPDX-License-Identifier: GPL-2.0 */
|
|
#ifndef __SPI_BITBANG_H
|
|
#define __SPI_BITBANG_H
|
|
|
|
#include <linux/workqueue.h>
|
|
|
|
struct spi_bitbang {
|
|
struct mutex lock;
|
|
u8 busy;
|
|
u8 use_dma;
|
|
u16 flags; /* extra spi->mode support */
|
|
|
|
struct spi_controller *ctlr;
|
|
|
|
/* setup_transfer() changes clock and/or wordsize to match settings
|
|
* for this transfer; zeroes restore defaults from spi_device.
|
|
*/
|
|
int (*setup_transfer)(struct spi_device *spi,
|
|
struct spi_transfer *t);
|
|
|
|
void (*chipselect)(struct spi_device *spi, int is_on);
|
|
#define BITBANG_CS_ACTIVE 1 /* normally nCS, active low */
|
|
#define BITBANG_CS_INACTIVE 0
|
|
|
|
/* txrx_bufs() may handle dma mapping for transfers that don't
|
|
* already have one (transfer.{tx,rx}_dma is zero), or use PIO
|
|
*/
|
|
int (*txrx_bufs)(struct spi_device *spi, struct spi_transfer *t);
|
|
|
|
/* txrx_word[SPI_MODE_*]() just looks like a shift register */
|
|
u32 (*txrx_word[4])(struct spi_device *spi,
|
|
unsigned nsecs,
|
|
u32 word, u8 bits, unsigned flags);
|
|
int (*set_line_direction)(struct spi_device *spi, bool output);
|
|
};
|
|
|
|
/* you can call these default bitbang->master methods from your custom
|
|
* methods, if you like.
|
|
*/
|
|
extern int spi_bitbang_setup(struct spi_device *spi);
|
|
extern void spi_bitbang_cleanup(struct spi_device *spi);
|
|
extern int spi_bitbang_setup_transfer(struct spi_device *spi,
|
|
struct spi_transfer *t);
|
|
|
|
/* start or stop queue processing */
|
|
extern int spi_bitbang_start(struct spi_bitbang *spi);
|
|
extern int spi_bitbang_init(struct spi_bitbang *spi);
|
|
extern void spi_bitbang_stop(struct spi_bitbang *spi);
|
|
|
|
#endif /* __SPI_BITBANG_H */
|