public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
* Patch(?): isapnp_card_id tables for all isapnp drivers in 2.4.0-test11
@ 2000-11-24 23:37 Adam J. Richter
  2000-11-25  1:41 ` Keith Owens
  0 siblings, 1 reply; 5+ messages in thread
From: Adam J. Richter @ 2000-11-24 23:37 UTC (permalink / raw)
  To: linux-kernel

[-- Attachment #1: Type: text/plain, Size: 1784 bytes --]

	I have made added isapnp_card_id table to all isapnp drivers.
This is the isapnp equivalent of the pci MODULE_DEVICE_TABLE declarations.
They allow a user level software agent to know which modules correspond
to your hardware configuration and to load them.  One such implementation
(GPL'ed) is available from
ftp://ftp.yggdrasil.com/pub/dist/device_control/isapnpmodules/.

	There previously were no isapnp_card_id tables in the kernel
drivers.  I believe this patch adds isapnp_card_id tables to all of
them, completing the coverage of Keith Owens's
/lib/modules/<version>/modules.{pci,usb,isapnp}map files.  I have
attached a patch below that covers just the files that have the
isapnp changes.  Note that it includes a couple of pci_device_id
table declarations that happened to flow into the same "diff" sections
as the isapnp_card_id declarations.  A complete set of patches
with both pci and isapnp declarations is available from

ftp://ftp.yggdrasil.com/pub/dist/device_control/kernel/pci_id_tables-2.4.0-test11.patch2.gz

	Note that this is not a "final" version.  I plan to go
through all of the changes and bracket all of these new tables
with #ifdef MODULE...#endif so they do not result in complaints
about the table being defined static and never used in cases where
the driver is compiled directly into the kernel.  After 2.4.0, I
imainge most of those #ifdef MODULE conditions will go away
as the tables come to be actually used by the driver code.

	Any comments are welcome.

-- 
Adam J. Richter     __     ______________   4880 Stevens Creek Blvd, Suite 104
adam@yggdrasil.com     \ /                  San Jose, California 95129-1034
+1 408 261-6630         | g g d r a s i l   United States of America
fax +1 408 261-6631      "Free Software For The Rest Of Us."

[-- Attachment #2: diffs.isapnp --]
[-- Type: text/plain, Size: 29639 bytes --]

--- linux-2.4.0-test11/drivers/char/serial.c	Mon Oct 16 12:58:51 2000
+++ linux/drivers/char/serial.c	Fri Nov 24 14:07:01 2000
@@ -4682,6 +4682,287 @@
 	unsigned short device;
 };
 
+#define ISPNP_TBL_ENTRY(v1,v2,v3,func) { \
+	card_vendor: ISAPNP_ANY_ID, \
+	card_device: ISAPNP_ANY_ID, \
+	devs: { ISAPNP_DEVICE_ID(v1,v2,v3,func ) }, \
+}
+
+# ifdef MODULE
+static struct isapnp_card_id ixj_isa_ids[] __initdata = {
+	/* Archtek America Corp. */
+	/* Archtek SmartLink Modem 3334BT Plug & Play */
+	ISAPNP_TBL_ENTRY('A', 'A', 'C', 0x000F),
+	/* Anchor Datacomm BV */
+	/* SXPro 144 External Data Fax Modem Plug & Play */
+	ISAPNP_TBL_ENTRY('A', 'D', 'C', 0x0001),
+	/* SXPro 288 External Data Fax Modem Plug & Play */
+	ISAPNP_TBL_ENTRY('A', 'D', 'C', 0x0002),
+	/* Rockwell 56K ACF II Fax+Data+Voice Modem */
+	ISAPNP_TBL_ENTRY('A', 'K', 'Y', 0x1021),
+	/* AZT3005 PnP SOUND DEVICE */
+	ISAPNP_TBL_ENTRY('A', 'Z', 'T', 0x4001),
+	/* Best Data Products Inc. Smart One 336F PnP Modem */
+	ISAPNP_TBL_ENTRY('B', 'D', 'P', 0x3336),
+	/*  Boca Research */
+	/* Boca Complete Ofc Communicator 14.4 Data-FAX */
+	ISAPNP_TBL_ENTRY('B', 'R', 'I', 0x0A49),
+	/* Boca Research 33,600 ACF Modem */
+	ISAPNP_TBL_ENTRY('B', 'R', 'I', 0x1400),
+	/* Boca 33.6 Kbps Internal FD34FSVD */
+	ISAPNP_TBL_ENTRY('B', 'R', 'I', 0x3400),
+	/* Boca 33.6 Kbps Internal FD34FSVD */
+	ISAPNP_TBL_ENTRY('B', 'R', 'I', 0x0A49),
+	/* Best Data Products Inc. Smart One 336F PnP Modem */
+	ISAPNP_TBL_ENTRY('B', 'D', 'P', 0x3336),
+	/* Computer Peripherals Inc */
+	/* EuroViVa CommCenter-33.6 SP PnP */
+	ISAPNP_TBL_ENTRY('C', 'P', 'I', 0x4050),
+	/* Creative Labs */
+	/* Creative Labs Phone Blaster 28.8 DSVD PnP Voice */
+	ISAPNP_TBL_ENTRY('C', 'T', 'L', 0x3001),
+	/* Creative Labs Modem Blaster 28.8 DSVD PnP Voice */
+	ISAPNP_TBL_ENTRY('C', 'T', 'L', 0x3011),
+	/* Creative */
+	/* Creative Modem Blaster Flash56 DI5601-1 */
+	ISAPNP_TBL_ENTRY('D', 'M', 'B', 0x1032),
+	/* Creative Modem Blaster V.90 DI5660 */
+	ISAPNP_TBL_ENTRY('D', 'M', 'B', 0x2001),
+	/* FUJITSU */
+	/* Fujitsu 33600 PnP-I2 R Plug & Play */
+	ISAPNP_TBL_ENTRY('F', 'U', 'J', 0x0202),
+	/* Fujitsu FMV-FX431 Plug & Play */
+	ISAPNP_TBL_ENTRY('F', 'U', 'J', 0x0205),
+	/* Fujitsu 33600 PnP-I4 R Plug & Play */
+	ISAPNP_TBL_ENTRY('F', 'U', 'J', 0x0206),
+	/* Fujitsu Fax Voice 33600 PNP-I5 R Plug & Play */
+	ISAPNP_TBL_ENTRY('F', 'U', 'J', 0x0209),
+	/* Archtek America Corp. */
+	/* Archtek SmartLink Modem 3334BT Plug & Play */
+	ISAPNP_TBL_ENTRY('G', 'V', 'C', 0x000F),
+	/* Hayes */
+	/* Hayes Optima 288 V.34-V.FC + FAX + Voice Plug & Play */
+	ISAPNP_TBL_ENTRY('H', 'A', 'Y', 0x0001),
+	/* Hayes Optima 336 V.34 + FAX + Voice PnP */
+	ISAPNP_TBL_ENTRY('H', 'A', 'Y', 0x000C),
+	/* Hayes Optima 336B V.34 + FAX + Voice PnP */
+	ISAPNP_TBL_ENTRY('H', 'A', 'Y', 0x000D),
+	/* Hayes Accura 56K Ext Fax Modem PnP */
+	ISAPNP_TBL_ENTRY('H', 'A', 'Y', 0x5670),
+	/* Hayes Accura 56K Ext Fax Modem PnP */
+	ISAPNP_TBL_ENTRY('H', 'A', 'Y', 0x5674),
+	/* Hayes Accura 56K Fax Modem PnP */
+	ISAPNP_TBL_ENTRY('H', 'A', 'Y', 0x5675),
+	/* Hayes 288, V.34 + FAX */
+	ISAPNP_TBL_ENTRY('H', 'A', 'Y', 0xF000),
+	/* Hayes Optima 288 V.34 + FAX + Voice, Plug & Play */
+	ISAPNP_TBL_ENTRY('H', 'A', 'Y', 0xF001),
+	/* IBM */
+	/* IBM Thinkpad 701 Internal Modem Voice */
+	ISAPNP_TBL_ENTRY('I', 'B', 'M', 0x0033),
+	/* Intertex */
+	/* Intertex 28k8 33k6 Voice EXT PnP */
+	ISAPNP_TBL_ENTRY('I', 'X', 'D', 0xC801),
+	/* Intertex 33k6 56k Voice EXT PnP */
+	ISAPNP_TBL_ENTRY('I', 'X', 'D', 0xC901),
+	/* Intertex 28k8 33k6 Voice SP EXT PnP */
+	ISAPNP_TBL_ENTRY('I', 'X', 'D', 0xD801),
+	/* Intertex 33k6 56k Voice SP EXT PnP */
+	ISAPNP_TBL_ENTRY('I', 'X', 'D', 0xD901),
+	/* Intertex 28k8 33k6 Voice SP INT PnP */
+	ISAPNP_TBL_ENTRY('I', 'X', 'D', 0xF401),
+	/* Intertex 28k8 33k6 Voice SP EXT PnP */
+	ISAPNP_TBL_ENTRY('I', 'X', 'D', 0xF801),
+	/* Intertex 33k6 56k Voice SP EXT PnP */
+	ISAPNP_TBL_ENTRY('I', 'X', 'D', 0xF901),
+	/* Kortex International */
+	/* KORTEX 28800 Externe PnP */
+	ISAPNP_TBL_ENTRY('K', 'O', 'R', 0x4522),
+	/* KXPro 33.6 Vocal ASVD PnP */
+	ISAPNP_TBL_ENTRY('K', 'O', 'R', 0xF661),
+	/* Lasat */
+	/* LASAT Internet 33600 PnP */
+	ISAPNP_TBL_ENTRY('L', 'A', 'S', 0x4040),
+	/* Lasat Safire 560 PnP */
+	ISAPNP_TBL_ENTRY('L', 'A', 'S', 0x4540),
+	/* Lasat Safire 336  PnP */
+	ISAPNP_TBL_ENTRY('L', 'A', 'S', 0x5440),
+	/* Microcom, Inc. */
+	/* Microcom TravelPorte FAST V.34 Plug & Play */
+	ISAPNP_TBL_ENTRY('M', 'N', 'P', 0x281),
+	/* Microcom DeskPorte V.34 FAST or FAST+ Plug & Play */
+	ISAPNP_TBL_ENTRY('M', 'N', 'P', 0x0336),
+	/* Microcom DeskPorte FAST EP 28.8 Plug & Play */
+	ISAPNP_TBL_ENTRY('M', 'N', 'P', 0x0339),
+	/* Microcom DeskPorte 28.8P Plug & Play */
+	ISAPNP_TBL_ENTRY('M', 'N', 'P', 0x0342),
+	/* Microcom DeskPorte FAST ES 28.8 Plug & Play */
+	ISAPNP_TBL_ENTRY('M', 'N', 'P', 0x0500),
+	/* Microcom DeskPorte FAST ES 28.8 Plug & Play */
+	ISAPNP_TBL_ENTRY('M', 'N', 'P', 0x0501),
+	/* Microcom DeskPorte 28.8S Internal Plug & Play */
+	ISAPNP_TBL_ENTRY('M', 'N', 'P', 0x0502),
+	/* Motorola */
+	/* Motorola BitSURFR Plug & Play */
+	ISAPNP_TBL_ENTRY('M', 'O', 'T', 0x1105),
+	/* Motorola TA210 Plug & Play */
+	ISAPNP_TBL_ENTRY('M', 'O', 'T', 0x1111),
+	/* Motorola HMTA 200 (ISDN) Plug & Play */
+	ISAPNP_TBL_ENTRY('M', 'O', 'T', 0x1114),
+	/* Motorola BitSURFR Plug & Play */
+	ISAPNP_TBL_ENTRY('M', 'O', 'T', 0x1115),
+	/* Motorola Lifestyle 28.8 Internal */
+	ISAPNP_TBL_ENTRY('M', 'O', 'T', 0x1190),
+	/* Motorola V.3400 Plug & Play */
+	ISAPNP_TBL_ENTRY('M', 'O', 'T', 0x1501),
+	/* Motorola Lifestyle 28.8 V.34 Plug & Play */
+	ISAPNP_TBL_ENTRY('M', 'O', 'T', 0x1502),
+	/* Motorola Power 28.8 V.34 Plug & Play */
+	ISAPNP_TBL_ENTRY('M', 'O', 'T', 0x1505),
+	/* Motorola ModemSURFR External 28.8 Plug & Play */
+	ISAPNP_TBL_ENTRY('M', 'O', 'T', 0x1509),
+	/* Motorola Premier 33.6 Desktop Plug & Play */
+	ISAPNP_TBL_ENTRY('M', 'O', 'T', 0x150A),
+	/* Motorola VoiceSURFR 56K External PnP */
+	ISAPNP_TBL_ENTRY('M', 'O', 'T', 0x150F),
+	/* Motorola ModemSURFR 56K External PnP */
+	ISAPNP_TBL_ENTRY('M', 'O', 'T', 0x1510),
+	/* Motorola ModemSURFR 56K Internal PnP */
+	ISAPNP_TBL_ENTRY('M', 'O', 'T', 0x1550),
+	/* Motorola ModemSURFR Internal 28.8 Plug & Play */
+	ISAPNP_TBL_ENTRY('M', 'O', 'T', 0x1560),
+	/* Motorola Premier 33.6 Internal Plug & Play */
+	ISAPNP_TBL_ENTRY('M', 'O', 'T', 0x1580),
+	/* Motorola OnlineSURFR 28.8 Internal Plug & Play */
+	ISAPNP_TBL_ENTRY('M', 'O', 'T', 0x15B0),
+	/* Motorola VoiceSURFR 56K Internal PnP */
+	ISAPNP_TBL_ENTRY('M', 'O', 'T', 0x15F0),
+	/* Com 1 */
+	/*  Deskline K56 Phone System PnP */
+	ISAPNP_TBL_ENTRY('M', 'V', 'X', 0x00A1),
+	/* PC Rider K56 Phone System PnP */
+	ISAPNP_TBL_ENTRY('M', 'V', 'X', 0x00F2),
+	/* Pace 56 Voice Internal Plug & Play Modem */
+	ISAPNP_TBL_ENTRY('P', 'M', 'C', 0x2430),
+	/* Generic */
+	/* Generic standard PC COM port	 */
+	ISAPNP_TBL_ENTRY('P', 'N', 'P', 0x0500),
+	/* Generic 16550A-compatible COM port */
+	ISAPNP_TBL_ENTRY('P', 'N', 'P', 0x0501),
+	/* Compaq 14400 Modem */
+	ISAPNP_TBL_ENTRY('P', 'N', 'P', 0xC000),
+	/* Compaq 2400/9600 Modem */
+	ISAPNP_TBL_ENTRY('P', 'N', 'P', 0xC001),
+	/* Dial-Up Networking Serial Cable between 2 PCs */
+	ISAPNP_TBL_ENTRY('P', 'N', 'P', 0xC031),
+	/* Dial-Up Networking Parallel Cable between 2 PCs */
+	ISAPNP_TBL_ENTRY('P', 'N', 'P', 0xC032),
+	/* Standard 9600 bps Modem */
+	ISAPNP_TBL_ENTRY('P', 'N', 'P', 0xC100),
+	/* Standard 14400 bps Modem */
+	ISAPNP_TBL_ENTRY('P', 'N', 'P', 0xC101),
+	/*  Standard 28800 bps Modem*/
+	ISAPNP_TBL_ENTRY('P', 'N', 'P', 0xC102),
+	/*  Standard Modem*/
+	ISAPNP_TBL_ENTRY('P', 'N', 'P', 0xC103),
+	/*  Standard 9600 bps Modem*/
+	ISAPNP_TBL_ENTRY('P', 'N', 'P', 0xC104),
+	/*  Standard 14400 bps Modem*/
+	ISAPNP_TBL_ENTRY('P', 'N', 'P', 0xC105),
+	/*  Standard 28800 bps Modem*/
+	ISAPNP_TBL_ENTRY('P', 'N', 'P', 0xC106),
+	/*  Standard Modem */
+	ISAPNP_TBL_ENTRY('P', 'N', 'P', 0xC107),
+	/* Standard 9600 bps Modem */
+	ISAPNP_TBL_ENTRY('P', 'N', 'P', 0xC108),
+	/* Standard 14400 bps Modem */
+	ISAPNP_TBL_ENTRY('P', 'N', 'P', 0xC109),
+	/* Standard 28800 bps Modem */
+	ISAPNP_TBL_ENTRY('P', 'N', 'P', 0xC10A),
+	/* Standard Modem */
+	ISAPNP_TBL_ENTRY('P', 'N', 'P', 0xC10B),
+	/* Standard 9600 bps Modem */
+	ISAPNP_TBL_ENTRY('P', 'N', 'P', 0xC10C),
+	/* Standard 14400 bps Modem */
+	ISAPNP_TBL_ENTRY('P', 'N', 'P', 0xC10D),
+	/* Standard 28800 bps Modem */
+	ISAPNP_TBL_ENTRY('P', 'N', 'P', 0xC10E),
+	/* Standard Modem */
+	ISAPNP_TBL_ENTRY('P', 'N', 'P', 0xC10F),
+	/* Standard PCMCIA Card Modem */
+	ISAPNP_TBL_ENTRY('P', 'N', 'P', 0x2000),
+	/* Rockwell */
+	/* Modular Technology */
+	/* Rockwell 33.6 DPF Internal PnP */
+	/* Modular Technology 33.6 Internal PnP */
+	ISAPNP_TBL_ENTRY('R', 'O', 'K', 0x0030),
+	/* Kortex International */
+	/* KORTEX 14400 Externe PnP */
+	ISAPNP_TBL_ENTRY('R', 'O', 'K', 0x0100),
+	/* Viking Components, Inc */
+	/* Viking 28.8 INTERNAL Fax+Data+Voice PnP */
+	ISAPNP_TBL_ENTRY('R', 'O', 'K', 0x4920),
+	/* Rockwell */
+	/* British Telecom */
+	/* Modular Technology */
+	/* Rockwell 33.6 DPF External PnP */
+	/* BT Prologue 33.6 External PnP */
+	/* Modular Technology 33.6 External PnP */
+	ISAPNP_TBL_ENTRY('R', 'S', 'S', 0x00A0),
+	/* Viking 56K FAX INT */
+	ISAPNP_TBL_ENTRY('R', 'S', 'S', 0x0262),
+	/* SupraExpress 28.8 Data/Fax PnP modem */
+	ISAPNP_TBL_ENTRY('S', 'U', 'P', 0x1310),
+	/* SupraExpress 33.6 Data/Fax PnP modem */
+	ISAPNP_TBL_ENTRY('S', 'U', 'P', 0x1421),
+	/* SupraExpress 33.6 Data/Fax PnP modem */
+	ISAPNP_TBL_ENTRY('S', 'U', 'P', 0x1590),
+	/* SupraExpress 33.6 Data/Fax PnP modem */
+	ISAPNP_TBL_ENTRY('S', 'U', 'P', 0x1760),
+	/* Phoebe Micro */
+	/* Phoebe Micro 33.6 Data Fax 1433VQH Plug & Play */
+	ISAPNP_TBL_ENTRY('T', 'E', 'X', 0x0011),
+	/* Archtek America Corp. */
+	/* Archtek SmartLink Modem 3334BT Plug & Play */
+	ISAPNP_TBL_ENTRY('U', 'A', 'C', 0x000F),
+	/* 3Com Corp. */
+	/* Gateway Telepath IIvi 33.6 */
+	ISAPNP_TBL_ENTRY('U', 'S', 'R', 0x0000),
+	/*  Sportster Vi 14.4 PnP FAX Voicemail */
+	ISAPNP_TBL_ENTRY('U', 'S', 'R', 0x0004),
+	/* U.S. Robotics 33.6K Voice INT PnP */
+	ISAPNP_TBL_ENTRY('U', 'S', 'R', 0x0006),
+	/* U.S. Robotics 33.6K Voice EXT PnP */
+	ISAPNP_TBL_ENTRY('U', 'S', 'R', 0x0007),
+	/* U.S. Robotics 33.6K Voice INT PnP */
+	ISAPNP_TBL_ENTRY('U', 'S', 'R', 0x2002),
+	/* U.S. Robotics 56K Voice INT PnP */
+	ISAPNP_TBL_ENTRY('U', 'S', 'R', 0x2070),
+	/* U.S. Robotics 56K Voice EXT PnP */
+	ISAPNP_TBL_ENTRY('U', 'S', 'R', 0x2080),
+	/* U.S. Robotics 56K FAX INT */
+	ISAPNP_TBL_ENTRY('U', 'S', 'R', 0x3031),
+	/* U.S. Robotics 56K Voice INT PnP */
+	ISAPNP_TBL_ENTRY('U', 'S', 'R', 0x3070),
+	/* U.S. Robotics 56K Voice EXT PnP */
+	ISAPNP_TBL_ENTRY('U', 'S', 'R', 0x3080),
+	/* U.S. Robotics 56K Voice INT PnP */
+	ISAPNP_TBL_ENTRY('U', 'S', 'R', 0x3090),
+	/* U.S. Robotics 56K Message  */
+	ISAPNP_TBL_ENTRY('U', 'S', 'R', 0x9100),
+	/*  U.S. Robotics 56K FAX EXT PnP*/
+	ISAPNP_TBL_ENTRY('U', 'S', 'R', 0x9160),
+	/*  U.S. Robotics 56K FAX INT PnP*/
+	ISAPNP_TBL_ENTRY('U', 'S', 'R', 0x9170),
+	/*  U.S. Robotics 56K Voice EXT PnP*/
+	ISAPNP_TBL_ENTRY('U', 'S', 'R', 0x9180),
+	/*  U.S. Robotics 56K Voice INT PnP*/
+	ISAPNP_TBL_ENTRY('U', 'S', 'R', 0x9190),
+	{ ISAPNP_CARD_END }
+};
+ISAPNP_CARD_TABLE(ixj_isa_ids);
+# endif /* MODULE */
+
 static struct pnp_board pnp_devices[] __initdata = {
 	/* Archtek America Corp. */
 	/* Archtek SmartLink Modem 3334BT Plug & Play */
--- linux-2.4.0-test11/drivers/char/joystick/ns558.c	Fri Nov 17 16:52:23 2000
+++ linux/drivers/char/joystick/ns558.c	Fri Nov 24 13:51:26 2000
@@ -250,6 +250,25 @@
 	{ 0, },
 };
 
+# ifdef MODULE
+static struct isapnp_card_id ns558_isa_ids[] __initdata = {
+	{
+		card_vendor: ISAPNP_ANY_ID, card_device: ISAPNP_ANY_ID,
+        	devs: {	ISAPNP_DEVICE_ID('C', 'T', 'L', 0x7002) },
+	},
+	{
+		card_vendor: ISAPNP_ANY_ID, card_device: ISAPNP_ANY_ID,
+        	devs: {	ISAPNP_DEVICE_ID('C', 'S', 'C', 0x0b35) },
+	},
+	{
+		card_vendor: ISAPNP_ANY_ID, card_device: ISAPNP_ANY_ID,
+        	devs: {	ISAPNP_DEVICE_ID('P', 'N', 'P', 0x80f8) },
+	},
+	{ ISAPNP_CARD_END }
+};
+ISAPNP_CARD_TABLE(ns558_isa_ids);
+#endif /* MODULE */
+
 static struct ns558* ns558_pnp_probe(struct pci_dev *dev, struct ns558 *next)
 {
 	int ioport, iolen;
--- linux-2.4.0-test11/drivers/ide/ide-pnp.c	Wed May 24 18:38:26 2000
+++ linux/drivers/ide/ide-pnp.c	Fri Nov 24 14:56:34 2000
@@ -19,6 +19,7 @@
 #include <linux/ide.h>
 #include <linux/init.h>
 
+#include <linux/module.h>
 #include <linux/isapnp.h>
 
 #ifndef PREPARE_FUNC
@@ -88,6 +89,16 @@
 };
 
 #ifdef MODULE
+static struct isapnp_card_id ide_isa_ids[] __initdata = {
+	{
+		card_vendor: ISAPNP_ANY_ID,
+		card_device: ISAPNP_ANY_ID,
+                devs: {	ISAPNP_DEVICE_ID('P', 'N', 'P', 0x0600) },
+	},
+	{ ISAPNP_CARD_END }
+};
+ISAPNP_CARD_TABLE(ide_isa_ids);
+
 #define NR_PNP_DEVICES 8
 struct pnp_dev_inst {
 	struct pci_dev *dev;
--- linux-2.4.0-test11/drivers/media/radio/radio-cadet.c	Fri Nov 17 17:56:51 2000
+++ linux/drivers/media/radio/radio-cadet.c	Fri Nov 24 13:49:15 2000
@@ -48,11 +48,22 @@
 static int cadet_probe(void);
 #endif
 
-#ifdef CONFIG_ISAPNP
+#if defined(CONFIG_ISAPNP) || defined(CONFIG_ISAPNP_MODULE)
 #include <linux/isapnp.h>
 
 struct pci_dev *dev;
 static int isapnp_cadet_probe(void);
+
+# ifdef MODULE
+static struct isapnp_card_id cadet_isa_ids[] __initdata = {
+	{
+		card_vendor: ISAPNP_ANY_ID, card_device: ISAPNP_ANY_ID,
+                devs: { ISAPNP_DEVICE_ID('M', 'S', 'M', 0x0c24) },
+	},
+	{ ISAPNP_CARD_END }
+};
+ISAPNP_CARD_TABLE(cadet_isa_ids);
+# endif /* MODULE */
 #endif
 
 /*
@@ -551,7 +562,7 @@
 	ioctl:		cadet_ioctl,
 };
 
-#ifdef CONFIG_ISAPNP
+#if defined(CONFIG_ISAPNP) || defined(CONFIG_ISAPNP_MODULE)
 static int isapnp_cadet_probe(void)
 {
 	dev = isapnp_find_dev (NULL, ISAPNP_VENDOR('M','S','M'),
--- linux-2.4.0-test11/drivers/net/3c509.c	Tue Nov 14 13:16:37 2000
+++ linux/drivers/net/3c509.c	Fri Nov 24 13:54:28 2000
@@ -66,6 +66,7 @@
 #include <linux/skbuff.h>
 #include <linux/delay.h>	/* for udelay() */
 #include <linux/spinlock.h>
+#include <linux/init.h>
 
 #include <asm/bitops.h>
 #include <asm/io.h>
@@ -183,6 +184,34 @@
 	{0, }
 };
 static u16 el3_isapnp_phys_addr[8][3];
+
+# ifdef MODULE
+static struct isapnp_card_id el3_isa_ids[] __initdata = {
+	{
+		card_vendor: ISAPNP_ANY_ID, card_device: ISAPNP_ANY_ID,
+        devs: {	ISAPNP_DEVICE_ID('T', 'C', 'M', 0x5090) },
+	},
+	{
+		card_vendor: ISAPNP_ANY_ID, card_device: ISAPNP_ANY_ID,
+        devs: {	ISAPNP_DEVICE_ID('T', 'C', 'M', 0x5091) },
+	},
+	{
+		card_vendor: ISAPNP_ANY_ID, card_device: ISAPNP_ANY_ID,
+        devs: {	ISAPNP_DEVICE_ID('T', 'C', 'M', 0x5094) },
+	},
+	{
+		card_vendor: ISAPNP_ANY_ID, card_device: ISAPNP_ANY_ID,
+        devs: {	ISAPNP_DEVICE_ID('T', 'C', 'M', 0x5098) },
+	},
+	{
+		card_vendor: ISAPNP_ANY_ID, card_device: ISAPNP_ANY_ID,
+        devs: {	ISAPNP_DEVICE_ID('P', 'N', 'P', 0x80f8) },
+	},
+	{ ISAPNP_CARD_END }
+};
+ISAPNP_CARD_TABLE(el3_isa_ids);
+# endif /* MODULE */
+
 #endif /* CONFIG_ISAPNP */
 #ifdef __ISAPNP__
 static int nopnp;
--- linux-2.4.0-test11/drivers/net/3c515.c	Tue Nov 14 13:16:37 2000
+++ linux/drivers/net/3c515.c	Fri Nov 24 13:40:27 2000
@@ -60,6 +60,7 @@
 #include <linux/malloc.h>
 #include <linux/interrupt.h>
 #include <linux/timer.h>
+#include <linux/init.h>
 #include <asm/bitops.h>
 #include <asm/io.h>
 #include <asm/dma.h>
@@ -360,6 +361,19 @@
 	{ISAPNP_VENDOR('T', 'C', 'M'), ISAPNP_FUNCTION(0x5051), "3Com Fast EtherLink ISA"},
 	{0, }
 };
+
+# ifdef MODULE
+static struct isapnp_card_id corkscrew_isa_ids[] __initdata = {
+	{
+		card_vendor: ISAPNP_ANY_ID,
+		card_device: ISAPNP_ANY_ID,
+                devs: {	ISAPNP_DEVICE_ID('T', 'C', 'M', 0x5051) },
+	},
+	{ ISAPNP_CARD_END }
+};
+ISAPNP_CARD_TABLE(corkscrew_isa_ids);
+# endif
+
 int corkscrew_isapnp_phys_addr[3] = {
 	0, 0, 0
 };
--- linux-2.4.0-test11/drivers/net/aironet4500_card.c	Tue Nov  7 11:02:24 2000
+++ linux/drivers/net/aironet4500_card.c	Fri Nov 24 13:39:44 2000
@@ -38,6 +38,8 @@
 #include <linux/if_arp.h>
 #include <linux/ioport.h>
 #include <linux/delay.h>
+#include <linux/init.h>
+#include <linux/isapnp.h>
 
 #include "aironet4500.h"
 
@@ -59,6 +61,40 @@
 
 #include <linux/pci.h>
 
+#ifdef MODULE
+static struct pci_device_id aironet4500_card_pci_tbl[] __initdata = {
+	{
+	  vendor: PCI_VENDOR_ID_AIRONET,
+	  device: PCI_DEVICE_AIRONET_4800_1,
+	  subvendor: PCI_ANY_ID,
+	  subdevice: PCI_ANY_ID,
+	},
+	{
+	  vendor: PCI_VENDOR_ID_AIRONET,
+	  device: PCI_DEVICE_AIRONET_4800,
+	  subvendor: PCI_ANY_ID,
+	  subdevice: PCI_ANY_ID,
+	},
+	{
+	  vendor: PCI_VENDOR_ID_AIRONET,
+	  device: PCI_DEVICE_AIRONET_4500,
+	  subvendor: PCI_ANY_ID,
+	  subdevice: PCI_ANY_ID,
+	},
+	{ }			/* Terminating entry */
+};
+MODULE_DEVICE_TABLE(pci, aironet4500_card_pci_tbl);
+
+static struct isapnp_card_id awc4500_isa_ids[] __initdata = {
+	{
+		card_vendor: ISAPNP_ANY_ID,
+		card_device: ISAPNP_ANY_ID,
+                devs: {	ISAPNP_DEVICE_ID('A', 'W', 'L', 0x0001) },
+	},
+	{ ISAPNP_CARD_END }
+};
+ISAPNP_CARD_TABLE(awc4500_isa_ids);
+#endif
 
 static int reverse_probe;
 
--- linux-2.4.0-test11/drivers/net/ne.c	Tue Nov  7 11:02:24 2000
+++ linux/drivers/net/ne.c	Fri Nov 24 13:32:54 2000
@@ -83,6 +83,24 @@
 	{0,}
 };
 
+#ifdef MODULE
+static struct isapnp_card_id ne_isa_ids[] __initdata = {
+	{
+		card_vendor: ISAPNP_ANY_ID,
+		card_device: ISAPNP_ANY_ID,
+                devs: {	ISAPNP_DEVICE_ID('E', 'D', 'I', 0x0216) },
+	},
+	{
+		card_vendor: ISAPNP_ANY_ID,
+		card_device: ISAPNP_ANY_ID,
+                devs: {	ISAPNP_DEVICE_ID('P', 'N', 'P', 0x80d6) },
+	},
+	{ ISAPNP_CARD_END }
+};
+ISAPNP_CARD_TABLE(ne_isa_ids);
+#endif
+
+
 #ifdef SUPPORT_NE_BAD_CLONES
 /* A list of bad clones that we none-the-less recognize. */
 static struct { const char *name8, *name16; unsigned char SAprefix[4];}
--- linux-2.4.0-test11/drivers/net/sb1000.c	Tue Jul 18 16:09:27 2000
+++ linux/drivers/net/sb1000.c	Fri Nov 24 13:41:02 2000
@@ -57,6 +57,7 @@
 #include <asm/uaccess.h>
 #include <linux/etherdevice.h>
 #include <linux/isapnp.h>
+#include <linux/init.h>
 
 /* for SIOGCM/SIOSCM stuff */
 
@@ -71,6 +72,18 @@
 static const int SB1000_IO_EXTENT = 8;
 /* SB1000 Maximum Receive Unit */
 static const int SB1000_MRU = 1500; /* octects */
+
+#ifdef MODULE
+static struct isapnp_card_id ncr5380_isa_ids[] __initdata = {
+	{
+		card_vendor: ISAPNP_ANY_ID,
+		card_device: ISAPNP_ANY_ID,
+                devs: {	ISAPNP_DEVICE_ID('G', 'I', 'C', 0x1000) },
+	},
+	{ ISAPNP_CARD_END }
+};
+ISAPNP_CARD_TABLE(ncr5380_isa_ids);
+#endif
 
 #define NPIDS 4
 struct sb1000_private {
--- linux-2.4.0-test11/drivers/scsi/aha1542.c	Sat Nov 11 19:01:11 2000
+++ linux/drivers/scsi/aha1542.c	Fri Nov 24 13:24:39 2000
@@ -51,6 +51,20 @@
 
 #include "aha1542.h"
 
+#ifdef MODULE
+static struct isapnp_card_id aha1542_isa_ids[] __initdata = {
+	{
+		card_vendor: ISAPNP_ANY_ID,
+		card_device: ISAPNP_ANY_ID,
+                devs: {	ISAPNP_DEVICE_ID('A', 'D', 'P', 0x1542) },
+	},
+	{
+		ISAPNP_CARD_END,
+	}
+};
+ISAPNP_CARD_TABLE(aha1542_isa_ids);
+#endif
+
 #define SCSI_PA(address) virt_to_bus(address)
 
 static void BAD_DMA(void *address, unsigned int length)
--- linux-2.4.0-test11/drivers/scsi/g_NCR5380.c	Sat Nov 11 19:01:11 2000
+++ linux/drivers/scsi/g_NCR5380.c	Fri Nov 24 13:45:38 2000
@@ -146,6 +146,18 @@
 
 #define NO_OVERRIDES (sizeof(overrides) / sizeof(struct override))
 
+#ifdef MODULE
+static struct isapnp_card_id ncr5380_isa_ids[] __initdata = {
+	{
+		card_vendor: ISAPNP_ANY_ID,
+		card_device: ISAPNP_ANY_ID,
+                devs: {	ISAPNP_DEVICE_ID('D', 'T', 'C', 0x436e) },
+	},
+	{ ISAPNP_CARD_END }
+};
+ISAPNP_CARD_TABLE(ncr5380_isa_ids);
+#endif
+
 /*
  * Function : static internal_setup(int board, char *str, int *ints)
  *
--- linux-2.4.0-test11/drivers/sound/ad1816.c	Thu Nov 16 12:51:28 2000
+++ linux/drivers/sound/ad1816.c	Fri Nov 24 13:26:31 2000
@@ -1325,6 +1325,25 @@
 	{0}
 };
 
+#ifdef MODULE
+static struct isapnp_card_id ad1816_isa_ids[] __initdata = {
+	{
+		card_vendor: ISAPNP_ANY_ID,
+		card_device: ISAPNP_ANY_ID,
+                devs: {	ISAPNP_DEVICE_ID('A', 'D', 'S', 0x7150) },
+	},
+	{
+		card_vendor: ISAPNP_ANY_ID,
+		card_device: ISAPNP_ANY_ID,
+                devs: {	ISAPNP_DEVICE_ID('A', 'D', 'S', 0x7180) },
+	},
+	{
+		ISAPNP_CARD_END,
+	}
+};
+ISAPNP_CARD_TABLE(ad1816_isa_ids);
+#endif
+
 static int __init ad1816_init_isapnp(struct address_info *hw_config,
 	struct pci_bus *bus, struct pci_dev *card, int slot)
 {
--- linux-2.4.0-test11/drivers/sound/awe_wave.c	Thu Nov 16 12:51:28 2000
+++ linux/drivers/sound/awe_wave.c	Fri Nov 24 13:11:47 2000
@@ -4782,6 +4782,29 @@
 	{0,}
 };
 
+static struct isapnp_card_id awe_isa_ids[] __initdata = {
+	{
+		card_vendor: ISAPNP_ANY_ID,
+		card_device: ISAPNP_ANY_ID,
+                devs: { ISAPNP_DEVICE_ID('A', 'W', 'E', 0x0021) }
+	},
+	{
+		card_vendor: ISAPNP_ANY_ID,
+		card_device: ISAPNP_ANY_ID,
+                devs: { ISAPNP_DEVICE_ID('A', 'W', 'E', 0x0022) }
+	},
+	{
+		card_vendor: ISAPNP_ANY_ID,
+		card_device: ISAPNP_ANY_ID,
+                devs: { ISAPNP_DEVICE_ID('A', 'W', 'E', 0x0023) }
+	},
+	{
+		ISAPNP_CARD_END,
+	}
+};
+ISAPNP_CARD_TABLE(awe_isa_ids);
+
+
 static struct pci_dev *idev = NULL;
 
 static int __init awe_probe_isapnp(int *port)
--- linux-2.4.0-test11/drivers/sound/sb_card.c	Wed Sep 27 13:53:56 2000
+++ linux/drivers/sound/sb_card.c	Fri Nov 24 13:38:21 2000
@@ -477,6 +477,298 @@
 	{0}
 };
 
+#if defined(CONFIG_ISAPNP) || defined(CONFIG_ISAPNP_MODULE)
+static struct isapnp_card_id sb_isa_ids[] __initdata = {
+	{
+		card_vendor: ISAPNP_ANY_ID,
+		card_device: ISAPNP_ANY_ID,
+                devs: {
+			ISAPNP_DEVICE_ID('Q', 'T', 'I', 0x0110),
+			ISAPNP_DEVICE_ID('Q', 'T', 'I', 0x0310),
+			ISAPNP_DEVICE_ID('Q', 'T', 'I', 0x0410),
+		},
+	},
+	{
+		ISAPNP_CARD_ID('C','T','L', 0x0024),
+		devs: {
+			ISAPNP_DEVICE_ID('C','T','L', 0x0031),
+		}
+	},
+	{
+		ISAPNP_CARD_ID('C','T','L', 0x0025),
+		devs: {
+			ISAPNP_DEVICE_ID('C','T','L', 0x0031),
+		}
+	},
+	{
+		ISAPNP_CARD_ID('C','T','L', 0x0026),
+		devs: {
+			ISAPNP_DEVICE_ID('C','T','L', 0x0031),
+		}
+	},
+	{
+		ISAPNP_CARD_ID('C','T','L', 0x0027),
+		devs: {
+			ISAPNP_DEVICE_ID('C','T','L', 0x0031),
+		}
+	},
+	{
+		ISAPNP_CARD_ID('C','T','L', 0x0028),
+		devs: {
+			ISAPNP_DEVICE_ID('C','T','L', 0x0031),
+		}
+	},
+	{
+		ISAPNP_CARD_ID('C','T','L', 0x0029),
+		devs: {
+			ISAPNP_DEVICE_ID('C','T','L', 0x0031),
+		}
+	},
+	{
+		ISAPNP_CARD_ID('C','T','L', 0x002a),
+		devs: {
+			ISAPNP_DEVICE_ID('C','T','L', 0x0031),
+		}
+	},
+	{
+		ISAPNP_CARD_ID('C','T','L', 0x002b),
+		devs: {
+			ISAPNP_DEVICE_ID('C','T','L', 0x0031),
+		}
+	},
+	{
+		ISAPNP_CARD_ID('C','T','L', 0x0051),
+		devs: {
+			ISAPNP_DEVICE_ID('C','T','L', 0x0001),
+		}
+	},
+	{
+		ISAPNP_CARD_ID('C','T','L', 0x0070),
+		devs: {
+			ISAPNP_DEVICE_ID('C','T','L', 0x0001),
+		}
+	},
+	{
+		ISAPNP_CARD_ID('C','T','L', 0x0080),
+		devs: {
+			ISAPNP_DEVICE_ID('C','T','L', 0x0041),
+		}
+	},
+	{
+		ISAPNP_CARD_ID('C','T','L', 0x00F0),
+		devs: {
+			ISAPNP_DEVICE_ID('C','T','L', 0x0043),
+		}
+	},
+	{
+		ISAPNP_CARD_ID('C','T','L', 0x0039),
+		devs: {
+			ISAPNP_DEVICE_ID('C','T','L', 0x0031),
+		}
+	},
+	{
+		ISAPNP_CARD_ID('C','T','L', 0x0042),
+		devs: {
+			ISAPNP_DEVICE_ID('C','T','L', 0x0031),
+		}
+	},
+	{
+		ISAPNP_CARD_ID('C','T','L', 0x0043),
+		devs: {
+			ISAPNP_DEVICE_ID('C','T','L', 0x0031),
+		}
+	},
+	{
+		ISAPNP_CARD_ID('C','T','L', 0x0044),
+		devs: {
+			ISAPNP_DEVICE_ID('C','T','L', 0x0031),
+		}
+	},
+	{
+		ISAPNP_CARD_ID('C','T','L', 0x0048),
+		devs: {
+			ISAPNP_DEVICE_ID('C','T','L', 0x0031),
+		}
+	},
+	{
+		ISAPNP_CARD_ID('C','T','L', 0x0054),
+		devs: {
+			ISAPNP_DEVICE_ID('C','T','L', 0x0031),
+		}
+	},
+	{
+		ISAPNP_CARD_ID('C','T','L', 0x009C),
+		devs: {
+			ISAPNP_DEVICE_ID('C','T','L', 0x0041),
+		}
+	},
+	{
+		ISAPNP_CARD_ID('C','T','L', 0x009F),
+		devs: {
+			ISAPNP_DEVICE_ID('C','T','L', 0x0041),
+		}
+	},
+	{
+		ISAPNP_CARD_ID('C','T','L', 0x009D),
+		devs: {
+			ISAPNP_DEVICE_ID('C','T','L', 0x0042),
+		}
+	},
+	{
+		ISAPNP_CARD_ID('C','T','L', 0x009E),
+		devs: {
+			ISAPNP_DEVICE_ID('C','T','L', 0x0044),
+		}
+	},
+	{
+		ISAPNP_CARD_ID('C','T','L', 0x00B2),
+		devs: {
+			ISAPNP_DEVICE_ID('C','T','L', 0x0044),
+		}
+	},
+	{
+		ISAPNP_CARD_ID('C','T','L', 0x00C1),
+		devs: {
+			ISAPNP_DEVICE_ID('C','T','L', 0x0042),
+		}
+	},
+	{
+		ISAPNP_CARD_ID('C','T','L', 0x00C3),
+		devs: {
+			ISAPNP_DEVICE_ID('C','T','L', 0x0045),
+		}
+	},
+	{
+		ISAPNP_CARD_ID('C','T','L', 0x00C5),
+		devs: {
+			ISAPNP_DEVICE_ID('C','T','L', 0x0045),
+		}
+	},
+	{
+		ISAPNP_CARD_ID('C','T','L', 0x00C7),
+		devs: {
+			ISAPNP_DEVICE_ID('C','T','L', 0x0045),
+		}
+	},
+	{
+		ISAPNP_CARD_ID('C','T','L', 0x00E4),
+		devs: {
+			ISAPNP_DEVICE_ID('C','T','L', 0x0045),
+		}
+	},
+	{
+		ISAPNP_CARD_ID('E','S','S', 0x0968),
+		devs: {
+			ISAPNP_DEVICE_ID('E','S','S', 0x0968),
+		}
+	},
+	{
+		ISAPNP_CARD_ID('E','S','S', 0x1868),
+		devs: {
+			ISAPNP_DEVICE_ID('E','S','S', 0x1868),
+		}
+	},
+	{
+		ISAPNP_CARD_ID('E','S','S', 0x1868),
+		devs: {
+			ISAPNP_DEVICE_ID('E','S','S', 0x8611),
+		}
+	},
+	{
+		ISAPNP_CARD_ID('E','S','S', 0x0003),
+		devs: {
+			ISAPNP_DEVICE_ID('E','S','S', 0x1869),
+		}
+	},
+	{
+		ISAPNP_CARD_ID('E','S','S', 0x1869),
+		devs: {
+			ISAPNP_DEVICE_ID('E','S','S', 0x1869),
+		}
+	},
+	{
+		ISAPNP_CARD_ID('E','S','S', 0x1878),
+		devs: {
+			ISAPNP_DEVICE_ID('E','S','S', 0x1878),
+		}
+	},
+	{
+		ISAPNP_CARD_ID('E','S','S', 0x1879),
+		devs: {
+			ISAPNP_DEVICE_ID('E','S','S', 0x1879),
+		}
+	},
+	{
+		ISAPNP_CARD_ID('C','M','I', 0x0001),
+		devs: {
+			ISAPNP_DEVICE_ID('@','X','@', 0x0001),
+			ISAPNP_DEVICE_ID('@','H','@', 0x0001),
+			ISAPNP_DEVICE_ID('@','@','@', 0x0001),
+		}
+	},
+	{
+		ISAPNP_CARD_ID('R','W','B', 0x1688),
+		devs: {
+			ISAPNP_DEVICE_ID('@','@','@', 0x0001),
+			ISAPNP_DEVICE_ID('@','X','@', 0x0001),
+			ISAPNP_DEVICE_ID('@','H','@', 0x0001),
+		}
+	},
+	{
+		ISAPNP_CARD_ID('A','L','S', 0x0007),
+		devs: {
+			ISAPNP_DEVICE_ID('@','@','@', 0x0001),
+			ISAPNP_DEVICE_ID('@','X','@', 0x0001),
+			ISAPNP_DEVICE_ID('@','H','@', 0x0001),
+		}
+	},
+	{
+		ISAPNP_CARD_ID('A','L','S', 0x0001),
+		devs: {
+			ISAPNP_DEVICE_ID('@','@','@', 0x0001),
+			ISAPNP_DEVICE_ID('@','X','@', 0x0001),
+			ISAPNP_DEVICE_ID('@','H','@', 0x0001),
+		}
+	},
+	{
+		ISAPNP_CARD_ID('A','L','S', 0x0110),
+		devs: {
+			ISAPNP_DEVICE_ID('@','@','@', 0x1001),
+			ISAPNP_DEVICE_ID('@','X','@', 0x1001),
+			ISAPNP_DEVICE_ID('@','H','@', 0x0001),
+		}
+	},
+	{
+		ISAPNP_CARD_ID('A','L','S', 0x0120),
+		devs: {
+			ISAPNP_DEVICE_ID('@','@','@', 0x2001),
+			ISAPNP_DEVICE_ID('@','X','@', 0x2001),
+			ISAPNP_DEVICE_ID('@','H','@', 0x0001),
+		}
+	},
+	{
+		ISAPNP_CARD_ID('A','L','S', 0x0200),
+		devs: {
+			ISAPNP_DEVICE_ID('@','@','@', 0x0020),
+			ISAPNP_DEVICE_ID('@','X','@', 0x0020),
+			ISAPNP_DEVICE_ID('@','H','@', 0x0001),
+		}
+	},
+	{
+		ISAPNP_CARD_ID('R','T','L', 0x3000),
+		devs: {
+			ISAPNP_DEVICE_ID('@','@','@', 0x2001),
+			ISAPNP_DEVICE_ID('@','X','@', 0x2001),
+			ISAPNP_DEVICE_ID('@','H','@', 0x0001),
+		}
+	},
+	{
+		ISAPNP_CARD_END,
+	}
+};
+ISAPNP_CARD_TABLE(sb_isa_ids);
+#endif
+
 static struct pci_dev *activate_dev(char *devname, char *resname, struct pci_dev *dev)
 {
 	int err;
--- linux-2.4.0-test11/drivers/telephony/ixj.c	Wed Nov 15 00:41:03 2000
+++ linux/drivers/telephony/ixj.c	Fri Nov 24 13:49:38 2000
@@ -37,8 +37,8 @@
  *
  ***************************************************************************/
 
-static char ixj_c_rcsid[] = "$Id: ixj.c,v 3.31 2000/04/14 19:24:47 jaugenst Exp $";
-static char ixj_c_revision[] = "$Revision: 3.31 $";
+static char ixj_c_rcsid[] = "$Id$";
+static char ixj_c_revision[] = "$Revision$";
 
 //#define PERFMON_STATS
 #define IXJDEBUG 0
@@ -75,7 +75,7 @@
 #include <pcmcia/ds.h>
 #endif
 
-#ifdef CONFIG_ISAPNP
+#if defined(CONFIG_ISAPNP) || defined(CONFIG_ISAPNP_MODULE)
 #include <linux/isapnp.h>
 #endif
 
@@ -90,6 +90,35 @@
 
 MODULE_PARM(ixjdebug, "i");
 
+#ifdef MODULE
+static struct pci_device_id ixj_pci_tbl[] __initdata = {
+  {
+    vendor: 0x15E2,
+    device: 0x0500,
+    subvendor: PCI_ANY_ID,
+    subdevice: PCI_ANY_ID,
+  },
+  { }				/* Terminating entry */
+};
+MODULE_DEVICE_TABLE(pci, ixj_pci_tbl);
+
+# if defined(CONFIG_ISAPNP) || defined(CONFIG_ISAPNP_MODULE)
+static struct isapnp_card_id ixj_isa_ids[] __initdata = {
+	{
+		card_vendor: ISAPNP_ANY_ID,
+		card_device: ISAPNP_ANY_ID,
+                devs: {
+			ISAPNP_DEVICE_ID('Q', 'T', 'I', 0x0110),
+			ISAPNP_DEVICE_ID('Q', 'T', 'I', 0x0310),
+			ISAPNP_DEVICE_ID('Q', 'T', 'I', 0x0410),
+		},
+	},
+	{ ISAPNP_CARD_END }
+};
+ISAPNP_CARD_TABLE(ixj_isa_ids);
+# endif
+#endif /* MODULE */
+
 static IXJ ixj[IXJMAX];
 
 static struct timer_list ixj_timer;
@@ -6107,7 +6136,7 @@
 			kfree(ixj[cnt].read_buffer);
 		if (ixj[cnt].write_buffer)
 			kfree(ixj[cnt].write_buffer);
-#ifdef CONFIG_ISAPNP
+#if defined(CONFIG_ISAPNP) || defined(CONFIG_ISAPNP_MODULE)
 		if (ixj[cnt].dev)
 			ixj[cnt].dev->deactivate(ixj[cnt].dev);
 #endif
@@ -6229,7 +6258,7 @@
 	int i = 0;
 	int cnt = 0;
 	int probe = 0;
-#ifdef CONFIG_ISAPNP
+#if defined(CONFIG_ISAPNP) || defined(CONFIG_ISAPNP_MODULE)
 	int func = 0x110;
 	struct pci_dev *dev = NULL, *old_dev = NULL;
 #endif
@@ -6247,7 +6276,7 @@
 	register_pcmcia_driver(&dev_info, &ixj_attach, &ixj_detach);
 	probe = 0;
 #else
-#ifdef CONFIG_ISAPNP
+#if defined(CONFIG_ISAPNP) || defined(CONFIG_ISAPNP_MODULE)
 	while (1) {
 		do {
 			old_dev = dev;

^ permalink raw reply	[flat|nested] 5+ messages in thread
* Re: Patch(?): isapnp_card_id tables for all isapnp drivers in 2.4.0-test11
@ 2000-11-25  4:45 Adam J. Richter
  0 siblings, 0 replies; 5+ messages in thread
From: Adam J. Richter @ 2000-11-25  4:45 UTC (permalink / raw)
  To: kaos; +Cc: linux-kernel

Keith Owens <kaos@ocs.com.au> wrote:
>"Adam J. Richter" <adam@yggdrasil.com> wrote:
>>	Note that this is not a "final" version.  I plan to go
>>through all of the changes and bracket all of these new tables
>>with #ifdef MODULE...#endif so they do not result in complaints
>>about the table being defined static and never used in cases where
>>the driver is compiled directly into the kernel.

>This is cleaner.  Append MODULE_ONLY after __initdata and remove the
>ifdef.  It increases the size of initdata in the kernel, compared to
>ifdef, but since initdata is promptly reused as scratch space it should
>not be a problem.
[patch elided]

	Thanks for the patch, but I think I'll stick with the ifdefs
for now, for the following reasons.

	1. I think ifdef MODULE is more understandable to the casual observer.
	2. There is often some other condition that I need to combine
	   with (CONFIG_PCI, CONFIG_ISAPNP, CONFIG_ISAPNP_MODULE).
	3. There is often an existing ifdef in the right place that I
	   can just tuck the code into.
	4. I would prefer that this change not have even a file size cost
	   to people who want to build minimal monolithic kernels
	   for applicance applications.
	5. My feeling is that just the few kilobytes of file size cost
	   associated with #4 and knowing that absolutely nothing is
	   added for non-module usage will psychologically make
	   maintainers feel better about it and have even fewer misgivings
	   about integrating it.
	6. We can expect the lines bracketing these table declarations
	   to be changed in the near future as the drivers are changed
	   to use the new PCI and isapnp interfaces or to use the ID
	   tables just to eliminate the old custom data structures that
	   hold the same information.

	Thanks for the patch anyhow, though.  It's a clever idea that
may be useful in other situations.

Adam J. Richter     __     ______________   4880 Stevens Creek Blvd, Suite 104
adam@yggdrasil.com     \ /                  San Jose, California 95129-1034
+1 408 261-6630         | g g d r a s i l   United States of America
fax +1 408 261-6631      "Free Software For The Rest Of Us."
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
Please read the FAQ at http://www.tux.org/lkml/

^ permalink raw reply	[flat|nested] 5+ messages in thread
* Re: Patch(?): isapnp_card_id tables for all isapnp drivers in 2.4.0-test11
@ 2000-11-26  2:58 Adam J. Richter
  0 siblings, 0 replies; 5+ messages in thread
From: Adam J. Richter @ 2000-11-26  2:58 UTC (permalink / raw)
  To: linux-kernel

>   == Kai Germaschewski
>>  == Keith Owens  
>>> == Adam Richter

>>>	[...] I plan to go
>>>through all of the changes and bracket all of these new tables
>>>with #ifdef MODULE...#endif so they do not result in complaints
>>>about the table being defined static and never used in cases where
>>>the driver is compiled directly into the kernel.

(I have now done this and release the patch at
ftp://ftp.yggdrasil.com/pub/dist/device_control/kernel/.)


>> This is cleaner.  Append MODULE_ONLY after __initdata and remove the
>> ifdef.  It increases the size of initdata in the kernel, compared to
>> ifdef, but since initdata is promptly reused as scratch space it should
>> not be a problem.
[...]
>> +#define MODULE_ONLY		__attribute__ ((unused))

>What about the making MODULE_DEVICE_TABLE reference this table? This has
>the same disadvantage (i.e. having a little unneeded __initdata in the
>kernel image), but it wouldn't need the rather ugly MODULE_ONLY macro.

>I'ld suggest something like this in module.h, #ifndef MODULE part:

>#define MODULE_DEVICE_TABLE(type,name) \
>static struct type##_device_id *__dummy_##name \
>       __attribute__ ((unused, __section__(".text.exit"))) \
>       = name;

	I did not realize that this thread had been posted to
linux-kernel.  Here is a response that I emailed to Keith Owens
and Kai Germaschewski that explains my reasons for sticking with
#ifndef MODULE...#endif rather than creating a new kernel facility
for something that, by the way, should become completely unused in
the next couple of months after 2.4.0 is released and the device
drivers are converted to the new PCI and isapnp interfaces:

|From: "Adam J. Richter" <adam@yggdrasil.com>
|To: kaos@ocs.com.au
|
|        Thanks for the patch, but I think I'll stick with the ifdefs
|for now, for the following reasons.
|
|        1. I think ifdef MODULE is more understandable to the casual observer.
|        2. There is often some other condition that I need to combine
|           with (CONFIG_PCI, CONFIG_ISAPNP, CONFIG_ISAPNP_MODULE).
|        3. There is often an existing ifdef in the right place that I
|           can just tuck the code into.
|        4. I would prefer that this change not have even a file size cost
|           to people who want to build minimal monolithic kernels
|           for applicance applications.
|        5. My feeling is that just the few kilobytes of file size cost
|           associated with #4 and knowing that absolutely nothing is
|           added for non-module usage will psychologically make
|           maintainers feel better about it and have even fewer misgivings
|           about integrating it.
|        6. We can expect the lines bracketing these table declarations
|           to be changed in the near future as the drivers are changed
|           to use the new PCI and isapnp interfaces or to use the ID
|           tables just to eliminate the old custom data structures that
|           hold the same information.
|
|        Thanks for the patch anyhow, though.  It's a clever idea that
|may be useful in other situations.

Adam J. Richter     __     ______________   4880 Stevens Creek Blvd, Suite 104
adam@yggdrasil.com     \ /                  San Jose, California 95129-1034
+1 408 261-6630         | g g d r a s i l   United States of America
fax +1 408 261-6631      "Free Software For The Rest Of Us."
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
Please read the FAQ at http://www.tux.org/lkml/

^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2000-11-26  3:29 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2000-11-24 23:37 Patch(?): isapnp_card_id tables for all isapnp drivers in 2.4.0-test11 Adam J. Richter
2000-11-25  1:41 ` Keith Owens
2000-11-25 15:17   ` Kai Germaschewski
  -- strict thread matches above, loose matches on Subject: below --
2000-11-25  4:45 Adam J. Richter
2000-11-26  2:58 Adam J. Richter

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox