Esempio n. 1
0
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;
}
Esempio n. 2
0
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;
}