mirror of https://gitee.com/openkylin/linux.git
staging: comedi: adv_pci_dio: move pci_dio_override_cardtype()
This function is called as part of the pci_driver (*probe) before doing the (*auto_attach) of the comedi driver. For aesthetics, move the function to a more logical place in the driver. Signed-off-by: H Hartley Sweeten <hsweeten@visionengravers.com> Reviewed-by: Ian Abbott <abbotti@mev.co.uk> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
a54b6e60f3
commit
d97e1552fd
|
@ -322,38 +322,6 @@ static int pci_dio_reset(struct comedi_device *dev, unsigned long cardtype)
|
|||
return 0;
|
||||
}
|
||||
|
||||
static unsigned long pci_dio_override_cardtype(struct pci_dev *pcidev,
|
||||
unsigned long cardtype)
|
||||
{
|
||||
/*
|
||||
* Change cardtype from TYPE_PCI1753 to TYPE_PCI1753E if expansion
|
||||
* board available. Need to enable PCI device and request the main
|
||||
* registers PCI BAR temporarily to perform the test.
|
||||
*/
|
||||
if (cardtype != TYPE_PCI1753)
|
||||
return cardtype;
|
||||
if (pci_enable_device(pcidev) < 0)
|
||||
return cardtype;
|
||||
if (pci_request_region(pcidev, 2, "adv_pci_dio") == 0) {
|
||||
/*
|
||||
* This test is based on Advantech's "advdaq" driver source
|
||||
* (which declares its module licence as "GPL" although the
|
||||
* driver source does not include a "COPYING" file).
|
||||
*/
|
||||
unsigned long reg = pci_resource_start(pcidev, 2) + 53;
|
||||
|
||||
outb(0x05, reg);
|
||||
if ((inb(reg) & 0x07) == 0x02) {
|
||||
outb(0x02, reg);
|
||||
if ((inb(reg) & 0x07) == 0x05)
|
||||
cardtype = TYPE_PCI1753E;
|
||||
}
|
||||
pci_release_region(pcidev, 2);
|
||||
}
|
||||
pci_disable_device(pcidev);
|
||||
return cardtype;
|
||||
}
|
||||
|
||||
static int pci_dio_auto_attach(struct comedi_device *dev,
|
||||
unsigned long context)
|
||||
{
|
||||
|
@ -477,6 +445,38 @@ static struct comedi_driver adv_pci_dio_driver = {
|
|||
.detach = comedi_pci_detach,
|
||||
};
|
||||
|
||||
static unsigned long pci_dio_override_cardtype(struct pci_dev *pcidev,
|
||||
unsigned long cardtype)
|
||||
{
|
||||
/*
|
||||
* Change cardtype from TYPE_PCI1753 to TYPE_PCI1753E if expansion
|
||||
* board available. Need to enable PCI device and request the main
|
||||
* registers PCI BAR temporarily to perform the test.
|
||||
*/
|
||||
if (cardtype != TYPE_PCI1753)
|
||||
return cardtype;
|
||||
if (pci_enable_device(pcidev) < 0)
|
||||
return cardtype;
|
||||
if (pci_request_region(pcidev, 2, "adv_pci_dio") == 0) {
|
||||
/*
|
||||
* This test is based on Advantech's "advdaq" driver source
|
||||
* (which declares its module licence as "GPL" although the
|
||||
* driver source does not include a "COPYING" file).
|
||||
*/
|
||||
unsigned long reg = pci_resource_start(pcidev, 2) + 53;
|
||||
|
||||
outb(0x05, reg);
|
||||
if ((inb(reg) & 0x07) == 0x02) {
|
||||
outb(0x02, reg);
|
||||
if ((inb(reg) & 0x07) == 0x05)
|
||||
cardtype = TYPE_PCI1753E;
|
||||
}
|
||||
pci_release_region(pcidev, 2);
|
||||
}
|
||||
pci_disable_device(pcidev);
|
||||
return cardtype;
|
||||
}
|
||||
|
||||
static int adv_pci_dio_pci_probe(struct pci_dev *dev,
|
||||
const struct pci_device_id *id)
|
||||
{
|
||||
|
|
Loading…
Reference in New Issue