All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 0/3] staging: comedi: adl_pci6208: combine board types
@ 2015-02-27 15:07 ` Ian Abbott
  0 siblings, 0 replies; 8+ messages in thread
From: Ian Abbott @ 2015-02-27 15:07 UTC (permalink / raw)
  To: driverdev-devel
  Cc: Greg Kroah-Hartman, Ian Abbott, H Hartley Sweeten, linux-kernel

The driver uses the wrong PCI device ID for the PCI-6216.  In reality,
it has the same device ID as the PCI-6208 (and the subdevice ID's don't
help either).  This results in only the first 8 digital output channels
of the PCI-6216 being useable.

This series of patches treats the PCI-6208 and PCI-6216 as the same
device, and gives it 16 digital output channels instead of 8.  For the
PCI-6208, the extra outputs just won't go anywhere!

Patch 3 supports an older PCI vendor and device ID for the boards.

1) staging: comedi: adl_pci6208: combine PCI-6208 and PCI-6216 support
2) staging: comedi: adl_pci6208: remove multiple board type support
3) staging: comedi: adl_pci6208: support old PLX device ID

 drivers/staging/comedi/drivers/adl_pci6208.c | 46 +++++++---------------------
 1 file changed, 11 insertions(+), 35 deletions(-)

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

* [PATCH 0/3] staging: comedi: adl_pci6208: combine board types
@ 2015-02-27 15:07 ` Ian Abbott
  0 siblings, 0 replies; 8+ messages in thread
From: Ian Abbott @ 2015-02-27 15:07 UTC (permalink / raw)
  To: driverdev-devel; +Cc: Greg Kroah-Hartman, Ian Abbott, linux-kernel

The driver uses the wrong PCI device ID for the PCI-6216.  In reality,
it has the same device ID as the PCI-6208 (and the subdevice ID's don't
help either).  This results in only the first 8 digital output channels
of the PCI-6216 being useable.

This series of patches treats the PCI-6208 and PCI-6216 as the same
device, and gives it 16 digital output channels instead of 8.  For the
PCI-6208, the extra outputs just won't go anywhere!

Patch 3 supports an older PCI vendor and device ID for the boards.

1) staging: comedi: adl_pci6208: combine PCI-6208 and PCI-6216 support
2) staging: comedi: adl_pci6208: remove multiple board type support
3) staging: comedi: adl_pci6208: support old PLX device ID

 drivers/staging/comedi/drivers/adl_pci6208.c | 46 +++++++---------------------
 1 file changed, 11 insertions(+), 35 deletions(-)
_______________________________________________
devel mailing list
devel@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel

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

* [PATCH 1/3] staging: comedi: adl_pci6208: combine PCI-6208 and PCI-6216 support
  2015-02-27 15:07 ` Ian Abbott
@ 2015-02-27 15:07   ` Ian Abbott
  -1 siblings, 0 replies; 8+ messages in thread
From: Ian Abbott @ 2015-02-27 15:07 UTC (permalink / raw)
  To: driverdev-devel
  Cc: Greg Kroah-Hartman, Ian Abbott, H Hartley Sweeten, linux-kernel

This module's PCI device table has separate PCI device IDs for PCI-6208
and PCI-6216, but in reality, both boards and their cPCI and PCIe
variants seem to have the same PCI device ID: 0x6208.  The PCI subdevice
ID doesn't seem to help either.

It shouldn't do any harm to claim 16 AO channels for all devices
supported by this driver.  The original PCI-6216 is just a PCI-6208 with
a daughter board providing the extra DACs.  The data is clocked out to
the DACs serially with no acknowledgment.  I assume this would still
happen when the DACs for the upper 8 channels are missing.  Therefore,
change the driver to support a single board type with 16 AO channels,
and remove the suspicious PCI device ID for the PCI-6216.

Evidence about lack of a separate PCI device ID for PCI-6216 follows....

1. Jesus Vasquez reports the following lspci output for a PCIe-6216 on
his Ubuntu 12.04 system:

