RE: [PATCH 30/90] staging: comedi: amplc_dio200: store the pci_devin the comedi_device
From: H Hartley Sweeten
Date: Thu Jul 19 2012 - 13:20:29 EST
On Thursday, July 19, 2012 3:27 AM, Ian Abbott wrote:
> On 2012-07-19 11:10, Ian Abbott wrote:
>> On 2012-07-19 02:37, H Hartley Sweeten wrote:
>>> Use the hw_dev pointer in the comedi_device struct to hold the
>>> pci_dev instead of carrying it in the private data.
>>>
>>> Since the pci_dev is no longer held in the provate data, we can
>>> also cleanup the detach a bit. Remove the IS_ENABLED() tests in
>>> the detach. If the pci_dev is non NULL it's a PCI device otherwise
>>> it's an ISA device. Using IS_ENABLED() to omit the code paths
>>> makes the code a bit confusing and doesn't save much.
>>
>> No, you really need to check thisboard->bustype in the detach() because
>> hw_dev might be NULL for a PCI board if the attach() failed.
>
> Actually, your patch wouldn't do any harm as dev->iobase would be 0. It
> would just go through the "failed ISA device" path instead of the
> "failed PCI device" path. It would be more robust to check
> thisboard->bustype though.
Would this be cleaner:
If (dev->iobase) {
If (pcidev)
comedi_pci_disable(pcidev);
else
release_region(dev->iobase, DIO200_IO_SIZE);
}
If (pcidev)
pci_dev_put(pcidev);
Same number of lines but the i/o disable/release and the put of the pcidev
would then be distinctly separate.
Regards,
Hartley
¢éì®&Þ~º&¶¬+-±éÝ¥w®Ë±Êâmébìdz¹Þ)í
æèw*jg¬±¨¶Ýj/êäz¹Þà2Þ¨èÚ&¢)ß«a¶Úþø®G«éh®æj:+v¨wèÙ>W±êÞiÛaxPjØm¶ÿÃ-»+ùd_