int psb_dpst_bl(struct drm_device *dev, void *data) { struct drm_psb_private *dev_priv = psb_priv(dev); uint32_t * arg = data; struct backlight_device *bd; bd = psb_get_backlight_device(); if(!dev_priv) return 0; if(dev_priv->early_suspended) return 0; dpst_print("adjust percentage: %d.%d\n", *arg / 100, *arg % 100); dev_priv->blc_adj2 = (*arg * 255 / 100) * 255 / 100; #ifdef CONFIG_BACKLIGHT_CLASS_DEVICE mutex_lock(&bd->ops_lock); bd->props.brightness = psb_get_brightness(bd); if ( 0 == bd->props.brightness) { mutex_unlock(&bd->ops_lock); return 0; } psb_set_brightness(bd); mutex_unlock(&bd->ops_lock); #endif /* */ return 0; }
static int smd_qhd_amoled_cmd_bl_power_on(struct mdfld_dsi_config *dsi_config) { int level; struct backlight_device *psb_bl = psb_get_backlight_device(); if (!psb_bl) level = BRIGHTNESS_MAX_LEVEL; else level = psb_bl->props.brightness; return smd_qhd_amoled_cmd_set_brightness(dsi_config, level); }