lspci -n -vvv
07:00.0 1180: 144a:6208 (rev 02)
        Subsystem: 144a:6208
        Control: I/O+ Mem+ BusMaster- SpecCycle- MemWINV- VGASnoop-
ParErr- Stepping- SERR- FastB2B- DisINTx-
        Status: Cap- 66MHz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort-
<TAbort- <MAbort- >SERR- <PERR- INTx-
        Region 0: Memory at f6000000 (32-bit, non-prefetchable)
[size=128]
        Region 1: I/O ports at c100 [size=128]
        Region 2: I/O ports at c000 [size=256]
        Kernel driver in use: adl_pci6208
        Kernel modules: adl_pci6208

That system's "adl_pci6208" module only has the single PCI device ID for
the PCI-6208, but works for his PCIe-6216 except that it only supports 8
analog output channels instead of 16.

2. ADLINK's binary Linux module "pci6208.ko" (there is no separate
module for the PCI-6216) has a single alias:

  alias: pci:v0000144Ad00006208sv*sd*bc*sc*i*

3. The MS Windows drivers include this set of hardware IDs for the
PCI-6208 series, with nothing more specific for the PCI-6216 (they are
all tied to the same name "ADLINK PCI-6208" and there is no mention of
PCI-6216):

  PCI\VEN_10B5&DEV_9050&SUBSYS_62089999
  PCI\VEN_144A&DEV_6208&SUBSYS_6208144A
  PCI\VEN_144A&DEV_6208&SUBSYS_62089999
  PCI\VEN_144A&DEV_6208&SUBSYS_C208144A
  PCI\VEN_144A&DEV_6208&SUBSYS_C20855AA
  PCI\VEN_144A&DEV_6208

Signed-off-by: Ian Abbott <abbotti@mev.co.uk>
---
 drivers/staging/comedi/drivers/adl_pci6208.c | 16 +++++++---------
 1 file changed, 7 insertions(+), 9 deletions(-)

diff --git a/drivers/staging/comedi/drivers/adl_pci6208.c b/drivers/staging/comedi/drivers/adl_pci6208.c
index a3ea4b7..6fb41d4 100644
--- a/drivers/staging/comedi/drivers/adl_pci6208.c
+++ b/drivers/staging/comedi/drivers/adl_pci6208.c
@@ -19,12 +19,16 @@
 /*
  * Driver: adl_pci6208
  * Description: ADLink PCI-6208/6216 Series Multi-channel Analog Output Cards
- * Devices: [ADLink] PCI-6208 (adl_pci6208), PCI-6216 (adl_pci6216)
+ * Devices: [ADLink] PCI-6208 (adl_pci6208), PCI-6216
  * Author: nsyeow <nsyeow@pd.jaring.my>
- * Updated: Fri, 30 Jan 2004 14:44:27 +0800
+ * Updated: Wed, 11 Feb 2015 11:37:18 +0000
  * Status: untested
  *
  * Configuration Options: not applicable, uses PCI auto config
+ *
+ * All supported devices share the same PCI device ID and are treated as a
+ * PCI-6216 with 16 analog output channels.  On a PCI-6208, the upper 8
+ * channels exist in registers, but don't go to DAC chips.
  */
 
 #include <linux/module.h>
