Linux-2.6驱动开发 1 注册

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);

你可能感兴趣的:(struct,resources)