platform驱动分析

platform驱动程序设计路线:注册设备(platform_device)->编写设备驱动。

注册设备:

struct platform_device {
      const char * name;
      int  id;
      struct device dev;
      u32  num_resources;
      struct resource * resource;

     const struct platform_device_id *id_entry;

     /* arch specific additions */
    struct pdev_archdata archdata;
};

     其中比较重要的成员struct resource * resource 表征platform_device所战用的资源,  当然对于比较简单的设备(普通的I/0)不用注册该结构,例:

struct platform_device iccard_device = {                   

     .name = "iccard_device",
     .id = 0,
}; 

    如果没有注册platform_device,别指望自身定义的probe会为你做什么工作,因为在驱动与设备匹配时会出错到不了probe这一步。

   platform_device设备注册的实现函数为platform_device_register(struct platform_device *pdev);具体实现为:

int platform_device_register(struct platform_device *pdev)
{
        device_initialize(&pdev->dev);//相关默认相初始化
        return platform_device_add(pdev);//挂载设备到总线
}

 

设备驱动:

static struct platform_driver iccard_driver = {
     .probe = iccard_probe,
     .remove = iccard_remove,
     .driver = {
     .name = "iccard",
     .owner = THIS_MODULE,
     },
};

platform_driver_register(&iccard_driver);

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值