歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> Linux-2.6驅動開發

Linux-2.6驅動開發

日期:2017/3/1 9:47:09   编辑:Linux編程

以LCD為例,先注冊device,再注冊driver,兩者名稱一致。

static struct pxafb_mode_info tpo_tdo24mtea1_modes[] = {

[0] = {

/* VGA */

.pixclock = 38250,

.xres = 480,

.yres = 640,

.bpp = 16,

.hsync_len = 8,

.left_margin = 8,

.right_margin = 24,

.vsync_len = 2,

.upper_margin = 2,

.lower_margin = 4,

.sync = 0,

},

};

static struct pxafb_mach_info littleton_lcd_info = {

.modes = tpo_tdo24mtea1_modes,

.num_modes = 1,

.lccr0 = LCCR0_Act,

.lccr3 = LCCR3_HSP | LCCR3_VSP,

.pxafb_lcd_power = littleton_lcd_power,

.pxafb_backlight_power = littleton_lcd_backlight,

};

static struct resource pxafb_resources[] = {

[0] = {

.start = 0x44000000,

.end = 0x4400ffff,

.flags = IORESOURCE_MEM,

},

[1] = {

.start = IRQ_LCD,

.end = IRQ_LCD,

.flags = IORESOURCE_IRQ,

},

};

static u64 fb_dma_mask = ~(u64)0;

struct platform_device pxa_device_fb = {

.name = "pxa2xx-fb",

.id = -1,

.dev = {

.dma_mask = &fb_dma_mask,

.coherent_dma_mask = 0xffffffff,

.platform_data = littleton_lcd_info,

},

.num_resources = ARRAY_SIZE(pxafb_resources),

.resource = pxafb_resources,

};

platform_device_register(&pxa_device_fb);

/*****************************************************************************/

static struct platform_driver pxafb_driver = {

.probe = pxafb_probe,

#ifdef CONFIG_PM

.suspend = pxafb_suspend,

.resume = pxafb_resume,

.shutdown = pxafb_shutdown,

#endif

.driver = {

.name = "pxa2xx-fb",

},

};

platform_driver_register(&pxafb_driver);

Copyright © Linux教程網 All Rights Reserved