static ssize_t tuning_show(struct device *dev, struct device_attribute *attr, char *buf) { struct mdnie_info *mdnie = dev_get_drvdata(dev); char *pos = buf; struct mdnie_table *table = NULL; int i, idx; pos += sprintf(pos, "++ %s: %s\n", __func__, mdnie->path); if (!mdnie->tuning) { pos += sprintf(pos, "tunning mode is off\n"); goto exit; } if (strncmp(mdnie->path, MDNIE_SYSFS_PREFIX, sizeof(MDNIE_SYSFS_PREFIX) - 1)) { pos += sprintf(pos, "file path is invalid, %s\n", mdnie->path); goto exit; } table = mdnie_find_table(mdnie); if (!IS_ERR_OR_NULL(table) && !IS_ERR_OR_NULL(table->name)) { mdnie_request_table(mdnie->path, table); for (idx = 0; table->seq[idx].len; idx++) { for (i = 0; i < table->seq[idx].len; i++) pos += sprintf(pos, "0x%02x ", table->seq[idx].cmd[i]); } pos += sprintf(pos, "\n"); } exit: pos += sprintf(pos, "-- %s\n", __func__); return pos - buf; }
/* Temporary solution: Do not use this sysfs as official purpose */ static ssize_t mdnie_show(struct device *dev, struct device_attribute *attr, char *buf) { struct mdnie_info *mdnie = dev_get_drvdata(dev); char *pos = buf; struct mdnie_table *table = NULL; int i, j; u8 *buffer; if (!mdnie->enable) { dev_err(mdnie->dev, "mdnie state is off\n"); goto exit; } table = mdnie_find_table(mdnie); for (i = 0; i < MDNIE_CMD_MAX; i++) { if (IS_ERR_OR_NULL(table->tune[i].sequence)) { dev_err(mdnie->dev, "mdnie sequence %s is null, %lx\n", table->name, (unsigned long)table->tune[i].sequence); goto exit; } } /* should be fixed later, or removed */ /* mdnie->ops.write(mdnie->data, table->tune[LEVEL1_KEY_UNLOCK].sequence, table->tune[LEVEL1_KEY_UNLOCK].size); */ pos += sprintf(pos, "+ %s\n", table->name); for (j = MDNIE_CMD1; j <= MDNIE_CMD2; j++) { buffer = kzalloc(table->tune[j].size, GFP_KERNEL); mdnie->ops.read(mdnie->data, table->tune[j].sequence[0], buffer, table->tune[j].size - 1); for (i = 0; i < table->tune[j].size - 1; i++) { pos += sprintf(pos, "%3d:\t0x%02x\t0x%02x", i + 1, table->tune[j].sequence[i+1], buffer[i]); if (table->tune[j].sequence[i+1] != buffer[i]) pos += sprintf(pos, "\t(X)"); pos += sprintf(pos, "\n"); } kfree(buffer); } pos += sprintf(pos, "- %s\n", table->name); /* mdnie->ops.write(mdnie->data, table->tune[LEVEL1_KEY_LOCK].sequence, table->tune[LEVEL1_KEY_LOCK].size); */ exit: return pos - buf; }
/* Temporary solution: Do not use this sysfs as official purpose */ static ssize_t mdnie_show(struct device *dev, struct device_attribute *attr, char *buf) { struct mdnie_info *mdnie = dev_get_drvdata(dev); char *pos = buf; struct mdnie_table *table = NULL; int i, j; u8 *buffer; if (!mdnie->enable) { dev_err(mdnie->dev, "mdnie state is off\n"); goto exit; } table = mdnie_find_table(mdnie); for (i = 0; table->seq[i].len; i++) { if (IS_ERR_OR_NULL(table->seq[i].cmd)) { dev_err(mdnie->dev, "mdnie sequence %s %dth command is null,\n", table->name, i); goto exit; } } pos += sprintf(pos, "+ %s\n", table->name); for (j = 0; table->seq[j].len; j++) { if (!table->update_flag[j]) { mdnie->ops.write(mdnie->data, &table->seq[j], 1); continue; } buffer = kzalloc(table->seq[j].len, GFP_KERNEL); mdnie->ops.read(mdnie->data, table->seq[j].cmd[0], buffer, table->seq[j].len - 1); pos += sprintf(pos, " 0:\t0x%02x\t0x%02x\n", table->seq[j].cmd[0], table->seq[j].cmd[0]); for (i = 0; i < table->seq[j].len - 1; i++) { pos += sprintf(pos, "%3d:\t0x%02x\t0x%02x", i + 1, table->seq[j].cmd[i+1], buffer[i]); if (table->seq[j].cmd[i+1] != buffer[i]) pos += sprintf(pos, "\t(X)"); pos += sprintf(pos, "\n"); } kfree(buffer); } pos += sprintf(pos, "- %s\n", table->name); exit: return pos - buf; }
static ssize_t sensorRGB_store(struct device *dev, struct device_attribute *attr, const char *buf, size_t count) { struct mdnie_info *mdnie = dev_get_drvdata(dev); struct mdnie_table *table = NULL; unsigned int white_red, white_green, white_blue; int ret; struct mdnie_scr_info *scr_info = mdnie->tune->scr_info; ret = sscanf(buf, "%d %d %d" , &white_red, &white_green, &white_blue); if (ret < 0) return ret; if (mdnie->enable && (mdnie->accessibility == ACCESSIBILITY_OFF) && (mdnie->mode == AUTO) && ((mdnie->scenario == BROWSER_MODE) || (mdnie->scenario == EBOOK_MODE))) { dev_info(dev, "%s, white_r %d, white_g %d, white_b %d\n", __func__, white_red, white_green, white_blue); table = mdnie_find_table(mdnie); memcpy(&(mdnie->table_buffer), table, sizeof(struct mdnie_table)); memcpy(mdnie->sequence_buffer, table->seq[scr_info->index].cmd, table->seq[scr_info->index].len); mdnie->table_buffer.seq[scr_info->index].cmd = mdnie->sequence_buffer; mdnie->table_buffer.seq[scr_info->index].cmd [scr_info->white_r] = (unsigned char)white_red; mdnie->table_buffer.seq[scr_info->index].cmd [scr_info->white_g] = (unsigned char)white_green; mdnie->table_buffer.seq[scr_info->index].cmd [scr_info->white_b] = (unsigned char)white_blue; mdnie->white_r = white_red; mdnie->white_g = white_green; mdnie->white_b = white_blue; mdnie_update_sequence(mdnie, &(mdnie->table_buffer)); } return count; }
static void mdnie_update(struct mdnie_info *mdnie) { struct mdnie_table *table = NULL; if (!mdnie->enable) { dev_err(mdnie->dev, "mdnie state is off\n"); return; } table = mdnie_find_table(mdnie); if (!IS_ERR_OR_NULL(table) && !IS_ERR_OR_NULL(table->name)) { mdnie_update_sequence(mdnie, table); dev_info(mdnie->dev, "%s\n", table->name); mdnie->white_r = table->tune[MDNIE_CMD1].sequence[MDNIE_WHITE_R]; mdnie->white_g = table->tune[MDNIE_CMD1].sequence[MDNIE_WHITE_G]; mdnie->white_b = table->tune[MDNIE_CMD1].sequence[MDNIE_WHITE_B]; } return; }
static void mdnie_update(struct mdnie_info *mdnie) { struct mdnie_table *table = NULL; struct mdnie_scr_info *scr_info = mdnie->tune->scr_info; if (!mdnie->enable) { dev_err(mdnie->dev, "mdnie state is off\n"); return; } table = mdnie_find_table(mdnie); if (!IS_ERR_OR_NULL(table) && !IS_ERR_OR_NULL(table->name)) { mdnie_update_sequence(mdnie, table); dev_info(mdnie->dev, "%s\n", table->name); mdnie->white_r = table->seq[scr_info->index].cmd[scr_info->white_r]; mdnie->white_g = table->seq[scr_info->index].cmd[scr_info->white_g]; mdnie->white_b = table->seq[scr_info->index].cmd[scr_info->white_b]; } return; }