static int nec_8048_panel_probe(struct omap_dss_device *dssdev) { struct panel_nec_nl8048_data *pd = get_panel_data(dssdev); int r; if (!pd) return -EINVAL; dssdev->panel.timings = nec_8048_panel_timings; if (gpio_is_valid(pd->qvga_gpio)) { r = devm_gpio_request_one(dssdev->dev, pd->qvga_gpio, GPIOF_OUT_INIT_HIGH, "lcd QVGA"); if (r) return r; } if (gpio_is_valid(pd->res_gpio)) { r = devm_gpio_request_one(dssdev->dev, pd->res_gpio, GPIOF_OUT_INIT_LOW, "lcd RES"); if (r) return r; } return 0; }
static int sharp_ls_power_on(struct omap_dss_device *dssdev) { struct panel_sharp_ls037v7dw01_data *pd = get_panel_data(dssdev); int r = 0; if (dssdev->state == OMAP_DSS_DISPLAY_ACTIVE) return 0; omapdss_dpi_set_timings(dssdev, &dssdev->panel.timings); omapdss_dpi_set_data_lines(dssdev, dssdev->phy.dpi.data_lines); r = omapdss_dpi_display_enable(dssdev); if (r) goto err0; /* wait couple of vsyncs until enabling the LCD */ msleep(50); if (gpio_is_valid(pd->resb_gpio)) gpio_set_value_cansleep(pd->resb_gpio, 1); if (gpio_is_valid(pd->ini_gpio)) gpio_set_value_cansleep(pd->ini_gpio, 1); return 0; err0: return r; }
static void nec_8048_panel_power_off(struct omap_dss_device *dssdev) { struct panel_nec_nl8048_data *pd = get_panel_data(dssdev); if (dssdev->state != OMAP_DSS_DISPLAY_ACTIVE) return; if (gpio_is_valid(pd->res_gpio)) gpio_set_value_cansleep(pd->res_gpio, 0); omapdss_dpi_display_disable(dssdev); }
void __init omap4_superior_display_init(void) { struct panel_s6e8aa0a01_data *panel; int oled_det_gpio; /* Removed ENABLE_ON_INIT flag for dss_sys_clk(functional clock) * in arch/arm/mach-omap2/clock44xx_data.c, manually * enabling the functional clock by getting dss_sys_fclk. * NOTE: It will be disabled, during disable path. */ #ifdef CONFIG_FB_OMAP_BOOTLOADER_INIT dss_ick = clk_get(NULL, "ick"); if (IS_ERR(dss_ick)) { pr_err("Could not get dss interface clock\n"); /* return -ENOENT; */ } dss_sys_fclk = omap_clk_get_by_name("dss_sys_clk"); if (IS_ERR(dss_sys_fclk)) { pr_err("Could not get dss system clock\n"); /* return -ENOENT; */ } clk_enable(dss_sys_fclk); dss_dss_fclk = omap_clk_get_by_name("dss_dss_clk"); if (IS_ERR(dss_dss_fclk)) { pr_err("Could not get dss functional clock\n"); /* return -ENOENT; */ } #endif panel = &superior_oled_data; superior_oled_device.data = panel; omap4_ctrl_pad_writel(0x1FF80000, OMAP4_CTRL_MODULE_PAD_CORE_CONTROL_DSIPHY); panel->reset_gpio = omap_muxtbl_get_gpio_by_name("MLCD_RST"); panel->oled_id_gpio = omap_muxtbl_get_gpio_by_name("OLED_ID"); oled_det_gpio = omap_muxtbl_get_gpio_by_name("OLED_DET"); gpio_request(oled_det_gpio, "OLED_DET"); gpio_direction_input(oled_det_gpio); panel->oled_det_irq = gpio_to_irq(oled_det_gpio); get_panel_data(panel_data, panel); omap_display_init(&superior_dss_data); }
static int sharp_ls_panel_probe(struct omap_dss_device *dssdev) { struct panel_sharp_ls037v7dw01_data *pd = get_panel_data(dssdev); int r; if (!pd) return -EINVAL; dssdev->panel.timings = sharp_ls_timings; if (gpio_is_valid(pd->mo_gpio)) { r = devm_gpio_request_one(&dssdev->dev, pd->mo_gpio, GPIOF_OUT_INIT_LOW, "lcd MO"); if (r) return r; } if (gpio_is_valid(pd->lr_gpio)) { r = devm_gpio_request_one(&dssdev->dev, pd->lr_gpio, GPIOF_OUT_INIT_HIGH, "lcd LR"); if (r) return r; } if (gpio_is_valid(pd->ud_gpio)) { r = devm_gpio_request_one(&dssdev->dev, pd->ud_gpio, GPIOF_OUT_INIT_HIGH, "lcd UD"); if (r) return r; } if (gpio_is_valid(pd->resb_gpio)) { r = devm_gpio_request_one(&dssdev->dev, pd->resb_gpio, GPIOF_OUT_INIT_LOW, "lcd RESB"); if (r) return r; } if (gpio_is_valid(pd->ini_gpio)) { r = devm_gpio_request_one(&dssdev->dev, pd->ini_gpio, GPIOF_OUT_INIT_LOW, "lcd INI"); if (r) return r; } return 0; }
static void sharp_ls_power_off(struct omap_dss_device *dssdev) { struct panel_sharp_ls037v7dw01_data *pd = get_panel_data(dssdev); if (dssdev->state != OMAP_DSS_DISPLAY_ACTIVE) return; if (gpio_is_valid(pd->ini_gpio)) gpio_set_value_cansleep(pd->ini_gpio, 0); if (gpio_is_valid(pd->resb_gpio)) gpio_set_value_cansleep(pd->resb_gpio, 0); /* wait at least 5 vsyncs after disabling the LCD */ msleep(100); omapdss_dpi_display_disable(dssdev); }
static int nec_8048_panel_power_on(struct omap_dss_device *dssdev) { struct panel_nec_nl8048_data *pd = get_panel_data(dssdev); int r; if (dssdev->state == OMAP_DSS_DISPLAY_ACTIVE) return 0; omapdss_dpi_set_timings(dssdev, &dssdev->panel.timings); omapdss_dpi_set_data_lines(dssdev, dssdev->phy.dpi.data_lines); r = omapdss_dpi_display_enable(dssdev); if (r) goto err0; if (gpio_is_valid(pd->res_gpio)) gpio_set_value_cansleep(pd->res_gpio, 1); return 0; err0: return r; }