spi控制器和spi设备的加载过程

本文详细介绍了SPI控制器如何通过 spi_register_master 加载,并解析了片选配置和SPI设备的添加过程,包括从设备树中读取配置信息,如modalias、reg、spi-max-frequency等。同时,文中提及SPI中断在驱动匹配后的处理。必须的配置项为reg和spi-max-frequency。
摘要由CSDN通过智能技术生成

 spi控制器都是挂在platform总线上的,所以要等platform总线上的设备驱动加载spi控制器完成后才能加载spi设备。

1.spi控制器加载

由spi控制器驱动程序调用spi_register_master来完成spi控制器驱动加载

int spi_register_master(struct spi_master *master)
{
...

    status = of_spi_register_master(master);    //片选gpio的解析,片选是在控制器配置的

    ...
    if (master->transfer)
        dev_info(dev, "master is unqueued, this is deprecated\n");
    else {
        status = spi_master_initialize_queue(master);   //消息队列的初始化
        if (status) {
            device_del(&master->dev);
            goto done;
        }
    }
    /* add statistics */
    spin_lock_init(&master->statistics.lock);

    mutex_lock(&board_lock);
    list_add_tail(&master->list, &spi_master_list);
    list_for_each_entry(bi, &board_list, list)
        spi_match_master_to_boardinfo(master, &bi->board_info)

//这里是通过spi_register_board_info调用,产生的spi device需要解析并添加到maste链表上
    mutex_unlock(&board_lock);

    /* Register devices from the device tree and ACPI */
    of_register_spi_devices(master);   //spi device的添加
    acpi_register_spi_devices(master);  //acpi设备的添加,这里不关注
done:
    return status;<

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

bruk_spp

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值