static int lcd_fb_event(struct notifier_block *nb, unsigned long val, void *v) { struct fb_event *event = v; if (strcmp(event->info->fix.id, "mxc_elcdif_fb")) return 0; switch (val) { case FB_EVENT_FB_REGISTERED: lcd_init_fb(event->info); fb_show_logo(event->info, 0); lcd_poweron(); break; case FB_EVENT_BLANK: if ((event->info->var.xres != 800) || (event->info->var.yres != 480)) { break; } if (*((int *)event->data) == FB_BLANK_UNBLANK) lcd_poweron(); else lcd_poweroff(); break; } return 0; }
static int lcd_fb_event(struct notifier_block *nb, unsigned long val, void *v) { struct fb_event *event = v; if (strcmp(event->info->fix.id, "DISP3 BG")) { return 0; } switch (val) { case FB_EVENT_FB_REGISTERED: lcd_init_fb(event->info); lcd_poweron(); break; case FB_EVENT_BLANK: if ((event->info->var.xres != 240) || (event->info->var.yres != 400)) { break; } if (*((int *)event->data) == FB_BLANK_UNBLANK) { lcd_poweron(); } else { lcd_poweroff(); } break; } return 0; }
/*! * This function is called whenever the platform device is detected. * * @param pdev the platform device * * @return Returns 0 on SUCCESS and error on FAILURE. */ static int __devinit lcd_probe(struct platform_device *pdev) { int i; struct mxc_lcd_platform_data *plat = pdev->dev.platform_data; if (plat) { if (plat->reset) plat->reset(); io_reg = regulator_get(&pdev->dev, plat->io_reg); if (IS_ERR(io_reg)) io_reg = NULL; core_reg = regulator_get(&pdev->dev, plat->core_reg); if (!IS_ERR(core_reg)) regulator_set_voltage(io_reg, 1800000, 1800000); else core_reg = NULL; } for (i = 0; i < num_registered_fb; i++) { if (strcmp(registered_fb[i]->fix.id, "mxc_elcdif_fb") == 0) { lcd_init_fb(registered_fb[i]); fb_show_logo(registered_fb[i], 0); lcd_poweron(); } } fb_register_client(&nb); plcd_dev = pdev; return 0; }
static void lcm_suspend_power(void) { lcd_reset(0); MDELAY(10); lcd_poweron(0); MDELAY(10); }
static void lcm_init_power(void) { lcd_reset(0); /* Power supply(VDD=1.8V) */ MDELAY(10); lcd_poweron(0); MDELAY(20); lcd_poweron(1); MDELAY(5); lcd_reset(1); MDELAY(20); lcd_reset(0); MDELAY(25); lcd_reset(1); MDELAY(10); }
static int lcd_resume(struct spi_device *spi) { if (lcd_reset) lcd_reset(); lcd_init(); lcd_poweron(); return 0; }
static int lcd_fb_event(struct notifier_block *nb, unsigned long val, void *v) { struct fb_event *event = v; if (strcmp(event->info->fix.id, "DISP3 BG - DI1")) return 0; switch (val) { case FB_EVENT_FB_REGISTERED: lcd_init_fb(event->info); lcd_poweron(event->info); break; case FB_EVENT_BLANK: if (*((int *)event->data) == FB_BLANK_UNBLANK) lcd_poweron(event->info); else lcd_poweroff(); break; } return 0; }
/*! * This function is called whenever the SPI slave device is detected. * * @param spi the SPI slave device * * @return Returns 0 on SUCCESS and error on FAILURE. */ static int __devinit lcd_spi_probe(struct spi_device *spi) { int i; struct mxc_lcd_platform_data *plat = spi->dev.platform_data; lcd_spi = spi; lcd_24bpp_ioinit(); if (plat) { io_reg = regulator_get(&spi->dev, plat->io_reg); if (!IS_ERR(io_reg)) { regulator_set_voltage(io_reg, 1800000); regulator_enable(io_reg); } core_reg = regulator_get(&spi->dev, plat->core_reg); if (!IS_ERR(core_reg)) { regulator_set_voltage(core_reg, 2800000); regulator_enable(core_reg); } lcd_reset = plat->reset; if (lcd_reset) lcd_reset(); } lcd_spi_setup(lcd_spi); for (i = 0; i < num_registered_fb; i++) { if (strcmp(registered_fb[i]->fix.id, "DISP3 BG") == 0) { lcd_init_fb(registered_fb[i]); fb_show_logo(registered_fb[i], 0); lcd_poweron(); } } fb_register_client(&nb); return 0; }
/*! * This function is called whenever the SPI slave device is detected. * * @param spi the SPI slave device * * @return Returns 0 on SUCCESS and error on FAILURE. */ static int __devinit lcd_probe(struct device *dev) { int ret = 0; int i; struct mxc_lcd_platform_data *plat = dev->platform_data; if (plat) { io_reg = regulator_get(dev, plat->io_reg); if (!IS_ERR(io_reg)) { regulator_set_voltage(io_reg, 1800000, 1800000); regulator_enable(io_reg); } else { io_reg = NULL; } core_reg = regulator_get(dev, plat->core_reg); if (!IS_ERR(core_reg)) { regulator_set_voltage(core_reg, 2500000, 2500000); regulator_enable(core_reg); } else { core_reg = NULL; } analog_reg = regulator_get(dev, plat->analog_reg); if (!IS_ERR(analog_reg)) { regulator_set_voltage(analog_reg, 2775000, 2775000); regulator_enable(analog_reg); } else { analog_reg = NULL; } msleep(100); lcd_reset = plat->reset; if (lcd_reset) lcd_reset(); } for (i = 0; i < num_registered_fb; i++) { if (strcmp(registered_fb[i]->fix.id, "DISP3 BG - DI1") == 0) { ret = lcd_init(); if (ret < 0) goto err; lcd_init_fb(registered_fb[i]); fb_show_logo(registered_fb[i], 0); lcd_poweron(registered_fb[i]); } } fb_register_client(&nb); return 0; err: if (io_reg) regulator_disable(io_reg); if (core_reg) regulator_disable(core_reg); if (analog_reg) regulator_disable(analog_reg); return ret; }