arch/arm/plat-s3c24xx/devs.c 這個函式實現的平台匯流排模型中的
platform_device
/* 1. 註冊各種資源 */
struct resource s3c2410_uart0_resource等各種資源
static struct resource s3c_lcd_resource = ,
[1] =
}/* 2. 並分配平台裝置 */
struct platform_device s3c_device_*** =
/* 3. 註冊在哪platform_device_register? */
platform_driver
struct platform_driver led_drv =
};platform_driver_register
***_probe
設定:platform_get_resource等進行各種資源的設定
register_chrdev( major, name, struct file_operations *fops)
class_create
class_device_create
當然對於具體的driver函式可以用input輸入子系統來完成,
對於lcd,register_chrdev→register_framebuffer, fops→s3c_fb
對於gpio_keys.c中輸入子系統,當然實際上只是核心中的乙個例程,核心並沒有分配資源給它
gpio_keys_probe(struct platform_device *pdev)
input = input_allocate_device();
相關設定
input_register_device(input);
對於s3c2410ts.c中也用到了輸入子系統,它的platform_device就是在devs.c實現的
platform_driver
s3c2410_ts_probe
input = input_allocate_device();
相關設定
input_register_device(input);
匯流排平台:
platform_device 需要自己實現:1. 註冊資源 2. 分配平台裝置 3. 註冊平台裝置
platform_driver 比較穩定的**
input->device 需要自己實現 1.分配乙個input_dev結構體 2.設定能產生哪些事件 3. 註冊input_register_device(buttons_dev) 4. 硬體相關的操作
input->handler 一般的handler由核心實現
Linux平台匯流排驅動裝置模型
platform匯流排是一種虛擬的匯流排,相應的裝置則為platform device,而驅動則為platform driver。linux 2.6的裝置驅動模型中,把i2c rtc lcd等都歸納為platform device。匯流排將裝置和驅動繫結,在系統每註冊乙個裝置的時候,會尋找與之匹配的...
平台匯流排模型
平台匯流排模型主要分為3個部分,1.driver 2.device 3.bus device主要放硬體相關的東西 driver裡面主要存放的比較穩定的 我們依然可以檢視gpio keys.c這個 來學習 平台匯流排是一種虛擬的匯流排 driver這個結構體會通過呼叫platform driver r...
驅動 11 2 匯流排驅動模型
為了統一晶元裝置驅動框架 核心中設計了一套 struct bus type bus register void bus unregister struct bus type bus ls sys bus struct device int device register struct device ...