You can subscribe to this list here.
2000 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
(6) |
Sep
(2) |
Oct
(43) |
Nov
(4) |
Dec
(12) |
---|---|---|---|---|---|---|---|---|---|---|---|---|
2001 |
Jan
(78) |
Feb
(97) |
Mar
(29) |
Apr
(2) |
May
(22) |
Jun
(38) |
Jul
(11) |
Aug
(27) |
Sep
(40) |
Oct
(2) |
Nov
(17) |
Dec
(8) |
2002 |
Jan
|
Feb
(2) |
Mar
(1) |
Apr
(480) |
May
(456) |
Jun
(12) |
Jul
|
Aug
(1) |
Sep
|
Oct
(18) |
Nov
(3) |
Dec
(6) |
2003 |
Jan
|
Feb
(18) |
Mar
(1) |
Apr
|
May
(6) |
Jun
(147) |
Jul
(7) |
Aug
(3) |
Sep
(235) |
Oct
(10) |
Nov
(2) |
Dec
(1) |
2004 |
Jan
|
Feb
|
Mar
|
Apr
|
May
(1) |
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
From: Dave A. <ai...@us...> - 2003-06-10 01:15:24
|
Update of /cvsroot/linux-vax/kernel-2.4/arch/mips64/kernel In directory sc8-pr-cvs1:/tmp/cvs-serv7538/arch/mips64/kernel Modified Files: smp.c Log Message: DA: sync with Marcelo 2.4.17 Index: smp.c =================================================================== RCS file: /cvsroot/linux-vax/kernel-2.4/arch/mips64/kernel/smp.c,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 --- smp.c 10 Apr 2002 14:43:20 -0000 1.2 +++ smp.c 10 Jun 2003 01:13:14 -0000 1.3 @@ -5,6 +5,7 @@ #include <linux/time.h> #include <linux/timex.h> #include <linux/sched.h> +#include <linux/cache.h> #include <asm/atomic.h> #include <asm/processor.h> @@ -52,7 +53,7 @@ #endif /* CONFIG_SGI_IP27 */ /* The 'big kernel lock' */ -spinlock_t kernel_flag = SPIN_LOCK_UNLOCKED; +spinlock_t kernel_flag __cacheline_aligned_in_smp = SPIN_LOCK_UNLOCKED; int smp_threads_ready; /* Not used */ atomic_t smp_commenced = ATOMIC_INIT(0); struct cpuinfo_mips cpu_data[NR_CPUS]; |
From: Dave A. <ai...@us...> - 2003-06-10 01:15:23
|
Update of /cvsroot/linux-vax/kernel-2.4/drivers/media/video In directory sc8-pr-cvs1:/tmp/cvs-serv7538/drivers/media/video Modified Files: Config.in bttv-driver.c meye.c w9966.c Log Message: DA: sync with Marcelo 2.4.17 Index: Config.in =================================================================== RCS file: /cvsroot/linux-vax/kernel-2.4/drivers/media/video/Config.in,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 --- Config.in 10 Apr 2002 14:57:35 -0000 1.2 +++ Config.in 10 Jun 2003 01:13:44 -0000 1.3 @@ -22,10 +22,8 @@ fi fi if [ "$CONFIG_PARPORT" != "n" ]; then - if [ "$CONFIG_EXPERIMENTAL" = "y" ]; then - if [ "$CONFIG_PARPORT_1284" != "n" ]; then - dep_tristate ' Winbond W9966CF Webcam Video For Linux (EXPERIMENTAL)' CONFIG_VIDEO_W9966 $CONFIG_VIDEO_DEV $CONFIG_PARPORT - fi + if [ "$CONFIG_PARPORT_1284" != "n" ]; then + dep_tristate ' W9966CF Webcam (FlyCam Supra and others) Video For Linux' CONFIG_VIDEO_W9966 $CONFIG_VIDEO_DEV $CONFIG_PARPORT fi fi dep_tristate ' CPiA Video For Linux' CONFIG_VIDEO_CPIA $CONFIG_VIDEO_DEV Index: bttv-driver.c =================================================================== RCS file: /cvsroot/linux-vax/kernel-2.4/drivers/media/video/bttv-driver.c,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 --- bttv-driver.c 10 Apr 2002 14:57:35 -0000 1.2 +++ bttv-driver.c 10 Jun 2003 01:13:44 -0000 1.3 @@ -3025,7 +3025,7 @@ name: "bttv", id_table: bttv_pci_tbl, probe: bttv_probe, - remove: bttv_remove, + remove: __devexit_p(bttv_remove), }; int bttv_init_module(void) Index: meye.c =================================================================== RCS file: /cvsroot/linux-vax/kernel-2.4/drivers/media/video/meye.c,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- meye.c 10 Apr 2002 14:57:36 -0000 1.1 +++ meye.c 10 Jun 2003 01:13:44 -0000 1.2 @@ -1460,7 +1460,7 @@ name: "meye", id_table: meye_pci_tbl, probe: meye_probe, - remove: meye_remove, + remove: __devexit_p(meye_remove), }; static int __init meye_init_module(void) { Index: w9966.c =================================================================== RCS file: /cvsroot/linux-vax/kernel-2.4/drivers/media/video/w9966.c,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- w9966.c 10 Apr 2002 14:57:36 -0000 1.1 +++ w9966.c 10 Jun 2003 01:13:44 -0000 1.2 @@ -1,9 +1,7 @@ /* Winbond w9966cf Webcam parport driver. - Version 0.32 - - Copyright (C) 2001 Jakob Kemi <jak...@po...> + Copyright (C) 2001 Jakob Kemi <jak...@te...> 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 @@ -21,33 +19,16 @@ */ /* Supported devices: - *Lifeview FlyCam Supra (using the Philips saa7111a chip) - - Does any other model using the w9966 interface chip exist ? + * Lifeview FlyCam Supra (using the Philips saa7111a chip) Todo: - - *Add a working EPP mode, since DMA ECP read isn't implemented - in the parport drivers. (That's why it's so sloow) - - *Add support for other ccd-control chips than the saa7111 - please send me feedback on what kind of chips you have. - - *Add proper probing. I don't know what's wrong with the IEEE1284 - parport drivers but (IEEE1284_MODE_NIBBLE|IEEE1284_DEVICE_ID) - and nibble read seems to be broken for some peripherals. - - *Add probing for onboard SRAM, port directions etc. (if possible) - - *Add support for the hardware compressed modes (maybe using v4l2) - - *Fix better support for the capture window (no skewed images, v4l - interface to capt. window) - - *Probably some bugs that I don't know of + * Add a working EPP mode + * Support other ccd-control chips than the saa7111 + (what combinations exists?) + * Add proper probing. IEEE1284 probing of w9966 chips haven't + worked since parport drivers changed in 2.4.x. + * Probe for onboard SRAM, port directions etc. (if possible) - Please support me by sending feedback! - Changes: Alan Cox: Removed RGB mode for kernel merge, added THIS_MODULE @@ -59,6 +40,8 @@ #include <linux/delay.h> #include <linux/videodev.h> #include <linux/parport.h> +#include <linux/types.h> +#include <linux/slab.h> //#define DEBUG // Undef me for production @@ -99,43 +82,44 @@ #define W9966_I2C_W_CLOCK 0x01 struct w9966_dev { - unsigned char dev_state; - unsigned char i2c_state; - unsigned short ppmode; + u8 dev_state; + u8 i2c_state; + int ppmode; struct parport* pport; struct pardevice* pdev; struct video_device vdev; - unsigned short width; - unsigned short height; - unsigned char brightness; - signed char contrast; - signed char color; - signed char hue; + u16 width; + u16 height; + u8 brightness; + s8 contrast; + s8 color; + s8 hue; + u8* buffer; }; /* * Module specific properties */ -MODULE_AUTHOR("Jakob Kemi <jak...@po...>"); -MODULE_DESCRIPTION("Winbond w9966cf WebCam driver (0.32)"); +MODULE_AUTHOR("Jakob Kemi <jak...@te...>"); +MODULE_DESCRIPTION("Winbond w9966cf WebCam driver (FlyCam Supra and others)"); MODULE_LICENSE("GPL"); -#ifdef MODULE -static const char* pardev[] = {[0 ... W9966_MAXCAMS] = ""}; -#else -static const char* pardev[] = {[0 ... W9966_MAXCAMS] = "aggressive"}; -#endif -MODULE_PARM(pardev, "1-" __MODULE_STRING(W9966_MAXCAMS) "s"); -MODULE_PARM_DESC(pardev, "pardev: where to search for\n\ -\teach camera. 'aggressive' means brute-force search.\n\ -\tEg: >pardev=parport3,aggressive,parport2,parport1< would assign -\tcam 1 to parport3 and search every parport for cam 2 etc..."); +static const char* pardev[] = {[0 ... W9966_MAXCAMS] = "auto"}; +MODULE_PARM(pardev, "0-" __MODULE_STRING(W9966_MAXCAMS) "s"); +MODULE_PARM_DESC(pardev,"\n\ +<auto|name|none[,...]> Where to find cameras.\n\ + auto = probe all parports for camera\n\ + name = name of parport (eg parport0)\n\ + none = don't search for this camera\n\ +You can specify all cameras this way, for example: + pardev=parport2,auto,none,parport0 would search for cam1 on parport2, search\n\ + for cam2 on all parports, skip cam3 and search for cam4 on parport0"); static int parmode = 0; MODULE_PARM(parmode, "i"); -MODULE_PARM_DESC(parmode, "parmode: transfer mode (0=auto, 1=ecp, 2=epp"); +MODULE_PARM_DESC(parmode, "\n<0|1|2> transfer mode (0=auto, 1=ecp, 2=epp)"); static int video_nr = -1; MODULE_PARM(video_nr, "i"); @@ -277,17 +261,23 @@ case 0: if (port->modes & PARPORT_MODE_ECP) cam->ppmode = IEEE1284_MODE_ECP; - else if (port->modes & PARPORT_MODE_EPP) - cam->ppmode = IEEE1284_MODE_EPP; +/* else if (port->modes & PARPORT_MODE_EPP) + cam->ppmode = IEEE1284_MODE_EPP;*/ else - cam->ppmode = IEEE1284_MODE_ECP; + cam->ppmode = IEEE1284_MODE_ECPSWE; break; case 1: // hw- or sw-ecp - cam->ppmode = IEEE1284_MODE_ECP; + if (port->modes & PARPORT_MODE_ECP) + cam->ppmode = IEEE1284_MODE_ECP; + else + cam->ppmode = IEEE1284_MODE_ECPSWE; break; case 2: // hw- or sw-epp - cam->ppmode = IEEE1284_MODE_EPP; - break; + if (port->modes & PARPORT_MODE_EPP) + cam->ppmode = IEEE1284_MODE_EPP; + else + cam->ppmode = IEEE1284_MODE_EPPSWE; + break; } // Tell the parport driver that we exists @@ -325,6 +315,8 @@ w9966_setState(cam, W9966_STATE_VDEV, W9966_STATE_VDEV); + cam->buffer = NULL; + // All ok printk( "w9966cf: Found and initialized a webcam on %s.\n", @@ -337,6 +329,12 @@ // Terminate everything gracefully static void w9966_term(struct w9966_dev* cam) { +// Delete allocated buffer if needed + if (cam->buffer != NULL) { + kfree(cam->buffer); + cam->buffer = NULL; + } + // Unregister from v4l if (w9966_getState(cam, W9966_STATE_VDEV, W9966_STATE_VDEV)) { video_unregister_device(&cam->vdev); @@ -431,9 +429,9 @@ { unsigned int i; unsigned int enh_s, enh_e; - unsigned char scale_x, scale_y; - unsigned char regs[0x1c]; - unsigned char saa7111_regs[] = { + u8 scale_x, scale_y; + u8 regs[0x1c]; + u8 saa7111_regs[] = { 0x21, 0x00, 0xd8, 0x23, 0x00, 0x80, 0x80, 0x00, 0x88, 0x10, 0x80, 0x40, 0x40, 0x00, 0x01, 0x00, 0x48, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -664,6 +662,7 @@ return data; } + // Write a register to the i2c device. // Expects claimed pdev. -1 on error static int w9966_wReg_i2c(struct w9966_dev* cam, int reg, int data) @@ -693,11 +692,23 @@ static int w9966_v4l_open(struct video_device *vdev, int flags) { + struct w9966_dev *cam = (struct w9966_dev*)vdev->priv; + cam->buffer = (u8*)kmalloc(W9966_RBUFFER, GFP_KERNEL); + + if (cam->buffer == NULL) + return -EFAULT; + return 0; } static void w9966_v4l_close(struct video_device *vdev) { + struct w9966_dev *cam = (struct w9966_dev*)vdev->priv; + + if (cam->buffer != NULL) { + kfree(cam->buffer); + cam->buffer = NULL; + } } static int w9966_v4l_ioctl(struct video_device *vdev, unsigned int cmd, void *arg) @@ -920,13 +931,12 @@ while(dleft > 0) { unsigned long tsize = (dleft > W9966_RBUFFER) ? W9966_RBUFFER : dleft; - unsigned char tbuf[W9966_RBUFFER]; - if (parport_read(cam->pport, tbuf, tsize) < tsize) { + if (parport_read(cam->pport, cam->buffer, tsize) < tsize) { w9966_pdev_release(cam); return -EFAULT; } - if (copy_to_user(dest, tbuf, tsize) != 0) { + if (copy_to_user(dest, cam->buffer, tsize) != 0) { w9966_pdev_release(cam); return -EFAULT; } @@ -948,14 +958,14 @@ for (i = 0; i < W9966_MAXCAMS; i++) { + if (strcmp(pardev[i], "none") == 0) // Skip if 'none' + continue; if (w9966_cams[i].dev_state != 0) // Cam is already assigned continue; - if ( - strcmp(pardev[i], "aggressive") == 0 || - strcmp(pardev[i], port->name) == 0 - ) { + if (strcmp(pardev[i], "auto") == 0 || + strcmp(pardev[i], port->name) == 0) { if (w9966_init(&w9966_cams[i], port) != 0) - w9966_term(&w9966_cams[i]); + w9966_term(&w9966_cams[i]); break; // return } } |
From: Dave A. <ai...@us...> - 2003-06-10 01:15:23
|
Update of /cvsroot/linux-vax/kernel-2.4/arch/mips/kernel In directory sc8-pr-cvs1:/tmp/cvs-serv7538/arch/mips/kernel Modified Files: smp.c Log Message: DA: sync with Marcelo 2.4.17 Index: smp.c =================================================================== RCS file: /cvsroot/linux-vax/kernel-2.4/arch/mips/kernel/smp.c,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- smp.c 10 Apr 2002 14:38:06 -0000 1.1 +++ smp.c 10 Jun 2003 01:13:14 -0000 1.2 @@ -31,6 +31,7 @@ #include <linux/timex.h> #include <linux/sched.h> #include <linux/interrupt.h> +#include <linux/cache.h> #include <asm/atomic.h> #include <asm/processor.h> @@ -52,7 +53,7 @@ /* Ze Big Kernel Lock! */ -spinlock_t kernel_flag = SPIN_LOCK_UNLOCKED; +spinlock_t kernel_flag __cacheline_aligned_in_smp = SPIN_LOCK_UNLOCKED; int smp_threads_ready; /* Not used */ int smp_num_cpus; int global_irq_holder = NO_PROC_ID; |
From: Dave A. <ai...@us...> - 2003-06-10 01:15:23
|
Update of /cvsroot/linux-vax/kernel-2.4/Documentation In directory sc8-pr-cvs1:/tmp/cvs-serv7538/Documentation Modified Files: Changes Configure.help DMA-mapping.txt cachetlb.txt pci.txt pm.txt sonypi.txt Log Message: DA: sync with Marcelo 2.4.17 Index: Changes =================================================================== RCS file: /cvsroot/linux-vax/kernel-2.4/Documentation/Changes,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 --- Changes 9 Apr 2002 16:55:38 -0000 1.2 +++ Changes 10 Jun 2003 01:13:11 -0000 1.3 @@ -53,7 +53,7 @@ o binutils 2.9.1.0.25 # ld -v o util-linux 2.10o # fdformat --version o modutils 2.4.2 # insmod -V -o e2fsprogs 1.19 # tune2fs +o e2fsprogs 1.25 # tune2fs o reiserfsprogs 3.x.0j # reiserfsck 2>&1|grep reiserfsprogs o pcmcia-cs 3.1.21 # cardmgr -V o PPP 2.4.0 # pppd --version @@ -317,8 +317,7 @@ E2fsprogs --------- -o <http://prdownloads.sourceforge.net/e2fsprogs/e2fsprogs-1.19.tar.gz> -o <http://prdownloads.sourceforge.net/e2fsprogs/e2fsprogs-1.19-0.src.rpm> +o <http://prdownloads.sourceforge.net/e2fsprogs/e2fsprogs-1.25.tar.gz> Reiserfsprogs ------------- Index: Configure.help =================================================================== RCS file: /cvsroot/linux-vax/kernel-2.4/Documentation/Configure.help,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 --- Configure.help 9 Apr 2002 16:55:38 -0000 1.2 +++ Configure.help 10 Jun 2003 01:13:11 -0000 1.3 @@ -2,10 +2,10 @@ # Eric S. Raymond <mailto:es...@th...> # Steven Cole <mailto:ele...@me...> # -# Merged version 2.49: Current with 2.4.15-pre1 and 2.4.13-ac8. +# Merged version 2.69: current with 2.4.17-pre8/2.5.1-pre10. # # This version of the Linux kernel configuration help texts -# corresponds to the kernel versions 2.4.x. +# corresponds to kernel versions 2.4.x and 2.5.x. # # Translations of this file available on the WWW: [...3744 lines suppressed...] SuperH SCI (serial) support CONFIG_SH_SCI @@ -23951,7 +24250,7 @@ # # This is used by Emacs' spell checker ispell.el: # -# LocalWords: CONFIG coprocessor DX Pentium SX lilo loadlin HOWTO ftp metalab +# LocalWords: CONFIG coprocessor DX Pentium SX lilo loadlin HOWTO ftp ibiblio # LocalWords: unc edu docs emu README kB BLK DEV FD Thinkpad fd MFM RLL IDE gz # LocalWords: cdrom diskless netboot nfs xzvf ATAPI MB ide pavia rubini pl pd # LocalWords: HD CD-ROMs IDECD NEC MITSUMI filesystem XT XD PCI BIOS cezar ATEN @@ -23997,7 +24296,7 @@ # LocalWords: bsd comp SPARCstation le SunOS ie Gracilis PackeTwin PT pt LU FX # LocalWords: FX TEAC CR LCS mS ramdisk IDETAPE cmd fperllo encis tcfs unisa # LocalWords: Vertos Genoa Funai hsfs NCP NetWare tgz APM apm ioctls UltraLite -# LocalWords: TravelMate CDT LCD backlight VC RPC Mips AXP barlow cdrecord pg +# LocalWords: TravelMate CDT LCD backlight VC RPC Mips AXP barlow cdrtools pg # LocalWords: PMAX MILO Alphas Multia Tseng linuxelf endian mipsel mips drv HT # LocalWords: kerneld callouts AdvanSys advansys Admin WDT DataStor EP verden # LocalWords: wdt hdb hdc bugfix SiS vlb Acculogic CSA DTC dtc Holtek ht QDI Index: DMA-mapping.txt =================================================================== RCS file: /cvsroot/linux-vax/kernel-2.4/Documentation/DMA-mapping.txt,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 --- DMA-mapping.txt 9 Apr 2002 16:55:39 -0000 1.2 +++ DMA-mapping.txt 10 Jun 2003 01:13:11 -0000 1.3 @@ -60,6 +60,9 @@ might be mapped somewhere entirely different than the rest of physical memory. +Also, this means that you cannot take the return of a kmap() +call and DMA to/from that. This is similar to vmalloc(). + What about block I/O and networking buffers? The block I/O and networking subsystems make sure that the buffers they use are valid for you to DMA from/to. Index: cachetlb.txt =================================================================== RCS file: /cvsroot/linux-vax/kernel-2.4/Documentation/cachetlb.txt,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 --- cachetlb.txt 9 Apr 2002 16:55:39 -0000 1.2 +++ cachetlb.txt 10 Jun 2003 01:13:11 -0000 1.3 @@ -275,7 +275,7 @@ for example, uses this technique. The "address" parameter tells the virtual address where the - user will ultimately this page mapped. + user will ultimately have this page mapped. If D-cache aliasing is not an issue, these two routines may simply call memcpy/memset directly and do nothing more. Index: pci.txt =================================================================== RCS file: /cvsroot/linux-vax/kernel-2.4/Documentation/pci.txt,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 --- pci.txt 9 Apr 2002 16:55:39 -0000 1.2 +++ pci.txt 10 Jun 2003 01:13:12 -0000 1.3 @@ -104,6 +104,10 @@ If you are sure the driver is not a hotplug driver then use only __init/exit __initdata/exitdata. + Pointers to functions marked as __devexit must be created using + __devexit_p(function_name). That will generate the function + name or NULL if the __devexit function will be discarded. + 2. How to find PCI devices manually (the old style) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Index: pm.txt =================================================================== RCS file: /cvsroot/linux-vax/kernel-2.4/Documentation/pm.txt,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 --- pm.txt 9 Apr 2002 16:55:39 -0000 1.2 +++ pm.txt 10 Jun 2003 01:13:12 -0000 1.3 @@ -34,7 +34,7 @@ system the associated daemon will exit gracefully. apmd: http://worldvisions.ca/~apenwarr/apmd/ - acpid: http://phobos.fs.tum.de/acpi/ + acpid: http://acpid.sf.net/ Driver Interface ---------------- @@ -260,7 +260,7 @@ Q: Who do I contact for additional information about enabling power management for my specific driver/device? -ACPI4Linux mailing list: ac...@ph... +ACPI Development mailing list: acp...@li... System Interface ---------------- Index: sonypi.txt =================================================================== RCS file: /cvsroot/linux-vax/kernel-2.4/Documentation/sonypi.txt,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- sonypi.txt 9 Apr 2002 16:55:39 -0000 1.1 +++ sonypi.txt 10 Jun 2003 01:13:12 -0000 1.2 @@ -58,6 +58,10 @@ get enabled unless you set this parameter to 1. Do not use this option unless it's actually necessary, some Vaio models don't deal well with this option. + This option is available only if the kernel is + compiled without ACPI support (since it conflicts + with it and it shouldn't be required anyway if + ACPI is already enabled). verbose: print unknown events from the sonypi device @@ -93,7 +97,10 @@ - some users reported that the laptop speed is lower (dhrystone tested) when using the driver with the fnkeyinit parameter. I cannot reproduce it on my laptop and not all users have this problem. - Still under investigation. + This happens because the fnkeyinit parameter enables the ACPI + mode (but without additionnal ACPI control, like processor + speed handling etc). Use ACPI instead of APM if it works on your + laptop. - since all development was done by reverse engineering, there is _absolutely no guarantee_ that this driver will not crash your |
From: Dave A. <ai...@us...> - 2003-06-10 01:15:22
|
Update of /cvsroot/linux-vax/kernel-2.4/Documentation/isdn In directory sc8-pr-cvs1:/tmp/cvs-serv7538/Documentation/isdn Modified Files: INTERFACE INTERFACE.fax README.act2000 README.audio README.eicon README.hysdn README.icn Log Message: DA: sync with Marcelo 2.4.17 Index: INTERFACE =================================================================== RCS file: /cvsroot/linux-vax/kernel-2.4/Documentation/isdn/INTERFACE,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 Index: INTERFACE.fax =================================================================== RCS file: /cvsroot/linux-vax/kernel-2.4/Documentation/isdn/INTERFACE.fax,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 Index: README.act2000 =================================================================== RCS file: /cvsroot/linux-vax/kernel-2.4/Documentation/isdn/README.act2000,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 Index: README.audio =================================================================== RCS file: /cvsroot/linux-vax/kernel-2.4/Documentation/isdn/README.audio,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 Index: README.eicon =================================================================== RCS file: /cvsroot/linux-vax/kernel-2.4/Documentation/isdn/README.eicon,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 Index: README.hysdn =================================================================== RCS file: /cvsroot/linux-vax/kernel-2.4/Documentation/isdn/README.hysdn,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 Index: README.icn =================================================================== RCS file: /cvsroot/linux-vax/kernel-2.4/Documentation/isdn/README.icn,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 |
From: Dave A. <ai...@us...> - 2003-06-10 01:15:22
|
Update of /cvsroot/linux-vax/kernel-2.4/arch/ia64/kernel In directory sc8-pr-cvs1:/tmp/cvs-serv7538/arch/ia64/kernel Modified Files: efivars.c pci.c smp.c Log Message: DA: sync with Marcelo 2.4.17 Index: efivars.c =================================================================== RCS file: /cvsroot/linux-vax/kernel-2.4/arch/ia64/kernel/efivars.c,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- efivars.c 10 Apr 2002 14:27:20 -0000 1.1 +++ efivars.c 10 Jun 2003 01:13:14 -0000 1.2 @@ -100,7 +100,7 @@ struct list_head list; } efivar_entry_t; -spinlock_t efivars_lock = SPIN_LOCK_UNLOCKED; +static spinlock_t efivars_lock = SPIN_LOCK_UNLOCKED; static LIST_HEAD(efivar_list); static struct proc_dir_entry *efi_vars_dir = NULL; Index: pci.c =================================================================== RCS file: /cvsroot/linux-vax/kernel-2.4/arch/ia64/kernel/pci.c,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 --- pci.c 10 Apr 2002 14:27:20 -0000 1.2 +++ pci.c 10 Jun 2003 01:13:14 -0000 1.3 @@ -46,7 +46,7 @@ * This interrupt-safe spinlock protects all accesses to PCI * configuration space. */ -spinlock_t pci_lock = SPIN_LOCK_UNLOCKED; +static spinlock_t pci_lock = SPIN_LOCK_UNLOCKED; struct pci_fixup pcibios_fixups[] = { { 0 } Index: smp.c =================================================================== RCS file: /cvsroot/linux-vax/kernel-2.4/arch/ia64/kernel/smp.c,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 --- smp.c 10 Apr 2002 14:27:21 -0000 1.2 +++ smp.c 10 Jun 2003 01:13:14 -0000 1.3 @@ -30,6 +30,7 @@ #include <linux/kernel_stat.h> #include <linux/mm.h> #include <linux/delay.h> +#include <linux/cache.h> #include <asm/atomic.h> #include <asm/bitops.h> @@ -51,7 +52,7 @@ #include <asm/mca.h> /* The 'big kernel lock' */ -spinlock_t kernel_flag = SPIN_LOCK_UNLOCKED; +spinlock_t kernel_flag __cacheline_aligned_in_smp = SPIN_LOCK_UNLOCKED; /* * Structure and data for smp_call_function(). This is designed to minimise static memory |
From: Dave A. <ai...@us...> - 2003-06-10 01:15:22
|
Update of /cvsroot/linux-vax/kernel-2.4/arch/ia64/sn/io In directory sc8-pr-cvs1:/tmp/cvs-serv7538/arch/ia64/sn/io Modified Files: hcl.c hubspc.c Log Message: DA: sync with Marcelo 2.4.17 Index: hcl.c =================================================================== RCS file: /cvsroot/linux-vax/kernel-2.4/arch/ia64/sn/io/hcl.c,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 --- hcl.c 10 Apr 2002 14:27:22 -0000 1.2 +++ hcl.c 10 Jun 2003 01:13:14 -0000 1.3 @@ -1049,16 +1049,22 @@ struct file_operations * hwgraph_cdevsw_get(devfs_handle_t de) { - return(devfs_get_ops(de)); + struct file_operations *fops = devfs_get_ops(de); + + devfs_put_ops(de); /* FIXME: this may need to be moved to callers */ + return(fops); } /* * hwgraph_bdevsw_get - returns the fops of the given devfs entry. */ -struct file_operations * +struct file_operations * /* FIXME: shouldn't this be a blkdev? */ hwgraph_bdevsw_get(devfs_handle_t de) { - return(devfs_get_ops(de)); + struct file_operations *fops = devfs_get_ops(de); + + devfs_put_ops(de); /* FIXME: this may need to be moved to callers */ + return(fops); } /* Index: hubspc.c =================================================================== RCS file: /cvsroot/linux-vax/kernel-2.4/arch/ia64/sn/io/hubspc.c,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 --- hubspc.c 10 Apr 2002 14:27:22 -0000 1.2 +++ hubspc.c 10 Jun 2003 01:13:14 -0000 1.3 @@ -61,7 +61,7 @@ }cpuprom_info_t; static cpuprom_info_t *cpuprom_head; -spinlock_t cpuprom_spinlock; +static spinlock_t cpuprom_spinlock; #define PROM_LOCK() mutex_spinlock(&cpuprom_spinlock) #define PROM_UNLOCK(s) mutex_spinunlock(&cpuprom_spinlock, (s)) |
From: Dave A. <ai...@us...> - 2003-06-10 01:15:20
|
Update of /cvsroot/linux-vax/kernel-2.4/arch/i386/mm In directory sc8-pr-cvs1:/tmp/cvs-serv7538/arch/i386/mm Modified Files: init.c Log Message: DA: sync with Marcelo 2.4.17 Index: init.c =================================================================== RCS file: /cvsroot/linux-vax/kernel-2.4/arch/i386/mm/init.c,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 --- init.c 10 Apr 2002 14:23:22 -0000 1.2 +++ init.c 10 Jun 2003 01:13:14 -0000 1.3 @@ -25,6 +25,7 @@ #include <linux/highmem.h> #include <linux/pagemap.h> #include <linux/bootmem.h> +#include <linux/slab.h> #include <asm/processor.h> #include <asm/system.h> @@ -596,3 +597,17 @@ val->mem_unit = PAGE_SIZE; return; } + +#if defined(CONFIG_X86_PAE) +struct kmem_cache_s *pae_pgd_cachep; +void __init pgtable_cache_init(void) +{ + /* + * PAE pgds must be 16-byte aligned: + */ + pae_pgd_cachep = kmem_cache_create("pae_pgd", 32, 0, + SLAB_HWCACHE_ALIGN | SLAB_MUST_HWCACHE_ALIGN, NULL, NULL); + if (!pae_pgd_cachep) + panic("init_pae(): Cannot alloc pae_pgd SLAB cache"); +} +#endif /* CONFIG_X86_PAE */ |
From: Dave A. <ai...@us...> - 2003-06-10 01:15:19
|
Update of /cvsroot/linux-vax/kernel-2.4/arch/alpha/kernel In directory sc8-pr-cvs1:/tmp/cvs-serv7538/arch/alpha/kernel Modified Files: alpha_ksyms.c irq_i8259.c smp.c Log Message: DA: sync with Marcelo 2.4.17 Index: alpha_ksyms.c =================================================================== RCS file: /cvsroot/linux-vax/kernel-2.4/arch/alpha/kernel/alpha_ksyms.c,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 --- alpha_ksyms.c 10 Apr 2002 13:07:22 -0000 1.2 +++ alpha_ksyms.c 10 Jun 2003 01:13:13 -0000 1.3 @@ -258,3 +258,8 @@ EXPORT_SYMBOL_NOVERS(memchr); EXPORT_SYMBOL(get_wchan); + +#ifdef CONFIG_ALPHA_IRONGATE +EXPORT_SYMBOL(irongate_ioremap); +EXPORT_SYMBOL(irongate_iounmap); +#endif Index: irq_i8259.c =================================================================== RCS file: /cvsroot/linux-vax/kernel-2.4/arch/alpha/kernel/irq_i8259.c,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -u -r1.1.1.1 -r1.2 --- irq_i8259.c 14 Jan 2001 19:24:23 -0000 1.1.1.1 +++ irq_i8259.c 10 Jun 2003 01:13:13 -0000 1.2 @@ -22,7 +22,7 @@ /* Note mask bit is true for DISABLED irqs. */ static unsigned int cached_irq_mask = 0xffff; -spinlock_t i8259_irq_lock = SPIN_LOCK_UNLOCKED; +static spinlock_t i8259_irq_lock = SPIN_LOCK_UNLOCKED; static inline void i8259_update_irq_hw(unsigned int irq, unsigned long mask) Index: smp.c =================================================================== RCS file: /cvsroot/linux-vax/kernel-2.4/arch/alpha/kernel/smp.c,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 --- smp.c 10 Apr 2002 13:07:22 -0000 1.2 +++ smp.c 10 Jun 2003 01:13:13 -0000 1.3 @@ -23,6 +23,7 @@ #include <linux/delay.h> #include <linux/spinlock.h> #include <linux/irq.h> +#include <linux/cache.h> #include <asm/hwrpb.h> #include <asm/ptrace.h> @@ -65,7 +66,7 @@ IPI_CPU_STOP, }; -spinlock_t kernel_flag = SPIN_LOCK_UNLOCKED; +spinlock_t kernel_flag __cacheline_aligned_in_smp = SPIN_LOCK_UNLOCKED; /* Set to a secondary's cpuid when it comes online. */ static unsigned long smp_secondary_alive; |
From: Dave A. <ai...@us...> - 2003-06-10 01:15:19
|
Update of /cvsroot/linux-vax/kernel-2.4/drivers/isdn/hysdn In directory sc8-pr-cvs1:/tmp/cvs-serv7538/drivers/isdn/hysdn Modified Files: boardergo.c boardergo.h hycapi.c hysdn_boot.c hysdn_defs.h hysdn_init.c hysdn_net.c hysdn_pof.h hysdn_procconf.c hysdn_proclog.c hysdn_sched.c Log Message: DA: sync with Marcelo 2.4.17 Index: boardergo.c =================================================================== RCS file: /cvsroot/linux-vax/kernel-2.4/drivers/isdn/hysdn/boardergo.c,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 Index: boardergo.h =================================================================== RCS file: /cvsroot/linux-vax/kernel-2.4/drivers/isdn/hysdn/boardergo.h,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 Index: hycapi.c =================================================================== RCS file: /cvsroot/linux-vax/kernel-2.4/drivers/isdn/hysdn/hycapi.c,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 Index: hysdn_boot.c =================================================================== RCS file: /cvsroot/linux-vax/kernel-2.4/drivers/isdn/hysdn/hysdn_boot.c,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 Index: hysdn_defs.h =================================================================== RCS file: /cvsroot/linux-vax/kernel-2.4/drivers/isdn/hysdn/hysdn_defs.h,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 Index: hysdn_init.c =================================================================== RCS file: /cvsroot/linux-vax/kernel-2.4/drivers/isdn/hysdn/hysdn_init.c,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 Index: hysdn_net.c =================================================================== RCS file: /cvsroot/linux-vax/kernel-2.4/drivers/isdn/hysdn/hysdn_net.c,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 Index: hysdn_pof.h =================================================================== RCS file: /cvsroot/linux-vax/kernel-2.4/drivers/isdn/hysdn/hysdn_pof.h,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 Index: hysdn_procconf.c =================================================================== RCS file: /cvsroot/linux-vax/kernel-2.4/drivers/isdn/hysdn/hysdn_procconf.c,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 Index: hysdn_proclog.c =================================================================== RCS file: /cvsroot/linux-vax/kernel-2.4/drivers/isdn/hysdn/hysdn_proclog.c,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 Index: hysdn_sched.c =================================================================== RCS file: /cvsroot/linux-vax/kernel-2.4/drivers/isdn/hysdn/hysdn_sched.c,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 |
From: Dave A. <ai...@us...> - 2003-06-10 01:15:18
|
Update of /cvsroot/linux-vax/kernel-2.4/Documentation/networking In directory sc8-pr-cvs1:/tmp/cvs-serv7538/Documentation/networking Modified Files: decnet.txt Log Message: DA: sync with Marcelo 2.4.17 Index: decnet.txt =================================================================== RCS file: /cvsroot/linux-vax/kernel-2.4/Documentation/networking/decnet.txt,v retrieving revision 1.1.1.2 retrieving revision 1.2 diff -u -r1.1.1.2 -r1.2 --- decnet.txt 25 Feb 2001 23:15:24 -0000 1.1.1.2 +++ decnet.txt 10 Jun 2003 01:13:13 -0000 1.2 @@ -4,20 +4,9 @@ 1) Other documentation.... o Project Home Pages - http://www.sucs.swan.ac.uk/~rohan/DECnet/index.html - Kernel info + http://www.chygwyn.com/DECnet/ - Kernel info http://linux-decnet.sourceforge.net/ - Userland tools - - o FTP sites - ftp://ftp.sucs.swan.ac.uk/pub/Linux/DECnet/ - - Swansea University Computer Society DECnet Archive - (contains kernel patches and info) - - Mirror of userland tools on ftp.dreamtime.org - - Mirror of Alexey Kuznetsov's iproute2 package and - other utilities - - ftp://linux-decnet.sourceforge.net/pub/linux-decnet/ - - Patrick Caulfield's archive of userland tools and - Eduardo Serrat's kernel patches + http://www.sourceforge.net/projects/linux-decnet/ - Status page 2) Configuring the kernel @@ -31,9 +20,13 @@ you'll need the following options as well... CONFIG_DECNET_ROUTER (to be able to add/delete routes) - CONFIG_NETLINK (to allow rtnetlink) - CONFIG_RTNETLINK (for communication with the kernel routing layer) CONFIG_NETFILTER (will be required for the DECnet routing daemon) + + CONFIG_DECNET_ROUTE_FWMARK is optional + +Don't turn on SIOCGIFCONF support for DECnet unless you are really sure +that you need it, in general you won't and it can cause ifconfig to +malfunction. 3) Command line options |
From: Dave A. <ai...@us...> - 2003-06-10 01:15:18
|
Update of /cvsroot/linux-vax/kernel-2.4/Documentation/filesystems In directory sc8-pr-cvs1:/tmp/cvs-serv7538/Documentation/filesystems Modified Files: Locking ntfs.txt Log Message: DA: sync with Marcelo 2.4.17 Index: Locking =================================================================== RCS file: /cvsroot/linux-vax/kernel-2.4/Documentation/filesystems/Locking,v retrieving revision 1.1.1.2 retrieving revision 1.2 diff -u -r1.1.1.2 -r1.2 --- Locking 25 Feb 2001 23:15:24 -0000 1.1.1.2 +++ Locking 10 Jun 2003 01:13:12 -0000 1.2 @@ -123,6 +123,10 @@ int (*prepare_write)(struct file *, struct page *, unsigned, unsigned); int (*commit_write)(struct file *, struct page *, unsigned, unsigned); int (*bmap)(struct address_space *, long); + int (*flushpage) (struct page *, unsigned long); + int (*releasepage) (struct page *, int); + int (*direct_IO)(int, struct inode *, struct kiobuf *, unsigned long, int); + locking rules: All may block BKL PageLocked(page) @@ -132,6 +136,8 @@ prepare_write: no yes commit_write: no yes bmap: yes +flushpage: no yes +releasepage: no yes ->prepare_write(), ->commit_write(), ->sync_page() and ->readpage() may be called from the request handler (/dev/loop). @@ -144,6 +150,15 @@ filesystems and by the swapper. The latter will eventually go away. All instances do not actually need the BKL. Please, keep it that way and don't breed new callers. + ->flushpage() is called when the filesystem must attempt to drop +some or all of the buffers from the page when it is being truncated. It +returns zero on success. If ->flushpage is zero, the kernel uses +block_flushpage() instead. + ->releasepage() is called when the kernel is about to try to drop the +buffers from the page in preparation for freeing it. It returns zero to +indicate that the buffers are (or may be) freeable. If ->flushpage is zero, +the kernel assumes that the fs has no private interest in the buffers. + Note: currently almost all instances of address_space methods are using BKL for internal serialization and that's one of the worst sources of contention. Normally they are calling library functions (in fs/buffer.c) Index: ntfs.txt =================================================================== RCS file: /cvsroot/linux-vax/kernel-2.4/Documentation/filesystems/ntfs.txt,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 --- ntfs.txt 9 Apr 2002 16:55:41 -0000 1.2 +++ ntfs.txt 10 Jun 2003 01:13:12 -0000 1.3 @@ -98,6 +98,16 @@ ChangeLog ========= +NTFS 1.1.21: + - Fixed bug with reading $MFT where we try to read higher mft records + before having read the $DATA attribute of $MFT. (Note this is only a + partial solution which will only work in the case that the attribute + list is resident or non-resident but $DATA is in the first 1024 + bytes. But this should be enough in the majority of cases. I am not + going to bother fixing the general case until someone finds this to + be a problem for them, which I doubt very much will ever happen...) + - Fixed bogus BUG() call in readdir(). + NTFS 1.1.20: - Fixed two bugs in ntfs_readwrite_attr(). Thanks to Jan Kara for spotting the out of bounds one. |
From: Dave A. <ai...@us...> - 2003-06-10 01:15:18
|
Update of /cvsroot/linux-vax/kernel-2.4/Documentation/usb In directory sc8-pr-cvs1:/tmp/cvs-serv7538/Documentation/usb Modified Files: philips.txt scanner.txt Log Message: DA: sync with Marcelo 2.4.17 Index: philips.txt =================================================================== RCS file: /cvsroot/linux-vax/kernel-2.4/Documentation/usb/philips.txt,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- philips.txt 9 Apr 2002 16:55:47 -0000 1.1 +++ philips.txt 10 Jun 2003 01:13:13 -0000 1.2 @@ -1,5 +1,5 @@ This file contains some additional information for the Philips webcams. -E-mail: we...@sm... Last updated: 2001-07-27 +E-mail: we...@sm... Last updated: 2001-09-24 The main webpage for the Philips driver is http://www.smcc.demon.nl/webcam/. It contains a lot of extra information, a FAQ, and the binary plugin @@ -13,11 +13,9 @@ the latter, since it makes troubleshooting a lot easier. The built-in microphone is supported through the USB Audio class. -(Taken from install.html) - When you load the module you can set some default settings for the -camera; some programs depend on a particular image-size or -format. The -options are: +camera; some programs depend on a particular image-size or -format and +don't know how to set it properly in the driver. The options are: size Can be one of 'sqcif', 'qsif', 'qcif', 'sif', 'cif' or @@ -99,6 +97,57 @@ This parameter works only with the ToUCam range of cameras (730, 740, 750). For other cameras this command is silently ignored, and the LED cannot be controlled. + +dev_hint + A long standing problem with USB devices is their dynamic nature: you + never know what device a camera gets assigned; it depends on module load + order, the hub configuration, the order in which devices are plugged in, + and the phase of the moon (i.e. it can be random). With this option you + can give the driver a hint as to what video device node (/dev/videoX) it + should use with a specific camera. This is also handy if you have two + cameras of the same model. + + A camera is specified by its type (the number from the camera model, + like PCA645, PCVC750VC, etc) and optionally the serial number (visible + in /proc/bus/usb/devices). A hint consists of a string with the following + format: + + [type[.serialnumber]:]node + + The square brackets mean that both the type and the serialnumber are + optional, but a serialnumber cannot be specified without a type (which + would be rather pointless). The serialnumber is separated from the type + by a '.'; the node number by a ':'. + + This somewhat cryptic syntax is best explained by a few examples: + + dev_hint=3,5 The first detected cam gets assigned + /dev/video3, the second /dev/video5. Any + other cameras will get the first free + available slot (see below). + + dev_hint=645:1,680=2 The PCA645 camera will get /dev/video1, + and a PCVC680 /dev/video2. + + dev_hint=645.0123:3,645.4567:0 The PCA645 camera with serialnumber + 0123 goes to /dev/video3, the same + camera model with the 4567 serial + gets /dev/video0. + + dev_hint=750:1,4,5,6 The PCVC750 camera will get /dev/video1, the + next 3 Philips cams will use /dev/video4 + through /dev/video6. + + Some points worth knowing: + - Serialnumbers are case sensitive and must be written full, including + leading zeroes (it's treated as a string). + - If a device node is already occupied, registration will fail and + the webcam is not available. + - You can have up to 64 video devices; be sure to make enough device + nodes in /dev if you want to spread the numbers (this does not apply + to devfs). After /dev/video9 comes /dev/video10 (not /dev/videoA). + - If a camera does not match any dev_hint, it will simply get assigned + the first available device node, just as it used to be. trace In order to better detect problems, it is now possible to turn on a Index: scanner.txt =================================================================== RCS file: /cvsroot/linux-vax/kernel-2.4/Documentation/usb/scanner.txt,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 --- scanner.txt 9 Apr 2002 16:55:47 -0000 1.2 +++ scanner.txt 10 Jun 2003 01:13:13 -0000 1.3 @@ -83,7 +83,7 @@ `mknod /dev/usbscanner1 c 180 49` . . - `mknod /dev/usbscanner15 180 63` + `mknod /dev/usbscanner15 c 180 63` If you foresee using only one scanner it is best to: |
From: Dave A. <ai...@us...> - 2003-06-10 01:15:18
|
Update of /cvsroot/linux-vax/kernel-2.4/Documentation/filesystems/devfs In directory sc8-pr-cvs1:/tmp/cvs-serv7538/Documentation/filesystems/devfs Modified Files: ChangeLog README Log Message: DA: sync with Marcelo 2.4.17 Index: ChangeLog =================================================================== RCS file: /cvsroot/linux-vax/kernel-2.4/Documentation/filesystems/devfs/ChangeLog,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 --- ChangeLog 9 Apr 2002 16:55:41 -0000 1.2 +++ ChangeLog 10 Jun 2003 01:13:12 -0000 1.3 @@ -1778,3 +1778,70 @@ Thanks to Kari Hurtta <hu...@le...> - Avoid deadlock in <devfs_follow_link> by using temporary buffer +=============================================================================== +Changes for patch v197 + +- First release of new locking code for devfs core (v1.0) + +- Fixed bug in drivers/cdrom/cdrom.c +=============================================================================== +Changes for patch v198 + +- Discard temporary buffer, now use "%s" for dentry names + +- Don't generate path in <try_modload>: use fake entry instead + +- Use "existing" directory in <_devfs_make_parent_for_leaf> + +- Use slab cache rather than fixed buffer for devfsd events +=============================================================================== +Changes for patch v199 + +- Removed obsolete usage of DEVFS_FL_NO_PERSISTENCE + +- Send DEVFSD_NOTIFY_REGISTERED events in <devfs_mk_dir> + +- Fixed locking bug in <devfs_d_revalidate_wait> due to typo + +- Do not send CREATE, CHANGE, ASYNC_OPEN or DELETE events from devfsd + or children +=============================================================================== +Changes for patch v199.1 + +- Fixed bug in <devfsd_read>: was dereferencing freed pointer +=============================================================================== +Changes for patch v199.2 + +- Fixed bug in <devfsd_close>: was dereferencing freed pointer + +- Added process group check for devfsd privileges +=============================================================================== +Changes for patch v199.3 + +- Use SLAB_ATOMIC in <devfsd_notify_de> from <devfs_d_delete> +=============================================================================== +Changes for patch v199.4 + +- Removed long obsolete rc.devfs + +- Return old entry in <devfs_mk_dir> for 2.4.x kernels + +- Updated README from master HTML file + +- Increment refcount on module in <check_disc_changed> + +- Created <devfs_get_handle> and exported <devfs_put> + +- Increment refcount on module in <devfs_get_ops> + +- Created <devfs_put_ops> and used where needed to fix races + +- Added clarifying comments in response to preliminary EMC code review +=============================================================================== +Changes for patch v199.5 + +- Added poisoning to <devfs_put> + +- Improved debugging messages + +- Fixed unregister bugs in drivers/md/lvm-fs.c Index: README =================================================================== RCS file: /cvsroot/linux-vax/kernel-2.4/Documentation/filesystems/devfs/README,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 --- README 9 Apr 2002 16:55:41 -0000 1.2 +++ README 10 Jun 2003 01:13:12 -0000 1.3 @@ -3,7 +3,7 @@ Linux Devfs (Device File System) FAQ Richard Gooch -29-SEP-2001 +13-DEC-2001 ----------------------------------------------------------------------------- @@ -11,7 +11,9 @@ http://www.atnf.csiro.au/~rgooch/linux/docs/devfs.html and looks much better than the text version distributed with the -kernel sources. +kernel sources. A mirror site is available at: + +http://www.ras.ucalgary.ca/~rgooch/linux/docs/devfs.html There is also an optional daemon that may be used with devfs. You can find out more about it at: @@ -64,6 +66,8 @@ Making things work Alternatives to devfs +What I don't like about devfs +How to report bugs Other resources @@ -555,8 +559,10 @@ Devfsd OK, if you're reading this, I assume you want to play with -devfs. First you need to compile devfsd, the device management daemon, -available at +devfs. First you should ensure that /usr/src/linux contains a +recent kernel source tree. Then you need to compile devfsd, the device +management daemon, available at + http://www.atnf.csiro.au/~rgooch/linux/. Because the kernel has a naming scheme which is quite different from the old naming scheme, you need to @@ -1468,6 +1474,7 @@ Making things work Alternatives to devfs What I don't like about devfs +How to report bugs @@ -1731,6 +1738,57 @@ This is not even remotely true. As shown above, both code and data size are quite modest. + + +How to report bugs + +If you have (or think you have) a bug with devfs, please follow the +steps below: + + + +please make sure you have the latest devfs patches applied. The +latest kernel version might not have the latest devfs patches applied +yet (Linus is very busy) + + +save a copy of your complete kernel logs (preferably by +using the dmesg programme) for later inclusion in your bug +report. You may need to use the -s switch to increase the +internal buffer size so you can capture all the boot messages + + +try booting with devfs=dall passed to the kernel boot +command line (read the documentation on your bootloader on how to do +this), and save the result to a file. This may be quite verbose, and +it may overflow the messages buffer, but try to get as much of it as +you can + + +if you get an Oops, run ksymoops to decode it so that the +names of the offending functions are provided. A non-decoded Oops is +pretty useless + + +send a copy of your devfsd configuration file(s) + +send the bug report to me first. +Don't expect that I will see it if you post it to the linux-kernel +mailing list. Include all the information listed above, plus +anything else that you think might be relevant. Put the string +devfs somewhere in the subject line, so my mail filters mark +it as urgent + + + + +Here is a general guide on how to ask questions in a way that greatly +improves your chances of getting a reply: + +http://www.tuxedo.org/~esr/faqs/smart-questions.html. If you have +a bug to report, you should also read + +http://www.chiark.greenend.org.uk/~sgtatham/bugs.html. ----------------------------------------------------------------------------- |
From: Dave A. <ai...@us...> - 2003-06-10 01:15:18
|
Update of /cvsroot/linux-vax/kernel-2.4/arch/i386 In directory sc8-pr-cvs1:/tmp/cvs-serv7538/arch/i386 Modified Files: config.in Log Message: DA: sync with Marcelo 2.4.17 Index: config.in =================================================================== RCS file: /cvsroot/linux-vax/kernel-2.4/arch/i386/config.in,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 --- config.in 10 Apr 2002 14:23:20 -0000 1.2 +++ config.in 10 Jun 2003 01:13:14 -0000 1.3 @@ -52,6 +52,7 @@ define_int CONFIG_X86_L1_CACHE_SHIFT 4 define_bool CONFIG_RWSEM_GENERIC_SPINLOCK y define_bool CONFIG_RWSEM_XCHGADD_ALGORITHM n + define_bool CONFIG_X86_PPRO_FENCE y else define_bool CONFIG_X86_WP_WORKS_OK y define_bool CONFIG_X86_INVLPG y @@ -66,17 +67,20 @@ define_int CONFIG_X86_L1_CACHE_SHIFT 4 define_bool CONFIG_X86_USE_STRING_486 y define_bool CONFIG_X86_ALIGNMENT_16 y + define_bool CONFIG_X86_PPRO_FENCE y fi if [ "$CONFIG_M586" = "y" ]; then define_int CONFIG_X86_L1_CACHE_SHIFT 5 define_bool CONFIG_X86_USE_STRING_486 y define_bool CONFIG_X86_ALIGNMENT_16 y + define_bool CONFIG_X86_PPRO_FENCE y fi if [ "$CONFIG_M586TSC" = "y" ]; then define_int CONFIG_X86_L1_CACHE_SHIFT 5 define_bool CONFIG_X86_USE_STRING_486 y define_bool CONFIG_X86_ALIGNMENT_16 y define_bool CONFIG_X86_TSC y + define_bool CONFIG_X86_PPRO_FENCE y fi if [ "$CONFIG_M586MMX" = "y" ]; then define_int CONFIG_X86_L1_CACHE_SHIFT 5 @@ -84,6 +88,7 @@ define_bool CONFIG_X86_ALIGNMENT_16 y define_bool CONFIG_X86_TSC y define_bool CONFIG_X86_GOOD_APIC y + define_bool CONFIG_X86_PPRO_FENCE y fi if [ "$CONFIG_M686" = "y" ]; then define_int CONFIG_X86_L1_CACHE_SHIFT 5 @@ -91,6 +96,7 @@ define_bool CONFIG_X86_GOOD_APIC y define_bool CONFIG_X86_PGE y define_bool CONFIG_X86_USE_PPRO_CHECKSUM y + define_bool CONFIG_X86_PPRO_FENCE y fi if [ "$CONFIG_MPENTIUMIII" = "y" ]; then define_int CONFIG_X86_L1_CACHE_SHIFT 5 @@ -149,7 +155,7 @@ define_bool CONFIG_X86_USE_PPRO_CHECKSUM y fi tristate 'Toshiba Laptop support' CONFIG_TOSHIBA -tristate 'Dell Inspiron 8000 support' CONFIG_I8K +tristate 'Dell laptop support' CONFIG_I8K tristate '/dev/cpu/microcode - Intel IA32 CPU microcode support' CONFIG_MICROCODE tristate '/dev/cpu/*/msr - Model-specific register support' CONFIG_X86_MSR |
From: Dave A. <ai...@us...> - 2003-06-10 01:15:18
|
Update of /cvsroot/linux-vax/kernel-2.4/Documentation/video4linux In directory sc8-pr-cvs1:/tmp/cvs-serv7538/Documentation/video4linux Modified Files: Zoran w9966.txt Log Message: DA: sync with Marcelo 2.4.17 Index: Zoran =================================================================== RCS file: /cvsroot/linux-vax/kernel-2.4/Documentation/video4linux/Zoran,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- Zoran 9 Apr 2002 16:55:47 -0000 1.1 +++ Zoran 10 Jun 2003 01:13:13 -0000 1.2 @@ -160,9 +160,9 @@ set aside the necessary memory during boot time. There seem to be several versions of this patch against various kernel versions floating around in the net, you may obtain one e.g. from: - http://www.polyware.nl/~middelin/patch/bigphysarea-2.2.1.tar.gz You - also have to compile your driver AFTER installing that patch in order - to get it working + http://www.polyware.nl/~middelin/hob-v4l.html#bigphysarea + You also have to compile your driver AFTER installing that patch in + order to get it working or Index: w9966.txt =================================================================== RCS file: /cvsroot/linux-vax/kernel-2.4/Documentation/video4linux/w9966.txt,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- w9966.txt 9 Apr 2002 16:55:47 -0000 1.1 +++ w9966.txt 10 Jun 2003 01:13:13 -0000 1.2 @@ -1,37 +1,33 @@ +W9966 Camera driver, written by Jakob Kemi (jak...@te...) -W9966 Camera driver, written by Jakob Kemi (jak...@po...) +After a lot of work in softice & wdasm, reading .pdf-files and tiresome +trial-and-error work I've finally got everything to work. I needed vision for a +robotics project so I borrowed this camera from a friend and started hacking. +Anyway I've converted my original code from the AVR 8bit RISC C/ASM code into +a working Linux driver. -Ok, after a lot of work in softice, wdasm, reading pdf-files -and trial-and-error work I've finally got everything to work. -Since I needed some vision for a robotics project I borrowed -this camera from a friend and started hacking. Anyway I've -converted my original code from the AVR 8bit RISC C/asm -into a working linux driver. I would really appreciate _any_ -kind of feedback regarding this driver. - -To get it working quickly configure your kernel -to support parport, ieee1284, video4linux, experimental drivers -and w9966 +To get it working simply configure your kernel to support +parport, ieee1284, video4linux and w9966 -If w9966 is statically linked it will perform aggressive probing -for the camera. If built as a module you'll have more configuration options. +If w9966 is statically linked it will always perform aggressive probing for +the camera. If built as a module you'll have more configuration options. Options: -modprobe w9966.o pardev=parport0(or whatever) parmode=0 (0=auto, 1=ecp, 2=epp) - + modprobe w9966.o pardev=parport0(or whatever) parmode=0 (0=auto, 1=ecp, 2=epp) voila! you can also type 'modinfo -p w9966.o' for option usage (or checkout w9966.c) -I've only tested it with custom built testprograms -(http://hem.fyristorg.com/mogul/w9966.html) and with gqcam. -(you'll need to tweak the code to qcam a bit to make it work, -dimensions and such) +The only thing to keep in mind is that the image format is in Y-U-Y-V format +where every two pixels take 4 bytes. In SDL (www.libsdl.org) this format +is called VIDEO_PALETTE_YUV422 (16 bpp). + +A minimal test application (with source) is available from: + http://hem.fyristorg.com/mogul/w9966.html The slow framerate is due to missing DMA ECP read support in the parport drivers. I might add working EPP support later. Good luck! - - /Jakob + /Jakob Kemi |
From: Dave A. <ai...@us...> - 2003-06-10 01:15:17
|
Update of /cvsroot/linux-vax/kernel-2.4/Documentation/DocBook In directory sc8-pr-cvs1:/tmp/cvs-serv7538/Documentation/DocBook Modified Files: via-audio.tmpl Log Message: DA: sync with Marcelo 2.4.17 Index: via-audio.tmpl =================================================================== RCS file: /cvsroot/linux-vax/kernel-2.4/Documentation/DocBook/via-audio.tmpl,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 --- via-audio.tmpl 9 Apr 2002 16:55:39 -0000 1.2 +++ via-audio.tmpl 10 Jun 2003 01:13:12 -0000 1.3 @@ -8,11 +8,6 @@ <author> <firstname>Jeff</firstname> <surname>Garzik</surname> - <affiliation> - <address> - <email>jg...@ma...</email> - </address> - </affiliation> </author> </authorgroup> @@ -115,7 +110,7 @@ <sect1 id="bugrepdiag"><title>Diagnostic output</title> <para> Obtain the via-audio-diag diagnostics program from - http://gtf.org/garzik/drivers/via82cxxx/ and provide a dump of the + http://sf.net/projects/gkernel/ and provide a dump of the audio chip's registers while the problem is occurring. Sample command line: </para> <programlisting> |
From: Dave A. <ai...@us...> - 2003-06-10 01:15:15
|
Update of /cvsroot/linux-vax/kernel-2.4/drivers/isdn/isdnloop In directory sc8-pr-cvs1:/tmp/cvs-serv7538/drivers/isdn/isdnloop Modified Files: isdnloop.c isdnloop.h Log Message: DA: sync with Marcelo 2.4.17 Index: isdnloop.c =================================================================== RCS file: /cvsroot/linux-vax/kernel-2.4/drivers/isdn/isdnloop/isdnloop.c,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 Index: isdnloop.h =================================================================== RCS file: /cvsroot/linux-vax/kernel-2.4/drivers/isdn/isdnloop/isdnloop.h,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 |
From: Dave A. <ai...@us...> - 2003-06-10 01:15:15
|
Update of /cvsroot/linux-vax/kernel-2.4 In directory sc8-pr-cvs1:/tmp/cvs-serv7538 Modified Files: CREDITS MAINTAINERS Makefile Log Message: DA: sync with Marcelo 2.4.17 Index: CREDITS =================================================================== RCS file: /cvsroot/linux-vax/kernel-2.4/CREDITS,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 --- CREDITS 11 Apr 2002 14:26:54 -0000 1.2 +++ CREDITS 10 Jun 2003 01:13:10 -0000 1.3 @@ -1147,6 +1147,16 @@ S: London SE16 1GD S: United Kingdom +N: Jan Harkes +E: jah...@cs... +W: http://www.coda.cs.cmu.edu/ +D: Coda file system +S: Computer Science Department +S: Carnegie Mellon University +S: 5000 Forbes Avenue +S: Pittsburgh, Pennsylvania 15213 +S: USA + N: Kai Harrekilde-Petersen E: kai...@ge... D: Original author of the ftape-HOWTO, i82078 fdc detection code. @@ -1634,6 +1644,13 @@ S: 80-283 Gdansk S: Poland +N: Jakob Kemi +E: jak...@te... +D: V4L W9966 Webcam driver +S: Forsbyvägen 33 +S: 74143 Knivsta +S: Sweden + N: Gero Kuhlmann E: ge...@gk... D: mounting root via NFS @@ -2495,7 +2512,7 @@ S: Australia N: Gerard Roudier -E: gro...@ip... +E: gro...@fr... D: Contributed to asynchronous read-ahead improvement S: 21 Rue Carnot S: 95170 Deuil La Barre Index: MAINTAINERS =================================================================== RCS file: /cvsroot/linux-vax/kernel-2.4/MAINTAINERS,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 --- MAINTAINERS 11 Apr 2002 14:26:55 -0000 1.2 +++ MAINTAINERS 10 Jun 2003 01:13:10 -0000 1.3 @@ -148,8 +148,8 @@ ACPI P: Andy Grover M: and...@in... -L: ac...@ph... -W: http://phobos.fs.tum.de/acpi/index.html +L: acp...@li... +W: http://sf.net/projects/acpi/ S: Maintained AD1816 SOUND DRIVER @@ -285,6 +285,14 @@ M: Nils Faerber <ni...@ke...> S: Maintained +CODA FILE SYSTEM +P: Jan Harkes +M: jah...@cs... +M: co...@cs... +L: cod...@co... +W: http://www.coda.cs.cmu.edu/ +S: Maintained + COMPAQ FIBRE CHANNEL 64-bit/66MHz PCI non-intelligent HBA P: Amy Vanzant-Hodge M: Amy Vanzant-Hodge (fib...@co...) @@ -404,6 +412,12 @@ L: lin...@li... S: Maintained +DELL LAPTOP SMM DRIVER +P: Massimo Dal Zotto +M: dz...@de... +W: http://www.debian.org/~dz/i8k/ +S: Maintained + DEVICE NUMBER REGISTRY P: H. Peter Anvin M: hp...@zy... @@ -918,6 +932,12 @@ W: http://www.sistina.com/lvm S: Maintained +LSILOGIC/SYMBIOS/NCR 53C8XX and 53C1010 PCI-SCSI drivers +P: Gerard Roudier +M: gro...@fr... +L: lin...@vg... +S: Maintained + M68K P: Jes Sorensen M: je...@tr... @@ -1660,8 +1680,8 @@ W: http://misc.nu/hugh/keyspan/ USB SUBSYSTEM -P: Johannes Erdfelt -M: joh...@er... +P: Greg Kroah-Hartman +M: gr...@kr... L: lin...@li... L: lin...@li... W: http://www.linux-usb.org @@ -1684,10 +1704,8 @@ VIA 82Cxxx AUDIO DRIVER P: Jeff Garzik -M: jg...@ma... L: lin...@gt... -W: http://sourceforge.net/projects/gkernel/ -S: Maintained +S: Odd fixes USB DIAMOND RIO500 DRIVER P: Cesar Miquel Index: Makefile =================================================================== RCS file: /cvsroot/linux-vax/kernel-2.4/Makefile,v retrieving revision 1.16 retrieving revision 1.17 diff -u -r1.16 -r1.17 --- Makefile 26 Oct 2002 10:55:40 -0000 1.16 +++ Makefile 10 Jun 2003 01:13:11 -0000 1.17 @@ -1,6 +1,6 @@ VERSION = 2 PATCHLEVEL = 4 -SUBLEVEL = 16 +SUBLEVEL = 17 EXTRAVERSION = KERNELRELEASE=$(VERSION).$(PATCHLEVEL).$(SUBLEVEL)$(EXTRAVERSION) @@ -344,7 +344,7 @@ # optimizes less when we use -g (even though -O1 is in CFLAGS). This isn't supposed # to happen... init/main.o: init/main.c include/config/MARKER - $(CC) $(CFLAGS) $(CFLAGS_KERNEL) $(PROFILING) -c -o $*.o $< -Wa,-adnhls=$*.lst # -g + $(CC) $(CFLAGS) $(CFLAGS_KERNEL) $(PROFILING) -c -o $*.o $< # -Wa,-adnhls=$*.lst -g fs lib mm ipc kernel drivers net: dummy $(MAKE) CFLAGS="$(CFLAGS) $(CFLAGS_KERNEL)" $(subst $@, _dir_$@, $@) |
From: Dave A. <ai...@us...> - 2003-06-10 01:15:15
|
Update of /cvsroot/linux-vax/kernel-2.4/drivers/isdn/icn In directory sc8-pr-cvs1:/tmp/cvs-serv7538/drivers/isdn/icn Modified Files: icn.c icn.h Log Message: DA: sync with Marcelo 2.4.17 Index: icn.c =================================================================== RCS file: /cvsroot/linux-vax/kernel-2.4/drivers/isdn/icn/icn.c,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 Index: icn.h =================================================================== RCS file: /cvsroot/linux-vax/kernel-2.4/drivers/isdn/icn/icn.h,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 |
From: Dave A. <ai...@us...> - 2003-06-10 01:15:13
|
Update of /cvsroot/linux-vax/kernel-2.4/drivers/isdn/avmb1 In directory sc8-pr-cvs1:/tmp/cvs-serv7538/drivers/isdn/avmb1 Modified Files: avm_cs.c avmcard.h b1.c b1dma.c b1isa.c b1pci.c b1pcmcia.c c4.c capi.c capicmd.h capidev.h capidrv.c capidrv.h capifs.c capifs.h capilli.h capiutil.c capiutil.h kcapi.c t1isa.c t1pci.c Log Message: DA: sync with Marcelo 2.4.17 Index: avm_cs.c =================================================================== RCS file: /cvsroot/linux-vax/kernel-2.4/drivers/isdn/avmb1/avm_cs.c,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 Index: avmcard.h =================================================================== RCS file: /cvsroot/linux-vax/kernel-2.4/drivers/isdn/avmb1/avmcard.h,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 Index: b1.c =================================================================== RCS file: /cvsroot/linux-vax/kernel-2.4/drivers/isdn/avmb1/b1.c,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 Index: b1dma.c =================================================================== RCS file: /cvsroot/linux-vax/kernel-2.4/drivers/isdn/avmb1/b1dma.c,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 Index: b1isa.c =================================================================== RCS file: /cvsroot/linux-vax/kernel-2.4/drivers/isdn/avmb1/b1isa.c,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 Index: b1pci.c =================================================================== RCS file: /cvsroot/linux-vax/kernel-2.4/drivers/isdn/avmb1/b1pci.c,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 Index: b1pcmcia.c =================================================================== RCS file: /cvsroot/linux-vax/kernel-2.4/drivers/isdn/avmb1/b1pcmcia.c,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 Index: c4.c =================================================================== RCS file: /cvsroot/linux-vax/kernel-2.4/drivers/isdn/avmb1/c4.c,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 Index: capi.c =================================================================== RCS file: /cvsroot/linux-vax/kernel-2.4/drivers/isdn/avmb1/capi.c,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 Index: capicmd.h =================================================================== RCS file: /cvsroot/linux-vax/kernel-2.4/drivers/isdn/avmb1/capicmd.h,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 Index: capidev.h =================================================================== RCS file: /cvsroot/linux-vax/kernel-2.4/drivers/isdn/avmb1/capidev.h,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 Index: capidrv.c =================================================================== RCS file: /cvsroot/linux-vax/kernel-2.4/drivers/isdn/avmb1/capidrv.c,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 Index: capidrv.h =================================================================== RCS file: /cvsroot/linux-vax/kernel-2.4/drivers/isdn/avmb1/capidrv.h,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 Index: capifs.c =================================================================== RCS file: /cvsroot/linux-vax/kernel-2.4/drivers/isdn/avmb1/capifs.c,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 Index: capifs.h =================================================================== RCS file: /cvsroot/linux-vax/kernel-2.4/drivers/isdn/avmb1/capifs.h,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 Index: capilli.h =================================================================== RCS file: /cvsroot/linux-vax/kernel-2.4/drivers/isdn/avmb1/capilli.h,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 Index: capiutil.c =================================================================== RCS file: /cvsroot/linux-vax/kernel-2.4/drivers/isdn/avmb1/capiutil.c,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 Index: capiutil.h =================================================================== RCS file: /cvsroot/linux-vax/kernel-2.4/drivers/isdn/avmb1/capiutil.h,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 Index: kcapi.c =================================================================== RCS file: /cvsroot/linux-vax/kernel-2.4/drivers/isdn/avmb1/kcapi.c,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 Index: t1isa.c =================================================================== RCS file: /cvsroot/linux-vax/kernel-2.4/drivers/isdn/avmb1/t1isa.c,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 Index: t1pci.c =================================================================== RCS file: /cvsroot/linux-vax/kernel-2.4/drivers/isdn/avmb1/t1pci.c,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 |
From: Dave A. <ai...@us...> - 2003-06-10 01:15:12
|
Update of /cvsroot/linux-vax/kernel-2.4/drivers/isdn/eicon In directory sc8-pr-cvs1:/tmp/cvs-serv7538/drivers/isdn/eicon Modified Files: common.c eicon.h eicon_dsp.h eicon_idi.c eicon_idi.h eicon_io.c eicon_isa.c eicon_isa.h eicon_mod.c eicon_pci.c eicon_pci.h Log Message: DA: sync with Marcelo 2.4.17 Index: common.c =================================================================== RCS file: /cvsroot/linux-vax/kernel-2.4/drivers/isdn/eicon/common.c,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 --- common.c 10 Apr 2002 15:32:23 -0000 1.2 +++ common.c 10 Jun 2003 01:13:36 -0000 1.3 @@ -808,7 +808,9 @@ while(i--) { - DivaDoCardDpc(card++); + if (card->state == DIA_RUNNING) + DivaDoCardDpc(card); + card++; } } Index: eicon.h =================================================================== RCS file: /cvsroot/linux-vax/kernel-2.4/drivers/isdn/eicon/eicon.h,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 Index: eicon_dsp.h =================================================================== RCS file: /cvsroot/linux-vax/kernel-2.4/drivers/isdn/eicon/eicon_dsp.h,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 Index: eicon_idi.c =================================================================== RCS file: /cvsroot/linux-vax/kernel-2.4/drivers/isdn/eicon/eicon_idi.c,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 Index: eicon_idi.h =================================================================== RCS file: /cvsroot/linux-vax/kernel-2.4/drivers/isdn/eicon/eicon_idi.h,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 Index: eicon_io.c =================================================================== RCS file: /cvsroot/linux-vax/kernel-2.4/drivers/isdn/eicon/eicon_io.c,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 Index: eicon_isa.c =================================================================== RCS file: /cvsroot/linux-vax/kernel-2.4/drivers/isdn/eicon/eicon_isa.c,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 Index: eicon_isa.h =================================================================== RCS file: /cvsroot/linux-vax/kernel-2.4/drivers/isdn/eicon/eicon_isa.h,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 Index: eicon_mod.c =================================================================== RCS file: /cvsroot/linux-vax/kernel-2.4/drivers/isdn/eicon/eicon_mod.c,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 --- eicon_mod.c 10 Apr 2002 15:32:23 -0000 1.2 +++ eicon_mod.c 10 Jun 2003 01:13:36 -0000 1.3 @@ -1550,7 +1550,7 @@ }; }; /* all adapter flavors checked without match, finito with: */ - return ENODEV; + return -ENODEV; }; @@ -1597,14 +1597,14 @@ membase = cards_membase; } else { if (membase != cards_membase) - return ENODEV; + return -ENODEV; }; cards_irq=irq_array[((adf_pos0 & 0xC)>>2)]; if (irq == -1) { irq = cards_irq; } else { if (irq != cards_irq) - return ENODEV; + return -ENODEV; }; cards_io= 0xC00 + ((adf_pos0>>4)*0x10); type = EICON_CTYPE_ISAPRI; @@ -1616,14 +1616,14 @@ membase = cards_membase; } else { if (membase != cards_membase) - return ENODEV; + return -ENODEV; }; cards_irq=irq_array[((adf_pos0 & 0xC)>>2)]; if (irq == -1) { irq = cards_irq; } else { if (irq != cards_irq) - return ENODEV; + return -ENODEV; }; cards_io= 0xC00 + ((adf_pos0>>4)*0x10); @@ -1637,12 +1637,12 @@ irq = cards_irq; } else { if (irq != cards_irq) - return ENODEV; + return -ENODEV; }; type = 0; break; default: - return ENODEV; + return -ENODEV; }; /* matching membase & irq */ if ( 1 == eicon_addcard(type, membase, irq, id, 0)) { @@ -1661,7 +1661,7 @@ cards->mca_slot+1); return 0 ; /* eicon_addcard added a card */ } else { - return ENODEV; + return -ENODEV; }; }; #endif /* CONFIG_MCA */ Index: eicon_pci.c =================================================================== RCS file: /cvsroot/linux-vax/kernel-2.4/drivers/isdn/eicon/eicon_pci.c,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 Index: eicon_pci.h =================================================================== RCS file: /cvsroot/linux-vax/kernel-2.4/drivers/isdn/eicon/eicon_pci.h,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 |
From: Dave A. <ai...@us...> - 2003-06-10 01:15:11
|
Update of /cvsroot/linux-vax/kernel-2.4/drivers/isdn In directory sc8-pr-cvs1:/tmp/cvs-serv7538/drivers/isdn Modified Files: Config.in isdn_audio.c isdn_audio.h isdn_common.c isdn_common.h isdn_concap.c isdn_concap.h isdn_net.c isdn_net.h isdn_ppp.c isdn_ppp.h isdn_tty.c isdn_tty.h isdn_ttyfax.c isdn_ttyfax.h isdn_v110.c isdn_v110.h isdn_x25iface.c isdn_x25iface.h Log Message: DA: sync with Marcelo 2.4.17 Index: Config.in =================================================================== RCS file: /cvsroot/linux-vax/kernel-2.4/drivers/isdn/Config.in,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 --- Config.in 10 Apr 2002 15:32:21 -0000 1.2 +++ Config.in 10 Jun 2003 01:13:32 -0000 1.3 @@ -42,6 +42,7 @@ fi bool ' HiSax Support for german 1TR6' CONFIG_HISAX_1TR6 bool ' HiSax Support for US NI1' CONFIG_HISAX_NI1 + int ' Maximum number of cards supported by HiSax' CONFIG_HISAX_MAX_CARDS 8 comment ' HiSax supported cards' bool ' Teles 16.0/8.0' CONFIG_HISAX_16_0 bool ' Teles 16.3 or PNP or PCMCIA' CONFIG_HISAX_16_3 @@ -81,6 +82,7 @@ dep_tristate 'Sedlbauer PCMCIA cards' CONFIG_HISAX_SEDLBAUER_CS $CONFIG_PCMCIA dep_tristate 'ELSA PCMCIA MicroLink cards' CONFIG_HISAX_ELSA_CS $CONFIG_PCMCIA dep_tristate 'ST5481 USB ISDN modem (EXPERIMENTAL)' CONFIG_HISAX_ST5481 $CONFIG_HISAX $CONFIG_USB $CONFIG_EXPERIMENTAL + dep_tristate 'Fritz!PCIv2 support (EXPERIMENTAL)' CONFIG_HISAX_FRITZ_PCIPNP $CONFIG_HISAX $CONFIG_EXPERIMENTAL fi endmenu Index: isdn_audio.c =================================================================== RCS file: /cvsroot/linux-vax/kernel-2.4/drivers/isdn/isdn_audio.c,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 Index: isdn_audio.h =================================================================== RCS file: /cvsroot/linux-vax/kernel-2.4/drivers/isdn/isdn_audio.h,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 Index: isdn_common.c =================================================================== RCS file: /cvsroot/linux-vax/kernel-2.4/drivers/isdn/isdn_common.c,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 Index: isdn_common.h =================================================================== RCS file: /cvsroot/linux-vax/kernel-2.4/drivers/isdn/isdn_common.h,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 Index: isdn_concap.c =================================================================== RCS file: /cvsroot/linux-vax/kernel-2.4/drivers/isdn/isdn_concap.c,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 Index: isdn_concap.h =================================================================== RCS file: /cvsroot/linux-vax/kernel-2.4/drivers/isdn/isdn_concap.h,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 Index: isdn_net.c =================================================================== RCS file: /cvsroot/linux-vax/kernel-2.4/drivers/isdn/isdn_net.c,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 Index: isdn_net.h =================================================================== RCS file: /cvsroot/linux-vax/kernel-2.4/drivers/isdn/isdn_net.h,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 Index: isdn_ppp.c =================================================================== RCS file: /cvsroot/linux-vax/kernel-2.4/drivers/isdn/isdn_ppp.c,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 Index: isdn_ppp.h =================================================================== RCS file: /cvsroot/linux-vax/kernel-2.4/drivers/isdn/isdn_ppp.h,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 Index: isdn_tty.c =================================================================== RCS file: /cvsroot/linux-vax/kernel-2.4/drivers/isdn/isdn_tty.c,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 Index: isdn_tty.h =================================================================== RCS file: /cvsroot/linux-vax/kernel-2.4/drivers/isdn/isdn_tty.h,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 Index: isdn_ttyfax.c =================================================================== RCS file: /cvsroot/linux-vax/kernel-2.4/drivers/isdn/isdn_ttyfax.c,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 Index: isdn_ttyfax.h =================================================================== RCS file: /cvsroot/linux-vax/kernel-2.4/drivers/isdn/isdn_ttyfax.h,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 Index: isdn_v110.c =================================================================== RCS file: /cvsroot/linux-vax/kernel-2.4/drivers/isdn/isdn_v110.c,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 Index: isdn_v110.h =================================================================== RCS file: /cvsroot/linux-vax/kernel-2.4/drivers/isdn/isdn_v110.h,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 Index: isdn_x25iface.c =================================================================== RCS file: /cvsroot/linux-vax/kernel-2.4/drivers/isdn/isdn_x25iface.c,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 Index: isdn_x25iface.h =================================================================== RCS file: /cvsroot/linux-vax/kernel-2.4/drivers/isdn/isdn_x25iface.h,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 |
From: Dave A. <ai...@us...> - 2003-06-10 01:15:10
|
Update of /cvsroot/linux-vax/kernel-2.4/drivers/isdn/divert In directory sc8-pr-cvs1:/tmp/cvs-serv7538/drivers/isdn/divert Modified Files: divert_procfs.c isdn_divert.c isdn_divert.h Log Message: DA: sync with Marcelo 2.4.17 Index: divert_procfs.c =================================================================== RCS file: /cvsroot/linux-vax/kernel-2.4/drivers/isdn/divert/divert_procfs.c,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 Index: isdn_divert.c =================================================================== RCS file: /cvsroot/linux-vax/kernel-2.4/drivers/isdn/divert/isdn_divert.c,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 Index: isdn_divert.h =================================================================== RCS file: /cvsroot/linux-vax/kernel-2.4/drivers/isdn/divert/isdn_divert.h,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 |
Update of /cvsroot/linux-vax/kernel-2.4/drivers/ieee1394 In directory sc8-pr-cvs1:/tmp/cvs-serv7538/drivers/ieee1394 Modified Files: hosts.c ieee1394_core.c nodemgr.c ohci1394.c pcilynx.c sbp2.c sbp2.h video1394.c video1394.h Log Message: DA: sync with Marcelo 2.4.17 Index: hosts.c =================================================================== RCS file: /cvsroot/linux-vax/kernel-2.4/drivers/ieee1394/hosts.c,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 --- hosts.c 10 Apr 2002 15:32:20 -0000 1.2 +++ hosts.c 10 Jun 2003 01:13:29 -0000 1.3 @@ -170,10 +170,10 @@ list_for_each(hlh, &tmpl->hosts) { host = list_entry(hlh, struct hpsb_host, list); if (host->initialized) { + highlevel_remove_host(host); + host->initialized = 0; abort_requests(host); - - highlevel_remove_host(host); tmpl->release_host(host); while (test_bit(0, &host->timeout_tq.sync)) { Index: ieee1394_core.c =================================================================== RCS file: /cvsroot/linux-vax/kernel-2.4/drivers/ieee1394/ieee1394_core.c,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 --- ieee1394_core.c 10 Apr 2002 15:32:20 -0000 1.2 +++ ieee1394_core.c 10 Jun 2003 01:13:29 -0000 1.3 @@ -318,7 +318,7 @@ void hpsb_selfid_complete(struct hpsb_host *host, int phyid, int isroot) { - host->node_id = 0xffc0 | phyid; + host->node_id = LOCAL_BUS | phyid; host->in_bus_reset = 0; host->is_root = isroot; Index: nodemgr.c =================================================================== RCS file: /cvsroot/linux-vax/kernel-2.4/drivers/ieee1394/nodemgr.c,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- nodemgr.c 10 Apr 2002 15:32:20 -0000 1.1 +++ nodemgr.c 10 Jun 2003 01:13:29 -0000 1.2 @@ -359,7 +359,7 @@ kfree(buf); kfree(envp); if (value != 0) - HPSB_DEBUG("NodeMgr: hotplug policy returned 0x%x", value); + HPSB_DEBUG("NodeMgr: hotplug policy returned %d", value); } #else @@ -369,9 +369,8 @@ { #ifdef CONFIG_IEEE1394_VERBOSEDEBUG HPSB_DEBUG("NodeMgr: nodemgr_call_policy(): hotplug not enabled"); -#else - return; #endif + return; } #endif /* CONFIG_HOTPLUG */ @@ -582,13 +581,13 @@ struct hpsb_host *host, nodeid_t nodeid) { struct list_head *lh; + struct unit_directory *ud; - if (ne->nodeid != nodeid) + if (ne->nodeid != nodeid) { HPSB_DEBUG("Node " NODE_BUS_FMT " changed to " NODE_BUS_FMT, NODE_BUS_ARGS(ne->nodeid), NODE_BUS_ARGS(nodeid)); - - ne->host = host; - ne->nodeid = nodeid; + ne->nodeid = nodeid; + } if (ne->busopt.generation != ((busoptions >> 4) & 0xf)) nodemgr_process_config_rom (ne, busoptions); @@ -597,8 +596,6 @@ atomic_set(&ne->generation, get_hpsb_generation(ne->host)); list_for_each (lh, &ne->unit_directories) { - struct unit_directory *ud; - ud = list_entry (lh, struct unit_directory, node_list); if (ud->driver != NULL && ud->driver->update != NULL) ud->driver->update(ud); @@ -679,57 +676,76 @@ return; } +/* Used to schedule each nodes config rom probe */ +struct node_probe_task { + nodeid_t nodeid; + struct hpsb_host *host; + atomic_t *count; + struct tq_struct task; +}; + /* This is where we probe the nodes for their information and provided * features. */ -static void nodemgr_node_probe(void *data) +static void nodemgr_node_probe_one(void *__npt) { - struct hpsb_host *host = (struct hpsb_host *)data; - struct selfid *sid = (struct selfid *)host->topology_map; - struct list_head *lh, *next; + struct node_probe_task *npt = (struct node_probe_task *)__npt; struct node_entry *ne; - int nodecount = host->node_count; - nodeid_t nodeid = LOCAL_BUS; quadlet_t buffer[5]; octlet_t guid; - unsigned long flags; /* We need to detect when the ConfigROM's generation has changed, * so we only update the node's info when it needs to be. */ - for (; nodecount; nodecount--, nodeid++, sid++) { - /* Skip extended, and non-active node's */ - while (sid->extended) - sid++; - if (!sid->link_active) - continue; - if (read_businfo_block (host, nodeid, buffer, sizeof(buffer) >> 2)) - continue; + if (read_businfo_block (npt->host, npt->nodeid, buffer, sizeof(buffer) >> 2)) + goto probe_complete; - if (buffer[1] != IEEE1394_BUSID_MAGIC) { - /* This isn't a 1394 device */ - HPSB_ERR("Node " NODE_BUS_FMT " isn't an IEEE 1394 device", - NODE_BUS_ARGS(nodeid)); - continue; - } + if (buffer[1] != IEEE1394_BUSID_MAGIC) { + /* This isn't a 1394 device */ + HPSB_ERR("Node " NODE_BUS_FMT " isn't an IEEE 1394 device", + NODE_BUS_ARGS(npt->nodeid)); + goto probe_complete; + } + + guid = ((u64)buffer[3] << 32) | buffer[4]; + ne = hpsb_guid_get_entry(guid); + + if (!ne) + nodemgr_create_node(guid, buffer[2], npt->host, npt->nodeid); + else + nodemgr_update_node(ne, buffer[2], npt->host, npt->nodeid); + +probe_complete: + atomic_dec(npt->count); + + kfree(npt); + + return; +} - guid = ((u64)buffer[3] << 32) | buffer[4]; - ne = hpsb_guid_get_entry(guid); +static void nodemgr_node_probe_cleanup(void *__npt) +{ + struct node_probe_task *npt = (struct node_probe_task *)__npt; + unsigned long flags; + struct list_head *lh, *next; + struct node_entry *ne; + + /* If things aren't done yet, reschedule ourselves. */ + if (atomic_read(npt->count)) { + schedule_task(&npt->task); + return; + } - if (!ne) - nodemgr_create_node(guid, buffer[2], host, nodeid); - else - nodemgr_update_node(ne, buffer[2], host, nodeid); - } + kfree(npt->count); /* Now check to see if we have any nodes that aren't referenced * any longer. */ - write_lock_irqsave(&node_lock, flags); + write_lock_irqsave(&node_lock, flags); for (lh = node_list.next; lh != &node_list; lh = next) { ne = list_entry(lh, struct node_entry, list); next = lh->next; /* Only checking this host */ - if (ne->host != host) + if (ne->host != npt->host) continue; /* If the generation didn't get updated, then either the @@ -741,9 +757,70 @@ } write_unlock_irqrestore(&node_lock, flags); + kfree(npt); + return; } +static void nodemgr_node_probe(void *__host) +{ + struct hpsb_host *host = (struct hpsb_host *)__host; + int nodecount = host->node_count; + struct selfid *sid = (struct selfid *)host->topology_map; + nodeid_t nodeid = LOCAL_BUS; + struct node_probe_task *npt; + atomic_t *count; + + count = kmalloc(sizeof (*count), GFP_KERNEL); + + if (count == NULL) { + HPSB_ERR ("NodeMgr: out of memory in nodemgr_node_probe"); + return; + } + + atomic_set(count, 0); + + for (; nodecount; nodecount--, nodeid++, sid++) { + while (sid->extended) + sid++; + if (!sid->link_active || nodeid == host->node_id) + continue; + + npt = kmalloc(sizeof (*npt), GFP_KERNEL); + + if (npt == NULL) { + HPSB_ERR ("NodeMgr: out of memory in nodemgr_node_probe"); + break; + } + + INIT_TQUEUE(&npt->task, nodemgr_node_probe_one, npt); + npt->host = host; + npt->nodeid = nodeid; + npt->count = count; + + atomic_inc(count); + + schedule_task(&npt->task); + } + + /* Now schedule a task to clean things up after the node probes + * are done. */ + npt = kmalloc (sizeof (*npt), GFP_KERNEL); + + if (npt == NULL) { + HPSB_ERR ("NodeMgr: out of memory in nodemgr_node_probe"); + return; + } + + INIT_TQUEUE(&npt->task, nodemgr_node_probe_cleanup, npt); + npt->host = host; + npt->nodeid = 0; + npt->count = count; + + schedule_task(&npt->task); + + return; +} struct node_entry *hpsb_guid_get_entry(u64 guid) { @@ -864,7 +941,7 @@ write_unlock_irqrestore(&node_lock, flags); spin_lock_irqsave (&host_info_lock, flags); - list_for_each(lh, &host_info_list) { + list_for_each_safe(lh, next, &host_info_list) { struct host_info *hi = list_entry(lh, struct host_info, list); if (hi->host == host) { list_del(&hi->list); Index: ohci1394.c =================================================================== RCS file: /cvsroot/linux-vax/kernel-2.4/drivers/ieee1394/ohci1394.c,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 --- ohci1394.c 10 Apr 2002 15:32:20 -0000 1.2 +++ ohci1394.c 10 Jun 2003 01:13:29 -0000 1.3 @@ -106,16 +106,12 @@ #include <linux/init.h> #ifdef CONFIG_ALL_PPC -#include <asm/feature.h> +#include <asm/machdep.h> +#include <asm/pmac_feature.h> #include <asm/prom.h> #include <asm/pci-bridge.h> #endif -/* Revert to old bus reset algorithm that works on my Pismo until - * the new one is fixed - */ -#undef BUSRESET_WORKAROUND - #include "ieee1394.h" #include "ieee1394_types.h" #include "hosts.h" @@ -175,7 +171,7 @@ MODULE_DEVICE_TABLE(pci, ohci1394_pci_tbl); static char version[] __devinitdata = - "v0.51 08/08/01 Ben Collins <bco...@de...>"; + "$Revision$ Ben Collins <bco...@de...>"; /* Module Parameters */ MODULE_PARM(attempt_root,"i"); @@ -516,12 +512,9 @@ /* After enabling LPS, we need to wait for the connection * between phy and link to be established. This should be * signaled by the LPS bit becoming 1, but this happens - * immediately. Instead we wait for reads from LinkControl to - * give a valid result, i.e. not 0xffffffff. */ - while (reg_read(ohci, OHCI1394_LinkControlSet) == 0xffffffff) { - DBGMSG(ohci->id, "waiting for phy-link connection"); - mdelay(2); - } + * immediately. There seems to be no consistent way to wait + * for this, but 50ms seems to be enough. */ + mdelay(50); /* Set the bus number */ reg_write(ohci, OHCI1394_NodeID, 0x0000ffc0); @@ -1131,11 +1124,7 @@ * selfIDComplete interrupt. */ spin_lock_irqsave(&ohci->event_lock, flags); event = reg_read(ohci, OHCI1394_IntEventClear); -#ifdef BUSRESET_WORKAROUND - reg_write(ohci, OHCI1394_IntEventClear, event); -#else reg_write(ohci, OHCI1394_IntEventClear, event & ~OHCI1394_busReset); -#endif spin_unlock_irqrestore(&ohci->event_lock, flags); if (!event) return; @@ -1154,11 +1143,17 @@ * selfID phase, so we disable busReset interrupts, to * avoid burying the cpu in interrupt requests. */ spin_lock_irqsave(&ohci->event_lock, flags); -#ifdef BUSRESET_WORKAROUND - reg_write(ohci, OHCI1394_IntEventClear, OHCI1394_busReset); -#else reg_write(ohci, OHCI1394_IntMaskClear, OHCI1394_busReset); -#endif + if (ohci->dev->vendor == PCI_VENDOR_ID_APPLE && + ohci->dev->device == PCI_DEVICE_ID_APPLE_UNI_N_FW) { + udelay(10); + while(reg_read(ohci, OHCI1394_IntEventSet) & OHCI1394_busReset) { + reg_write(ohci, OHCI1394_IntEventClear, OHCI1394_busReset); + spin_unlock_irqrestore(&ohci->event_lock, flags); + udelay(10); + spin_lock_irqsave(&ohci->event_lock, flags); + } + } spin_unlock_irqrestore(&ohci->event_lock, flags); if (!host->in_bus_reset) { DBGMSG(ohci->id, "irq_handler: Bus reset requested%s", @@ -1309,12 +1304,10 @@ /* Finally, we clear the busReset event and reenable * the busReset interrupt. */ -#ifndef BUSRESET_WORKAROUND spin_lock_irqsave(&ohci->event_lock, flags); reg_write(ohci, OHCI1394_IntMaskSet, OHCI1394_busReset); reg_write(ohci, OHCI1394_IntEventClear, OHCI1394_busReset); spin_unlock_irqrestore(&ohci->event_lock, flags); -#endif event &= ~OHCI1394_selfIDComplete; } @@ -1966,8 +1959,6 @@ cf_put_keyval(&cr, 0x03, 0x00005e); /* Vendor ID */ cf_put_refer(&cr, 0x81, 2); /* Textual description unit */ cf_put_keyval(&cr, 0x0c, 0x0083c0); /* Node capabilities */ - cf_put_refer(&cr, 0xd1, 3); /* IPv4 unit directory */ - cf_put_refer(&cr, 0xd1, 4); /* IPv6 unit directory */ /* NOTE: Add other unit referers here, and append at bottom */ cf_unit_end(&cr); @@ -1980,46 +1971,6 @@ cf_put_4bytes(&cr, '9', '4', 0x0, 0x0); cf_unit_end(&cr); - /* IPv4 unit directory, RFC 2734 */ - cf_unit_begin(&cr, 3); - cf_put_keyval(&cr, 0x12, 0x00005e); /* Unit spec ID */ - cf_put_refer(&cr, 0x81, 6); /* Textual description unit */ - cf_put_keyval(&cr, 0x13, 0x000001); /* Unit software version */ - cf_put_refer(&cr, 0x81, 7); /* Textual description unit */ - cf_unit_end(&cr); - - cf_unit_begin(&cr, 6); - cf_put_keyval(&cr, 0, 0); - cf_put_1quad(&cr, 0); - cf_put_4bytes(&cr, 'I', 'A', 'N', 'A'); - cf_unit_end(&cr); - - cf_unit_begin(&cr, 7); - cf_put_keyval(&cr, 0, 0); - cf_put_1quad(&cr, 0); - cf_put_4bytes(&cr, 'I', 'P', 'v', '4'); - cf_unit_end(&cr); - - /* IPv6 unit directory, draft-ietf-ipngwg-1394-01.txt */ - cf_unit_begin(&cr, 4); - cf_put_keyval(&cr, 0x12, 0x00005e); /* Unit spec ID */ - cf_put_refer(&cr, 0x81, 8); /* Textual description unit */ - cf_put_keyval(&cr, 0x13, 0x000002); /* (Proposed) Unit software version */ - cf_put_refer(&cr, 0x81, 9); /* Textual description unit */ - cf_unit_end(&cr); - - cf_unit_begin(&cr, 8); - cf_put_keyval(&cr, 0, 0); - cf_put_1quad(&cr, 0); - cf_put_4bytes(&cr, 'I', 'A', 'N', 'A'); - cf_unit_end(&cr); - - cf_unit_begin(&cr, 9); - cf_put_keyval(&cr, 0, 0); - cf_put_1quad(&cr, 0); - cf_put_4bytes(&cr, 'I', 'P', 'v', '6'); - cf_unit_end(&cr); - ohci->csr_config_rom_length = cr.data - ohci->csr_config_rom_cpu; } @@ -2309,8 +2260,8 @@ of_node = pci_device_to_OF_node(ohci->dev); if (of_node) { - feature_set_firewire_power(of_node, 0); - feature_set_firewire_cable_power(of_node, 0); + pmac_call_feature(PMAC_FTR_1394_ENABLE, of_node, 0, 0); + pmac_call_feature(PMAC_FTR_1394_CABLE_POWER, of_node, 0, 0); } } #endif /* CONFIG_ALL_PPC */ @@ -2423,7 +2374,7 @@ name: OHCI1394_DRIVER_NAME, id_table: ohci1394_pci_tbl, probe: ohci1394_add_one, - remove: ohci1394_remove_one, + remove: __devexit_p(ohci1394_remove_one), }; static void __exit ohci1394_cleanup (void) Index: pcilynx.c =================================================================== RCS file: /cvsroot/linux-vax/kernel-2.4/drivers/ieee1394/pcilynx.c,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 --- pcilynx.c 10 Apr 2002 15:32:20 -0000 1.2 +++ pcilynx.c 10 Jun 2003 01:13:30 -0000 1.3 @@ -1637,8 +1637,8 @@ static void __exit pcilynx_cleanup(void) { - pci_unregister_driver(&lynx_pcidriver); hpsb_unregister_lowlevel(&lynx_template); + pci_unregister_driver(&lynx_pcidriver); PRINT_G(KERN_INFO, "removed " PCILYNX_DRIVER_NAME " module"); } Index: sbp2.c =================================================================== RCS file: /cvsroot/linux-vax/kernel-2.4/drivers/ieee1394/sbp2.c,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- sbp2.c 10 Apr 2002 15:32:20 -0000 1.1 +++ sbp2.c 10 Jun 2003 01:13:30 -0000 1.2 @@ -222,8 +222,25 @@ * when we register our driver. This change * automtically adds hotplug support to the driver. * Kristian Hogsberg <hog...@us...> + * + * 11/17/01 - Various bugfixes/cleanups: + * * Remember to logout of device in sbp2_disconnect. + * * If we fail to reconnect to a device after bus reset + * remember to release unit directory, so the ieee1394 + * knows we no longer manage it. + * * Unregister scsi hosts in sbp2_remove_host when a + * hpsb_host goes away. + * * Remove stupid hack in sbp2_remove_host. + * * Switched to "manual" module initialization + * (i.e. not scsi_module.c) and moved sbp2_cleanup + * moved sbp2scsi_release to sbp2_module_ext. The + * release function is called once pr. registered + * scsi host, but sbp2_cleanup should only be called + * upon module unload. Moved much initialization + * from sbp2scsi_detect to sbp2_module_init. + * Kristian Hogsberg <hog...@us...> */ - + /* @@ -244,6 +261,7 @@ #include <linux/proc_fs.h> #include <linux/blk.h> #include <linux/smp_lock.h> +#include <linux/init.h> #include <asm/current.h> #include <asm/uaccess.h> #include <asm/io.h> @@ -395,7 +413,7 @@ * Globals */ -Scsi_Host_Template *global_scsi_tpnt = NULL; +static Scsi_Host_Template scsi_driver_template; static u8 sbp2_speedto_maxrec[] = { 0x7, 0x8, 0x9 }; @@ -671,13 +689,13 @@ static void sbp2util_remove_command_orb_pool(struct scsi_id_instance_data *scsi_id, struct sbp2scsi_host_info *hi) { - struct list_head *lh; + struct list_head *lh, *next; struct sbp2_command_info *command; unsigned long flags; sbp2_spin_lock(&scsi_id->sbp2_command_orb_lock, flags); if (!list_empty(&scsi_id->sbp2_command_orb_completed)) { - list_for_each(lh, &scsi_id->sbp2_command_orb_completed) { + list_for_each_safe(lh, next, &scsi_id->sbp2_command_orb_completed) { command = list_entry(lh, struct sbp2_command_info, list); /* Release our generic DMA's */ @@ -868,7 +886,6 @@ hpsb_unregister_highlevel(sbp2_hl_handle); sbp2_hl_handle = NULL; } - return; } static int sbp2_probe(struct unit_directory *ud) @@ -889,8 +906,10 @@ SBP2_DEBUG("sbp2_disconnect"); hi = sbp2_find_host_info(ud->ne->host); - if (hi != NULL) - sbp2_remove_device(hi, scsi_id); + if (hi != NULL) { + sbp2_logout_device(hi, scsi_id); + sbp2_remove_device(hi, scsi_id); + } } static void sbp2_update(struct unit_directory *ud) @@ -909,12 +928,10 @@ */ if (sbp2_login_device(hi, scsi_id)) { - /* Login failed too... so, just mark him as - * unvalidated, so that he gets cleaned up - * later. - */ + /* Login failed too, just remove the device. */ SBP2_ERR("sbp2_reconnect_device failed!"); sbp2_remove_device(hi, scsi_id); + hpsb_release_unit_directory(ud); return; } } @@ -978,7 +995,10 @@ sbp2_spin_unlock(&sbp2_host_info_lock, flags); /* Register our host with the SCSI stack. */ - sbp2scsi_register_scsi_host(hi); + hi->scsi_host = scsi_register (&scsi_driver_template, sizeof(void *)); + if (hi->scsi_host) + hi->scsi_host->hostdata[0] = (unsigned long)hi; + scsi_driver_template.present++; return; } @@ -1003,13 +1023,12 @@ } /* - * This function is called when the host is removed + * This function is called when a host is removed. */ static void sbp2_remove_host(struct hpsb_host *host) { struct sbp2scsi_host_info *hi; unsigned long flags; - int i; SBP2_DEBUG("sbp2_remove_host"); @@ -1017,22 +1036,11 @@ hi = sbp2_find_host_info(host); if (hi != NULL) { - /* Here's an annoying hack: we get a disconnect - * callback for each device, so this loop shouldn't be - * necessary. However, the sbp2 driver receives the - * remove_host callback before the nodemgr, so when we - * get the disconnect callback, we've already freed - * the host. Thus, we free the devices here... - */ - for (i = 0; i < SBP2SCSI_MAX_SCSI_IDS; i++) { - if (hi->scsi_id[i] != NULL) { - sbp2_logout_device(hi, hi->scsi_id[i]); - sbp2_remove_device(hi, hi->scsi_id[i]); - } - } sbp2util_remove_request_packet_pool(hi); sbp2_host_count--; list_del(&hi->list); + scsi_unregister(hi->scsi_host); + scsi_driver_template.present--; kfree(hi); } else @@ -1203,10 +1211,7 @@ */ if (sbp2_login_device(hi, scsi_id)) { - /* - * Login failed... so, just mark him as unvalidated, so - * that he gets cleaned up later. - */ + /* Login failed, just remove the device. */ SBP2_ERR("sbp2_login_device failed"); sbp2_remove_device(hi, scsi_id); return -EBUSY; @@ -1231,11 +1236,13 @@ } /* - * This function removes (cleans-up after) any unvalidated sbp2 devices + * This function removes an sbp2 device from the sbp2scsi_host_info struct. */ static void sbp2_remove_device(struct sbp2scsi_host_info *hi, struct scsi_id_instance_data *scsi_id) { + SBP2_DEBUG("sbp2_remove_device"); + /* Complete any pending commands with selection timeout */ sbp2scsi_complete_all_commands(hi, scsi_id, DID_NO_CONNECT); @@ -1276,8 +1283,7 @@ SBP2_DMA_FREE("single logout orb"); } - SBP2_DEBUG("Unvalidated SBP-2 device removed, SCSI ID = %d", - scsi_id->id); + SBP2_DEBUG("SBP-2 device removed, SCSI ID = %d", scsi_id->id); hi->scsi_id[scsi_id->id] = NULL; kfree(scsi_id); } @@ -1381,7 +1387,7 @@ /* * Check status - */ + */ if (STATUS_GET_RESP(scsi_id->status_block.ORB_offset_hi_misc) || STATUS_GET_DEAD_BIT(scsi_id->status_block.ORB_offset_hi_misc) || STATUS_GET_SBP_STATUS(scsi_id->status_block.ORB_offset_hi_misc)) { @@ -1687,9 +1693,9 @@ scsi_id->max_payload_size = min(sbp2_speedto_maxrec[scsi_id->speed_code], (u8)(((be32_to_cpu(hi->host->csr.rom[2]) >> 12) & 0xf) - 1)); - SBP2_ERR("Node " NODE_BUS_FMT ": Max speed [%s] - Max payload [0x%02x/%u]", + SBP2_ERR("Node " NODE_BUS_FMT ": Max speed [%s] - Max payload [%u]", NODE_BUS_ARGS(scsi_id->ne->nodeid), hpsb_speedto_str[scsi_id->speed_code], - scsi_id->max_payload_size, 1 << ((u32)scsi_id->max_payload_size + 2)); + 1 << ((u32)scsi_id->max_payload_size + 2)); return(0); } @@ -2860,127 +2866,111 @@ return(0); } -/* - * This routine is called at setup (init) and does nothing. Not used here. =) - */ -void sbp2scsi_setup( char *str, int *ints) -{ - SBP2_DEBUG("sbp2scsi_setup"); - return; -} - -/* - * This is our detection routine, and is where we init everything. - */ static int sbp2scsi_detect (Scsi_Host_Template *tpnt) { SBP2_DEBUG("sbp2scsi_detect"); - global_scsi_tpnt = tpnt; + /* + * Call sbp2_init to register with the ieee1394 stack. This + * results in a callback to sbp2_add_host for each ieee1394 + * host controller currently registered, and for each of those + * we register a scsi host with the scsi stack. + */ + sbp2_init(); + + /* We return the number of hosts registered. */ + return sbp2_host_count; +} + +MODULE_AUTHOR("James Goodwin <ja...@fi...>"); +MODULE_DESCRIPTION("IEEE-1394 SBP-2 protocol driver"); +MODULE_SUPPORTED_DEVICE(SBP2_DEVICE_NAME); +MODULE_LICENSE("GPL"); + +/* SCSI host template */ +static Scsi_Host_Template scsi_driver_template = { + name: "IEEE-1394 SBP-2 protocol driver", + detect: sbp2scsi_detect, + queuecommand: sbp2scsi_queuecommand, + abort: sbp2scsi_abort, + reset: sbp2scsi_reset, + bios_param: sbp2scsi_biosparam, + can_queue: SBP2SCSI_MAX_OUTSTANDING_CMDS, + this_id: -1, + sg_tablesize: SBP2_MAX_SG_ELEMENTS, + cmd_per_lun: SBP2SCSI_MAX_CMDS_PER_LUN, + use_clustering: SBP2_CLUSTERING, + emulated: 1, + + module: THIS_MODULE, + #if LINUX_VERSION_CODE > KERNEL_VERSION(2,3,26) - global_scsi_tpnt->proc_name = SBP2_DEVICE_NAME; + proc_name: SBP2_DEVICE_NAME #endif +}; + +static int sbp2_module_init(void) +{ + SBP2_DEBUG("sbp2_module_init"); + /* * Module load option for force one command at a time */ if (serialize_io) { SBP2_ERR("Driver forced to serialize I/O (serialize_io = 1)"); - global_scsi_tpnt->can_queue = 1; - global_scsi_tpnt->cmd_per_lun = 1; + scsi_driver_template.can_queue = 1; + scsi_driver_template.cmd_per_lun = 1; } /* - * Module load option to limit max size of requests from the scsi drivers + * Module load option to limit max size of requests from the + * scsi drivers */ if (no_large_packets) { - SBP2_ERR("Driver forced to limit max transfer size (no_large_packets = 1)"); - global_scsi_tpnt->sg_tablesize = 0x1f; - global_scsi_tpnt->use_clustering = DISABLE_CLUSTERING; + SBP2_ERR("Driver forced to limit max transfer size " + "(no_large_packets = 1)"); + scsi_driver_template.sg_tablesize = 0x1f; + scsi_driver_template.use_clustering = DISABLE_CLUSTERING; } if (mode_sense_hack) { SBP2_ERR("Mode sense emulation enabled (mode_sense_hack = 1)"); } - sbp2_init(); - - if (!sbp2_host_count) { - SBP2_ERR("Please load the lower level IEEE-1394 driver (e.g. ohci1394) before sbp2..."); + /* + * Ideally we would register our scsi_driver_template with the + * scsi stack and after that register with the ieee1394 stack + * and process the add_host callbacks. However, the detect + * function in the scsi host template requires that we find at + * least one host, so we "nest" the registrations by calling + * sbp2_init from the detect function. + */ + if (scsi_register_module(MODULE_SCSI_HA, &scsi_driver_template) || + !scsi_driver_template.present) { + SBP2_ERR("Please load the lower level IEEE-1394 driver " + "(e.g. ohci1394) before sbp2..."); sbp2_cleanup(); + return -ENODEV; } - /* - * Since we are returning this count, it means that sbp2 must be - * loaded "after" the host adapter module... - */ - return(sbp2_host_count); + return 0; } -/* - * This function is called from sbp2_add_host, and is where we register - * our scsi host - */ -static void sbp2scsi_register_scsi_host(struct sbp2scsi_host_info *hi) +static void __exit sbp2_module_exit(void) { - struct Scsi_Host *shpnt = NULL; - - SBP2_DEBUG("sbp2scsi_register_scsi_host"); - SBP2_DEBUG("sbp2scsi_host_info = %p", hi); + SBP2_DEBUG("sbp2_module_exit"); /* - * Let's register with the scsi stack + * On module unload we unregister with the ieee1394 stack + * which results in remove_host callbacks for all ieee1394 + * host controllers. In the callbacks we unregister the + * corresponding scsi hosts. */ - if (global_scsi_tpnt) { - - shpnt = scsi_register (global_scsi_tpnt, sizeof(void *)); - - /* - * If successful, save off a context (to be used when SCSI - * commands are received) - */ - if (shpnt) { - shpnt->hostdata[0] = (unsigned long)hi; - } - } - - return; -} - -/* Called when our module is released */ -static int sbp2scsi_release(struct Scsi_Host *host) -{ - SBP2_DEBUG("sbp2scsi_release"); sbp2_cleanup(); - return(0); -} -/* Called for contents of procfs */ -static const char *sbp2scsi_info (struct Scsi_Host *host) -{ - return "IEEE-1394 SBP-2 protocol driver"; + if (scsi_unregister_module(MODULE_SCSI_HA, &scsi_driver_template)) + SBP2_ERR("sbp2_module_exit: couldn't unregister scsi driver"); } -MODULE_AUTHOR("James Goodwin <ja...@fi...>"); -MODULE_DESCRIPTION("IEEE-1394 SBP-2 protocol driver"); -MODULE_SUPPORTED_DEVICE(SBP2_DEVICE_NAME); -MODULE_LICENSE("GPL"); - -/* SCSI host template */ -static Scsi_Host_Template driver_template = { - name: "IEEE1394 SBP-2", - detect: sbp2scsi_detect, - release: sbp2scsi_release, - info: sbp2scsi_info, - queuecommand: sbp2scsi_queuecommand, - abort: sbp2scsi_abort, - reset: sbp2scsi_reset, - bios_param: sbp2scsi_biosparam, - can_queue: SBP2SCSI_MAX_OUTSTANDING_CMDS, - this_id: -1, - sg_tablesize: SBP2_MAX_SG_ELEMENTS, - cmd_per_lun: SBP2SCSI_MAX_CMDS_PER_LUN, - use_clustering: SBP2_CLUSTERING, - emulated: 1 -}; - -#include "../scsi/scsi_module.c" +module_init(sbp2_module_init); +module_exit(sbp2_module_exit); Index: sbp2.h =================================================================== RCS file: /cvsroot/linux-vax/kernel-2.4/drivers/ieee1394/sbp2.h,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- sbp2.h 10 Apr 2002 15:32:20 -0000 1.1 +++ sbp2.h 10 Jun 2003 01:13:31 -0000 1.2 @@ -403,6 +403,13 @@ spinlock_t sbp2_request_packet_lock; /* + * This is the scsi host we register with the scsi mid level. + * We keep a reference to it here, so we can unregister it + * when the hpsb_host is removed. + */ + struct Scsi_Host *scsi_host; + + /* * Lists keeping track of inuse/free sbp2_request_packets. These structures are * used for sending out sbp2 command and agent reset packets. We initially create * a pool of request packets so that we don't have to do any kmallocs while in critical @@ -498,7 +505,6 @@ /* * Scsi interface related prototypes */ -static const char *sbp2scsi_info (struct Scsi_Host *host); static int sbp2scsi_detect (Scsi_Host_Template *tpnt); void sbp2scsi_setup(char *str, int *ints); static int sbp2scsi_biosparam (Scsi_Disk *disk, kdev_t dev, int geom[]); @@ -509,6 +515,5 @@ u32 status); static void sbp2scsi_complete_command(struct sbp2scsi_host_info *hi, struct scsi_id_instance_data *scsi_id, u32 scsi_status, Scsi_Cmnd *SCpnt, void (*done)(Scsi_Cmnd *)); -static void sbp2scsi_register_scsi_host(struct sbp2scsi_host_info *hi); #endif /* SBP2_H */ Index: video1394.c =================================================================== RCS file: /cvsroot/linux-vax/kernel-2.4/drivers/ieee1394/video1394.c,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 --- video1394.c 10 Apr 2002 15:32:20 -0000 1.2 +++ video1394.c 10 Jun 2003 01:13:31 -0000 1.3 @@ -47,6 +47,8 @@ #include <linux/types.h> #include <linux/wrapper.h> #include <linux/vmalloc.h> +#include <linux/timex.h> +#include <linux/mm.h> #include "ieee1394.h" #include "ieee1394_types.h" @@ -95,6 +97,7 @@ struct dma_cmd **ir_prg; struct it_dma_prg **it_prg; unsigned int *buffer_status; + struct timeval *buffer_time; /* time when the buffer was received */ unsigned int *last_used_cmd; /* For ISO Transmit with variable sized packets only ! */ int ctrlClear; @@ -102,8 +105,8 @@ int cmdPtr; int ctxMatch; wait_queue_head_t waitq; - spinlock_t lock; - unsigned int syt_offset; + spinlock_t lock; + unsigned int syt_offset; int flags; }; @@ -304,6 +307,8 @@ if ((*d)->buffer_status) kfree((*d)->buffer_status); + if ((*d)->buffer_time) + kfree((*d)->buffer_time); if ((*d)->last_used_cmd) kfree((*d)->last_used_cmd); if ((*d)->next_buffer) @@ -437,6 +442,8 @@ d->buffer_status = kmalloc(d->num_desc * sizeof(unsigned int), GFP_KERNEL); + d->buffer_time = kmalloc(d->num_desc * sizeof(struct timeval), + GFP_KERNEL); d->last_used_cmd = kmalloc(d->num_desc * sizeof(unsigned int), GFP_KERNEL); d->next_buffer = kmalloc(d->num_desc * sizeof(int), @@ -447,6 +454,11 @@ free_dma_iso_ctx(&d); return NULL; } + if (d->buffer_time == NULL) { + PRINT(KERN_ERR, ohci->id, "Failed to allocate buffer_time"); + free_dma_iso_ctx(&d); + return NULL; + } if (d->last_used_cmd == NULL) { PRINT(KERN_ERR, ohci->id, "Failed to allocate last_used_cmd"); free_dma_iso_ctx(&d); @@ -458,6 +470,7 @@ return NULL; } memset(d->buffer_status, 0, d->num_desc * sizeof(unsigned int)); + memset(d->buffer_time, 0, d->num_desc * sizeof(struct timeval)); memset(d->last_used_cmd, 0, d->num_desc * sizeof(unsigned int)); memset(d->next_buffer, -1, d->num_desc * sizeof(int)); @@ -604,6 +617,7 @@ if (d->ir_prg[i][d->nb_cmd-1].status & 0xFFFF0000) { reset_ir_status(d, i); d->buffer_status[i] = VIDEO1394_BUFFER_READY; + get_fast_time(&d->buffer_time[i]); } } spin_unlock(&d->lock); @@ -876,9 +890,23 @@ if(copy_from_user(&v, (void *)arg, sizeof(v))) return -EFAULT; + + /* if channel < 0, find lowest available one */ + if (v.channel < 0) { + mask = (u64)0x1; + for (i=0; i<ISO_CHANNELS; i++) { + if (!(ohci->ISO_channel_usage & mask)) { + v.channel = i; + PRINT(KERN_INFO, ohci->id, "Found free channel %d\n", i); + break; + } + mask = mask << 1; + } + } + if (v.channel<0 || v.channel>(ISO_CHANNELS-1)) { PRINT(KERN_ERR, ohci->id, - "Iso channel %d out of bound", v.channel); + "Iso channel %d out of bounds", v.channel); return -EFAULT; } mask = (u64)0x1<<v.channel; @@ -1092,6 +1120,7 @@ } case VIDEO1394_LISTEN_WAIT_BUFFER: + case VIDEO1394_LISTEN_POLL_BUFFER: { struct video1394_wait v; struct dma_iso_ctx *d; @@ -1120,6 +1149,12 @@ d->buffer_status[v.buffer]=VIDEO1394_BUFFER_FREE; break; case VIDEO1394_BUFFER_QUEUED: + if (cmd == VIDEO1394_LISTEN_POLL_BUFFER) { + /* for polling, return error code EINTR */ + spin_unlock_irqrestore(&d->lock, flags); + return -EINTR; + } + #if 1 while(d->buffer_status[v.buffer]!= VIDEO1394_BUFFER_READY) { @@ -1147,6 +1182,10 @@ return -EFAULT; } + /* set time of buffer */ + v.filltime = d->buffer_time[v.buffer]; +// printk("Buffer %d time %d\n", v.buffer, (d->buffer_time[v.buffer]).tv_usec); + /* * Look ahead to see how many more buffers have been received */ @@ -1596,7 +1635,8 @@ { struct ti_ohci *ohci; unsigned long flags; - struct list_head *lh; + struct list_head *lh, *next; + struct video_card *p; /* We only work with the OHCI-1394 driver */ if (strcmp(host->template->name, OHCI1394_DRIVER_NAME)) @@ -1605,14 +1645,11 @@ ohci = (struct ti_ohci *)host->hostdata; spin_lock_irqsave(&video1394_cards_lock, flags); - if (!list_empty(&video1394_cards)) { - struct video_card *p; - list_for_each(lh, &video1394_cards) { - p = list_entry(lh, struct video_card, list); - if (p ->ohci == ohci) { - remove_card(p); - break; - } + list_for_each_safe(lh, next, &video1394_cards) { + p = list_entry(lh, struct video_card, list); + if (p->ohci == ohci) { + remove_card(p); + break; } } spin_unlock_irqrestore(&video1394_cards_lock, flags); @@ -1652,7 +1689,7 @@ devfs_unregister(devfs_handle); devfs_unregister_chrdev(VIDEO1394_MAJOR, VIDEO1394_DRIVER_NAME); - PRINT_G(KERN_INFO, "Removed " VIDEO1394_DRIVER_NAME " module\n"); + PRINT_G(KERN_INFO, "Removed " VIDEO1394_DRIVER_NAME " module"); } static int __init video1394_init_module (void) @@ -1678,6 +1715,7 @@ return -ENOMEM; } + PRINT_G(KERN_INFO, "Installed " VIDEO1394_DRIVER_NAME " module"); return 0; } Index: video1394.h =================================================================== RCS file: /cvsroot/linux-vax/kernel-2.4/drivers/ieee1394/video1394.h,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 --- video1394.h 10 Apr 2002 15:32:20 -0000 1.2 +++ video1394.h 10 Jun 2003 01:13:32 -0000 1.3 @@ -35,11 +35,12 @@ VIDEO1394_LISTEN_CHANNEL = 0, VIDEO1394_UNLISTEN_CHANNEL, VIDEO1394_LISTEN_QUEUE_BUFFER, - VIDEO1394_LISTEN_WAIT_BUFFER, + VIDEO1394_LISTEN_WAIT_BUFFER, // wait until buffer is ready VIDEO1394_TALK_CHANNEL, VIDEO1394_UNTALK_CHANNEL, VIDEO1394_TALK_QUEUE_BUFFER, - VIDEO1394_TALK_WAIT_BUFFER + VIDEO1394_TALK_WAIT_BUFFER, + VIDEO1394_LISTEN_POLL_BUFFER // return immediately with -EINTR if not ready }; #define VIDEO1394_SYNC_FRAMES 0x00000001 @@ -47,7 +48,7 @@ #define VIDEO1394_VARIABLE_PACKET_SIZE 0x00000004 struct video1394_mmap { - unsigned int channel; + int channel; /* -1 to find an open channel in LISTEN/TALK */ unsigned int sync_tag; unsigned int nb_buffers; unsigned int buf_size; @@ -69,6 +70,7 @@ struct video1394_wait { unsigned int channel; unsigned int buffer; + struct timeval filltime; /* time of buffer full */ }; |