static int otm1284a_vid_set_brightness(struct mdfld_dsi_config *dsi_config, int level) { u32 reg_level; union pwmctrl_reg pwmctrl; #ifdef CONFIG_BACKLIGHT_RT4532 rt4532_brightness_set(level); #else // /* Re-assign the minimum brightness value to 15 */ // if (level > 0 && level <= 15) // level = 15; // reg_level = ~level & 0xFF; pwmctrl.part.pwmswupdate = 0x1; pwmctrl.part.pwmbu = PWM_BASE_UNIT; pwmctrl.part.pwmtd = reg_level; if (!pwmctrl_mmio) pwmctrl_mmio = ioremap_nocache(PWMCTRL_REG, 4); if (pwmctrl_mmio) { if (level) { if (!gpio_get_value(backlight_en_gpio)) { pmu_set_pwm(PCI_D0); lnw_gpio_set_alt(backlight_pwm_gpio, 1); gpio_set_value_cansleep(backlight_en_gpio, 1); } pwmctrl.part.pwmenable = 1; writel(pwmctrl.full, pwmctrl_mmio); } else if (gpio_get_value(backlight_en_gpio)) { pwmctrl.part.pwmenable = 0; writel(pwmctrl.full, pwmctrl_mmio); gpio_set_value_cansleep(backlight_pwm_gpio, 0); lnw_gpio_set_alt(backlight_pwm_gpio, 0); usleep_range(10000, 10100); gpio_set_value_cansleep(backlight_en_gpio, 0); pmu_set_pwm(PCI_D3hot); } } else { DRM_ERROR("Cannot map pwmctrl\n"); } printk("[DISP] brightness level = %d\n", level); #endif return 0; }
static int otm1901a_vid_set_brightness(struct mdfld_dsi_config *dsi_config, int level) { u32 reg_level = ~level & 0xFF; union pwmctrl_reg pwmctrl; static void __iomem *bl_en_mmio; #ifdef CONFIG_BACKLIGHT_RT4532 rt4532_brightness_set(level); #endif pwmctrl.part.pwmswupdate = 0x1; pwmctrl.part.pwmbu = PWM_BASE_UNIT; pwmctrl.part.pwmtd = reg_level; if (!pwmctrl_mmio) pwmctrl_mmio = ioremap_nocache(PWMCTRL_REG, 4); if (!bl_en_mmio) bl_en_mmio = ioremap_nocache(BL_EN_REG, 4); if (pwmctrl_mmio) { if (level) { if (!gpio_get_value(backlight_en_gpio)) { writel((readl(bl_en_mmio) | PULL_UP_EN) & (~PULL_DOWN_EN), bl_en_mmio); pmu_set_pwm(PCI_D0); lnw_gpio_set_alt(backlight_pwm_gpio, 1); gpio_set_value_cansleep(backlight_en_gpio, 1); } pwmctrl.part.pwmenable = 1; writel(pwmctrl.full, pwmctrl_mmio); } else if (gpio_get_value(backlight_en_gpio)) { writel(pwmctrl.full, pwmctrl_mmio); pwmctrl.part.pwmenable = 0; gpio_set_value_cansleep(backlight_en_gpio, 0); lnw_gpio_set_alt(backlight_pwm_gpio, 0); writel((readl(bl_en_mmio) | PULL_DOWN_EN) & (~PULL_UP_EN), bl_en_mmio); pmu_set_pwm(PCI_D3hot); } } else { DRM_ERROR("Cannot map pwmctrl\n"); } printk("[DISP] brightness level = %d\n", level); return 0; }
static int otm1284a_vid_detect(struct mdfld_dsi_config *dsi_config) { printk("[DISP] %s\n", __func__); panel_reset_gpio = get_gpio_by_name("DISP_RST_N"); if (panel_reset_gpio < 0) { DRM_ERROR("Faild to get panel reset gpio\n"); return -EINVAL; } if (gpio_request(panel_reset_gpio, "panel_reset")) { DRM_ERROR("Faild to request panel reset gpio\n"); return -EINVAL; } #ifndef CONFIG_BACKLIGHT_RT4532 backlight_en_gpio = OTM1284A_BL_EN_GPIO; if (gpio_request(backlight_en_gpio, "backlight_en")) { DRM_ERROR("Faild to request backlight enable gpio\n"); return -EINVAL; } backlight_pwm_gpio = OTM1284A_BL_PWM_GPIO; if (gpio_request(backlight_pwm_gpio, "backlight_pwm")) { DRM_ERROR("Faild to request backlight PWM gpio\n"); return -EINVAL; } /* Initializing pwm for being able to adjust backlight when just opening the phone. */ pmu_set_pwm(PCI_D0); lnw_gpio_set_alt(backlight_pwm_gpio, 1); #endif dsi_config->dsi_hw_context.panel_on = true; return MDFLD_DSI_PANEL_CONNECTED; }