The product id check currently ANDs the read id with 0xF000 and compares the
result to the product id from the chip info. Since none of the product ids in
the chip info table end in 0x000 the check will always fail. Furthermore it is
also wrong, the product id in the PROD_ID register will always match the part
number of the device.
Some of the ADIS16XXX devices are identical from a software point of
view with the product id register having a different content. If we keep the
current scheme of storing the product id in the chip info table this would
require us to have multiple almost identical chip info table entries. So instead
this patch changes the code to parse the product id from the device name.
Signed-off-by: Lars-Peter Clausen <lars@metafoo.de> Signed-off-by: Jonathan Cameron <jic23@kernel.org>
staging:iio:adis16400: Fix adis16334 sampling frequency control
Setting the sampling frequency for the adis16334 differs from the other devices.
This patch introduces two new callback functions to the adis16400 chip_info
struct which are used to specify how to read and write the current sample rate.
The patch also introduces the proper implementations for these callbacks for the
adis16334.
Related to this is that the adis16334 has no slow mode and so we do not limit
the SPI clock rate to 300kHz during initialization. The patch adds a new flag
for devices which do have a slow mode.
Signed-off-by: Lars-Peter Clausen <lars@metafoo.de> Signed-off-by: Jonathan Cameron <jic23@kernel.org>
Ian Abbott [Fri, 2 Nov 2012 13:52:32 +0000 (13:52 +0000)]
staging: comedi: adl_pci9118: support auto-attachment
Support auto-attachment of supported PCI devices by adding the
`auto_attach()` hook (`pci9118_auto_attach()`) to the `struct
comedi_driver`. This is called via `comedi_pci_auto_attach()` at PCI
probe time.
Previously, the driver's call to `comedi_pci_auto_config()` would fall
back to the old method of auto-attaching devices and would fail because
it couldn't find a board name matching the driver name. The new method
doesn't care about that.
There are still a few problems. All the boards supported by this driver
have the same PCI vendor and device ID, so it will just pick the first
supported board type, "pci9118dg". (Other supported board types have
different AI ranges or different AI speeds, but are otherwise the same.)
Also, manual attachment of devices allows several optional features to
be configured, such as use of an external multiplexord, specified
sample&hold delays and options to ignore certain hardware errors. These
will all be set to defaults for auto-attached devices. A future version
of the driver may address these issues via configurable device
attributes.
Signed-off-by: Ian Abbott <abbotti@mev.co.uk> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Split most of the functionality of the attach routine `pci9118_attach()`
into a new function `pci9118_common_attach()` that can be called when
auto-attachment of devices is supported. Move the enabling of the PCI
device and its i/o regions into this function. Do the requesting of the
interrupt near the end of the function so it doesn't get enabled before
the device is ready.
Note that auto-attachment of PCI devices is currently broken in this
driver because the list of board names referred to by the `struct
comedi_driver` does not contain a "wildcard" entry matching the comedi
driver name. This won't be a problem once support for the
`auto_attach()` method is added.
Signed-off-by: Ian Abbott <abbotti@mev.co.uk> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Kevin McKinney [Fri, 2 Nov 2012 03:42:27 +0000 (23:42 -0400)]
Staging: bcm: Remove typedef for _BULK_ENDP_IN and call directly.
This patch removes typedef for
_BULK_ENDP_IN, changes the name of the
struct to bcm_bulk_endpoint_in. In addition,
any calls to typedefs BULK_ENDP_IN, or
*PBULK_ENDP_IN are changed to call the
struct directly.
Signed-off-by: Kevin McKinney <klmckinney1@gmail.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Kevin McKinney [Fri, 2 Nov 2012 03:42:26 +0000 (23:42 -0400)]
Staging: bcm: Remove typedef for _BULK_ENDP_OUT and call directly.
This patch removes typedef for
_BULK_ENDP_OUT, changes the name of the
struct to bcm_bulk_endpoint_out. In addition,
any calls to typedefs BULK_ENDP_OUT, or
*PBULK_ENDP_OUT are changed to call the
struct directly.
Signed-off-by: Kevin McKinney <klmckinney1@gmail.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Kevin McKinney [Fri, 2 Nov 2012 03:42:25 +0000 (23:42 -0400)]
Staging: bcm: Remove typedef for _INTR_ENDP_IN and call directly.
This patch removes typedef for
_INTR_ENDP_IN, changes the name of the
struct to bcm_intr_endpoint_in. In addition,
any calls to typedefs INTR_ENDP_IN, or
*PINTR_ENDP_IN are changed to call the
struct directly.
Signed-off-by: Kevin McKinney <klmckinney1@gmail.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Kevin McKinney [Fri, 2 Nov 2012 03:42:24 +0000 (23:42 -0400)]
Staging: bcm: Remove typedef for _INTR_ENDP_OUT and call directly.
This patch removes typedef for
_INTR_ENDP_OUT, changes the name of the
struct to bcm_intr_endpoint_out. In addition,
any calls to typedefs INTR_ENDP_OUT, or
*PINTR_ENDP_OUT are changed to call the
struct directly.
Signed-off-by: Kevin McKinney <klmckinney1@gmail.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Kevin McKinney [Fri, 2 Nov 2012 03:42:23 +0000 (23:42 -0400)]
Staging: bcm: Remove typedef for _USB_TCB and call directly.
This patch removes typedef for
_USB_TCB, changes the name of the
struct to bcm_usb_tcb. In addition,
any calls to typedefs USB_TCB, or
*PUSB_TCB are changed to call the
struct directly.
Signed-off-by: Kevin McKinney <klmckinney1@gmail.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Kevin McKinney [Fri, 2 Nov 2012 03:42:22 +0000 (23:42 -0400)]
Staging: bcm: Remove typedef for _USB_RCB and call directly.
This patch removes typedef for
_USB_RCB, changes the name of the
struct to bcm_usb_rcb. In addition,
any calls to typedefs USB_RCB, or
*PUSB_RCB are changed to call the
struct directly.
Signed-off-by: Kevin McKinney <klmckinney1@gmail.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Kevin McKinney [Fri, 2 Nov 2012 03:42:21 +0000 (23:42 -0400)]
Staging: bcm: Remove typedef for _S_INTERFACE_ADAPTER and call directly.
This patch removes typedef for
_S_INTERFACE_ADAPTER, changes the
name of the struct to bcm_interface_adapter.
In addition, any calls to typedefs
S_INTERFACE_ADAPTER, or *PS_INTERFACE_ADAPTER
are changed to call the struct directly.
Signed-off-by: Kevin McKinney <klmckinney1@gmail.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
YAMANE Toshiaki [Fri, 2 Nov 2012 04:55:48 +0000 (13:55 +0900)]
staging/comedi: Use dev_ printks in ni_tiocmd.c
fixed below checkpatch warnings.
- WARNING: Prefer netdev_err(netdev, ... then dev_err(dev, ... then pr_err(... to printk(KERN_ERR ...
- WARNING: Prefer netdev_info(netdev, ... then dev_info(dev, ... then pr_info(... to printk(KERN_INFO ...
- WARNING: Prefer netdev_notice(netdev, ... then dev_notice(dev, ... then pr_notice(... to printk(KERN_NOTICE ...
Mark Einon [Thu, 1 Nov 2012 22:56:43 +0000 (22:56 +0000)]
staging: et131x: Align ring_index and fbr[] indicies
A ring_index value of 0 is being used to reference the free buffer ring
fbr[1] and ring_index=1 is used to reference fbr[0]. Avoid this
confusing referencing by swapping the indicies so that ring_index=0
refers to fbr[0] and vice versa.
Signed-off-by: Mark Einon <mark.einon@gmail.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This driver uses the comedi PCI auto attach mechanism and the comedi
core does not use the boardinfo during the attach.
Now that this driver has the attach separated from addi_common.c we
can remove passing the boardinfo in the comedi_driver and cleanup
the code that finds the boardinfo.
Also, rename addi_find_boardinfo() so it has namespace associated
with this driver.
Signed-off-by: H Hartley Sweeten <hsweeten@visionengravers.com> Cc: Ian Abbott <abbotti@mev.co.uk> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
staging: comedi: addi_apci_3120: clarify AO subdevice init
Only the apci3120 board supports an analog output subdevice. The
boardinfo indicates this by setting the 'i_NbrAoChannel' value.
The range table as well as the function used for the insn_write
operation are fixed for the analog outputs. Remove this information
from the boardinfo and use it directly in the subdevice init.
Signed-off-by: H Hartley Sweeten <hsweeten@visionengravers.com> Cc: Ian Abbott <abbotti@mev.co.uk> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Both boards supported by this driver have the same minimum delay time.
Remove the boardinfo for it and just open code the value in
i_APCI3120_CommandTestAnalogInput().
Signed-off-by: H Hartley Sweeten <hsweeten@visionengravers.com> Cc: Ian Abbott <abbotti@mev.co.uk> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Both boards supported by this driver have the same minimum acquisition
time.. Remove the boardinfo for it and just open code the value in
i_APCI3120_CommandTestAnalogInput().
Signed-off-by: H Hartley Sweeten <hsweeten@visionengravers.com> Cc: Ian Abbott <abbotti@mev.co.uk> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
staging: comedi: addi_apci_3120: remove the 'i_IorangeBase*'
These values in the boardinfor were used in the common addi-data
attach code to work out use of the PCI bars. Since this driver
has a localized attach we already know the use of the bars so
this information in the boardinfo is unnecessary.
Signed-off-by: H Hartley Sweeten <hsweeten@visionengravers.com> Cc: Ian Abbott <abbotti@mev.co.uk> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This driver is now separate from the "common" code used with the
addi-data drivers. There is no need to use i_ADDI_Reset() to call
the correct "reset" function.
Remove the i_ADDI_Reset() function and the 'reset' pointer to the
real function from the boardinfo and just call the function directly
where needed.
Signed-off-by: H Hartley Sweeten <hsweeten@visionengravers.com> Cc: Ian Abbott <abbotti@mev.co.uk> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
staging: comedi: addi_apci_3120: clarify AI subdevice init
The two boards supported by this driver use the same functions for
the comedi operations. Remove this data from the boardinfo to clarify
the subdevice init.
Signed-off-by: H Hartley Sweeten <hsweeten@visionengravers.com> Cc: Ian Abbott <abbotti@mev.co.uk> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
The two boards supported by this driver use the same functions for
the comedi operations. Remove this data from the boardinfo to clarify
the subdevice init.
Signed-off-by: H Hartley Sweeten <hsweeten@visionengravers.com> Cc: Ian Abbott <abbotti@mev.co.uk> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
staging: comedi: addi_apci_3120: clarify DO subdevice init
The two boards supported by this driver use the same functions for
the comedi operations. Remove this data from the boardinfo to clarify
the subdevice init.
Signed-off-by: H Hartley Sweeten <hsweeten@visionengravers.com> Cc: Ian Abbott <abbotti@mev.co.uk> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
The two boards supported by this driver use the same functions for
the comedi operations. Remove this data from the boardinfo to clarify
the subdevice init.
Signed-off-by: H Hartley Sweeten <hsweeten@visionengravers.com> Cc: Ian Abbott <abbotti@mev.co.uk> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
staging: comedi: addi_apci_3120: remove need for s_EeParameters
The boards supported by this driver do not have an eeprom. Remove the
need for the devpriv->s_EeParameters values by just using the values
from the boardinfo directly.
Signed-off-by: H Hartley Sweeten <hsweeten@visionengravers.com> Cc: Ian Abbott <abbotti@mev.co.uk> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
None of the addi-data drivers that use the "common" code in addi_common.c
support dma. Remove the code that sets up the dma and allocates the buffers
in the attach and the code that frees the buffers in the detach.
Signed-off-by: H Hartley Sweeten <hsweeten@visionengravers.com> Cc: Ian Abbott <abbotti@mev.co.uk> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
staging: comedi: addi_apci_3120: separate from addi_common.c
The addi_apci_3120 driver is the only addi-data driver that supports
dma.
Copy the code in addi_common.c to this driver and remove the #include
that caused addi_common.c to be compiled with this driver. This will
allow removing the special handling for allocating and freeing the
dma buffers in the common code.
Rename the attach_pci and detach functions so they have namespace
associated with this driver.
Signed-off-by: H Hartley Sweeten <hsweeten@visionengravers.com> Cc: Ian Abbott <abbotti@mev.co.uk> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
staging: comedi: addi_apci_3120: merge in addi_apci_3001 driver
The addi_apci_3120 and addi_apci_3001 drivers share the same low-level
board support code (hwdrv_apci3120). Merge the boardinfo and PCI_DEVICE
information from the addi_apci_3001 driver into the addi_apci_3120
driver and delete then delete the addi_apci_3001 driver.
Signed-off-by: H Hartley Sweeten <hsweeten@visionengravers.com> Cc: Ian Abbott <abbotti@mev.co.uk> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Merge tag 'iio-for-3.8b' of git://git.kernel.org/pub/scm/linux/kernel/git/jic23/iio into staging-next
Second round of new IIO drivers and cleanups for the 3.8 cycle.
Usual mixed bag of cleanups and minor improvements including
one reversion for a patch in the previous series.
* adt7310 and adt7410 drivers merged into one.
* Revert use devm_kcalloc in at91_adc (because it doesn't exist)
* unlocking fix for error path in the ad5449
* isl29018 suspend and resume support.
* improved pseudo floating point parsing for info_mask write
attributes (and hence into write_raw). Reject some messed up
strings.
Bryan Freed [Wed, 24 Oct 2012 23:39:00 +0000 (00:39 +0100)]
iio: isl29018: Support suspend and resume.
The driver leaves the device in power-down state anyway,
so there is nothing to do on suspend.
On resume, we just have to make sure the range and ADC
values are updated in the device since it may have been
powered down in suspend.
Signed-off-by: Bryan Freed <bfreed@chromium.org> Signed-off-by: Jonathan Cameron <jic23@kernel.org>
iio: Reject trailing garbage when parsing fixed point numbers
When parsing a fixed point number IIO stops parsing the string once it has
reached the last requested decimal place. This means that the remainder of the
string is silently accepted regardless, of whether it is part of a valid number
or not. This patch modifies the code to scan the whole string and only accept
valid numbers. Since fract_mult is 0 after the last decimal place any digit that
may follows won't affect the result.
Signed-off-by: Lars-Peter Clausen <lars@metafoo.de> Signed-off-by: Jonathan Cameron <jic23@kernel.org>
iio: Do not accept multiple '.' in fixed point numbers
Currently when parsing a fix-point number we silently skip any additional '.'
found in the string. E.g. '1.2.3.4' gets parsed as '1.234'. This patch
disallows this and returns an error if more than one '.' is encountered.
Signed-off-by: Lars-Peter Clausen <lars@metafoo.de> Signed-off-by: Jonathan Cameron <jic23@kernel.org>
Reformat the comment used to describe the Comedi driver to use the usual
block comment style.
Update the information reflecting the fact that the driver no longer
supports manual attachment of devices via the `COMEDI_DEVCONFIG` ioctl
and `attach()` method.
Also, in the instructions indicating where to put the firmware file,
mention the expected name of the file since the driver requests the
firmware file by name.
Signed-off-by: Ian Abbott <abbotti@mev.co.uk> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Ian Abbott [Thu, 1 Nov 2012 18:34:39 +0000 (18:34 +0000)]
staging: comedi: jr3_pci: remove noisy printk
This driver seems to generate a lot of printk output every time the
driver polls the device. This may have been useful during development
but shouldn't be used in production. Just get rid of it all.
Signed-off-by: Ian Abbott <abbotti@mev.co.uk> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
The `pci_enabled` member of `struct jr3_pci_dev_private` is used to
indicate whether the call to `comedi_pci_enable()` was successful. The
'detach' routine `jr3_pci_detach()` uses this to decide whether to call
`comedi_pci_disable()`. The `iobase` member of `struct comedi_device`
is not used by this driver so it can be used for the same purpose.
Remove the `pci_enabled` member and use the spare `dev->iobase` instead.
Signed-off-by: Ian Abbott <abbotti@mev.co.uk> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Ian Abbott [Thu, 1 Nov 2012 18:34:37 +0000 (18:34 +0000)]
staging: comedi: jr3_pci: remove devpriv->pci_dev
The `pci_dev` member of `struct jr3_pci_dev_private` is used to point to
the `struct pci_dev`. This is redundant as the `struct comedi_device`
already has a pointer to the `struct device` within the `struct pci_dev`
and there is a convenient inline function, `comedi_to_pci_dev(dev)` that
returns a pointer to the `struct pci_dev`.
Remove the redundant `pci_dev` member and use alternate ways to get at
the `struct pci_dev`.
Signed-off-by: Ian Abbott <abbotti@mev.co.uk> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Ian Abbott [Thu, 1 Nov 2012 18:34:35 +0000 (18:34 +0000)]
staging: comedi: jr3_pci: use auto_attach method
This driver does not need to support manual attachment of supported PCI
devices. Replace the `attach()` hook (`jr3_pci_attach()`) with an
`auto_attach()` hook (`jr3_pci_auto_attach()`). This will be called via
`comedi_pci_auto_config()` at PCI probe time.
This driver no longer increments the PCI reference count during
attachment, so remove the call to `pci_dev_put()` when detaching the
device.
Signed-off-by: Ian Abbott <abbotti@mev.co.uk> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
staging: comedi: addi_apci_1710: remove the 'i_IorangeBase*'
These values in the boardinfor were used in the common addi-data
attach code to work out use of the PCI bars. Since this driver
has a localized attach we already know the use of the bars so
this information in the boardinfo is unnecessary.
Signed-off-by: H Hartley Sweeten <hsweeten@visionengravers.com> Cc: Ian Abbott <abbotti@mev.co.uk> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This driver does not use dma. Remove the code that sets up the
dma and allocates the buffers in the attach and the code that
frees the buffers in the detach.
Signed-off-by: H Hartley Sweeten <hsweeten@visionengravers.com> Cc: Ian Abbott <abbotti@mev.co.uk> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This driver is now separate from the "common" code used with the
addi-data drivers. There is no need to use i_ADDI_Reset() to call
the correct "reset" function.
Remove the i_ADDI_Reset() function and the 'reset' pointer to the
real function from the boardinfo and just call the function directly
where needed.
Signed-off-by: H Hartley Sweeten <hsweeten@visionengravers.com> Cc: Ian Abbott <abbotti@mev.co.uk> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This driver uses the comedi PCI auto attach mechanism and the comedi
core does not use the boardinfo during the attach.
Now that this driver has the attach separated from addi_common.c we
can remove passing the boardinfo in the comedi_driver and cleanup
the code that finds the boardinfo.
Also, rename addi_find_boardinfo() so it has namespace associated
with this driver.
Signed-off-by: H Hartley Sweeten <hsweeten@visionengravers.com> Cc: Ian Abbott <abbotti@mev.co.uk> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
staging: comedi: addi-data: remove special handling for apci1710
Now that the addi_apci_1710 driver is not using addi_common.c we can
remove the CONFIG_APCI_1710 define and all the special handling for
the initialization of it's subdevices.
Also remove the i_ADDIDATA_InsnReadEeprom() function from the
addi_apci_1710 driver. This board does not have an eeprom subdevice
and does not use this function.
Signed-off-by: H Hartley Sweeten <hsweeten@visionengravers.com> Cc: Ian Abbott <abbotti@mev.co.uk> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
staging: comedi: addi_apci_1710: separate from addi_common.c
This addi-data driver uses a private function to initialize all
the subdevices during the attach of the board.
Copy the code in addi_common.c to this driver and remove the #include
that caused addi_common.c to be compiled with this driver. This will
allow removing the special handling for the apci1710 board in the
common code.
Rename the attach_pci and detach functions so they have namespace
associated with this driver.
Signed-off-by: H Hartley Sweeten <hsweeten@visionengravers.com> Cc: Ian Abbott <abbotti@mev.co.uk> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Ian Abbott [Thu, 1 Nov 2012 16:28:33 +0000 (16:28 +0000)]
staging: comedi: gsc_hpdi: change DEBUG_PRINT()
Change the `DEBUG_PRINT(format, args...)` macro used by this module to
use either `pr_debug()` (if macro `HPDI_DEBUG` is defined) or
`no_printk()` instead of `printk()` or nothing.
Signed-off-by: Ian Abbott <abbotti@mev.co.uk> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Ian Abbott [Thu, 1 Nov 2012 16:28:30 +0000 (16:28 +0000)]
staging: comedi: gsc_hpdi: remove board(dev) function
The `board(dev)` function just casts `dev->board_ptr` to a pointer to
the private data type `struct hpdi_private` and returns it. It's only
called from one function: `hpdi_auto_attach()`.
Remove `board()` and use a local variable to point to the `struct
hpdi_private` data structure.
Signed-off-by: Ian Abbott <abbotti@mev.co.uk> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Ian Abbott [Thu, 1 Nov 2012 16:28:29 +0000 (16:28 +0000)]
staging: comedi: gsc_hpdi: don't store physical base addresses
In `struct hpdi_private`, the `plx9080_phys_iobase` and
`hpdi_phys_iobase` hold the physical memory addresses from the PCI
BARs used by this driver. The physical addresses are only really needed
when ioremapping the resources when the device is being attached by
`hpdi_auto_attach()`. A non-zero value of the `hpdi_phys_iobase` is
also used to indicate that a call to `comedi_pci_enable()` was
successful so that `comedi_pci_disable()` should be called when the
device is detached by `hpdi_detach()`.
Remove the `plx9080_phys_iobase` and `hpdi_phys_iobase` members and use
`dev->iobase` as a flag to indicate whether `comedi_pci_disable()` needs
to be called by `hpdi_detach()`.
Signed-off-by: Ian Abbott <abbotti@mev.co.uk> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Ian Abbott [Thu, 1 Nov 2012 16:28:28 +0000 (16:28 +0000)]
staging: comedi: gsc_hpdi: remove devpriv->hw_dev
The `hw_dev` member of `struct hpdi_private` is used to point to the
`struct pci_dev`. This is redundant as the `struct comedi_device`
already has a pointer to the `struct device` within the `struct pci_dev`
and there is a convenient inline function, `comedi_to_pci_dev(dev)` that
returns a pointer to the `struct pci_dev`.
Remove the redundant `hw_dev` member and use alternate ways to get at
the `struct pci_dev`.
Signed-off-by: Ian Abbott <abbotti@mev.co.uk> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Ian Abbott [Thu, 1 Nov 2012 16:28:27 +0000 (16:28 +0000)]
staging: comedi: gsc_hpdi: use auto_attach method
This driver does not need to support manual attachment of supported PCI
devices. Replace the `attach()` hook (`hpdi_attach()`) with an
`auto_attach()` hook (`hpdi_auto_attach()`). This will be called via
`comedi_pci_auto_config()` at PCI probe time.
This driver no longer increments the PCI reference during attachment, so
remove the call to `pci_dev_put()` when detaching the device.
Signed-off-by: Ian Abbott <abbotti@mev.co.uk> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Devendra Naga [Thu, 1 Nov 2012 06:24:40 +0000 (02:24 -0400)]
staging: csr: sme_blocking.c: add missing check for return of sme_wait_for_reply
sme_ap_config misses a check of the return of the sme_wait_for_reply
as all other functions do here, for the return of sme_wait_for_reply
add the check and fail if it returns other than 0.
Ian Abbott [Thu, 1 Nov 2012 14:02:20 +0000 (14:02 +0000)]
staging: comedi: skel: do auto-attachment of PCI devices
This driver is an example of how to write a Comedi driver and includes
some code for handling PCI devices, but not very much. It calls
`comedi_pci_auto_config()` at PCI probe time. That normally expects to
call the comedi driver's `auto_attach()` hook (or the deprecated
`attach_pci()` hook), but will fall back to using the `attach()` hook
that should only be used for attaching devices "manually" via the
`COMEDI_DEVCONFIG` ioctl.
Add an `auto_attach()` hook (`skel_auto_attach()`) to handle
auto-attachment of supported PCI devices. Add comments to the
`attach()` hook (`skel_attach()`) to indicate that it shouldn't
generally allow PCI devices to be attached that way (and probably isn't
needed at all for PCI-only Comedi drivers). Add code to the `detach()`
hook (`skel_detach()`) to disable PCI devices enabled by the
`auto_attach()` hook.
`skel_auto_attach()` calls new function `skel_find_pci_board()` to find
a matching element in `skel_boards[]`. PCI device ID information has
been added to `skel_boards[]` to give the function something to look
for.
Remove the `pci_dev` member of `struct skel_private` as drivers now use
the `hw_dev` member of `struct comedi_device` to get at the PCI device.
Signed-off-by: Ian Abbott <abbotti@mev.co.uk> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>