static ssize_t tuner_store(struct device * dev, struct device_attribute * attr, const char * buf, size_t size)
{
	int new_r, new_g, new_b;

	sscanf(buf, "%d %d %d", &new_r, &new_g, &new_b);

	if (new_r > 120 || new_r < 0 || new_g > 120 || new_g < 0 || new_b > 120 || new_b < 0) {
		new_r = new_g = new_b = 60;
		pr_err("Master tuner out of bounds, reset!\n");
	}

	if (new_r != tuner[0]) {
		tuner[0] = new_r;

		v255_val[0] = calc_r_shift(0);
		v1_val[0] = calc_r_shift(1);
		v171_val[0] = calc_r_shift(2);
		v87_val[0] = calc_r_shift(3);
#if !defined(CONFIG_FB_MSM_MIPI_SAMSUNG_OLED_VIDEO_WVGA_PT)
		v59_val[0] = calc_r_shift(4);
		v35_val[0] = calc_r_shift(5);
		v15_val[0] = calc_r_shift(6);
#else
		v43_val[0] = calc_r_shift(4);
		v19_val[0] = calc_r_shift(5);
#endif
		if (new_g == tuner[1] && new_b == tuner[2])
			goto load_colors;
		if (new_g == tuner[1])
			goto blue;
	}

	if (new_g != tuner[1]) {
		tuner[1] = new_g;

		v255_val[1] = calc_g_shift(0);
		v1_val[1] = calc_g_shift(1);
		v171_val[1] = calc_g_shift(2);
		v87_val[1] = calc_g_shift(3);
#if !defined(CONFIG_FB_MSM_MIPI_SAMSUNG_OLED_VIDEO_WVGA_PT)
		v59_val[1] = calc_g_shift(4);
		v35_val[1] = calc_g_shift(5);
		v15_val[1] = calc_g_shift(6);
#else
		v43_val[1] = calc_g_shift(4);
		v19_val[1] = calc_g_shift(5);
#endif
		if (new_b == tuner[2])
			goto load_colors;
	}

blue:
	if (new_b != tuner[2]) {
		tuner[2] = new_b;

		v255_val[2] = calc_b_shift(0);
		v1_val[2] = calc_b_shift(1);
		v171_val[2] = calc_b_shift(2);
		v87_val[2] = calc_b_shift(3);
#if !defined(CONFIG_FB_MSM_MIPI_SAMSUNG_OLED_VIDEO_WVGA_PT)
		v59_val[2] = calc_b_shift(4);
		v35_val[2] = calc_b_shift(5);
		v15_val[2] = calc_b_shift(6);
#else
		v43_val[2] = calc_b_shift(4);
		v19_val[2] = calc_b_shift(5);
#endif
load_colors:
		pr_debug("New master tuner: %d %d %d\n", new_r, new_g, new_b);
		panel_load_colors();
	}

	return size;
}
static ssize_t tuner_store(struct device * dev, struct device_attribute * attr, const char * buf, size_t size)
{
	int new_r, new_g, new_b;

	sscanf(buf, "%d %d %d", &new_r, &new_g, &new_b);

	if (new_r > 120 || new_r < 0 || new_g > 120 || new_g < 0 || new_b > 120 || new_b < 0) {
		new_r = new_g = new_b = 60;
		pr_err("Master tuner out of bounds, reset!\n");
	}

	if (new_r != tuner[0]) {
		tuner[0] = new_r;

		v255_val[0] = calc_r_shift(0);
		vt_val[0] = calc_r_shift(1);
		v203_val[0] = calc_r_shift(2);
		v151_val[0] = calc_r_shift(3);
		v87_val[0] = calc_r_shift(4);
		v51_val[0] = calc_r_shift(5);
		v35_val[0] = calc_r_shift(6);
		v23_val[0] = calc_r_shift(7);
		v11_val[0] = calc_r_shift(8);
		v3_val[0] = calc_r_shift(9);
		if (new_g == tuner[1] && new_b == tuner[2])
			goto load_colors;
		if (new_g == tuner[1])
			goto blue;
	}

	if (new_g != tuner[1]) {
		tuner[1] = new_g;

		v255_val[1] = calc_g_shift(0);
		vt_val[1] = calc_g_shift(1);
		v203_val[1] = calc_g_shift(2);
		v151_val[1] = calc_g_shift(3);
		v87_val[1] = calc_g_shift(4);
		v51_val[1] = calc_g_shift(5);
		v35_val[1] = calc_g_shift(6);
		v23_val[1] = calc_g_shift(7);
		v11_val[1] = calc_g_shift(8);
		v3_val[1] = calc_g_shift(9);
		if (new_b == tuner[2])
			goto load_colors;
	}

blue:
	if (new_b != tuner[2]) {
		tuner[2] = new_b;

		v255_val[2] = calc_b_shift(0);
		vt_val[2] = calc_b_shift(1);
		v203_val[2] = calc_b_shift(2);
		v151_val[2] = calc_b_shift(3);
		v87_val[2] = calc_b_shift(4);
		v51_val[2] = calc_b_shift(5);
		v35_val[2] = calc_b_shift(6);
		v23_val[2] = calc_b_shift(7);
		v11_val[2] = calc_b_shift(8);
		v3_val[2] = calc_b_shift(9);
load_colors:
		pr_debug("New master tuner: %d %d %d\n", new_r, new_g, new_b);
		panel_load_colors();
	}

	return size;
}