裝置樹的學習基本就是按照轉載的部落格寫代碼,然後自己感悟,現在應該算是對裝置樹有所了解了,正如很多網上說的那樣,在沒有裝置樹之前,很多裝置的資訊都是mach-xxxx.c中添加進去,例如要添加一個i2c裝置就要在開發闆mach檔案中添加一個i2c_board_info結構體,其中.platform_data中表明所要使用的資源:
#ifdef CONFIG_TOUCHSCREEN_FT5X0X
#include <plat/ft5x0x_touch.h>
static struct ft5x0x_i2c_platform_data ft5x0x_pdata = {
.gpio_irq = EXYNOS4_GPX1(),
.irq_cfg = S3C_GPIO_SFN(),
.screen_max_x = ,
.screen_max_y = ,
.pressure_max = ,
};
#endif
static struct i2c_board_info i2c_devs1[] __initdata = {
#ifdef CONFIG_TOUCHSCREEN_FT5X0X
{
I2C_BOARD_INFO("ft5x0x_ts", ( >> )),
.platform_data = &ft5x0x_pdata,
},
#endif
{
I2C_BOARD_INFO("wm8994", ),
.platform_data = &wm8994_platform_data,
},
};
但是到了裝置樹,這些都是在裝置樹中進行說明就可以了(如下所示),不需要再添加這麼多代碼,而且在後續有其他類似的開發闆添加起來也友善
touch_demo {
compatible = "tiny4412,touch_demo";
interrupts = < >;
interrupt-parent = <&gpx1>;
status = "okay";
};
最後大家如果感興趣,可以到我的github上下載下傳這些驅動的源碼,畢竟轉載的部落格中有些裝置驅動好像還是有點問題:
github位址:https://github.com/xiaojimmychen/tiny4412_driver