Skip to contentSkip to conversation

staging: comedi: move 'struct pci_dev *' into comedi_device

PATCH In review H Hartley Sweeten 3 participants 4 messages Jul 11, 2012 – Jul 12, 2012

lore
Share & tools
lore
#0 lore raw

cover staging: comedi: move 'struct pci_dev *' into comedi_device

All the comedi pci drivers have a struct pci_dev * in their private data to hold the pointer to the pci device. Some of the drivers only have private data because of this pointer.

Move the variable into the comedi_device struct and remove the private data for the drivers that no longer need it.

This only updates the drivers that have been cleaned up enough or only need simple changes to make the conversion. The other comedi pci drivers will be converted to use the common pci_dev pointer as they are cleaned up.

The cb_pcidio and dyna_pci10xx drivers have a bit of additional cleanup to remove some of the unneeded private data variables and to use the comedi_device iobase variable.

H Hartley Sweeten (30):
staging: comedi: add pci_dev pointer to comedi_device
staging: comedi: adl_pci6208: use comedi_device pci_dev pointer
staging: comedi: adl_pci7230: use comedi_device pci_dev pointer
staging: comedi: adl_pci7230: remove private data
staging: comedi: adl_pci7296: use comedi_device pci_dev pointer
staging: comedi: adl_pci7296: remove private data
staging: comedi: adl_pci7432: use comedi_device pci_dev pointer
staging: comedi: adl_pci7432: remove private data
staging: comedi: adl_pci8164: use comedi_device pci_dev pointer
staging: comedi: adl_pci8164: remove private data
staging: comedi: adl_pci9111: use comedi_device pci_dev pointer
staging: comedi: adl_pci9118: use comedi_device pci_dev pointer
staging: comedi: cb_pcidas: use comedi_device pci_dev pointer
staging: comedi: cb_pcidio: factor out the "find pci device" code
staging: comedi: cb_pcidio: cleanup the "find pci device" code
staging: comedi: cb_pcidio: use comedi_device pci_dev pointer
staging: comedi: cb_pcidio: use comedi_device iobase
staging: comedi: cb_pcidio: remove private data
staging: comedi: contec_pci_dio: factor out the "find pci device"
code
staging: comedi: contec_pci_dio: cleanup the "find pci device" code
staging: comedi: contec_pci_dio: use comedi_device pci_dev pointer
staging: comedi: contec_pci_dio: remove private data
staging: comedi: dyna_pci10xx: factor out the "find pci device" code
staging: comedi: dyna_pci10xx: cleanup the "find pci device" code
staging: comedi: dyna_pci10xx: use comedi_device pci_dev pointer
staging: comedi: dyna_pci10xx: remove unused variables in the private
data
staging: comedi: dyna_pci10xx: use comedi_device iobase
staging: comedi: ke_counter: factor out the "find pci device" code
staging: comedi: ke_counter: cleanup the "find pci device" code
staging: comedi: contec_pci_dio: use comedi_device pci_dev pointer

 drivers/staging/comedi/comedidev.h              |   2 +
 drivers/staging/comedi/drivers/adl_pci6208.c    |  17 ++--
 drivers/staging/comedi/drivers/adl_pci7230.c    |  24 ++---
 drivers/staging/comedi/drivers/adl_pci7296.c    |  24 ++---
 drivers/staging/comedi/drivers/adl_pci7432.c    |  24 ++---
 drivers/staging/comedi/drivers/adl_pci8164.c    |  24 ++---
 drivers/staging/comedi/drivers/adl_pci9111.c    |  25 +++--
 drivers/staging/comedi/drivers/adl_pci9118.c    |  23 +++--
 drivers/staging/comedi/drivers/cb_pcidas.c      |  31 +++---
 drivers/staging/comedi/drivers/cb_pcidio.c      | 115 ++++++++---------------
 drivers/staging/comedi/drivers/contec_pci_dio.c | 119 +++++++++++------------
 drivers/staging/comedi/drivers/dyna_pci10xx.c   | 120 +++++++++---------------
 drivers/staging/comedi/drivers/ke_counter.c     | 108 +++++++++------------
 13 files changed, 258 insertions(+), 398 deletions(-)
Signature · 1 line
1.7.11
#1 lore raw
Quoted 6 lines · H Hartley Sweeten

All the comedi pci drivers have a struct pci_dev * in their private data to hold the pointer to the pci device. Some of the drivers only have private data because of this pointer.

Move the variable into the comedi_device struct and remove the private data for the drivers that no longer need it.

I suppose at a later date we could turn that into a union with a short name like u (so comedidev->pcidev would become something like comedidev->u.pcidev), which would allow us to stick a 'struct usb_interface *' or some other hardware device wrapper struct pointer in the same hole. (Maybe 'h' for 'hardware' would be better than 'u'.)

Signature · 2 lines
-=( Ian Abbott @ MEV Ltd.    E-mail: <[email protected]>             )=-
-=( Tel: +44 (0)161 477 1898   FAX: +44 (0)161 718 3587              )=-
#2 lore raw
Quoted 5 lines

I suppose at a later date we could turn that into a union with a short name like u (so comedidev->pcidev would become something like comedidev->u.pcidev), which would allow us to stick a 'struct usb_interface *' or some other hardware device wrapper struct pointer in the same hole. (Maybe 'h' for 'hardware' would be better than 'u'.)

The "usual" pattern is to make it a struct device pointer. Then you can get to any other kind of device from it.

Alan

#3 lore raw
Quoted 8 lines · Alan Cox
Quoted 5 lines

I suppose at a later date we could turn that into a union with a short name like u (so comedidev->pcidev would become something like comedidev->u.pcidev), which would allow us to stick a 'struct usb_interface *' or some other hardware device wrapper struct pointer in the same hole. (Maybe 'h' for 'hardware' would be better than 'u'.)

The "usual" pattern is to make it a struct device pointer. Then you can get to any other kind of device from it.

You mean with container_of(), right? Actually, 'struct comedi_device' already has a little-used 'struct device *hw_dev' member that could be used for this purpose.

Signature · 2 lines
-=( Ian Abbott @ MEV Ltd.    E-mail: <[email protected]>             )=-
-=( Tel: +44 (0)161 477 1898   FAX: +44 (0)161 718 3587              )=-