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

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 下一页

相关内容