|
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; |