总线设备模型中对于适配同一个驱动不同设备的匹配问题

1.利用名称来适配

在创建的platform_driver和platform_device中利用结构体内参数适配

.name中定义相同的名称

实例
驱动

static struct platform_driver led_driver = {
    .probe      = led_probe,
    .remove     = led_remove,
    .driver     = {
        .name   = "100ask_led",
    },
};

设备

static struct platform_device led_dev = {
        .name = "100ask_led",
		.num_resources = ARRAY_SIZE(resources),
		.resource = resources,
        .dev = {
                .release = led_dev_release,
         },
};

2.利用id_table来进行适配

①定义id_table结构体
参数为名称,序号

static const struct platform_device_id led_id_table[] = {
	{"100ask_led",   1},
	{"100ask_led_3", 2},
	{"100ask_led_4", 3},
	{ },
};

②在driver中添加.id_table = led_id_table
实例
驱动

static struct platform_driver led_driver = {
    .probe      = led_probe,
    .remove     = led_remove,
    .driver     = {
        .name   = "100ask_led",
    },
    .id_table   = led_id_table,
};

设备

static struct platform_device led_dev = {
        .name = "100ask_led_3",
		.num_resources = ARRAY_SIZE(resources),
		.resource = resources,
        .dev = {
                .release = led_dev_release,
         },
};

3.在设备中利用.driver_override来适配

驱动

static struct platform_driver led_driver = {
    .probe      = led_probe,
    .remove     = led_remove,
    .driver     = {
        .name   = "100ask_led",
    },
};

设备

static struct platform_device led_dev = {
        .name = "100ask_led_second",
		.num_resources = ARRAY_SIZE(resources),
		.resource = resources,
        .dev = {
                .release = led_dev_release,
         },
	.driver_override = "100ask_led",
};

以上三种方法可以使得一个驱动适配多个平台设备

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值