[PATCH 20/30] staging: comedi: amplc_dio200: add register shift to board info

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Add `mainshift` member to `struct dio200_board` to hold the amount of
left-shift required for main register offsets.  This is 0 for all the
boards currently supported so it doesn't need initializing explicitly in
any current element of `dio200_boards[]`.  It will be non-zero for some
new boards to be supported by this driver.

Modify the register access functions `dio200_read8()` and
`dio200_write8()` to take the shift into account.

Signed-off-by: Ian Abbott <abbotti@xxxxxxxxx>
---
 drivers/staging/comedi/drivers/amplc_dio200.c | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/drivers/staging/comedi/drivers/amplc_dio200.c b/drivers/staging/comedi/drivers/amplc_dio200.c
index ace218a..2e6ea75 100644
--- a/drivers/staging/comedi/drivers/amplc_dio200.c
+++ b/drivers/staging/comedi/drivers/amplc_dio200.c
@@ -309,6 +309,7 @@ struct dio200_board {
 	enum dio200_model model;
 	enum dio200_layout_idx layout;
 	unsigned char mainbar;
+	unsigned char mainshift;
 	unsigned int mainsize;
 };
 
@@ -504,8 +505,10 @@ static inline bool is_isa_board(const struct dio200_board *board)
 static unsigned char dio200_read8(struct comedi_device *dev,
 				  unsigned int offset)
 {
+	const struct dio200_board *thisboard = comedi_board(dev);
 	struct dio200_private *devpriv = dev->private;
 
+	offset <<= thisboard->mainshift;
 	if (devpriv->io.regtype == io_regtype)
 		return inb(devpriv->io.u.iobase + offset);
 	else
@@ -518,8 +521,10 @@ static unsigned char dio200_read8(struct comedi_device *dev,
 static void dio200_write8(struct comedi_device *dev, unsigned int offset,
 			  unsigned char val)
 {
+	const struct dio200_board *thisboard = comedi_board(dev);
 	struct dio200_private *devpriv = dev->private;
 
+	offset <<= thisboard->mainshift;
 	if (devpriv->io.regtype == io_regtype)
 		outb(val, devpriv->io.u.iobase + offset);
 	else
-- 
1.7.12.4

_______________________________________________
devel mailing list
devel@xxxxxxxxxxxxxxxxxxxxxx
http://driverdev.linuxdriverproject.org/mailman/listinfo/devel


[Index of Archives]     [Linux Driver Backports]     [DMA Engine]     [Linux GPIO]     [Linux SPI]     [Video for Linux]     [Linux USB Devel]     [Linux Coverity]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [Yosemite Backpacking]
  Powered by Linux