Skip to content
  • H Hartley Sweeten's avatar
    staging: comedi: 8255: refactor how the (*io) function works · 4085e93b
    H Hartley Sweeten authored
    
    
    Currently, all users of is module that use the default (*io) function
    pass an 'iobase' to subdev_8255_init() of the form:
    
      dev->iobase + OFFSET_TO_8255_BASE_REG
    
    Now that the (*io) callback includes the comedi_device 'dev' pointer
    the 'dev->iobase' does not need to be included.
    
    Modify the default (*io) function, subdev_8255_io(), to automatically
    add the dev->iobase to the address when reading/writing the port.
    
    For aesthetics, rename the subdevice private data member to 'regbase'.
    Also, rename the local variables in this module that are used to
    access this member.
    
    Add a comment in dev_8255_attach() about the 'iobase' that is passed
    to subdev_8255_init(). For manually attached 8255 devices the io
    region is requested with __comedi_request_region() which does not
    set dev->iobase. For these devices the 'regbase' is actually the
    'iobase'.
    
    Remove the, now unnecessary, dev->iobase from all the callers of
    subdev_8255_init(). There are a couple drivers that only passed the
    dev->iobase. For those drivers pass a 'regbase' of 0x00.
    
    Note that the das16m1 driver is a bit goofy. The devpriv->extra_iobase
    is requested using __comedi_request_region() which does not set the
    dev->iobase. But the starting address passed is dev->iobase + DAS16M1_82C55
    so a 'regbase' of DAS16M1_82C55 is passed to subdev_8255_init().
    
    Signed-off-by: default avatarH Hartley Sweeten <hsweeten@visionengravers.com>
    Reviewed-by: default avatarIan Abbott <abbotti@mev.co.uk>
    Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
    4085e93b