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