4.x的内核都是已经支持设备树的,所以platform bus也是做了一些调整。
主要是在匹配函数里面的支持设备树。
1 2 3 4 5 6 7 8 |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 |
|
这里可以看到匹配的优先级如下:
- 设备里的driver_override被设置,优先级最高。
- 驱动里的of_match_table,和平台设备的compatible比较。
- 高级配置和电源管理之类的匹配。
- platform_driver里的id_table里的所有名字和设备名字匹配。
- 最后再是设备名字和驱动名字比较。
当然除了第一个之外,其它的只要没匹配到,后面的几个匹配还会继续执行的。
设备树匹配方式
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91</ |