You can subscribe to this list here.
2001 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
(135) |
Nov
(123) |
Dec
(83) |
---|---|---|---|---|---|---|---|---|---|---|---|---|
2002 |
Jan
(244) |
Feb
(72) |
Mar
(221) |
Apr
(91) |
May
(104) |
Jun
(93) |
Jul
(78) |
Aug
(1) |
Sep
(1) |
Oct
(29) |
Nov
(98) |
Dec
(20) |
2003 |
Jan
|
Feb
(21) |
Mar
|
Apr
(1) |
May
|
Jun
|
Jul
|
Aug
(18) |
Sep
(18) |
Oct
(23) |
Nov
(12) |
Dec
(6) |
2004 |
Jan
(2) |
Feb
(32) |
Mar
|
Apr
(12) |
May
(11) |
Jun
(11) |
Jul
|
Aug
(9) |
Sep
|
Oct
(15) |
Nov
|
Dec
|
2005 |
Jan
|
Feb
(2) |
Mar
(11) |
Apr
(6) |
May
(1) |
Jun
(9) |
Jul
(7) |
Aug
|
Sep
|
Oct
|
Nov
|
Dec
(1) |
2006 |
Jan
|
Feb
(1) |
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
2007 |
Jan
|
Feb
(2) |
Mar
|
Apr
(25) |
May
(2) |
Jun
|
Jul
(5) |
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
2008 |
Jan
|
Feb
|
Mar
(1) |
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
2009 |
Jan
|
Feb
(1) |
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
2010 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
(13) |
Oct
|
Nov
(2) |
Dec
(2) |
2011 |
Jan
|
Feb
|
Mar
(10) |
Apr
(10) |
May
(1) |
Jun
(6) |
Jul
|
Aug
(2) |
Sep
(5) |
Oct
|
Nov
|
Dec
|
From: johann d. <jd...@us...> - 2002-02-08 00:35:36
|
Update of /cvsroot/linuxconsole/ruby/linux/drivers/input/joystick/iforce In directory usw-pr-cvs1:/tmp/cvs-serv7484 Modified Files: iforce-packets.c iforce-usb.c Log Message: Fixes to the asynchronous sending of packets. USB should be less terrible than it used to be, RS232 is certainly broken. Index: iforce-packets.c =================================================================== RCS file: /cvsroot/linuxconsole/ruby/linux/drivers/input/joystick/iforce/iforce-packets.c,v retrieving revision 1.9 retrieving revision 1.10 diff -u -d -r1.9 -r1.10 --- iforce-packets.c 2 Feb 2002 19:28:35 -0000 1.9 +++ iforce-packets.c 8 Feb 2002 00:35:34 -0000 1.10 @@ -1,8 +1,8 @@ /* * $Id$ * - * Copyright (c) 2000-2001 Vojtech Pavlik <vo...@uc...> - * Copyright (c) 2001 Johann Deneux <de...@if...> + * Copyright (c) 2000-2002 Vojtech Pavlik <vo...@uc...> + * Copyright (c) 2001-2002 Johann Deneux <de...@if...> * * USB/RS232 I-Force joysticks and wheels. */ @@ -110,9 +110,9 @@ #ifdef IFORCE_USB case IFORCE_USB: - /* FIXME: iforce->out.status should not be checked outside - * the completion handler */ - if (iforce->usbdev && empty && !iforce->out.status) { + if (iforce->usbdev && empty && + !test_and_set_bit(IFORCE_XMIT_RUNNING, iforce->xmit_flag s)) { + iforce_usb_xmit(iforce); } break; Index: iforce-usb.c =================================================================== RCS file: /cvsroot/linuxconsole/ruby/linux/drivers/input/joystick/iforce/iforce-usb.c,v retrieving revision 1.11 retrieving revision 1.12 diff -u -d -r1.11 -r1.12 --- iforce-usb.c 3 Feb 2002 19:37:37 -0000 1.11 +++ iforce-usb.c 8 Feb 2002 00:35:34 -0000 1.12 @@ -37,6 +37,7 @@ spin_lock_irqsave(&iforce->xmit_lock, flags); if (iforce->xmit.head == iforce->xmit.tail) { + clear_bit(IFORCE_XMIT_RUNNING, iforce->xmit_flags); spin_unlock_irqrestore(&iforce->xmit_lock, flags); return; } @@ -46,7 +47,7 @@ n = iforce->xmit.buf[iforce->xmit.tail]; XMIT_INC(iforce->xmit.tail, 1); - iforce->out.transfer_buffer_length = n + 2; + iforce->out.transfer_buffer_length = n + 1; iforce->out.dev = iforce->usbdev; /* Copy rest of data then */ @@ -67,6 +68,9 @@ printk(KERN_WARNING "iforce.c: iforce_usb_xmit: usb_submit_urb failed %d\n", n); } + /* The IFORCE_XMIT_RUNNING bit is not cleared here. That's intended. + * As long as the urb completion handler is not called, the transmiting + * is considered to be running */ spin_unlock_irqrestore(&iforce->xmit_lock, flags); } |
From: johann d. <jd...@us...> - 2002-02-03 20:04:42
|
Update of /cvsroot/linuxconsole/ruby/linux/drivers/input/joystick/iforce In directory usw-pr-cvs1:/tmp/cvs-serv16372 Modified Files: iforce-main.c Log Message: Set buttons for avb mag turbo racing wheel. Index: iforce-main.c =================================================================== RCS file: /cvsroot/linuxconsole/ruby/linux/drivers/input/joystick/iforce/iforce-main.c,v retrieving revision 1.11 retrieving revision 1.12 diff -u -d -r1.11 -r1.12 --- iforce-main.c 2002/02/03 19:37:37 1.11 +++ iforce-main.c 2002/02/03 20:04:39 1.12 @@ -39,6 +39,8 @@ BTN_BASE2, BTN_BASE3, BTN_BASE4, BTN_BASE5, BTN_A, BTN_B, BTN_C, -1 }; static signed short btn_avb_tw[] = { BTN_TRIGGER, BTN_THUMB, BTN_TOP, BTN_TOP2, BTN_BASE, BTN_BASE2, BTN_BASE3, BTN_BASE4, -1 }; +static signed short btn_avb_wheel[] = { BTN_GEAR_DOWN, BTN_GEAR_UP, BTN_BASE, BTN_BASE2, BTN_BASE3, + BTN_BASE4, BTN_BASE5, BTN_BASE6, -1 }; static signed short abs_joystick[] = { ABS_X, ABS_Y, ABS_THROTTLE, ABS_HAT0X, ABS_HAT0Y, -1 }; static signed short abs_joystick2[] = { ABS_X, ABS_Y, ABS_THROTTLE, ABS_RUDDER, ABS_HAT0X, ABS_HAT0Y, -1 }; static signed short abs_wheel[] = { ABS_WHEEL, ABS_GAS, ABS_BRAKE, ABS_HAT0X, ABS_HAT0Y, -1 }; @@ -50,7 +52,7 @@ { 0x046d, 0xc281, "Logitech WingMan Force", btn_joystick, abs_joystick, ff_iforce }, { 0x046d, 0xc291, "Logitech WingMan Formula Force", btn_wheel, abs_wheel, ff_iforce }, { 0x05ef, 0x020a, "AVB Top Shot Pegasus", btn_joystick, abs_joystick2, ff_iforce }, - { 0x05ef, 0x8884, "AVB Mag Turbo Force", btn_wheel, abs_wheel, ff_iforce }, + { 0x05ef, 0x8884, "AVB Mag Turbo Force", btn_avb_wheel, abs_wheel, ff_iforce }, { 0x05ef, 0x8888, "AVB Top Shot Force Feedback Racing Wheel", btn_avb_tw, abs_wheel, ff_iforce }, { 0x06f8, 0x0001, "Guillemot Race Leader Force Feedback", btn_wheel, abs_wheel, ff_iforce }, { 0x06f8, 0x0004, "Guillemot Force Feedback Racing Wheel", btn_wheel, abs_wheel, ff_iforce }, @@ -396,6 +398,7 @@ break; iforce->type = iforce_device + i; + iforce->dev.name = iforce->type->name; /* * Set input device bitfields and ranges. |
From: johann d. <jd...@us...> - 2002-02-03 20:03:13
|
Update of /cvsroot/linuxconsole/ruby/linux/include/linux In directory usw-pr-cvs1:/tmp/cvs-serv15928 Modified Files: input.h Log Message: Added two button types (for wheels). Index: input.h =================================================================== RCS file: /cvsroot/linuxconsole/ruby/linux/include/linux/input.h,v retrieving revision 1.61 retrieving revision 1.62 diff -u -d -r1.61 -r1.62 --- input.h 2002/02/02 19:32:41 1.61 +++ input.h 2002/02/03 20:03:11 1.62 @@ -393,6 +393,10 @@ #define BTN_STYLUS 0x14b #define BTN_STYLUS2 0x14c +#define BTN_WHEEL 0x150 +#define BTN_GEAR_DOWN 0x150 +#define BTN_GEAR_UP 0x151 + #define KEY_MAX 0x1ff /* |
From: johann d. <jd...@us...> - 2002-02-03 19:38:24
|
Update of /cvsroot/linuxconsole/ruby/linux/drivers/input/joystick/iforce In directory usw-pr-cvs1:/tmp/cvs-serv9271/iforce Added Files: Config.help Log Message: Moved help text for I-Force devices. --- NEW FILE: Config.help --- CONFIG_JOYSTICK_IFORCE_USB Say Y here if you have an I-Force joystick or steering wheel connected to your USB port. This driver is also available as a module ( = code which can be inserted in and removed from the running kernel whenever you want). The module will be called iforce.o. If you want to compile it as a module, say M here and read <file:Documentation/modules.txt>. CONFIG_JOYSTICK_IFORCE_232 Say Y here if you have an I-Force joystick or steering wheel connected to your serial (COM) port. This driver is also available as a module ( = code which can be inserted in and removed from the running kernel whenever you want). The module will be called iforce.o. If you want to compile it as a module, say M here and read <file:Documentation/modules.txt>. |
From: johann d. <jd...@us...> - 2002-02-03 19:38:24
|
Update of /cvsroot/linuxconsole/ruby/linux/drivers/input/joystick In directory usw-pr-cvs1:/tmp/cvs-serv9271 Modified Files: Config.help Log Message: Moved help text for I-Force devices. Index: Config.help =================================================================== RCS file: /cvsroot/linuxconsole/ruby/linux/drivers/input/joystick/Config.help,v retrieving revision 1.1 retrieving revision 1.2 diff -u -d -r1.1 -r1.2 --- Config.help 2002/01/26 19:20:36 1.1 +++ Config.help 2002/02/03 19:38:21 1.2 @@ -103,24 +103,6 @@ The module will be called tmdc.o. If you want to compile it as a module, say M here and read <file:Documentation/modules.txt>. -CONFIG_JOYSTICK_IFORCE_USB - Say Y here if you have an I-Force joystick or steering wheel - connected to your USB port. - - This driver is also available as a module ( = code which can be - inserted in and removed from the running kernel whenever you want). - The module will be called iforce.o. If you want to compile it as a - module, say M here and read <file:Documentation/modules.txt>. - -CONFIG_JOYSTICK_IFORCE_232 - Say Y here if you have an I-Force joystick or steering wheel - connected to your serial (COM) port. - - This driver is also available as a module ( = code which can be - inserted in and removed from the running kernel whenever you want). - The module will be called iforce.o. If you want to compile it as a - module, say M here and read <file:Documentation/modules.txt>. - CONFIG_JOYSTICK_WARRIOR Say Y here if you have a Logitech WingMan Warrior joystick connected to your computer's serial port. |
From: johann d. <jd...@us...> - 2002-02-03 19:38:02
|
Update of /cvsroot/linuxconsole/ruby/linux/drivers/input In directory usw-pr-cvs1:/tmp/cvs-serv8258 Modified Files: evdev.c Log Message: Removed useless open_for_write flag in struct evdev. Index: evdev.c =================================================================== RCS file: /cvsroot/linuxconsole/ruby/linux/drivers/input/evdev.c,v retrieving revision 1.45 retrieving revision 1.46 diff -u -d -r1.45 -r1.46 --- evdev.c 2002/01/30 00:16:58 1.45 +++ evdev.c 2002/02/03 19:34:38 1.46 @@ -40,7 +40,6 @@ struct evdev { int exist; int open; - int open_for_write; int minor; char name[16]; struct input_handle handle; |
From: johann d. <jd...@us...> - 2002-02-03 19:37:40
|
Update of /cvsroot/linuxconsole/ruby/linux/drivers/input/joystick/iforce In directory usw-pr-cvs1:/tmp/cvs-serv8775 Modified Files: iforce-main.c iforce-usb.c iforce.h Log Message: Got rid of name and open members of struct iforce. They duplicate data available somewhere else. Small USB fixes. Index: iforce-main.c =================================================================== RCS file: /cvsroot/linuxconsole/ruby/linux/drivers/input/joystick/iforce/iforce-main.c,v retrieving revision 1.10 retrieving revision 1.11 diff -u -d -r1.10 -r1.11 --- iforce-main.c 2002/02/02 19:28:35 1.10 +++ iforce-main.c 2002/02/03 19:37:37 1.11 @@ -221,23 +221,21 @@ { struct iforce *iforce = dev->private; +printk(KERN_DEBUG "In iforce_open\n"); + switch (iforce->bus) { #ifdef IFORCE_USB case IFORCE_USB: - if (!iforce->open) { - iforce->irq.dev = iforce->usbdev; - if (usb_submit_urb(&iforce->irq)) - return -EIO; - } +printk(KERN_DEBUG "Submitting irq URB\n"); + iforce->irq.dev = iforce->usbdev; + if (usb_submit_urb(&iforce->irq)) + return -EIO; break; #endif } /* Enable force feedback */ - if (!iforce->open) - iforce_send_packet(iforce, FF_CMD_ENABLE, "\004"); - - iforce->open++; + iforce_send_packet(iforce, FF_CMD_ENABLE, "\004"); return 0; } @@ -275,26 +273,24 @@ /* Disable force feedback playback */ iforce_send_packet(iforce, FF_CMD_ENABLE, "\001"); - switch (iforce->bus) { #ifdef IFORCE_USB case IFORCE_USB: - if (!--iforce->open) { - usb_unlink_urb(&iforce->irq); - usb_unlink_urb(&iforce->out); +printk(KERN_DEBUG "Unlinking irq URB\n"); + usb_unlink_urb(&iforce->irq); + usb_unlink_urb(&iforce->out); - /* The device was unplugged before the file - * was released */ - if (iforce->usbdev == NULL) { - iforce_delete(iforce); - } + /* The device was unplugged before the file + * was released */ + if (iforce->usbdev == NULL) { + iforce_delete_device(iforce); } - break; + break; #endif } } -void iforce_delete(struct iforce *iforce) +void iforce_delete_device(struct iforce *iforce) { #ifdef IFORCE_USB iforce_usb_delete(iforce); @@ -351,7 +347,7 @@ if (i == 20) { /* 5 seconds */ printk(KERN_ERR "iforce.c: Timeout waiting for response from device.\n"); - iforce_delete(iforce); + iforce_delete_device(iforce); return -1; } @@ -401,8 +397,6 @@ iforce->type = iforce_device + i; - strncpy(iforce->name, iforce->type->name, 64); - /* * Set input device bitfields and ranges. */ @@ -462,6 +456,8 @@ */ input_register_device(&iforce->dev); + + printk(KERN_DEBUG "iforce->dev.open = %p\n", iforce->dev.open); printk(KERN_INFO "input: %s [%d effects, %ld bytes memory]\n", iforce->dev.name, iforce->dev.ff_effects_max, Index: iforce-usb.c =================================================================== RCS file: /cvsroot/linuxconsole/ruby/linux/drivers/input/joystick/iforce/iforce-usb.c,v retrieving revision 1.10 retrieving revision 1.11 diff -u -d -r1.10 -r1.11 --- iforce-usb.c 2002/02/02 19:28:35 1.10 +++ iforce-usb.c 2002/02/03 19:37:37 1.11 @@ -1,8 +1,8 @@ /* * $Id$ * - * Copyright (c) 2000-2001 Vojtech Pavlik <vo...@uc...> - * Copyright (c) 2001 Johann Deneux <de...@if...> + * Copyright (c) 2000-2002 Vojtech Pavlik <vo...@uc...> + * Copyright (c) 2001-2002 Johann Deneux <de...@if...> * * USB/RS232 I-Force joysticks and wheels. */ @@ -118,14 +118,13 @@ iforce->cr.wIndex = 0; iforce->cr.wLength = 16; - /* FIXME: use lower-case versions instead with 2.5 */ - FILL_INT_URB(&iforce->irq, dev, usb_rcvintpipe(dev, epirq->bEndpointAddress), + usb_fill_int_urb(&iforce->irq, dev, usb_rcvintpipe(dev, epirq->bEndpointAddress), iforce->data, 16, iforce_usb_irq, iforce, epirq->bInterval); - FILL_BULK_URB(&iforce->out, dev, usb_sndbulkpipe(dev, epout->bEndpointAddress), + usb_fill_bulk_urb(&iforce->out, dev, usb_sndbulkpipe(dev, epout->bEndpointAddress), iforce + 1, 32, iforce_usb_out, iforce); - FILL_CONTROL_URB(&iforce->ctrl, dev, usb_rcvctrlpipe(dev, 0), + usb_fill_control_urb(&iforce->ctrl, dev, usb_rcvctrlpipe(dev, 0), (void*) &iforce->cr, iforce->edata, 16, iforce_usb_ctrl, iforce); if (iforce_init_device(iforce)) { @@ -147,11 +146,13 @@ static void iforce_usb_disconnect(struct usb_device *dev, void *ptr) { struct iforce *iforce = ptr; + int open = iforce->dev.handle->open; + iforce->usbdev = NULL; input_unregister_device(&iforce->dev); - if (iforce->open <= 0) - iforce_delete(iforce); + if (!open) + iforce_delete_device(iforce); } static struct usb_device_id iforce_usb_ids [] = { Index: iforce.h =================================================================== RCS file: /cvsroot/linuxconsole/ruby/linux/drivers/input/joystick/iforce/iforce.h,v retrieving revision 1.8 retrieving revision 1.9 diff -u -d -r1.8 -r1.9 --- iforce.h 2002/02/02 19:28:35 1.8 +++ iforce.h 2002/02/03 19:37:37 1.9 @@ -122,8 +122,6 @@ struct iforce { struct input_dev dev; /* Input device interface */ struct iforce_device *type; - char name[64]; - int open; int bus; unsigned char data[IFORCE_MAX_LENGTH]; @@ -177,7 +175,7 @@ /* iforce-main.c */ int iforce_init_device(struct iforce *iforce); -void iforce_delete(struct iforce *iforce); +void iforce_delete_device(struct iforce *iforce); /* iforce-packets.c */ int iforce_control_playback(struct iforce*, u16 id, unsigned int); |
From: Vojtech P. <vo...@us...> - 2002-02-02 22:26:47
|
Update of /cvsroot/linuxconsole/ruby/linux/drivers/input/serio In directory usw-pr-cvs1:/tmp/cvs-serv27871 Modified Files: i8042.c i8042.h q40kbd.c Log Message: i8042.c: Make timeout longer and bus speed independent. q40kbd.c: Remove dummy write method. atkbd.c now detects that and doesn't try detecting/initalizing the keyboard. Index: i8042.c =================================================================== RCS file: /cvsroot/linuxconsole/ruby/linux/drivers/input/serio/i8042.c,v retrieving revision 1.16 retrieving revision 1.17 diff -u -d -r1.16 -r1.17 --- i8042.c 2002/01/22 20:43:24 1.16 +++ i8042.c 2002/02/02 22:26:44 1.17 @@ -96,14 +96,20 @@ static int i8042_wait_read(void) { int i = 0; - while ((~inb(I8042_STATUS_REG) & I8042_STR_OBF) && (i < I8042_CTL_TIMEOUT)) i++; + while ((~inb(I8042_STATUS_REG) & I8042_STR_OBF) && (i < I8042_CTL_TIMEOUT)) { + udelay(50); + i++; + } return -(i == I8042_CTL_TIMEOUT); } static int i8042_wait_write(void) { int i = 0; - while ((inb(I8042_STATUS_REG) & I8042_STR_IBF) && (i < I8042_CTL_TIMEOUT)) i++; + while ((inb(I8042_STATUS_REG) & I8042_STR_IBF) && (i < I8042_CTL_TIMEOUT)) { + udelay(50); + i++; + } return -(i == I8042_CTL_TIMEOUT); } @@ -181,14 +187,17 @@ spin_unlock_irqrestore(&i8042_lock, flags); +#ifdef I8042_DEBUG_IO + if (retval) + printk(KERN_DEBUG "i8042.c: -- i8042 (timeout) [%d]\n", + (int) (jiffies - i8042_start)); +#endif + return retval; } /* * i8042_kbd_write() sends a byte out through the keyboard interface. - * It also automatically refreshes the CTR value, since some i8042's - * trash their CTR after attempting to send data to an nonexistent - * device. */ static int i8042_kbd_write(struct serio *port, unsigned char c) Index: i8042.h =================================================================== RCS file: /cvsroot/linuxconsole/ruby/linux/drivers/input/serio/i8042.h,v retrieving revision 1.8 retrieving revision 1.9 diff -u -d -r1.8 -r1.9 --- i8042.h 2002/01/22 20:43:42 1.8 +++ i8042.h 2002/02/02 22:26:44 1.9 @@ -55,12 +55,12 @@ #define I8042_AUX_IRQ CONFIG_I8042_AUX_IRQ /* - * The speed of the i8042's varies. This timeout equals 100 ms on a system - * with 8.3 MHz i8042 clock, which should be most common. It should not need - * to be raised / lowered. + * This is in 50us units, the time we wait for the i8042 to react. This + * has to be long enough for the i8042 itself to timeout on sending a byte + * to a non-existent mouse. */ -#define I8042_CTL_TIMEOUT 83000 +#define I8042_CTL_TIMEOUT 10000 /* * Register numbers. Index: q40kbd.c =================================================================== RCS file: /cvsroot/linuxconsole/ruby/linux/drivers/input/serio/q40kbd.c,v retrieving revision 1.11 retrieving revision 1.12 diff -u -d -r1.11 -r1.12 --- q40kbd.c 2002/02/01 00:54:24 1.11 +++ q40kbd.c 2002/02/02 22:26:44 1.12 @@ -47,15 +47,10 @@ MODULE_DESCRIPTION("Q40 PS/2 keyboard controller driver"); MODULE_LICENSE("GPL"); -static inline void q40kbd_write(unsigned char val) -{ - /* No way to write to the keyboard! */ -} - static struct serio q40kbd_port = { type: SERIO_8042, - write: q40kbd_write, + write: NULL, name: "Q40 PS/2 kbd port", phys: "isa0060/serio0", }; |
From: Vojtech P. <vo...@us...> - 2002-02-02 22:23:38
|
Update of /cvsroot/linuxconsole/ruby/linux/drivers/input/keyboard In directory usw-pr-cvs1:/tmp/cvs-serv26858 Modified Files: atkbd.c Log Message: Add support for serio devices without a ->write method. The keyboard is automatically assumed present in that case. Index: atkbd.c =================================================================== RCS file: /cvsroot/linuxconsole/ruby/linux/drivers/input/keyboard/atkbd.c,v retrieving revision 1.31 retrieving revision 1.32 diff -u -d -r1.31 -r1.32 --- atkbd.c 2002/01/27 01:48:54 1.31 +++ atkbd.c 2002/02/02 22:23:35 1.32 @@ -258,6 +258,9 @@ struct atkbd *atkbd = dev->private; char param[2]; + if (!serio->write) + return -1; + switch (type) { case EV_LED: @@ -462,8 +465,10 @@ memset(atkbd, 0, sizeof(struct atkbd)); - atkbd->dev.evbit[0] = BIT(EV_KEY) | BIT(EV_LED) | BIT(EV_REP); - atkbd->dev.ledbit[0] = BIT(LED_NUML) | BIT(LED_CAPSL) | BIT(LED_SCROLLL); + if (serio->write) { + atkbd->dev.evbit[0] = BIT(EV_KEY) | BIT(EV_LED) | BIT(EV_REP); + atkbd->dev.ledbit[0] = BIT(LED_NUML) | BIT(LED_CAPSL) | BIT(LED_SCROLLL); + } else atkbd->dev.evbit[0] = BIT(EV_KEY) | BIT(EV_REP); atkbd->serio = serio; @@ -481,13 +486,20 @@ return; } - if (atkbd_probe(atkbd)) { - serio_close(serio); - kfree(atkbd); - return; + if (serio->write) { + + if (atkbd_probe(atkbd)) { + serio_close(serio); + kfree(atkbd); + return; + } + + atkbd->set = atkbd_set_3(atkbd); + + } else { + atkbd->set = 2; + atkbd->id = 0xab00; } - - atkbd->set = atkbd_set_3(atkbd); if (atkbd->set == 4) { atkbd->dev.ledbit[0] |= BIT(LED_COMPOSE) | BIT(LED_SUSPEND) | BIT(LED_SLEEP) | BIT(LED_MUTE); @@ -517,7 +529,8 @@ printk(KERN_INFO "input: %s on %s\n", atkbd->name, serio->phys); - atkbd_initialize(atkbd); + if (serio->write) + atkbd_initialize(atkbd); } |
From: johann d. <jd...@us...> - 2002-02-02 19:32:45
|
Update of /cvsroot/linuxconsole/ruby/linux/include/linux In directory usw-pr-cvs1:/tmp/cvs-serv19902 Modified Files: input.h Log Message: Renamed shape to envelope, interactive to condition. Removed FF_BTN, FF_ABS. Index: input.h =================================================================== RCS file: /cvsroot/linuxconsole/ruby/linux/include/linux/input.h,v retrieving revision 1.60 retrieving revision 1.61 diff -u -d -r1.60 -r1.61 --- input.h 2002/01/30 23:07:07 1.60 +++ input.h 2002/02/02 19:32:41 1.61 @@ -516,7 +516,7 @@ * * Ranges: * 0 <= __u16 <= 65535 - * -32767 <= __s16 <= +32767 ! Not -32768 for lower bound ! + * -32768 <= __s16 <= +32767 */ struct ff_replay { @@ -529,7 +529,7 @@ __u16 interval; /* Time to wait before an effect can be re-triggered (ms) */ }; -struct ff_shape { +struct ff_envelope { __u16 attack_length; /* Duration of attack (ms) */ __u16 attack_level; /* Level at beginning of attack */ __u16 fade_length; /* Duration of fade (ms) */ @@ -539,27 +539,27 @@ /* FF_CONSTANT */ struct ff_constant_effect { __s16 level; /* Strength of effect. Negative values are OK */ - struct ff_shape shape; + struct ff_envelope envelope; }; /* FF_RAMP */ struct ff_ramp_effect { __s16 start_level; __s16 end_level; - struct ff_shape shape; + struct ff_envelope envelope; }; /* FF_SPRING of FF_FRICTION */ -struct ff_interactive_effect { - __u16 right_saturation[2]; /* Max level when joystick is on the right */ - __u16 left_saturation[2]; /* Max level when joystick in on the left */ +struct ff_condition_effect { + __u16 right_saturation; /* Max level when joystick is on the right */ + __u16 left_saturation; /* Max level when joystick in on the left */ - __s16 right_coeff[2]; /* Indicates how fast the force grows when the + __s16 right_coeff; /* Indicates how fast the force grows when the joystick moves to the right */ - __s16 left_coeff[2]; /* Same for left side */ + __s16 left_coeff; /* Same for left side */ - __u16 deadband[2]; /* Size of area where no force is produced */ - __s16 center[2]; /* Position of dead zone */ + __u16 deadband; /* Size of area where no force is produced */ + __s16 center; /* Position of dead zone */ }; @@ -571,7 +571,7 @@ __s16 offset; /* Mean value of wave (roughly) */ __u16 phase; /* 'Horizontal' shift */ - struct ff_shape shape; + struct ff_envelope envelope; /* Only used if waveform == FF_CUSTOM */ __u32 custom_len; /* Number of samples */ @@ -604,24 +604,9 @@ struct ff_constant_effect constant; struct ff_ramp_effect ramp; struct ff_periodic_effect periodic; - struct ff_interactive_effect interactive; + struct ff_condition_effect condition[2]; /* One for each axis */ } u; }; - -/* - * Buttons that can trigger effects. Use for example FF_BTN(BTN_TRIGGER) to - * access the bitmap. - */ - -#define FF_BTN(x) ((x) - BTN_MISC + FF_BTN_OFFSET) -#define FF_BTN_OFFSET 0x00 - -/* - * Force feedback axis mappings. Use FF_ABS() to access the bitmap. - */ - -#define FF_ABS(x) ((x) + FF_ABS_OFFSET) -#define FF_ABS_OFFSET 0x40 /* * Force feedback effect types |
From: johann d. <jd...@us...> - 2002-02-02 19:28:38
|
Update of /cvsroot/linuxconsole/ruby/linux/drivers/input/joystick/iforce In directory usw-pr-cvs1:/tmp/cvs-serv18760 Modified Files: iforce-ff.c iforce-main.c iforce-packets.c iforce-usb.c iforce.h Log Message: Synced with latest API changes. USB fixes. Index: iforce-ff.c =================================================================== RCS file: /cvsroot/linuxconsole/ruby/linux/drivers/input/joystick/iforce/iforce-ff.c,v retrieving revision 1.8 retrieving revision 1.9 diff -u -d -r1.8 -r1.9 --- iforce-ff.c 2002/01/28 22:45:00 1.8 +++ iforce-ff.c 2002/02/02 19:28:35 1.9 @@ -1,8 +1,8 @@ /* * $Id$ * - * Copyright (c) 2000-2001 Vojtech Pavlik <vo...@uc...> - * Copyright (c) 2001 Johann Deneux <de...@if...> + * Copyright (c) 2000-2002 Vojtech Pavlik <vo...@uc...> + * Copyright (c) 2001-2002 Johann Deneux <de...@if...> * * USB/RS232 I-Force joysticks and wheels. */ @@ -101,10 +101,10 @@ } /* - * Uploads the part of an effect setting the shape of the force + * Uploads the part of an effect setting the envelope of the force */ -static int make_shape_modifier(struct iforce* iforce, +static int make_envelope_modifier(struct iforce* iforce, struct resource* mod_chunk, int no_alloc, u16 attack_duration, __s16 initial_level, u16 fade_duration, __s16 final_level) @@ -136,7 +136,7 @@ data[6] = HI(fade_duration); data[7] = HI(final_level); - iforce_send_packet(iforce, FF_CMD_SHAPE, data); + iforce_send_packet(iforce, FF_CMD_ENVELOPE, data); return 0; } @@ -145,7 +145,7 @@ * Component of spring, friction, inertia... effects */ -static int make_interactive_modifier(struct iforce* iforce, +static int make_condition_modifier(struct iforce* iforce, struct resource* mod_chunk, int no_alloc, __u16 rsat, __u16 lsat, __s16 rk, __s16 lk, u16 db, __s16 center) { @@ -179,8 +179,8 @@ data[8] = (100*rsat)>>16; data[9] = (100*lsat)>>16; - iforce_send_packet(iforce, FF_CMD_INTERACT, data); - iforce_dump_packet("interactive", FF_CMD_INTERACT, data); + iforce_send_packet(iforce, FF_CMD_CONDITION, data); + iforce_dump_packet("condition", FF_CMD_CONDITION, data); return 0; } @@ -195,25 +195,30 @@ } /* - * Analyse the changes in an effect, and tell if we need to send an interactive + * Analyse the changes in an effect, and tell if we need to send an condition * parameter packet */ -static int need_interactive_modifier(struct iforce* iforce, struct ff_effect* new) +static int need_condition_modifier(struct iforce* iforce, struct ff_effect* new) { int id = new->id; struct ff_effect* old = &iforce->core_effects[id].effect; + int ret=0; + int i; if (new->type != FF_SPRING && new->type != FF_FRICTION) { - printk(KERN_WARNING "iforce.c: bad effect type in need_interactive_modifier\n"); + printk(KERN_WARNING "iforce.c: bad effect type in need_condition_modifier\n"); return FALSE; } - return (old->u.interactive.right_saturation != new->u.interactive.right_saturation - || old->u.interactive.left_saturation != new->u.interactive.left_saturation - || old->u.interactive.right_coeff != new->u.interactive.right_coeff - || old->u.interactive.left_coeff != new->u.interactive.left_coeff - || old->u.interactive.deadband != new->u.interactive.deadband - || old->u.interactive.center != new->u.interactive.center); + for(i=0; i<2; i++) { + ret |= old->u.condition[i].right_saturation != new->u.condition[i].right_saturation + || old->u.condition[i].left_saturation != new->u.condition[i].left_saturation + || old->u.condition[i].right_coeff != new->u.condition[i].right_coeff + || old->u.condition[i].left_coeff != new->u.condition[i].left_coeff + || old->u.condition[i].deadband != new->u.condition[i].deadband + || old->u.condition[i].center != new->u.condition[i].center; + } + return ret; } /* @@ -226,7 +231,7 @@ struct ff_effect* old = &iforce->core_effects[id].effect; if (effect->type != FF_CONSTANT) { - printk(KERN_WARNING "iforce.c: bad effect type in need_shape_modifier\n"); + printk(KERN_WARNING "iforce.c: bad effect type in need_envelope_modifier\n"); return FALSE; } @@ -234,33 +239,33 @@ } /* - * Analyse the changes in an effect, and tell if we need to send a shape + * Analyse the changes in an effect, and tell if we need to send an envelope * parameter packet */ -static int need_shape_modifier(struct iforce* iforce, struct ff_effect* effect) +static int need_envelope_modifier(struct iforce* iforce, struct ff_effect* effect) { int id = effect->id; struct ff_effect* old = &iforce->core_effects[id].effect; switch (effect->type) { case FF_CONSTANT: - if (old->u.constant.shape.attack_length != effect->u.constant.shape.attack_length - || old->u.constant.shape.attack_level != effect->u.constant.shape.attack_level - || old->u.constant.shape.fade_length != effect->u.constant.shape.fade_length - || old->u.constant.shape.fade_level != effect->u.constant.shape.fade_level) + if (old->u.constant.envelope.attack_length != effect->u.constant.envelope.attack_length + || old->u.constant.envelope.attack_level != effect->u.constant.envelope.attack_level + || old->u.constant.envelope.fade_length != effect->u.constant.envelope.fade_length + || old->u.constant.envelope.fade_level != effect->u.constant.envelope.fade_level) return TRUE; break; case FF_PERIODIC: - if (old->u.periodic.shape.attack_length != effect->u.periodic.shape.attack_length - || old->u.periodic.shape.attack_level != effect->u.periodic.shape.attack_level - || old->u.periodic.shape.fade_length != effect->u.periodic.shape.fade_length - || old->u.periodic.shape.fade_level != effect->u.periodic.shape.fade_level) + if (old->u.periodic.envelope.attack_length != effect->u.periodic.envelope.attack_length + || old->u.periodic.envelope.attack_level != effect->u.periodic.envelope.attack_level + || old->u.periodic.envelope.fade_length != effect->u.periodic.envelope.fade_length + || old->u.periodic.envelope.fade_level != effect->u.periodic.envelope.fade_level) return TRUE; break; default: - printk(KERN_WARNING "iforce.c: bad effect type in need_shape_modifier\n"); + printk(KERN_WARNING "iforce.c: bad effect type in need_envelope_modifier\n"); } return FALSE; @@ -375,13 +380,13 @@ set_bit(FF_MOD1_IS_USED, core_effect->flags); } - if (!is_update || need_shape_modifier(iforce, effect)) { - param2_err = make_shape_modifier(iforce, mod2_chunk, + if (!is_update || need_envelope_modifier(iforce, effect)) { + param2_err = make_envelope_modifier(iforce, mod2_chunk, is_update, - effect->u.periodic.shape.attack_length, - effect->u.periodic.shape.attack_level, - effect->u.periodic.shape.fade_length, - effect->u.periodic.shape.fade_level); + effect->u.periodic.envelope.attack_length, + effect->u.periodic.envelope.attack_level, + effect->u.periodic.envelope.fade_length, + effect->u.periodic.envelope.fade_level); if (param2_err) return param2_err; set_bit(FF_MOD2_IS_USED, core_effect->flags); } @@ -442,13 +447,13 @@ set_bit(FF_MOD1_IS_USED, core_effect->flags); } - if (!is_update || need_shape_modifier(iforce, effect)) { - param2_err = make_shape_modifier(iforce, mod2_chunk, + if (!is_update || need_envelope_modifier(iforce, effect)) { + param2_err = make_envelope_modifier(iforce, mod2_chunk, is_update, - effect->u.constant.shape.attack_length, - effect->u.constant.shape.attack_level, - effect->u.constant.shape.fade_length, - effect->u.constant.shape.fade_level); + effect->u.constant.envelope.attack_length, + effect->u.constant.envelope.attack_level, + effect->u.constant.envelope.fade_length, + effect->u.constant.envelope.fade_level); if (param2_err) return param2_err; set_bit(FF_MOD2_IS_USED, core_effect->flags); } @@ -476,81 +481,56 @@ } /* - * Upload an interactive effect. Those are for example friction, inertia, springs... + * Upload an condition effect. Those are for example friction, inertia, springs... */ -int iforce_upload_interactive(struct iforce* iforce, struct ff_effect* effect, int is_update) +int iforce_upload_condition(struct iforce* iforce, struct ff_effect* effect, int is_update) { int core_id = effect->id; struct iforce_core_effect* core_effect = iforce->core_effects + core_id; - struct resource* mod_chunk = &(core_effect->mod1_chunk); - u8 type, axes; - u16 mod1, mod2, direction; + struct resource* mod1_chunk = &(core_effect->mod1_chunk); + struct resource* mod2_chunk = &(core_effect->mod2_chunk); + u8 type; int param_err = 1; int core_err = 0; switch (effect->type) { case FF_SPRING: type = 0x40; break; - case FF_FRICTION: type = 0x41; break; + case FF_DAMPER: type = 0x41; break; default: return -1; } - if (!is_update || need_interactive_modifier(iforce, effect)) { - param_err = make_interactive_modifier(iforce, mod_chunk, + if (!is_update || need_condition_modifier(iforce, effect)) { + param_err = make_condition_modifier(iforce, mod1_chunk, is_update, - effect->u.interactive.right_saturation, - effect->u.interactive.left_saturation, - effect->u.interactive.right_coeff, - effect->u.interactive.left_coeff, - effect->u.interactive.deadband, - effect->u.interactive.center); + effect->u.condition[0].right_saturation, + effect->u.condition[0].left_saturation, + effect->u.condition[0].right_coeff, + effect->u.condition[0].left_coeff, + effect->u.condition[0].deadband, + effect->u.condition[0].center); if (param_err) return param_err; set_bit(FF_MOD1_IS_USED, core_effect->flags); - } - - switch ((test_bit(ABS_X, &effect->u.interactive.axis) || - test_bit(ABS_WHEEL, &effect->u.interactive.axis)) | - (!!test_bit(ABS_Y, &effect->u.interactive.axis) << 1)) { - case 0: /* Only one axis, choose orientation */ - mod1 = mod_chunk->start; - mod2 = 0xffff; - direction = effect->direction; - axes = 0x20; - break; - - case 1: /* Only X axis */ - mod1 = mod_chunk->start; - mod2 = 0xffff; - direction = 0x5a00; - axes = 0x40; - break; - - case 2: /* Only Y axis */ - mod1 = 0xffff; - mod2 = mod_chunk->start; - direction = 0xb400; - axes = 0x80; - break; - - case 3: /* Both X and Y axes */ - /* TODO: same setting for both axes is not mandatory */ - mod1 = mod_chunk->start; - mod2 = mod_chunk->start; - direction = 0x6000; - axes = 0xc0; - break; + param_err = make_condition_modifier(iforce, mod2_chunk, + is_update, + effect->u.condition[1].right_saturation, + effect->u.condition[1].left_saturation, + effect->u.condition[1].right_coeff, + effect->u.condition[1].left_coeff, + effect->u.condition[1].deadband, + effect->u.condition[1].center); + if (param_err) return param_err; + set_bit(FF_MOD2_IS_USED, core_effect->flags); - default: - return -1; } if (!is_update || need_core(iforce, effect)) { core_err = make_core(iforce, effect->id, - mod1, mod2, - type, axes, + mod1_chunk->start, mod2_chunk->start, + type, 0xc0, effect->replay.length, effect->replay.delay, effect->trigger.button, effect->trigger.interval, - direction); + effect->direction); } /* If the parameter creation failed, we already returned an Index: iforce-main.c =================================================================== RCS file: /cvsroot/linuxconsole/ruby/linux/drivers/input/joystick/iforce/iforce-main.c,v retrieving revision 1.9 retrieving revision 1.10 diff -u -d -r1.9 -r1.10 --- iforce-main.c 2002/01/30 19:47:35 1.9 +++ iforce-main.c 2002/02/02 19:28:35 1.10 @@ -1,8 +1,8 @@ /* * $Id$ * - * Copyright (c) 2000-2001 Vojtech Pavlik <vo...@uc...> - * Copyright (c) 2001 Johann Deneux <de...@if...> + * Copyright (c) 2000-2002 Vojtech Pavlik <vo...@uc...> + * Copyright (c) 2001-2002 Johann Deneux <de...@if...> * * USB/RS232 I-Force joysticks and wheels. */ @@ -168,7 +168,7 @@ case FF_SPRING: case FF_FRICTION: - ret = iforce_upload_interactive(iforce, effect, is_update); + ret = iforce_upload_condition(iforce, effect, is_update); break; default: @@ -224,17 +224,20 @@ switch (iforce->bus) { #ifdef IFORCE_USB case IFORCE_USB: - if (iforce->open++) - break; - iforce->irq.dev = iforce->usbdev; - if (usb_submit_urb(&iforce->irq)) + if (!iforce->open) { + iforce->irq.dev = iforce->usbdev; + if (usb_submit_urb(&iforce->irq)) return -EIO; + } break; #endif } /* Enable force feedback */ - iforce_send_packet(iforce, FF_CMD_ENABLE, "\004"); + if (!iforce->open) + iforce_send_packet(iforce, FF_CMD_ENABLE, "\004"); + + iforce->open++; return 0; } @@ -263,11 +266,11 @@ return 0; } -static void iforce_close(struct input_dev *dev) +static void iforce_release(struct input_dev *dev) { struct iforce *iforce = dev->private; - printk(KERN_DEBUG "iforce.c: in iforce_close\n"); + printk(KERN_DEBUG "iforce.c: in iforce_release\n"); /* Disable force feedback playback */ iforce_send_packet(iforce, FF_CMD_ENABLE, "\001"); @@ -320,7 +323,7 @@ iforce->dev.private = iforce; iforce->dev.name = "Unknown I-Force device"; iforce->dev.open = iforce_open; - iforce->dev.close = iforce_close; + iforce->dev.close = iforce_release; iforce->dev.flush = iforce_flush; iforce->dev.event = iforce_input_event; iforce->dev.upload_effect = iforce_upload_effect; @@ -348,7 +351,7 @@ if (i == 20) { /* 5 seconds */ printk(KERN_ERR "iforce.c: Timeout waiting for response from device.\n"); - iforce_close(&iforce->dev); + iforce_delete(iforce); return -1; } @@ -409,8 +412,6 @@ for (i = 0; iforce->type->btn[i] >= 0; i++) { signed short t = iforce->type->btn[i]; set_bit(t, iforce->dev.keybit); - if (t != BTN_DEAD) - set_bit(FF_BTN(t), iforce->dev.ffbit); } for (i = 0; iforce->type->abs[i] >= 0; i++) { @@ -429,7 +430,7 @@ iforce->dev.absflat[t] = 128; iforce->dev.absfuzz[t] = 16; - set_bit(FF_ABS(t), iforce->dev.ffbit); + set_bit(t, iforce->dev.ffbit); break; case ABS_THROTTLE: Index: iforce-packets.c =================================================================== RCS file: /cvsroot/linuxconsole/ruby/linux/drivers/input/joystick/iforce/iforce-packets.c,v retrieving revision 1.8 retrieving revision 1.9 diff -u -d -r1.8 -r1.9 --- iforce-packets.c 2002/01/30 17:54:50 1.8 +++ iforce-packets.c 2002/02/02 19:28:35 1.9 @@ -110,6 +110,8 @@ #ifdef IFORCE_USB case IFORCE_USB: + /* FIXME: iforce->out.status should not be checked outside + * the completion handler */ if (iforce->usbdev && empty && !iforce->out.status) { iforce_usb_xmit(iforce); } Index: iforce-usb.c =================================================================== RCS file: /cvsroot/linuxconsole/ruby/linux/drivers/input/joystick/iforce/iforce-usb.c,v retrieving revision 1.9 retrieving revision 1.10 diff -u -d -r1.9 -r1.10 --- iforce-usb.c 2002/01/30 19:47:35 1.9 +++ iforce-usb.c 2002/02/02 19:28:35 1.10 @@ -118,6 +118,7 @@ iforce->cr.wIndex = 0; iforce->cr.wLength = 16; + /* FIXME: use lower-case versions instead with 2.5 */ FILL_INT_URB(&iforce->irq, dev, usb_rcvintpipe(dev, epirq->bEndpointAddress), iforce->data, 16, iforce_usb_irq, iforce, epirq->bInterval); @@ -168,6 +169,7 @@ MODULE_DEVICE_TABLE (usb, iforce_usb_ids); struct usb_driver iforce_usb_driver = { + owner: THIS_MODULE, name: "iforce", probe: iforce_usb_probe, disconnect: iforce_usb_disconnect, Index: iforce.h =================================================================== RCS file: /cvsroot/linuxconsole/ruby/linux/drivers/input/joystick/iforce/iforce.h,v retrieving revision 1.7 retrieving revision 1.8 diff -u -d -r1.7 -r1.8 --- iforce.h 2002/01/30 19:47:35 1.7 +++ iforce.h 2002/02/02 19:28:35 1.8 @@ -1,8 +1,8 @@ /* * $Id$ * - * Copyright (c) 2000-2001 Vojtech Pavlik <vo...@uc...> - * Copyright (c) 2001 Johann Deneux <de...@if...> + * Copyright (c) 2000-2002 Vojtech Pavlik <vo...@uc...> + * Copyright (c) 2001-2002 Johann Deneux <de...@if...> * * USB/RS232 I-Force joysticks and wheels. */ @@ -65,7 +65,7 @@ #define FF_MOD1_IS_USED 0 #define FF_MOD2_IS_USED 1 #define FF_CORE_IS_USED 2 -#define FF_CORE_IS_PLAYED 3 /* Effect is actually being played */ +#define FF_CORE_IS_PLAYED 3 /* Effect is currently being played */ #define FF_CORE_SHOULD_PLAY 4 /* User wants the effect to be played */ #define FF_CORE_UPDATE 5 /* Effect is being updated */ #define FF_MODCORE_MAX 5 @@ -91,10 +91,10 @@ }; #define FF_CMD_EFFECT 0x010e -#define FF_CMD_SHAPE 0x0208 +#define FF_CMD_ENVELOPE 0x0208 #define FF_CMD_MAGNITUDE 0x0303 #define FF_CMD_PERIOD 0x0407 -#define FF_CMD_INTERACT 0x050a +#define FF_CMD_CONDITION 0x050a #define FF_CMD_AUTOCENTER 0x4002 #define FF_CMD_PLAY 0x4103 @@ -138,7 +138,7 @@ #endif #ifdef IFORCE_USB struct usb_device *usbdev; /* USB transfer */ - struct urb irq, out, ctrl; + struct urb irq, out, ctrl; /*TODO: Use pointers and usb_alloc_urb */ struct usb_ctrlrequest cr; #endif spinlock_t xmit_lock; @@ -189,7 +189,7 @@ /* iforce-ff.c */ int iforce_upload_periodic(struct iforce*, struct ff_effect*, int is_update); int iforce_upload_constant(struct iforce*, struct ff_effect*, int is_update); -int iforce_upload_interactive(struct iforce*, struct ff_effect*, int is_update); +int iforce_upload_condition(struct iforce*, struct ff_effect*, int is_update); /* Public variables */ extern struct serio_dev iforce_serio_dev; |
From: Franz S. <fs...@us...> - 2002-02-01 22:03:02
|
Update of /cvsroot/linuxconsole/ruby/linux/include/asm-ppc In directory usw-pr-cvs1:/tmp/cvs-serv30808 Modified Files: machdep.h Removed Files: vga.h Log Message: Sync machdep.h with dj. Remove vga.h, problem solved elsewhere. Index: machdep.h =================================================================== RCS file: /cvsroot/linuxconsole/ruby/linux/include/asm-ppc/machdep.h,v retrieving revision 1.3 retrieving revision 1.4 diff -u -d -r1.3 -r1.4 --- machdep.h 2001/12/26 17:28:12 1.3 +++ machdep.h 2002/02/01 22:02:58 1.4 @@ -1,5 +1,5 @@ /* - * BK Id: SCCS/s.machdep.h 1.25 11/13/01 21:26:07 paulus + * BK Id: SCCS/s.machdep.h 1.28 12/27/01 10:08:52 trini */ #ifdef __KERNEL__ #ifndef _PPC_MACHDEP_H @@ -16,6 +16,11 @@ struct pci_dev; struct seq_file; +/* We export this macro for external modules like Alsa to know if + * ppc_md.feature_call is implemented or not + */ +#define CONFIG_PPC_HAS_FEATURE_CALLS + struct machdep_calls { void (*setup_arch)(void); /* Optional, may be NULL. */ @@ -82,6 +87,12 @@ /* this is for modules, since _machine can be a define -- Cort */ int ppc_machine; + + /* Motherboard/chipset features. This is a kind of general purpose + * hook used to control some machine specific features (like reset + * lines, chip power control, etc...). + */ + int (*feature_call)(unsigned int feature, ...); #ifdef CONFIG_SMP /* functions for dealing with other cpus */ --- vga.h DELETED --- |
From: Vojtech P. <vo...@us...> - 2002-02-01 16:02:27
|
Update of /cvsroot/linuxconsole/ruby/linux/drivers/input/keyboard In directory usw-pr-cvs1:/tmp/cvs-serv1978 Modified Files: amikbd.c Log Message: Add mem region allocations. Index: amikbd.c =================================================================== RCS file: /cvsroot/linuxconsole/ruby/linux/drivers/input/keyboard/amikbd.c,v retrieving revision 1.12 retrieving revision 1.13 diff -u -d -r1.12 -r1.13 --- amikbd.c 2002/02/01 00:12:27 1.12 +++ amikbd.c 2002/02/01 16:02:24 1.13 @@ -104,7 +104,10 @@ int i; if (!AMIGAHW_PRESENT(AMI_KEYBOARD)) - return -EIO; + return -EIO; + + if (!request_mem_region(CIAA_PHYSADDR-1+0xb00, 0x100, "amikeyb")) + return -EBUSY; amikbd_dev.evbit[0] = BIT(EV_KEY) | BIT(EV_REP); amikbd_dev.keycode = amikbd_keycode; @@ -134,6 +137,7 @@ { input_unregister_device(&amikbd_dev); free_irq(IRQ_AMIGA_CIAA_SP, amikbd_interrupt); + release_mem_region(CIAA_PHYSADDR-1+0xb00, 0x100); } module_init(amikbd_init); |
From: James S. <jsi...@us...> - 2002-02-01 00:56:51
|
Update of /cvsroot/linuxconsole/ruby/linux/drivers/video In directory usw-pr-cvs1:/tmp/cvs-serv22839 Modified Files: skeletonfb.c Log Message: Much better explaination of things. Plan to release it soon. Note it is not rubyitzed but is for DJ tree. Index: skeletonfb.c =================================================================== RCS file: /cvsroot/linuxconsole/ruby/linux/drivers/video/skeletonfb.c,v retrieving revision 1.14 retrieving revision 1.15 diff -u -d -r1.14 -r1.15 --- skeletonfb.c 2001/11/14 22:25:55 1.14 +++ skeletonfb.c 2002/02/01 00:56:49 1.15 @@ -10,30 +10,33 @@ * The primary goal is to remove the console code from fbdev and place it * into fbcon.c. This reduces the code and makes writing a new fbdev driver * easy since the author doesn't need to worry about console internals. It - * also allows the ability to run fbdev without a console system on top of it. + * also allows the ability to run fbdev without a console/tty system on top + * of it. * * First the roles of struct fb_info and struct display have changed. Struct - * display has gone away. The upper framebuffer console layer only depends on - * fb_info. For each framebuffer device when used as a VT console is allocate + * display will gone away. The way the the new framebuffer console code will + * work is that it will act to translate data about the tty/console in + * struct vc_data to data in a device independent way in struct fb_info. Then + * various functions in struct fb_ops will be called to store the device + * dependent state in the par field in struct fb_info and to change the + * hardware to that state. This allows a very clean seperation of the fbdev + * layer from the console layer. It also allows one to use fbdev on its own + * which is a bounus for embedded devices. The reason this approach works is + * for each framebuffer device when used as a tty/console device is allocated * a set of virtual terminals to it. Only one virtual terminal can be active - * per framebuffer device. So I have struct fb_info represent all the data of - * the current hardware state of the framebuffer. Meaning the resolution of - * the active VT (the one you're looking at) and other data is stored in the - * fb_info struct. When you VT switch the current video state is translated - * to a form to be stored by the the higher level console layer to be stored - * for that terminal you just switched away from. Then the current video - * state is set to the data values stored in the upper console layer for the - * virtual terminal you are switching to. As you can see doing this makes - * the con parameter pretty much useless for the fb_ops functions, as it - * should be. Also having fb_var_screeninfo and other data in fb_info pretty - * much eliminates the need for get_fix and get_var. Once all drivers use the - * fix, var, and cmap field fbcon can be written around these fields. This - * will also eliminate the need to regenerate fb_var_screeninfo and - * fb_fix_screeninfo data every time the get_var and get_fix functions are - * called as many drivers do now. The fb_var_screeninfo and - * fb_fix_screeninfo field in fb_info can be generated just in set_var and - * placed into struct fb_info. + * per framebuffer device. We already have all the data we need in struct + * vc_data so why store a bunch of colormaps and other fbdev specific data + * per virtual terminal. * + * As you can see doing this makes the con parameter pretty much useless + * for struct fb_ops functions, as it should be. Also having struct + * fb_var_screeninfo and other data in fb_info pretty much eliminates the + * need for get_fix and get_var. Once all drivers use the fix, var, and cmap + * fbcon can be written around these fields. This will also eliminate the + * need to regenerate struct fb_var_screeninfo, struct fb_fix_screeninfo + * struct fb_cmap every time get_var, get_fix, get_cmap functions are called + * as many drivers do now. + * * This file is subject to the terms and conditions of the GNU General Public * License. See the file COPYING in the main directory of this archive for * more details. @@ -86,30 +89,39 @@ * also support multiple monitors where each display can have its * its own unique data. In this case each display could be * represented by a seperate framebuffer device thus a seperate - * struct fb_info. In this case all of the par structures for the - * graphics card would be shared between each struct fb_info. This - * allows when one display changes it video resolution (info->var) + * struct fb_info. Now the struct xxx_par represents the graphics + * hardware state thus only one exist per card. In this case the + * struct xxx_par for each graphics card would be shared between + * every struct fb_info that represents a framebuffer on that card. + * This allows when one display changes it video resolution (info->var) * the other displays know instantly. Each display can always be - * aware of the entire hardware state that affects it. The other side - * of the coin is multiple graphics cards that pass data around until - * it is finally displayed on one monitor. Such examples are the - * voodoo 1 cards and high end NUMA graphics servers. I hope this - * covers every possible hardware design. If not feel free to send - * me more design types. + * aware of the entire hardware state that affects it because they share + * the same xxx_par struct. The other side of the coin is multiple + * graphics cards that pass data around until it is finally displayed + * on one monitor. Such examples are the voodoo 1 cards and high end + * NUMA graphics servers. For this case we have a bunch of pars, each + * one that represents a graphics state, that belong to one struct + * fb_info. Their you would want to have *par point to a array of device + * states and have each struct fb_ops function deal with all those + * states. I hope this covers every possible hardware design. If not + * feel free to send your ideas at jsi...@us... */ /* - * If your driver supports multiple boards, you should make these - * arrays, or allocate them dynamically (using kmalloc()). + * If your driver supports multiple boards or it supports multiple + * framebuffers, you should make these arrays, or allocate them + * dynamically (using kmalloc()). */ static struct fb_info info; + /* - * This represents the default state of the hardware. + * Each one represents the a state of the hardware. Most hardware have + * just one hardware state. These here represent the default state(s). */ static struct xxx_par __initdata current_par; -static u32 xxxfb_pseudo_palette[17]; -static int inverse = 0; + /* To go away in the near future */ +static struct display disp; int xxxfb_init(void); int xxxfb_setup(char*); @@ -121,7 +133,8 @@ * * Checks to see if the hardware supports the state requested by * var passed in. This function does not alter the hardware state!!! - * This means the data stored in fb_info, par and var, do not change. + * This means the data stored in struct fb_info and struct xxx_par do + * not change. This includes the var inside of struct fb_info. * Do NOT change these. This function can be called on its own if we * intent to only test a mode and not actually set it. The stuff in * modedb.c is a example of this. If the var passed in is slightly @@ -339,8 +352,7 @@ * depending on the rastering operation with the value of color which * is in the current color depth format. */ -void xxxfb_fillrect(struct fb_info *p, int x1, int y1, unsigned int width, - unsigned int height, unsigned long color, int rop) +void xxxfb_fillrect(struct fb_info *p, struct fb_fillrect *region) { } @@ -359,8 +371,7 @@ * This drawing operation copies a rectangular area from one area of the * screen to another area. */ -void xxxfb_copyarea(struct fb_info *p, int sx, int sy, unsigned int width, - unsigned int height, int dx, int dy) +void xxxfb_copyarea(struct fb_info *p, struct fb_copyarea *area) { } @@ -401,7 +412,6 @@ info.fbops = &xxxfb_ops; info.fix = xxxfb_fix; info.par = current_par; - info.pseudo_palette = xxxfb_pseudo_palette; info.flags = FBINFO_FLAG_DEFAULT; /* This should give a reasonable default video mode */ if (!mode_option) @@ -418,9 +428,6 @@ return -EINVAL; printk(KERN_INFO "fb%d: %s frame buffer device\n", GET_FB_IDX(info.node), info.fix.id); - - /* uncomment this if your driver cannot be unloaded */ - /* MOD_INC_USE_COUNT; */ return 0; } @@ -475,6 +482,13 @@ owner: THIS_MODULE, fb_open: xxxfb_open, /* only if you need it to do something */ fb_release: xxxfb_release, /* only if you need it to do something */ + /* Stuff to go away. Use generic functions for now */ + fb_get_fix: fbgen_get_fix, + fb_get_var: fbgen_get_var, + fb_set_var: fbgen_set_var, + fb_get_cmap: fbgen_get_cmap, + fb_set_cmap: fbgen_set_cmap, + fb_check_var: xxxfb_check_var, fb_set_par: xxxfb_set_par, /* optional */ fb_setcolreg: xxxfb_setcolreg, |
From: James S. <jsi...@us...> - 2002-02-01 00:54:27
|
Update of /cvsroot/linuxconsole/ruby/linux/drivers/input/serio In directory usw-pr-cvs1:/tmp/cvs-serv22024 Modified Files: q40kbd.c Log Message: Various bug fixes from the original author. Index: q40kbd.c =================================================================== RCS file: /cvsroot/linuxconsole/ruby/linux/drivers/input/serio/q40kbd.c,v retrieving revision 1.10 retrieving revision 1.11 diff -u -d -r1.10 -r1.11 --- q40kbd.c 2002/02/01 00:04:24 1.10 +++ q40kbd.c 2002/02/01 00:54:24 1.11 @@ -49,7 +49,7 @@ static inline void q40kbd_write(unsigned char val) { - /* FIXME! We need a way how to write to the keyboard! */ + /* No way to write to the keyboard! */ } static struct serio q40kbd_port = @@ -79,7 +79,7 @@ request_region(0x60, 16, "q40kbd"); /* allocate the IRQ */ - request_irq(Q40_IRQ_KEYBOARD, keyboard_interrupt, 0, "q40kbd", NULL); + request_irq(Q40_IRQ_KEYBOARD, q40kbd_interrupt, 0, "q40kbd", NULL); /* flush any pending input. */ while (maxread-- && (IRQ_KEYB_MASK & master_inb(INTERRUPT_REG))) |
From: James S. <jsi...@us...> - 2002-02-01 00:12:30
|
Update of /cvsroot/linuxconsole/ruby/linux/drivers/input/keyboard In directory usw-pr-cvs1:/tmp/cvs-serv9288 Modified Files: amikbd.c Log Message: the up/down event is received in the lsb bit, the other 7 bits are the keycode. Index: amikbd.c =================================================================== RCS file: /cvsroot/linuxconsole/ruby/linux/drivers/input/keyboard/amikbd.c,v retrieving revision 1.11 retrieving revision 1.12 diff -u -d -r1.11 -r1.12 --- amikbd.c 2002/01/31 23:05:28 1.11 +++ amikbd.c 2002/02/01 00:12:27 1.12 @@ -78,8 +78,8 @@ udelay(85); /* wait until 85 us have expired */ ciaa.cra &= ~0x40; /* switch CIA serial port to input mode */ - scancode = scancode >> 1; /* lowest bit is release bit */ - down = scancode & 1; + down = scancode & 1; /* lowest bit is release bit */ + scancode = scancode >> 1; if (scancode < 0x78) { /* scancodes < 0x78 are keys */ |
From: James S. <jsi...@us...> - 2002-02-01 00:06:40
|
Update of /cvsroot/linuxconsole/ruby/linux/drivers/input/keyboard In directory usw-pr-cvs1:/tmp/cvs-serv7359 Removed Files: q40kbd.c Log Message: Moved Q40 controller support to proper place. --- q40kbd.c DELETED --- |
From: James S. <jsi...@us...> - 2002-02-01 00:06:16
|
Update of /cvsroot/linuxconsole/ruby/linux/drivers/input/keyboard In directory usw-pr-cvs1:/tmp/cvs-serv7233 Modified Files: Makefile Log Message: Moved Q40 controller support to proper place. Index: Makefile =================================================================== RCS file: /cvsroot/linuxconsole/ruby/linux/drivers/input/keyboard/Makefile,v retrieving revision 1.2 retrieving revision 1.3 diff -u -d -r1.2 -r1.3 --- Makefile 2002/01/23 06:35:30 1.2 +++ Makefile 2002/02/01 00:06:12 1.3 @@ -13,7 +13,6 @@ obj-$(CONFIG_KEYBOARD_PS2SERKBD) += ps2serkbd.o obj-$(CONFIG_KEYBOARD_SUNKBD) += sunkbd.o obj-$(CONFIG_KEYBOARD_XTKBD) += xtkbd.o -obj-$(CONFIG_KEYBOARD_Q40KBD) += q40kbd.o obj-$(CONFIG_KEYBOARD_NEWTON) += newtonkbd.o # The global Rules.make. |
From: James S. <jsi...@us...> - 2002-02-01 00:04:27
|
Update of /cvsroot/linuxconsole/ruby/linux/drivers/input/serio In directory usw-pr-cvs1:/tmp/cvs-serv6583 Added Files: Tag: 1.10 q40kbd.c Log Message: It really belongs in here. --- NEW FILE: q40kbd.c --- /* * $Id: q40kbd.c,v 1.10 2002/02/01 00:04:24 jsimmons Exp $ * * Copyright (c) 2000-2001 Vojtech Pavlik * * Based on the work of: * Richard Zidlicky <Ric...@st...> */ /* * Q40 PS/2 keyboard controller driver for Linux/m68k */ /* * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * * Should you need to contact me, the author, you can do so either by * e-mail - mail your message to <vo...@uc...>, or by paper mail: * Vojtech Pavlik, Simunkova 1594, Prague 8, 182 00 Czech Republic */ #include <linux/module.h> #include <linux/init.h> #include <linux/serio.h> #include <asm/keyboard.h> #include <asm/bitops.h> #include <asm/io.h> #include <asm/uaccess.h> #include <asm/q40_master.h> #include <asm/irq.h> #include <asm/q40ints.h> MODULE_AUTHOR("Vojtech Pavlik <vo...@uc...>"); MODULE_DESCRIPTION("Q40 PS/2 keyboard controller driver"); MODULE_LICENSE("GPL"); static inline void q40kbd_write(unsigned char val) { /* FIXME! We need a way how to write to the keyboard! */ } static struct serio q40kbd_port = { type: SERIO_8042, write: q40kbd_write, name: "Q40 PS/2 kbd port", phys: "isa0060/serio0", }; static void q40kbd_interrupt(int irq, void *dev_id, struct pt_regs *regs) { unsigned long flags; if (IRQ_KEYB_MASK & master_inb(INTERRUPT_REG)) if (q40kbd_port.dev) q40kbd_port.dev->interrupt(&q40kbd_port, master_inb(KEYCODE_REG), 0); master_outb(-1, KEYBOARD_UNLOCK_REG); } void __init q40kbd_init(void) { int maxread = 100; /* Get the keyboard controller registers (incomplete decode) */ request_region(0x60, 16, "q40kbd"); /* allocate the IRQ */ request_irq(Q40_IRQ_KEYBOARD, keyboard_interrupt, 0, "q40kbd", NULL); /* flush any pending input. */ while (maxread-- && (IRQ_KEYB_MASK & master_inb(INTERRUPT_REG))) master_inb(KEYCODE_REG); /* off we go */ master_outb(-1,KEYBOARD_UNLOCK_REG); master_outb(1,KEY_IRQ_ENABLE_REG); register_serio_port(&q40kbd_port); printk(KERN_INFO "serio: Q40 PS/2 kbd port irq %d\n", Q40_IRQ_KEYBOARD); } void __exit q40kbd_exit(void) { unregister_serio_port(&q40kbd_port); free_irq(Q40_IRQ_KEYBOARD, NULL); release_region(0x60, 16); } module_init(q40kbd_init); module_exit(q40kbd_exit); |
From: James S. <jsi...@us...> - 2002-01-31 23:05:32
|
Update of /cvsroot/linuxconsole/ruby/linux/drivers/input/keyboard In directory usw-pr-cvs1:/tmp/cvs-serv17206 Modified Files: amikbd.c Log Message: Various fixed post from linux-m68k mailing list. Index: amikbd.c =================================================================== RCS file: /cvsroot/linuxconsole/ruby/linux/drivers/input/keyboard/amikbd.c,v retrieving revision 1.10 retrieving revision 1.11 diff -u -d -r1.10 -r1.11 --- amikbd.c 2002/01/24 19:22:46 1.10 +++ amikbd.c 2002/01/31 23:05:28 1.11 @@ -44,7 +44,7 @@ MODULE_LICENSE("GPL"); static unsigned char amikbd_keycode[0x78] = { - 0, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 43, 0, 82, + 41, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 43, 0, 82, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 0, 79, 80, 81, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 0, 0, 75, 76, 77, 0, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 0, 83, 71, 72, 73, @@ -96,7 +96,7 @@ return; } - printk(amikbd_messages[scancode]); /* scancodes >= 0x78 are error codes */ + printk(amikbd_messages[scancode - 0x78]); /* scancodes >= 0x78 are error codes */ } static int __init amikbd_init(void) |
From: johann d. <jd...@us...> - 2002-01-30 23:07:12
|
Update of /cvsroot/linuxconsole/ruby/linux/include/linux In directory usw-pr-cvs1:/tmp/cvs-serv25774 Modified Files: input.h Log Message: Changes to the force feedback API. Index: input.h =================================================================== RCS file: /cvsroot/linuxconsole/ruby/linux/include/linux/input.h,v retrieving revision 1.59 retrieving revision 1.60 diff -u -d -r1.59 -r1.60 --- input.h 2002/01/24 21:59:47 1.59 +++ input.h 2002/01/30 23:07:07 1.60 @@ -542,25 +542,24 @@ struct ff_shape shape; }; +/* FF_RAMP */ +struct ff_ramp_effect { + __s16 start_level; + __s16 end_level; + struct ff_shape shape; +}; + /* FF_SPRING of FF_FRICTION */ struct ff_interactive_effect { -/* Axis along which effect must be created. If null, the field named direction - * is used - * It is a bit array (ie to enable axes X and Y, use BIT(ABS_X) | BIT(ABS_Y) - * It overrides the value of ff_effect::direction, which is used only if - * axis == 0 - */ - __u16 axis; - - __u16 right_saturation; /* Max level when joystick is on the right */ - __u16 left_saturation; /* Max level when joystick in on the left */ + __u16 right_saturation[2]; /* Max level when joystick is on the right */ + __u16 left_saturation[2]; /* Max level when joystick in on the left */ - __s16 right_coeff; /* Indicates how fast the force grows when the + __s16 right_coeff[2]; /* Indicates how fast the force grows when the joystick moves to the right */ - __s16 left_coeff; /* Same for left side */ + __s16 left_coeff[2]; /* Same for left side */ - __u16 deadband; /* Size of area where no force is produced */ - __s16 center; /* Position of dead dead zone */ + __u16 deadband[2]; /* Size of area where no force is produced */ + __s16 center[2]; /* Position of dead zone */ }; @@ -573,6 +572,12 @@ __u16 phase; /* 'Horizontal' shift */ struct ff_shape shape; + +/* Only used if waveform == FF_CUSTOM */ + __u32 custom_len; /* Number of samples */ + __s16 *custom_data; /* Buffer of samples */ +/* Note: the data pointed by custom_data is copied by the driver. You can + * therefore dispose of the memory after the upload/update */ }; /* @@ -597,6 +602,7 @@ union { struct ff_constant_effect constant; + struct ff_ramp_effect ramp; struct ff_periodic_effect periodic; struct ff_interactive_effect interactive; } u; @@ -626,6 +632,9 @@ #define FF_CONSTANT 0x52 #define FF_SPRING 0x53 #define FF_FRICTION 0x54 +#define FF_DAMPER 0x55 +#define FF_INERTIA 0x56 +#define FF_RAMP 0x57 /* * Force feedback periodic effect types |
From: johann d. <jd...@us...> - 2002-01-30 19:47:39
|
Update of /cvsroot/linuxconsole/ruby/linux/drivers/input/joystick/iforce In directory usw-pr-cvs1:/tmp/cvs-serv12477 Modified Files: iforce-main.c iforce-usb.c iforce.h Log Message: Added delete functions to delete driver. iforce_delete is only called when the driver is realeased (or on deconnection if it is not used). Index: iforce-main.c =================================================================== RCS file: /cvsroot/linuxconsole/ruby/linux/drivers/input/joystick/iforce/iforce-main.c,v retrieving revision 1.8 retrieving revision 1.9 diff -u -d -r1.8 -r1.9 --- iforce-main.c 2002/01/29 23:17:02 1.8 +++ iforce-main.c 2002/01/30 19:47:35 1.9 @@ -276,11 +276,28 @@ switch (iforce->bus) { #ifdef IFORCE_USB case IFORCE_USB: - if (!--iforce->open) + if (!--iforce->open) { usb_unlink_urb(&iforce->irq); + usb_unlink_urb(&iforce->out); + + /* The device was unplugged before the file + * was released */ + if (iforce->usbdev == NULL) { + iforce_delete(iforce); + } + } break; #endif } +} + +void iforce_delete(struct iforce *iforce) +{ +#ifdef IFORCE_USB + iforce_usb_delete(iforce); +#endif + + kfree(iforce); } int iforce_init_device(struct iforce *iforce) Index: iforce-usb.c =================================================================== RCS file: /cvsroot/linuxconsole/ruby/linux/drivers/input/joystick/iforce/iforce-usb.c,v retrieving revision 1.8 retrieving revision 1.9 diff -u -d -r1.8 -r1.9 --- iforce-usb.c 2002/01/30 17:54:50 1.8 +++ iforce-usb.c 2002/01/30 19:47:35 1.9 @@ -135,15 +135,22 @@ return iforce; } +/* Called by iforce_delete() */ +void iforce_usb_delete(struct iforce* iforce) +{ + usb_unlink_urb(&iforce->irq); + usb_unlink_urb(&iforce->out); + usb_unlink_urb(&iforce->ctrl); +} + static void iforce_usb_disconnect(struct usb_device *dev, void *ptr) { struct iforce *iforce = ptr; - usb_unlink_urb(&iforce->irq); iforce->usbdev = NULL; input_unregister_device(&iforce->dev); -#if 0 - kfree(iforce); -#endif + + if (iforce->open <= 0) + iforce_delete(iforce); } static struct usb_device_id iforce_usb_ids [] = { Index: iforce.h =================================================================== RCS file: /cvsroot/linuxconsole/ruby/linux/drivers/input/joystick/iforce/iforce.h,v retrieving revision 1.6 retrieving revision 1.7 diff -u -d -r1.6 -r1.7 --- iforce.h 2002/01/28 22:45:00 1.6 +++ iforce.h 2002/01/30 19:47:35 1.7 @@ -173,9 +173,11 @@ /* iforce-usb.c */ void iforce_usb_xmit(struct iforce *iforce); +void iforce_usb_delete(struct iforce *iforce); /* iforce-main.c */ int iforce_init_device(struct iforce *iforce); +void iforce_delete(struct iforce *iforce); /* iforce-packets.c */ int iforce_control_playback(struct iforce*, u16 id, unsigned int); |
From: johann d. <jd...@us...> - 2002-01-30 17:54:54
|
Update of /cvsroot/linuxconsole/ruby/linux/drivers/input/joystick/iforce In directory usw-pr-cvs1:/tmp/cvs-serv6705 Modified Files: iforce-packets.c iforce-usb.c Log Message: Check that the usb bus is usable before submuting urbs. Mark the usb bus as unusable after disconnection. Index: iforce-packets.c =================================================================== RCS file: /cvsroot/linuxconsole/ruby/linux/drivers/input/joystick/iforce/iforce-packets.c,v retrieving revision 1.7 retrieving revision 1.8 diff -u -d -r1.7 -r1.8 --- iforce-packets.c 2002/01/28 22:45:00 1.7 +++ iforce-packets.c 2002/01/30 17:54:50 1.8 @@ -110,7 +110,7 @@ #ifdef IFORCE_USB case IFORCE_USB: - if (empty & !iforce->out.status) { + if (iforce->usbdev && empty && !iforce->out.status) { iforce_usb_xmit(iforce); } break; Index: iforce-usb.c =================================================================== RCS file: /cvsroot/linuxconsole/ruby/linux/drivers/input/joystick/iforce/iforce-usb.c,v retrieving revision 1.7 retrieving revision 1.8 diff -u -d -r1.7 -r1.8 --- iforce-usb.c 2002/01/30 00:07:37 1.7 +++ iforce-usb.c 2002/01/30 17:54:50 1.8 @@ -139,6 +139,7 @@ { struct iforce *iforce = ptr; usb_unlink_urb(&iforce->irq); + iforce->usbdev = NULL; input_unregister_device(&iforce->dev); #if 0 kfree(iforce); |
From: James S. <jsi...@us...> - 2002-01-30 17:25:07
|
Update of /cvsroot/linuxconsole/ruby/linux/drivers/video In directory usw-pr-cvs1:/tmp/cvs-serv29884 Modified Files: vgacon.c Log Message: Aivils found the bug that prevented me from using non default fonts with vgacon. Yeah:-) Index: vgacon.c =================================================================== RCS file: /cvsroot/linuxconsole/ruby/linux/drivers/video/vgacon.c,v retrieving revision 1.60 retrieving revision 1.61 diff -u -d -r1.60 -r1.61 --- vgacon.c 2001/12/23 00:04:18 1.60 +++ vgacon.c 2002/01/30 17:25:03 1.61 @@ -487,6 +487,8 @@ } vgacon_state.mode = MODE_TEXT; + vt->data_hook = (void *) &vgacon_state; + if (init) { /* Use default font */ if (vga_512_chars) @@ -535,7 +537,6 @@ /* This maybe be suboptimal but is a safe bet - go with it */ vc->vc_scan_lines = vc->vc_font.height * vc->vc_rows; vc->vc_scrollback = 1; - vt->data_hook = &vgacon_state; return display_desc; } |
From: johann d. <jd...@us...> - 2002-01-30 00:17:01
|
Update of /cvsroot/linuxconsole/ruby/linux/drivers/input In directory usw-pr-cvs1:/tmp/cvs-serv28119 Modified Files: evdev.c Log Message: Replaced get_fast_time by do_gettimeofday. Index: evdev.c =================================================================== RCS file: /cvsroot/linuxconsole/ruby/linux/drivers/input/evdev.c,v retrieving revision 1.44 retrieving revision 1.45 diff -u -d -r1.44 -r1.45 --- evdev.c 2002/01/24 19:54:08 1.44 +++ evdev.c 2002/01/30 00:16:58 1.45 @@ -67,7 +67,7 @@ while (list) { - get_fast_time(&list->buffer[list->head].time); + do_gettimeofday(&list->buffer[list->head].time); list->buffer[list->head].type = type; list->buffer[list->head].code = code; list->buffer[list->head].value = value; |