假如你现在有一份基于内核接口SPI的驱动,但是现在你的硬件已经没有多余的SPI接口了。怎么办?难道我们需要重新写驱动吗,像单片机一样去操作IO的高低来符合时序。那么你的工作量就加大了。其实,linux内核已经写好了模拟SPI时序,你只需要配置好。就可以使用了。下面分享一下个人经验。
首先,你需要配置CONFIG。
config SPI_GPIO
tristate "GPIO-based bitbanging SPI Master"
depends on GENERIC_GPIO
select SPI_BITBANG
其次,你需要在你的平台注册platform_device,保证能让spi-gpio.c能执行到probe函数。
static struct spi_gpio_platform_data xxx_data = {
.sck = Pin(1),
.mosi = Pin(2),
.miso = Pin(3),
.num_chipselect = 1,
};
struct platform_device xxx_device = {
.name= DRIVER_NAME,
.id = 0,
.dev = {
.platform_data = &xxx_data,
},
};
然后,你需要注册spi_board_info结构体,并初始化。
static struct spi_board_info xxxxx_board_info[] __