|
From: Hugo V. <hvw...@ya...> - 2005-07-04 14:00:59
|
Who knows where the patch went. Here:
diff -Naur linux-2.6.13.orig/drivers/char/keyboard.c
linux-2.6.13/drivers/char/keyboard.c
--- linux-2.6.13.orig/drivers/char/keyboard.c
2005-07-04 07:49:14.000000000 -0500
+++ linux-2.6.13/drivers/char/keyboard.c 2005-07-04
06:47:25.000000000 -0500
@@ -199,7 +199,7 @@
if (test_bit(EV_SND, dev->evbit)) {
if (test_bit(SND_TONE, dev->sndbit))
input_event(dev, EV_SND, SND_TONE, hz);
- if (test_bit(SND_BELL, dev->sndbit))
+ else if (test_bit(SND_BELL, handle->dev->sndbit))
input_event(dev, EV_SND, SND_BELL, 1);
}
if (ticks)
@@ -1128,6 +1128,7 @@
}
static char kbd_name[] = "kbd";
+static char spk_name[] = "spk";
/*
* When a keyboard (or other input device) is found,
the kbd_connect
@@ -1187,6 +1188,32 @@
kbd_refresh_leds(handle);
}
else if (test_bit(EV_SND, dev->evbit) && admin_vt &&
!admin_vt->beeper) {
+
+ /*
+ * We map the EV_SND-enabled device to all vt, with
as many handlers as needed
+ * I don't know if the behaviour of creating such
many handlers is acceptable
+ * here ?
+ * Jean-Daniel Pauget 2005-01-08
+ */
+ list_for_each_entry (vt, &vt_list, node)
+ if (!vt->beeper) {
+ if (!(handle = kmalloc(sizeof(struct
input_handle), GFP_KERNEL)))
+ continue;
+ memset(handle, 0, sizeof(struct input_handle));
+
+ handle->dev = dev;
+ handle->handler = handler;
+ handle->name = spk_name;
+ input_open_device(handle);
+ vt->beeper = handle;
+ handle->private = vt;
+ printk(KERN_INFO "keyboard.c
[%s] vc:%d-%d\n",
+ dev->name,
+ vt->first_vc + 1,
+ vt->first_vc + vt->vc_count);
+ vt_map_input(vt);
+ }
+
admin_vt->beeper = handle;
handle->private = admin_vt;
vt_map_input(admin_vt);
diff -Naur
linux-2.6.13.orig/drivers/i2c/chips/w83627hf.c
linux-2.6.13/drivers/i2c/chips/w83627hf.c
--- linux-2.6.13.orig/drivers/i2c/chips/w83627hf.c
2005-07-04 07:49:03.000000000 -0500
+++ linux-2.6.13/drivers/i2c/chips/w83627hf.c
2005-07-04 06:18:11.000000000 -0500
@@ -28,6 +28,7 @@
w83627hf 9 3 2 3 0x20 0x5ca3 no yes(LPC)
w83627thf 7 3 3 3 0x90 0x5ca3 no yes(LPC)
w83637hf 7 3 3 3 0x80 0x5ca3 no yes(LPC)
+ w83687thf ? ? ? ? 0x90 0x5ca3 no yes(LPC)
w83697hf 8 2 2 2 0x60 0x5ca3 no yes(LPC)
For other winbond chips, and for i2c support in
the above chips,
@@ -61,7 +62,7 @@
static unsigned int normal_isa[] = { 0,
I2C_CLIENT_ISA_END };
/* Insmod parameters */
-SENSORS_INSMOD_4(w83627hf, w83627thf, w83697hf,
w83637hf);
+SENSORS_INSMOD_5(w83627hf, w83627thf, w83697hf,
w83637hf, w83687thf);
static int init = 1;
module_param(init, bool, 0);
@@ -133,6 +134,7 @@
#define W627THF_DEVID 0x82
#define W697_DEVID 0x60
#define W637_DEVID 0x70
+#define W687THF_DEVID 0x85
#define WINB_ACT_REG 0x30
#define WINB_BASE_REG 0x60
/* Constants specified below */
@@ -408,7 +410,8 @@
long in0;
if ((data->vrm_ovt & 0x01) &&
- (w83627thf == data->type || w83637hf ==
data->type))
+ (w83627thf == data->type || w83637hf == data->type
+ || w83687thf == data->type))
/* use VRM9 calculation */
in0 = (long)((reg * 488 + 70000 + 50) / 100);
@@ -449,7 +452,8 @@
down(&data->update_lock);
if ((data->vrm_ovt & 0x01) &&
- (w83627thf == data->type || w83637hf ==
data->type))
+ (w83627thf == data->type || w83637hf == data->type
+ || w83687thf == data->type))
/* use VRM9 calculation */
data->in_min[0] = (u8)(((val * 100) - 70000 + 244)
/ 488);
@@ -474,7 +478,8 @@
down(&data->update_lock);
if ((data->vrm_ovt & 0x01) &&
- (w83627thf == data->type || w83637hf ==
data->type))
+ (w83627thf == data->type || w83637hf == data->type
+ || w83687thf == data->type))
/* use VRM9 calculation */
data->in_max[0] = (u8)(((val * 100) - 70000 + 244)
/ 488);
@@ -841,7 +846,7 @@
down(&data->update_lock);
- if (data->type == w83627thf) {
+ if (data->type == w83627thf || data->type ==
w83687thf) {
/* bits 0-3 are reserved in 627THF */
data->pwm[nr - 1] = PWM_TO_REG(val) & 0xf0;
w83627hf_write_value(client,
@@ -980,7 +985,8 @@
if(val != W627_DEVID &&
val != W627THF_DEVID &&
val != W697_DEVID &&
- val != W637_DEVID) {
+ val != W637_DEVID &&
+ val != W687THF_DEVID) {
superio_exit();
return -ENODEV;
}
@@ -1041,6 +1047,8 @@
kind = w83627thf;
else if(val == W637_DEVID)
kind = w83637hf;
+ else if(val == W687THF_DEVID)
+ kind = w83687thf;
else {
dev_info(&adapter->dev,
"Unsupported chip (dev_id=0x%02X).\n", val);
@@ -1079,6 +1087,8 @@
client_name = "w83697hf";
} else if (kind == w83637hf) {
client_name = "w83637hf";
+ } else if (kind == w83687thf) {
+ client_name = "w83687thf";
}
/* Fill in the remaining client fields and put into
the global list */
@@ -1108,7 +1118,7 @@
device_create_file_in(new_client, 2);
device_create_file_in(new_client, 3);
device_create_file_in(new_client, 4);
- if (kind != w83627thf && kind != w83637hf) {
+ if (kind == w83627hf || kind == w83697hf) {
device_create_file_in(new_client, 5);
device_create_file_in(new_client, 6);
}
@@ -1142,7 +1152,7 @@
device_create_file_pwm(new_client, 1);
device_create_file_pwm(new_client, 2);
- if (kind == w83627thf || kind == w83637hf)
+ if (kind == w83627thf || kind == w83637hf || kind ==
w83687thf)
device_create_file_pwm(new_client, 3);
device_create_file_sensor(new_client, 1);
@@ -1316,12 +1326,13 @@
int lo = w83627hf_read_value(client,
W83781D_REG_VID_FANDIV);
int hi = w83627hf_read_value(client,
W83781D_REG_CHIPID);
data->vid = (lo & 0x0f) | ((hi & 0x01) << 4);
- } else if (w83627thf == data->type) {
+ } else if (w83627thf == data->type || w83687thf ==
data->type) {
data->vid = w83627thf_read_gpio5(client) & 0x3f;
}
/* Read VRM & OVT Config only once */
- if (w83627thf == data->type || w83637hf ==
data->type) {
+ if (w83627thf == data->type || w83637hf ==
data->type
+ || w83687thf == data->type) {
data->vrm_ovt =
w83627hf_read_value(client,
W83627THF_REG_VRM_OVT_CFG);
data->vrm = (data->vrm_ovt & 0x01) ? 90 : 82;
@@ -1402,7 +1413,8 @@
for (i = 0; i <= 8; i++) {
/* skip missing sensors */
if (((data->type == w83697hf) && (i == 1)) ||
- ((data->type == w83627thf || data->type ==
w83637hf)
+ ((data->type == w83627thf || data->type ==
w83637hf
+ || data->type == w83687thf)
&& (i == 4 || i == 5)))
continue;
data->in[i] =
@@ -1425,7 +1437,7 @@
u8 tmp = w83627hf_read_value(client,
W836X7HF_REG_PWM(data->type, i));
/* bits 0-3 are reserved in 627THF */
- if (data->type == w83627thf)
+ if (data->type == w83627thf || data->type ==
w83687thf)
tmp &= 0xf0;
data->pwm[i - 1] = tmp;
if(i == 2 &&
diff -Naur
linux-2.6.13.orig/drivers/video/vesafb-thread.c
linux-2.6.13/drivers/video/vesafb-thread.c
--- linux-2.6.13.orig/drivers/video/vesafb-thread.c
2005-07-04 07:49:15.000000000 -0500
+++ linux-2.6.13/drivers/video/vesafb-thread.c
2005-07-04 06:30:12.000000000 -0500
@@ -540,7 +540,8 @@
vesafb_handle_tasks();
wait_event_interruptible(vesafb_wait,
!list_empty(&vesafb_task_list));
if (current->flags & PF_FREEZE)
- refrigerator(PF_FREEZE);
+ refrigerator();
+/* refrigerator(PF_FREEZE); */
if (signal_pending(current))
break;
____________________________________________________
Yahoo! Sports
Rekindle the Rivalries. Sign up for Fantasy Football
http://football.fantasysports.yahoo.com
|