View | Details | Raw Unified | Return to bug 308264
Collapse All | Expand All

(-)linux-2.6.22/drivers/misc/thinkpad_acpi.c (-7 / +18 lines)
Lines 2759-2765 static int __init brightness_init(struct Link Here
2759
	}
2759
	}
2760
	vdbg_printk(TPACPI_DBG_INIT, "brightness is supported\n");
2760
	vdbg_printk(TPACPI_DBG_INIT, "brightness is supported\n");
2761
2761
2762
	ibm_backlight_device->props.max_brightness = 7;
2762
	if (tp->model_str && strstr(tp->model_str, "61"))
2763
		printk (KERN_INFO "Found ThinkPad model: [TXZ]61, using 16 "
2764
			"brightness levels\n");
2765
		ibm_backlight_device->props.max_brightness = 15;
2766
	else
2767
		ibm_backlight_device->props.max_brightness = 7;
2768
2763
	ibm_backlight_device->props.brightness = b;
2769
	ibm_backlight_device->props.brightness = b;
2764
	backlight_update_status(ibm_backlight_device);
2770
	backlight_update_status(ibm_backlight_device);
2765
2771
Lines 2821-2827 static int brightness_set(int value) Link Here
2821
	int cmos_cmd, inc, i, res;
2827
	int cmos_cmd, inc, i, res;
2822
	int current_value;
2828
	int current_value;
2823
2829
2824
	if (value > 7)
2830
	if (value > ibm_backlight_device->props.max_brightness)
2825
		return -EINVAL;
2831
		return -EINVAL;
2826
2832
2827
	res = mutex_lock_interruptible(&brightness_mutex);
2833
	res = mutex_lock_interruptible(&brightness_mutex);
Lines 2864-2873 static int brightness_read(char *p) Link Here
2864
	if ((level = brightness_get(NULL)) < 0) {
2870
	if ((level = brightness_get(NULL)) < 0) {
2865
		len += sprintf(p + len, "level:\t\tunreadable\n");
2871
		len += sprintf(p + len, "level:\t\tunreadable\n");
2866
	} else {
2872
	} else {
2867
		len += sprintf(p + len, "level:\t\t%d\n", level & 0x7);
2873
		len += sprintf(p + len, "level:\t\t%d\n", level
2874
			       & ibm_backlight_device->props.max_brightness);
2868
		len += sprintf(p + len, "commands:\tup, down\n");
2875
		len += sprintf(p + len, "commands:\tup, down\n");
2869
		len += sprintf(p + len, "commands:\tlevel <level>"
2876
		len += sprintf(p + len, "commands:\tlevel <level>"
2870
			       " (<level> is 0-7)\n");
2877
			       " (<level> is 0-%d)\n",
2878
			       ibm_backlight_device->props.max_brightness);
2871
	}
2879
	}
2872
2880
2873
	return len;
2881
	return len;
Lines 2882-2895 static int brightness_write(char *buf) Link Here
2882
	while ((cmd = next_cmd(&buf))) {
2890
	while ((cmd = next_cmd(&buf))) {
2883
		if ((level = brightness_get(NULL)) < 0)
2891
		if ((level = brightness_get(NULL)) < 0)
2884
			return level;
2892
			return level;
2885
		level &= 7;
2893
		level &= ibm_backlight_device->props.max_brightness;
2886
2894
2887
		if (strlencmp(cmd, "up") == 0) {
2895
		if (strlencmp(cmd, "up") == 0) {
2888
			new_level = level == 7 ? 7 : level + 1;
2896
			if (new_level < ibm_backlight_device->props.max_brightness)
2897
				new_level = level + 1;
2898
			else
2899
				new_level = ibm_backlight_device->props.max_brightness;
2889
		} else if (strlencmp(cmd, "down") == 0) {
2900
		} else if (strlencmp(cmd, "down") == 0) {
2890
			new_level = level == 0 ? 0 : level - 1;
2901
			new_level = level == 0 ? 0 : level - 1;
2891
		} else if (sscanf(cmd, "level %d", &new_level) == 1 &&
2902
		} else if (sscanf(cmd, "level %d", &new_level) == 1 &&
2892
			   new_level >= 0 && new_level <= 7) {
2903
			   new_level >= 0 && new_level <= ibm_backlight_device->props.max_brightness) {
2893
			/* new_level set */
2904
			/* new_level set */
2894
		} else
2905
		} else
2895
			return -EINVAL;
2906
			return -EINVAL;

Return to bug 308264