static ssize_t dcm_state_store(struct kobject *kobj, struct kobj_attribute *attr,const char *buf, size_t n) { char dcm_mode[20]; dcm_ver("\n=============== DCM State ================\n"); if (sscanf(buf, "%s", dcm_mode) == 1) { if (!strncmp(dcm_mode, "enable", 6)) { dcm_dbg("enable dcm\n"); dcm_enable_all(); dcm_ver("==========================================\n"); return n; } else if (!strncmp(dcm_mode, "disable", 7)) { dcm_dbg("disable dcm\n"); dcm_disable_all(); dcm_ver("==========================================\n"); return n; } else { dcm_err("bad argument!! argument should be \"enable\" or \"disable\"\n"); dcm_ver("==========================================\n"); } } else { dcm_err("bad argument!!\n"); dcm_ver("==========================================\n"); } return -EINVAL; }
/* * mt65xx_mon_deinit: De-initialize the monitor. * Return 0. */ int mt65xx_mon_deinit(void) { // extern void dcm_enable_all(void); BM_DeInit(); /* if (mt6577_mon_log_buff) { vfree(mt6577_mon_log_buff); mt6577_mon_log_buff = 0; } */ // enable system DCM dcm_enable_all(); return 0; }
void mt6577_dcm_init(void) { int ret = 0; #ifdef CONFIG_LOCAL_TIMERS GPT_CONFIG gpt_config = { .num = WAKEUP_GPT, .mode = GPT_ONE_SHOT, .clkSrc = GPT_CLK_SRC_SYS, .clkDiv = 0x0000, .bIrqEnable = true, .u4CompareL = 0x0, }; #endif dcm_info("[%s]: enable HW dcm\n", __func__); dcm_enable_all(); chip_ver = (get_chip_eco_ver() == CHIP_E1) ? 1 : 0; memset(dpidle_block_mask, 0, MT65XX_CLOCK_CATEGORY_COUNT * sizeof(unsigned int)); #ifdef CONFIG_LOCAL_TIMERS GPT_Init(gpt_config.num, NULL); if (GPT_Config(gpt_config) == FALSE) { dcm_err("[%s]: config GPT%d failed\n", __func__, gpt_config.num); } #endif ret = sysfs_create_file(power_kobj, &dcm_state_attr.attr); ret = sysfs_create_file(power_kobj, &idle_state_attr.attr); ret = sysfs_create_file(power_kobj, &dpidle_state_attr.attr); if (ret) { dcm_err("[%s]: create sysfs failed\n", __func__); } } void mt6577_dcm_exit(void) { dcm_info("[%s]: disable HW dcm\n", __func__); dcm_disable_all(); }