static void aat2870_bl_switch_mode(int op_mode) { struct aat2870_bl_driver_data *drv; drv = aat2870_bl_drvdata; if (drv->dim_status != DIMMING_NONE) { aat2870_bl_send_cmd(drv, aat2870bl_stop_fade_tbl); drv->dim_status = DIMMING_NONE; dbg("[BL] DIMMING_OFF \n"); } if (op_mode == AAT2870_OP_MODE_NORMAL) { aat2870_bl_send_cmd(drv, drv->cmds.normal); dbg("[BL] Mode: normal\n"); } else if (op_mode == AAT2870_OP_MODE_ALC) { aat2870_bl_send_cmd(drv, drv->cmds.alc); dbg("[BL] Mode: alc\n"); if (drv->lsensor_enable == TRUE) schedule_delayed_work(&drv->delayed_work_bl, drv->lsensor_poll_time); } if (drv->status == AAT2870_POWER_STATE_OFF) { dbg("[BL] Weird: how to use without display\n"); drv->status = AAT2870_POWER_STATE_ON; } return; }
static ssize_t aat2870_bl_store_intensity(struct device *dev, struct device_attribute *attr, const char *buf, size_t count) { int level, intensity; static struct aat2870_bl_driver_data *drv; drv = aat2870_bl_drvdata; if (!count) return -EINVAL; if(is_suspended == true) { return 0; } sscanf(buf, "%d", &intensity); //level range: 0 to 22 from aat2870 ds //101103, [email protected], Replaced with function. if (aat2870_bl_brightness_linearized(intensity, &level)) { dbg("[BL] Invalid Intensity value: %d\n", intensity); goto intensity_input_err; } //if (drv->op_mode == AAT2870_OP_MODE_ALC && drv->hw_dimming_enable) { if (drv->hw_dimming_enable) { if (drv->dim_status == DIMMING_NONE && drv->intensity > level && intensity == 20) { dbg("[BL] DIMMING_START \n"); aat2870_bl_send_cmd(drv, aat2870bl_fade_out_tbl); drv->dim_status = DIMMING_START; mdelay(AAT2870_FADE_OUT_DELAY); } else if (drv->dim_status != DIMMING_NONE && drv->intensity < level) { aat2870_bl_send_cmd(drv, aat2870bl_stop_fade_tbl); drv->dim_status = DIMMING_NONE; dbg("[BL] DIMMING_OFF \n"); } } if (drv->power_onoff_ref == TRUE) { aat2870_bl_send_cmd(drv, aat2870bl_fade_in_tbl); if (drv->op_mode != AAT2870_OP_MODE_ALC) { aat2870_bl_write(drv->bd, AAT2870_BL_BLM, level); } else { aat2870_bl_write(drv->bd, AAT2870_BL_BLM, 0x06);//lowest } mdelay(AAT2870_FADE_IN_DELAY - 50);//Fade-In delay aat2870_bl_send_cmd(drv, aat2870bl_stop_fade_tbl); drv->power_onoff_ref = FALSE; } if (level > drv->intensity_max) { level = drv->intensity_max; } dbg("[BL] intensity: %d, level: %d(prev: %d)\n",intensity, level, drv->intensity); aat2870_bl_write(drv->bd, AAT2870_BL_BLM, level); drv->intensity = level; intensity_input_err: return count; }