关于多了platform_device 对应一个platform_driver 的执行问题

bigPillow 2016-10-01 10:17:39
当一个platform_driver找到多个同名的platform_device 的时候,是怎么执行的?
是执行多次driver的probe函数么?
...全文
1277 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
lbaihao 2016-10-27
  • 打赏
  • 举报
回复
那就说明名字可以相同,但ID会不同,那是个LED不是有不同的ID吗,当只有一个名字的时候,ID为-1
qq_36348011 2016-10-11
  • 打赏
  • 举报
回复
那就说明名字可以相同,但ID会不同,那是个LED不是有不同的ID吗,当只有一个名字的时候,ID为-1
qq_36348011 2016-10-10
  • 打赏
  • 举报
回复
一般名字相同会报错吧,如果没报错,说明driver和device不是通过name匹配的
bigPillow 2016-10-10
  • 打赏
  • 举报
回复
引用 7 楼 qq_36348011 的回复:
[quote=引用 5 楼 woshidahuaidan2011 的回复:] [quote=引用 3 楼 qq_36348011 的回复:] 一般名字相同会报错吧,如果没报错,说明driver和device不是通过name匹配的
Common-smdk.c (arch\arm\mach-s3c24xx) 文件中,定义了四个LED不就是4个相同的platform_device.name 么?[/quote] 这个文件描述的是硬件信息,硬件信息已经和驱动分隔开,drive和device已不是通过名字匹配了[/quote] 我看了在Leds-s3c24xx.c (drivers\leds) 确实是名字match的啊 static struct platform_driver s3c24xx_led_driver = { .probe = s3c24xx_led_probe, .remove = s3c24xx_led_remove, .driver = { .name = "s3c24xx_led", .owner = THIS_MODULE, }, };
qq_36348011 2016-10-10
  • 打赏
  • 举报
回复
引用 5 楼 woshidahuaidan2011 的回复:
[quote=引用 3 楼 qq_36348011 的回复:] 一般名字相同会报错吧,如果没报错,说明driver和device不是通过name匹配的
Common-smdk.c (arch\arm\mach-s3c24xx) 文件中,定义了四个LED不就是4个相同的platform_device.name 么?[/quote] 这个文件描述的是硬件信息,硬件信息已经和驱动分隔开,drive和device已不是通过名字匹配了
bigPillow 2016-10-10
  • 打赏
  • 举报
回复
引用 4 楼 whhanxq1 的回复:
编译直接编不过
Common-smdk.c (arch\arm\mach-s3c24xx) 文件中,定义了四个LED不就是4个相同的platform_device.name 么?
bigPillow 2016-10-10
  • 打赏
  • 举报
回复
引用 3 楼 qq_36348011 的回复:
一般名字相同会报错吧,如果没报错,说明driver和device不是通过name匹配的
Common-smdk.c (arch\arm\mach-s3c24xx) 文件中,定义了四个LED不就是4个相同的platform_device.name 么?
whhanxq1 2016-10-10
  • 打赏
  • 举报
回复
编译直接编不过
bigPillow 2016-10-09
  • 打赏
  • 举报
回复
引用 楼主 woshidahuaidan2011 的回复:
当一个platform_driver找到多个同名的platform_device 的时候,是怎么执行的? 是执行多次driver的probe函数么?
感谢版主回复, 现在有个问题是, 有一个platform_driver,其name为“test_name”现在被platform_driver_register注册到platform中。 同时,有多个,假设有3个,platform_device,其name为“test_name”现在被platform_device_register注册到platform中。 那么platform_driver对应的probe函数要执行三次么?
cocoabird 2016-10-08
  • 打赏
  • 举报
回复
匹配到device才进行probe。在驱动初始化(ohci-hcd.c的1124行)函数中调用函数platform_driver_register()注册该platform_driver,需要注意的是s3c_device_usb结构中name元素和ohci_hcd_s3c2410_driver 结构中driver.name必须是相同的,这样在platform_driver_register()注册时会对所有已注册的platform_device中元素的name和当前注册的platform_driver的driver.name进行比较,只有找到具备相同名称的platform_device存在后,platform_driver才能注册成功。当注册成功时会调用platform_driver结构元素probe函数指针,这里就是ohci_hcd_s3c2410_drv_probe开始探测加载。platform driver中的函数都是以platform device作为参数进入。

1,318

社区成员

发帖
与我相关
我的任务
社区描述
主要是开发驱动技术
社区管理员
  • 驱动程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