@@ -47,7 +51,6 @@
 
 enum pci6208_boardid {
 	BOARD_PCI6208,
-	BOARD_PCI6216,
 };
 
 struct pci6208_board {
@@ -58,11 +61,7 @@ struct pci6208_board {
 static const struct pci6208_board pci6208_boards[] = {
 	[BOARD_PCI6208] = {
 		.name		= "adl_pci6208",
-		.ao_chans	= 8,
-	},
-	[BOARD_PCI6216] = {
-		.name		= "adl_pci6216",
-		.ao_chans	= 16,
+		.ao_chans	= 16,	/* Only 8 usable on PCI-6208 */
 	},
 };
 
@@ -218,7 +217,6 @@ static int adl_pci6208_pci_probe(struct pci_dev *dev,
 
 static const struct pci_device_id adl_pci6208_pci_table[] = {
 	{ PCI_VDEVICE(ADLINK, 0x6208), BOARD_PCI6208 },
-	{ PCI_VDEVICE(ADLINK, 0x6216), BOARD_PCI6216 },
 	{ 0 }
 };
 MODULE_DEVICE_TABLE(pci, adl_pci6208_pci_table);
-- 
2.1.4


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

* [PATCH 1/3] staging: comedi: adl_pci6208: combine PCI-6208 and PCI-6216 support
@ 2015-02-27 15:07   ` Ian Abbott
  0 siblings, 0 replies; 8+ messages in thread
From: Ian Abbott @ 2015-02-27 15:07 UTC (permalink / raw)
  To: driverdev-devel; +Cc: Greg Kroah-Hartman, Ian Abbott, linux-kernel

This module's PCI device table has separate PCI device IDs for PCI-6208
and PCI-6216, but in reality, both boards and their cPCI and PCIe
variants seem to have the same PCI device ID: 0x6208.  The PCI subdevice
ID doesn't seem to help either.

It shouldn't do any harm to claim 16 AO channels for all devices
supported by this driver.  The original PCI-6216 is just a PCI-6208 with
a daughter board providing the extra DACs.  The data is clocked out to
the DACs serially with no acknowledgment.  I assume this would still
happen when the DACs for the upper 8 channels are missing.  Therefore,
change the driver to support a single board type with 16 AO channels,
and remove the suspicious PCI device ID for the PCI-6216.

Evidence about lack of a separate PCI device ID for PCI-6216 follows....

1. Jesus Vasquez reports the following lspci output for a PCIe-6216 on
his Ubuntu 12.04 system:

lspci -n -vvv
07:00.0 1180: 144a:6208 (rev 02)
        Subsystem: 144a:6208
        Control: I/O+ Mem+ BusMaster- SpecCycle- MemWINV- VGASnoop-
ParErr- Stepping- SERR- FastB2B- DisINTx-
        Status: Cap- 66MHz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort-
<TAbort- <MAbort- >SERR- <PERR- INTx-
        Region 0: Memory at f6000000 (32-bit, non-prefetchable)
[size=128]
        Region 1: I/O ports at c100 [size=128]
        Region 2: I/O ports at c000 [size=256]
        Kernel driver in use: adl_pci6208
        Kernel modules: adl_pci6208

That system's "adl_pci6208" module only has the single PCI device ID for
the PCI-6208, but works for his PCIe-6216 except that it only supports 8
analog output channels instead of 16.

2. ADLINK's binary Linux module "pci6208.ko" (there is no separate
module for the PCI-6216) has a single alias:

  alias: pci:v0000144Ad00006208sv*sd*bc*sc*i*

3. The MS Windows drivers include this set of hardware IDs for the
PCI-6208 series, with nothing more specific for the PCI-6216 (they are
all tied to the same name "ADLINK PCI-6208" and there is no mention of
PCI-6216):

  PCI\VEN_10B5&DEV_9050&SUBSYS_62089999
  PCI\VEN_144A&DEV_6208&SUBSYS_6208144A
  PCI\VEN_144A&DEV_6208&SUBSYS_62089999
  PCI\VEN_144A&DEV_6208&SUBSYS_C208144A
  PCI\VEN_144A&DEV_6208&SUBSYS_C20855AA
  PCI\VEN_144A&DEV_6208

Signed-off-by: Ian Abbott <abbotti@mev.co.uk>
---
 drivers/staging/comedi/drivers/adl_pci6208.c | 16 +++++++---------
 1 file changed, 7 insertions(+), 9 deletions(-)

diff --git a/drivers/staging/comedi/drivers/adl_pci6208.c b/drivers/staging/comedi/drivers/adl_pci6208.c
index a3ea4b7..6fb41d4 100644
--- a/drivers/staging/comedi/drivers/adl_pci6208.c
+++ b/drivers/staging/comedi/drivers/adl_pci6208.c
@@ -19,12 +19,16 @@
 /*
  * Driver: adl_pci6208
  * Description: ADLink PCI-6208/6216 Series Multi-channel Analog Output Cards
- * Devices: [ADLink] PCI-6208 (adl_pci6208), PCI-6216 (adl_pci6216)
+ * Devices: [ADLink] PCI-6208 (adl_pci6208), PCI-6216
  * Author: nsyeow <nsyeow@pd.jaring.my>
- * Updated: Fri, 30 Jan 2004 14:44:27 +0800
+ * Updated: Wed, 11 Feb 2015 11:37:18 +0000
  * Status: untested
  *
  * Configuration Options: not applicable, uses PCI auto config
+ *
+ * All supported devices share the same PCI device ID and are treated as a
+ * PCI-6216 with 16 analog output channels.  On a PCI-6208, the upper 8
+ * channels exist in registers, but don't go to DAC chips.
  */
 
 #include <linux/module.h>
@@ -47,7 +51,6 @@
 
 enum pci6208_boardid {
 	BOARD_PCI6208,
-	BOARD_PCI6216,
 };
 
 struct pci6208_board {
@@ -58,11 +61,7 @@ struct pci6208_board {
 static const struct pci6208_board pci6208_boards[] = {
 	[BOARD_PCI6208] = {
 		.name		= "adl_pci6208",
-		.ao_chans	= 8,
-	},
-	[BOARD_PCI6216] = {
-		.name		= "adl_pci6216",
-		.ao_chans	= 16,
+		.ao_chans	= 16,	/* Only 8 usable on PCI-6208 */
 	},
 };
 
@@ -218,7 +217,6 @@ static int adl_pci6208_pci_probe(struct pci_dev *dev,
 
 static const struct pci_device_id adl_pci6208_pci_table[] = {
 	{ PCI_VDEVICE(ADLINK, 0x6208), BOARD_PCI6208 },
-	{ PCI_VDEVICE(ADLINK, 0x6216), BOARD_PCI6216 },
 	{ 0 }
 };
 MODULE_DEVICE_TABLE(pci, adl_pci6208_pci_table);
-- 
2.1.4

_______________________________________________
devel mailing list
devel@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel

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

* [PATCH 2/3] staging: comedi: adl_pci6208: remove multiple board type support
  2015-02-27 15:07 ` Ian Abbott
@ 2015-02-27 15:07   ` Ian Abbott
  -1 siblings, 0 replies; 8+ messages in thread
From: Ian Abbott @ 2015-02-27 15:07 UTC (permalink / raw)
  To: driverdev-devel
  Cc: Greg Kroah-Hartman, Ian Abbott, H Hartley Sweeten, linux-kernel

This driver module now only supports a single board type, so remove the
infrastructure for describing multiple board types.  The comedi
"auto_attach" handler, `pci6208_auto_attach()` doesn't need to set the
comedi device's `board_name` or `board_ptr` members.  The former is
automatically pointed to the comedi driver's `driver_name` by the core
comedi module, and the latter is not used anywhere else.  The AO
subdevice's `n_chans` member can be set to 16 without looking it up in
the single element of `pci6208_boards[]`.  There is no need to pass a
board index from the PCI device table to the "auto_attach" handler.

Signed-off-by: Ian Abbott <abbotti@mev.co.uk>
---
 drivers/staging/comedi/drivers/adl_pci6208.c | 30 +++-------------------------
 1 file changed, 3 insertions(+), 27 deletions(-)

diff --git a/drivers/staging/comedi/drivers/adl_pci6208.c b/drivers/staging/comedi/drivers/adl_pci6208.c
index 6fb41d4..11c663a 100644
--- a/drivers/staging/comedi/drivers/adl_pci6208.c
+++ b/drivers/staging/comedi/drivers/adl_pci6208.c
@@ -49,22 +49,6 @@
 #define PCI6208_DIO_DI_MASK		(0xf0)
 #define PCI6208_DIO_DI_SHIFT		(4)
 
-enum pci6208_boardid {
-	BOARD_PCI6208,
-};
-
-struct pci6208_board {
-	const char *name;
-	int ao_chans;
-};
-
-static const struct pci6208_board pci6208_boards[] = {
-	[BOARD_PCI6208] = {
-		.name		= "adl_pci6208",
-		.ao_chans	= 16,	/* Only 8 usable on PCI-6208 */
-	},
-};
-
 static int pci6208_ao_eoc(struct comedi_device *dev,
 			  struct comedi_subdevice *s,
 			  struct comedi_insn *insn,
@@ -135,21 +119,13 @@ static int pci6208_do_insn_bits(struct comedi_device *dev,
 }
 
 static int pci6208_auto_attach(struct comedi_device *dev,
-			       unsigned long context)
+			       unsigned long context_unused)
 {
 	struct pci_dev *pcidev = comedi_to_pci_dev(dev);
-	const struct pci6208_board *boardinfo = NULL;
 	struct comedi_subdevice *s;
 	unsigned int val;
 	int ret;
 
-	if (context < ARRAY_SIZE(pci6208_boards))
-		boardinfo = &pci6208_boards[context];
-	if (!boardinfo)
-		return -ENODEV;
-	dev->board_ptr = boardinfo;
-	dev->board_name = boardinfo->name;
-
 	ret = comedi_pci_enable(dev);
 	if (ret)
 		return ret;
@@ -163,7 +139,7 @@ static int pci6208_auto_attach(struct comedi_device *dev,
 	/* analog output subdevice */
 	s->type		= COMEDI_SUBD_AO;
 	s->subdev_flags	= SDF_WRITABLE;
-	s->n_chan	= boardinfo->ao_chans;
+	s->n_chan	= 16;	/* Only 8 usable on PCI-6208 */
 	s->maxdata	= 0xffff;
 	s->range_table	= &range_bipolar10;
 	s->insn_write	= pci6208_ao_insn_write;
@@ -216,7 +192,7 @@ static int adl_pci6208_pci_probe(struct pci_dev *dev,
 }
 
 static const struct pci_device_id adl_pci6208_pci_table[] = {
-	{ PCI_VDEVICE(ADLINK, 0x6208), BOARD_PCI6208 },
+	{ PCI_DEVICE(PCI_VENDOR_ID_ADLINK, 0x6208) },
 	{ 0 }
 };
 MODULE_DEVICE_TABLE(pci, adl_pci6208_pci_table);
-- 
2.1.4


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

* [PATCH 2/3] staging: comedi: adl_pci6208: remove multiple board type support
@ 2015-02-27 15:07   ` Ian Abbott
  0 siblings, 0 replies; 8+ messages in thread
From: Ian Abbott @ 2015-02-27 15:07 UTC (permalink / raw)
  To: driverdev-devel; +Cc: Greg Kroah-Hartman, Ian Abbott, linux-kernel

This driver module now only supports a single board type, so remove the
infrastructure for describing multiple board types.  The comedi
"auto_attach" handler, `pci6208_auto_attach()` doesn't need to set the
comedi device's `board_name` or `board_ptr` members.  The former is
automatically pointed to the comedi driver's `driver_name` by the core
comedi module, and the latter is not used anywhere else.  The AO
subdevice's `n_chans` member can be set to 16 without looking it up in
the single element of `pci6208_boards[]`.  There is no need to pass a
board index from the PCI device table to the "auto_attach" handler.

Signed-off-by: Ian Abbott <abbotti@mev.co.uk>
---
 drivers/staging/comedi/drivers/adl_pci6208.c | 30 +++-------------------------
 1 file changed, 3 insertions(+), 27 deletions(-)

diff --git a/drivers/staging/comedi/drivers/adl_pci6208.c b/drivers/staging/comedi/drivers/adl_pci6208.c
index 6fb41d4..11c663a 100644
--- a/drivers/staging/comedi/drivers/adl_pci6208.c
+++ b/drivers/staging/comedi/drivers/adl_pci6208.c
@@ -49,22 +49,6 @@
 #define PCI6208_DIO_DI_MASK		(0xf0)
 #define PCI6208_DIO_DI_SHIFT		(4)
 
-enum pci6208_boardid {
-	BOARD_PCI6208,
-};
-
-struct pci6208_board {
-	const char *name;
-	int ao_chans;
-};
-
-static const struct pci6208_board pci6208_boards[] = {
-	[BOARD_PCI6208] = {
-		.name		= "adl_pci6208",
-		.ao_chans	= 16,	/* Only 8 usable on PCI-6208 */
-	},
-};
-
 static int pci6208_ao_eoc(struct comedi_device *dev,
 			  struct comedi_subdevice *s,
 			  struct comedi_insn *insn,
@@ -135,21 +119,13 @@ static int pci6208_do_insn_bits(struct comedi_device *dev,
 }
 
 static int pci6208_auto_attach(struct comedi_device *dev,
-			       unsigned long context)
+			       unsigned long context_unused)
 {
 	struct pci_dev *pcidev = comedi_to_pci_dev(dev);
-	const struct pci6208_board *boardinfo = NULL;
 	struct comedi_subdevice *s;
 	unsigned int val;
 	int ret;
 
-	if (context < ARRAY_SIZE(pci6208_boards))
-		boardinfo = &pci6208_boards[context];
-	if (!boardinfo)
-		return -ENODEV;
-	dev->board_ptr = boardinfo;
-	dev->board_name = boardinfo->name;
-
 	ret = comedi_pci_enable(dev);
 	if (ret)
 		return ret;
@@ -163,7 +139,7 @@ static int pci6208_auto_attach(struct comedi_device *dev,
 	/* analog output subdevice */
 	s->type		= COMEDI_SUBD_AO;
 	s->subdev_flags	= SDF_WRITABLE;
-	s->n_chan	= boardinfo->ao_chans;
+	s->n_chan	= 16;	/* Only 8 usable on PCI-6208 */
 	s->maxdata	= 0xffff;
 	s->range_table	= &range_bipolar10;
 	s->insn_write	= pci6208_ao_insn_write;
@@ -216,7 +192,7 @@ static int adl_pci6208_pci_probe(struct pci_dev *dev,
 }
 
 static const struct pci_device_id adl_pci6208_pci_table[] = {
-	{ PCI_VDEVICE(ADLINK, 0x6208), BOARD_PCI6208 },
+	{ PCI_DEVICE(PCI_VENDOR_ID_ADLINK, 0x6208) },
 	{ 0 }
 };
 MODULE_DEVICE_TABLE(pci, adl_pci6208_pci_table);
-- 
2.1.4

_______________________________________________
devel mailing list
devel@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel

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

* [PATCH 3/3] staging: comedi: adl_pci6208: support old PLX device ID
  2015-02-27 15:07 ` Ian Abbott
@ 2015-02-27 15:07   ` Ian Abbott
  -1 siblings, 0 replies; 8+ messages in thread
From: Ian Abbott @ 2015-02-27 15:07 UTC (permalink / raw)
  To: driverdev-devel
  Cc: Greg Kroah-Hartman, Ian Abbott, H Hartley Sweeten, linux-kernel

ADLINK's MS Windows drivers for the PCI-6208/6216 boards include the
following line in the DDInstall secion of the INF file:

%String6208%=DriverInstall6208.NT,PCI\VEN_10B5&DEV_9050&SUBSYS_62089999

That's for a PLX PCI 9050/9052 PCI interface chip with custom subvendor
and subdevice ID.  The "%String6208%" macro expands to "ADLINK PCI-6208"
in the INF file.

Add a corresponding entry to this driver module's PCI device table.

Signed-off-by: Ian Abbott <abbotti@mev.co.uk>
---
 drivers/staging/comedi/drivers/adl_pci6208.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/drivers/staging/comedi/drivers/adl_pci6208.c b/drivers/staging/comedi/drivers/adl_pci6208.c
index 11c663a..cc75281 100644
--- a/drivers/staging/comedi/drivers/adl_pci6208.c
+++ b/drivers/staging/comedi/drivers/adl_pci6208.c
@@ -193,6 +193,8 @@ static int adl_pci6208_pci_probe(struct pci_dev *dev,
 
 static const struct pci_device_id adl_pci6208_pci_table[] = {
 	{ PCI_DEVICE(PCI_VENDOR_ID_ADLINK, 0x6208) },
+	{ PCI_DEVICE_SUB(PCI_VENDOR_ID_PLX, PCI_DEVICE_ID_PLX_9050,
+			 0x9999, 0x6208) },
 	{ 0 }
 };
 MODULE_DEVICE_TABLE(pci, adl_pci6208_pci_table);
-- 
2.1.4


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

* [PATCH 3/3] staging: comedi: adl_pci6208: support old PLX device ID
@ 2015-02-27 15:07   ` Ian Abbott
  0 siblings, 0 replies; 8+ messages in thread
From: Ian Abbott @ 2015-02-27 15:07 UTC (permalink / raw)
  To: driverdev-devel
  Cc: Greg Kroah-Hartman, Ian Abbott, H Hartley Sweeten, linux-kernel

ADLINK's MS Windows drivers for the PCI-6208/6216 boards include the
following line in the DDInstall secion of the INF file:

%String6208%=DriverInstall6208.NT,PCI\VEN_10B5&DEV_9050&SUBSYS_62089999

That's for a PLX PCI 9050/9052 PCI interface chip with custom subvendor
and subdevice ID.  The "%String6208%" macro expands to "ADLINK PCI-6208"
in the INF file.

Add a corresponding entry to this driver module's PCI device table.

Signed-off-by: Ian Abbott <abbotti@mev.co.uk>
---
 drivers/staging/comedi/drivers/adl_pci6208.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/drivers/staging/comedi/drivers/adl_pci6208.c b/drivers/staging/comedi/drivers/adl_pci6208.c
index 11c663a..cc75281 100644
--- a/drivers/staging/comedi/drivers/adl_pci6208.c
+++ b/drivers/staging/comedi/drivers/adl_pci6208.c
@@ -193,6 +193,8 @@ static int adl_pci6208_pci_probe(struct pci_dev *dev,
 
 static const struct pci_device_id adl_pci6208_pci_table[] = {
 	{ PCI_DEVICE(PCI_VENDOR_ID_ADLINK, 0x6208) },
+	{ PCI_DEVICE_SUB(PCI_VENDOR_ID_PLX, PCI_DEVICE_ID_PLX_9050,
+			 0x9999, 0x6208) },
 	{ 0 }
 };
 MODULE_DEVICE_TABLE(pci, adl_pci6208_pci_table);
-- 
2.1.4

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

end of thread, other threads:[~2015-02-27 15:08 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2015-02-27 15:07 [PATCH 0/3] staging: comedi: adl_pci6208: combine board types Ian Abbott
2015-02-27 15:07 ` Ian Abbott
2015-02-27 15:07 ` [PATCH 1/3] staging: comedi: adl_pci6208: combine PCI-6208 and PCI-6216 support Ian Abbott
2015-02-27 15:07   ` Ian Abbott
2015-02-27 15:07 ` [PATCH 2/3] staging: comedi: adl_pci6208: remove multiple board type support Ian Abbott
2015-02-27 15:07   ` Ian Abbott
2015-02-27 15:07 ` [PATCH 3/3] staging: comedi: adl_pci6208: support old PLX device ID Ian Abbott
2015-02-27 15:07   ` Ian Abbott

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.