Linux内核4.14版本——SPI框架(5)——spi device相关

本文详细介绍了Linux SPI设备驱动中 spi_add_device 和 spi_setup 函数的实现过程。 spi_add_device 首先验证chip_select,设置bus ID字符串,然后分配cs_gpio,并调用spi_setup进行模式检查和初始化。spi_setup中,主要检查DUAL和QUAD模式不能同时设置,SPI_3WIRE模式下禁用DUAL和QUAD,设置默认bits_per_word和max_speed_hz,并调用控制器的setup方法。这些步骤确保了SPI设备正确且有效地添加到系统中。

目录

1. spi_add_device

1.1 spi_dev_set_name(设置bus id)

1.2 spi_setup(参数的一些默认设置和检查)

2. spi_alloc_device


1. spi_add_device

int spi_add_device(struct spi_device *spi)
{
	.....
	/* Chipselects are numbered 0..max; validate. */
	if (spi->chip_select >= ctlr->num_chipselect) {
		dev_err(dev, "cs%d >= max %d\n", spi->chip_select,
			ctlr->num_chipselect);
		return -EINVAL;
	}

	/* Set the bus ID string */
	spi_dev_set_name(spi);
	
	.......
	
	if (ctlr->cs_gpios)
		spi->cs_gpio = ctlr->cs_gpios[spi->chip_select];

	/* Drivers may modify this initial i/o setup, but will
	 * normally rely on the device being setup.  Devices
	 * using SPI_CS_HIGH can't coexist well otherwise...
	 */
	status = spi_setup(spi);
	......
	/* Device may be bound to an active driver when this returns */
	status = device_add(&spi->dev);
	......
}

1.1 spi_dev_set_name(设置bus id)

static void spi_dev_set_name(struct spi_device *spi)
{
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值