Hello
I'm tring to use serial driver 5.05 with kernel in version
2.2.18. There is a little problem with vendor definition in kernel source.
In serial dirver from Theodore Ts'o we have:
{ PCI_VENDOR_ID_SPECIALIX, PCI_DEVICE_ID_OXSEMI_16PCI954,
PCI_VENDOR_ID_SPECIALIX,
PCI_SUBDEVICE_ID_SPECIALIX_SPEED4,
SPCI_FL_BASE0 , 4, 921600 },
{ PCI_VENDOR_ID_OXSEMI, PCI_DEVICE_ID_OXSEMI_16PCI954,
PCI_ANY_ID, PCI_ANY_ID,
SPCI_FL_BASE0 , 4, 115200 },
In kernel 2.4.0-test11 we have:
[lukasz@lt linux]$ grep PCI_DEVICE_ID_OXSEMI_16PCI954 * -r
drivers/char/serial.c: { PCI_VENDOR_ID_SPECIALIX,
PCI_DEVICE_ID_OXSEMI_16PCI954,
drivers/char/serial.c: { PCI_VENDOR_ID_OXSEMI,
PCI_DEVICE_ID_OXSEMI_16PCI954,
include/linux/pci_ids.h:#define PCI_DEVICE_ID_OXSEMI_16PCI954 0x9501
(IMHO that is correct), but in kernel 2.2.18 we have:
(include/kernel/pci.h)
#define PCI_DEVICE_ID_OXSEMI_16PCI954PP 0x9513
^^
Please correct, if I'm wrong, but IMHO it shuld be:
(include/kernel/pci.h)
#define PCI_DEVICE_ID_OXSEMI_16PCI954 0x9513
There is a simple patch to fix that:
diff -r -u linux.org/include/linux/pci.h linux/include/linux/pci.h
--- linux.org/include/linux/pci.h Mon Dec 11 01:49:44 2000
+++ linux/include/linux/pci.h Fri Dec 15 21:38:14 2000
@@ -1097,7 +1097,7 @@
#define PCI_VENDOR_ID_OXSEMI 0x1415
#define PCI_DEVICE_ID_OXSEMI_12PCI840 0x8403
-#define PCI_DEVICE_ID_OXSEMI_16PCI954PP 0x9513
+#define PCI_DEVICE_ID_OXSEMI_16PCI954 0x9513
#define PCI_VENDOR_ID_AFAVLAB 0x14db
#define PCI_DEVICE_ID_AFAVLAB_TK9902 0x2120
--
*[ ?ukasz Tr?bi?ski ]*
SysAdmin @wsisiz.edu.pl
Lukasz Trabinski wrote:
> include/linux/pci_ids.h:#define PCI_DEVICE_ID_OXSEMI_16PCI954 0x9501
>
> (IMHO that is correct), but in kernel 2.2.18 we have:
> (include/kernel/pci.h)
> #define PCI_DEVICE_ID_OXSEMI_16PCI954PP 0x9513
> ^^
>
> Please correct, if I'm wrong, but IMHO it shuld be:
> (include/kernel/pci.h)
> #define PCI_DEVICE_ID_OXSEMI_16PCI954 0x9513
Please correct me if *I* am wrong, but shouldn't the names be
different if the values are different?
Also, excuse me while I soap-box for a moment: This and other
inconsistencies
would be easier to deal with if there were a single repository for PCI
information from which all the PCI device tables and ID enumerations
were derived. I have posted the technology that can easily be adapted
to emit both 2.2 and 2.4 flavors of tables, though only PCI-IDE stuff
for 2.4 is currently implemented.
See ftp://autogen.linuxave.net/pub/PCIDEV.tgz
Tiny drawback: you must download and use this to generate
all the output tables:
ftp://autogen.linuxave.net/pub/autogen-5.1.3.tar.gz
Homepage (with broken download link due to SourceForge outage):
http://AutoGen.SourceForge.net/
On Fri, Dec 15, 2000 at 09:57:42PM +0100, Lukasz Trabinski wrote:
> In serial dirver from Theodore Ts'o we have:
>
> { PCI_VENDOR_ID_SPECIALIX, PCI_DEVICE_ID_OXSEMI_16PCI954,
This is for a serial port device.
> (IMHO that is correct), but in kernel 2.2.18 we have:
> (include/kernel/pci.h)
> #define PCI_DEVICE_ID_OXSEMI_16PCI954PP 0x9513
> ^^
This is for a parallel port device. They are two logically different
things, have two distinct PCI bus entries, and so have two distinct
PCI device IDs and consequently different names.
> -#define PCI_DEVICE_ID_OXSEMI_16PCI954PP 0x9513
> +#define PCI_DEVICE_ID_OXSEMI_16PCI954 0x9513
Alan, do not apply, this will break the parport code.
If the OXSEMI_16PCI954 is _missing_, it probably ought to be _added_,
but it does not have 0x9513 as its ID and so the existing name should
not be changed.
Tim.
*/
On Sat, 16 Dec 2000, Tim Waugh wrote:
> > -#define PCI_DEVICE_ID_OXSEMI_16PCI954PP 0x9513
> > +#define PCI_DEVICE_ID_OXSEMI_16PCI954 0x9513
>
> Alan, do not apply, this will break the parport code.
>
> If the OXSEMI_16PCI954 is _missing_, it probably ought to be _added_,
> but it does not have 0x9513 as its ID and so the existing name should
> not be changed.
OK, You have right, I'm not a driver programmer, but it probably should
look like this:
diff -ur linux.org2/include/linux/pci.h linux/include/linux/pci.h
--- linux.org2/include/linux/pci.h Mon Dec 11 01:49:44 2000
+++ linux/include/linux/pci.h Sun Dec 17 01:30:21 2000
@@ -1098,6 +1098,7 @@
#define PCI_VENDOR_ID_OXSEMI 0x1415
#define PCI_DEVICE_ID_OXSEMI_12PCI840 0x8403
#define PCI_DEVICE_ID_OXSEMI_16PCI954PP 0x9513
+#define PCI_DEVICE_ID_OXSEMI_16PCI954 0x9501
#define PCI_VENDOR_ID_AFAVLAB 0x14db
#define PCI_DEVICE_ID_AFAVLAB_TK9902 0x2120
I think that can be "safely" added to the kernel source. :-)
Anyway nn kernel 2.4.0-test12 we have line:
include/linux/pci_ids.h:#define PCI_DEVICE_ID_OXSEMI_16PCI954 0x9501
Why serial.c from the 2.2.18 not support 921600 speed? We have to patch
it...
--
*[ ?ukasz Tr?bi?ski ]*
SysAdmin @wsisiz.edu.pl
Date: Sun, 17 Dec 2000 01:51:15 +0100 (CET)
From: Lukasz Trabinski <[email protected]>
OK, You have right, I'm not a driver programmer, but it probably should
look like this:
+#define PCI_DEVICE_ID_OXSEMI_16PCI954 0x9501
That's correct, yes. The reason why the original poster was having
problems was that the serial_compat.h defined PCI_VENDOR_ID_OXSEMI
PCI_DEVICE_ID_OXSEMI_16PCI954 if PCI_VENDOR_ID_OXSEMI was not defined.
Since 2.2.18 defines PCI_VENDOR_ID_OXSEMI, but ..._OXSEMI_16PCI954, the
5.05 serial.c wouldn't compile.
When we integrate a newer serial driver into 2.2.19, I'll include the
necessary patches to pci_ids.h.
Why serial.c from the 2.2.18 not support 921600 speed? We have to patch
it...
2.2.18 has an old serial driver that doesn't know about PCI devices.
The updated serial driver available at http://serial.sourceforge.net
should deal with this correctly.
- Ted