linux platform驱动实例之leds-gpio(二)

接上一篇,该节描述platform_driver.
1.定义platform_driver驱动gpio_led_driver

static struct platform_driver gpio_led_driver = {
	.probe		= gpio_led_probe,
	.remove		= __devexit_p(gpio_led_remove),
	.driver		= {
		.name	= "leds-gpio",
		.owner	= THIS_MODULE,
		.of_match_table = of_gpio_leds_match,
	},
};

以上代码定义了一个platform_driver
2.注册platform_driver驱动gpio_led_driver

static int __init gpio_led_init(void)
{
	return platform_driver_register(&gpio_led_driver);
}
module_init(gpio_led_init);

module_init(gpio_led_init)宏展开后为:
static int (*__initcall_gpio_led_init6)(void) __used attribute((section(".initcall6.init"))) = gpio_led_init
platform_driver_register注册驱动,主要完成以下工作:
1).根据名字查找总线驱动列表,如果已经存在则返回
2).添加驱动到总线
a.创建/sys/bus/platform/drivers/name目录
b.搜寻总线的设备列表,如果和驱动匹配,则把设备添加到驱动的klist_devices列表
c.添加驱动到总线的驱动列表klist_drivers

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值