歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

Linux-2.6驅動開發

以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