/* * Write out the attribute. */ static ssize_t msm_pm_mode_attr_show( struct kobject *kobj, struct kobj_attribute *attr, char *buf) { int ret = -EINVAL; int i; for (i = 0; i < MSM_PM_SLEEP_MODE_NR; i++) { struct kernel_param kp; unsigned int cpu; struct msm_pm_platform_data *mode; if (msm_pm_sleep_mode_labels[i] == NULL) continue; if (strcmp(kobj->name, msm_pm_sleep_mode_labels[i])) continue; cpu = GET_CPU_OF_ATTR(attr); mode = &msm_pm_modes[MSM_PM_MODE(cpu, i)]; if (!strcmp(attr->attr.name, msm_pm_mode_attr_labels[MSM_PM_MODE_ATTR_SUSPEND])) { u32 arg = mode->suspend_enabled; kp.arg = &arg; ret = param_get_ulong(buf, &kp); } else if (!strcmp(attr->attr.name, msm_pm_mode_attr_labels[MSM_PM_MODE_ATTR_IDLE])) { u32 arg = mode->idle_enabled; kp.arg = &arg; ret = param_get_ulong(buf, &kp); } else if (!strcmp(attr->attr.name, msm_pm_mode_attr_labels[MSM_PM_MODE_ATTR_LATENCY])) { u32 arg = mode->latency; kp.arg = &arg; ret = param_get_ulong(buf, &kp); } else if (!strcmp(attr->attr.name, msm_pm_mode_attr_labels[MSM_PM_MODE_ATTR_RESIDENCY])) { u32 arg = mode->residency; kp.arg = &arg; ret = param_get_ulong(buf, &kp); } break; } if (ret > 0) { strlcat(buf, "\n", PAGE_SIZE); ret++; } return ret; }
/* * Write out the attribute. */ static ssize_t msm_pm_mode_attr_show( struct kobject *kobj, struct kobj_attribute *attr, char *buf) { int ret = -EINVAL; int i; for (i = 0; i < MSM_PM_SLEEP_MODE_NR; i++) { struct kernel_param kp; if (msm_pm_sleep_mode_labels[i] == NULL) continue; if (strcmp(kobj->name, msm_pm_sleep_mode_labels[i])) continue; if (!strcmp(attr->attr.name, MSM_PM_MODE_ATTR_SUSPEND_ENABLED)) { u32 arg = msm_pm_modes[i].suspend_enabled; kp.arg = &arg; ret = param_get_ulong(buf, &kp); } else if (!strcmp(attr->attr.name, MSM_PM_MODE_ATTR_IDLE_ENABLED)) { u32 arg = msm_pm_modes[i].idle_enabled; kp.arg = &arg; ret = param_get_ulong(buf, &kp); } else if (!strcmp(attr->attr.name, MSM_PM_MODE_ATTR_LATENCY)) { kp.arg = &msm_pm_modes[i].latency; ret = param_get_ulong(buf, &kp); } else if (!strcmp(attr->attr.name, MSM_PM_MODE_ATTR_RESIDENCY)) { kp.arg = &msm_pm_modes[i].residency; ret = param_get_ulong(buf, &kp); } break; } if (ret > 0) { strcat(buf, "\n"); ret++; } return ret; }
static int pwrio_val_get(char *buffer, const struct kernel_param *kp) { pwrio_val = pmc_readl(PMC_PWR_IO_DISABLE); return param_get_ulong(buffer, kp); }
static int pwrdet_val_get(char *buffer, const struct kernel_param *kp) { pwrdet_val = pmc_readl(PMC_PWR_DET_VAL); return param_get_ulong(buffer, kp); }