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 |