#ifndef _INPUT_BOOSTER_H_ #define _INPUT_BOOSTER_H_ #include #include #define INPUT_BOOSTER_NAME "input_booster" enum input_booster_id { INPUT_BOOSTER_ID_TSP = 0, INPUT_BOOSTER_ID_TKEY, INPUT_BOOSTER_ID_WACOM, }; #define DVFS_STAGE_NONE 1 << 0 // 0000 0000 0000 0001 #define DVFS_STAGE_SINGLE 1 << 1 // 0000 0000 0000 0010 #define DVFS_STAGE_DUAL 1 << 2 // 0000 0000 0000 0100 #define DVFS_STAGE_TRIPLE 1 << 3 // 0000 0000 0000 1000 #define DVFS_STAGE_PENTA 1 << 5 // 0000 0000 0010 0000 #define DVFS_STAGE_NINTH 1 << 9 // 0000 0010 0000 0000 /* Touchkey */ #define INPUT_BOOSTER_OFF_TIME_TKEY 500 #define INPUT_BOOSTER_CHG_TIME_TKEY 500 struct input_booster { struct delayed_work work_dvfs_off; struct delayed_work work_dvfs_chg; struct mutex dvfs_lock; bool dvfs_lock_status; int dvfs_old_stauts; int dvfs_boost_mode; int dvfs_freq; int bimc_freq; int dvfs_id; int dvfs_stage; int (*dvfs_off)(struct input_booster *); void (*dvfs_set)(struct input_booster *, int); }; struct dvfs { int time; s32 cpu_freq; s32 bimc_freq; }; struct input_booster_dt_data { int tsp_stage; int tkey_stage; int wacom_stage; int level; struct dvfs head; struct dvfs tail; }; struct input_booster_data { struct device *dev; struct input_booster_dt_data *dt_data; struct class *booster_class; int dbg_level; int level; struct dvfs head; struct dvfs tail; }; struct input_booster *input_booster_allocate(int id); void input_booster_free(struct input_booster *booster); void input_booster_get_default_setting(const char *flag, struct dvfs *value); int input_booster_set_level_change(int val); #ifdef CONFIG_DEBUG_BUS_VOTER extern int msm_bus_floor_vote(const char *name, u64 floor_hz); #endif #endif /* _INPUT_BOOSTER_H_ */