Commit 65bf53de authored by Ian Abbott's avatar Ian Abbott Committed by Greg Kroah-Hartman

staging: comedi: drivers: re-do PLX PCI 9080 DMAMODEx register values

Replace the existing macros in "plx9080.h" that define values for the
DMAMODE0 and DMAMODE1 registers.  Use the prefix `PLX_DMAMODE_` for the
macros.  Make use of the `BIT(x)` and `GENMASK(h,l)` macros to define
the values.
Signed-off-by: default avatarIan Abbott <abbotti@mev.co.uk>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent df04d3aa
...@@ -1308,28 +1308,28 @@ static void init_plx9080(struct comedi_device *dev) ...@@ -1308,28 +1308,28 @@ static void init_plx9080(struct comedi_device *dev)
/* configure dma0 mode */ /* configure dma0 mode */
bits = 0; bits = 0;
/* enable ready input, not sure if this is necessary */ /* enable ready input, not sure if this is necessary */
bits |= PLX_DMA_EN_READYIN_BIT; bits |= PLX_DMAMODE_READYIEN;
/* enable bterm, not sure if this is necessary */ /* enable bterm, not sure if this is necessary */
bits |= PLX_EN_BTERM_BIT; bits |= PLX_DMAMODE_BTERMIEN;
/* enable dma chaining */ /* enable dma chaining */
bits |= PLX_EN_CHAIN_BIT; bits |= PLX_DMAMODE_CHAINEN;
/* enable interrupt on dma done /* enable interrupt on dma done
* (probably don't need this, since chain never finishes) */ * (probably don't need this, since chain never finishes) */
bits |= PLX_EN_DMA_DONE_INTR_BIT; bits |= PLX_DMAMODE_DONEIEN;
/* don't increment local address during transfers /* don't increment local address during transfers
* (we are transferring from a fixed fifo register) */ * (we are transferring from a fixed fifo register) */
bits |= PLX_LOCAL_ADDR_CONST_BIT; bits |= PLX_DMAMODE_LACONST;
/* route dma interrupt to pci bus */ /* route dma interrupt to pci bus */
bits |= PLX_DMA_INTR_PCI_BIT; bits |= PLX_DMAMODE_INTRPCI;
/* enable demand mode */ /* enable demand mode */
bits |= PLX_DEMAND_MODE_BIT; bits |= PLX_DMAMODE_DEMAND;
/* enable local burst mode */ /* enable local burst mode */
bits |= PLX_DMA_LOCAL_BURST_EN_BIT; bits |= PLX_DMAMODE_BURSTEN;
/* 4020 uses 32 bit dma */ /* 4020 uses 32 bit dma */
if (board->layout == LAYOUT_4020) if (board->layout == LAYOUT_4020)
bits |= PLX_LOCAL_BUS_32_WIDE_BITS; bits |= PLX_DMAMODE_WIDTH32;
else /* localspace0 bus is 16 bits wide */ else /* localspace0 bus is 16 bits wide */
bits |= PLX_LOCAL_BUS_16_WIDE_BITS; bits |= PLX_DMAMODE_WIDTH16;
writel(bits, plx_iobase + PLX_REG_DMAMODE1); writel(bits, plx_iobase + PLX_REG_DMAMODE1);
if (ao_cmd_is_supported(board)) if (ao_cmd_is_supported(board))
writel(bits, plx_iobase + PLX_REG_DMAMODE0); writel(bits, plx_iobase + PLX_REG_DMAMODE0);
......
...@@ -563,26 +563,26 @@ static void gsc_hpdi_init_plx9080(struct comedi_device *dev) ...@@ -563,26 +563,26 @@ static void gsc_hpdi_init_plx9080(struct comedi_device *dev)
/* configure dma0 mode */ /* configure dma0 mode */
bits = 0; bits = 0;
/* enable ready input */ /* enable ready input */
bits |= PLX_DMA_EN_READYIN_BIT; bits |= PLX_DMAMODE_READYIEN;
/* enable dma chaining */ /* enable dma chaining */
bits |= PLX_EN_CHAIN_BIT; bits |= PLX_DMAMODE_CHAINEN;
/* /*
* enable interrupt on dma done * enable interrupt on dma done
* (probably don't need this, since chain never finishes) * (probably don't need this, since chain never finishes)
*/ */
bits |= PLX_EN_DMA_DONE_INTR_BIT; bits |= PLX_DMAMODE_DONEIEN;
/* /*
* don't increment local address during transfers * don't increment local address during transfers
* (we are transferring from a fixed fifo register) * (we are transferring from a fixed fifo register)
*/ */
bits |= PLX_LOCAL_ADDR_CONST_BIT; bits |= PLX_DMAMODE_LACONST;
/* route dma interrupt to pci bus */ /* route dma interrupt to pci bus */
bits |= PLX_DMA_INTR_PCI_BIT; bits |= PLX_DMAMODE_INTRPCI;
/* enable demand mode */ /* enable demand mode */
bits |= PLX_DEMAND_MODE_BIT; bits |= PLX_DMAMODE_DEMAND;
/* enable local burst mode */ /* enable local burst mode */
bits |= PLX_DMA_LOCAL_BURST_EN_BIT; bits |= PLX_DMAMODE_BURSTEN;
bits |= PLX_LOCAL_BUS_32_WIDE_BITS; bits |= PLX_DMAMODE_WIDTH32;
writel(bits, plx_iobase + PLX_REG_DMAMODE0); writel(bits, plx_iobase + PLX_REG_DMAMODE0);
} }
......
...@@ -457,23 +457,41 @@ struct plx_dma_desc { ...@@ -457,23 +457,41 @@ struct plx_dma_desc {
#define PLX_REG_DMAMODE0 0x0080 #define PLX_REG_DMAMODE0 0x0080
#define PLX_REG_DMAMODE1 0x0094 #define PLX_REG_DMAMODE1 0x0094
#define PLX_LOCAL_BUS_16_WIDE_BITS 0x1 /* Local Bus Width */
#define PLX_LOCAL_BUS_32_WIDE_BITS 0x3 #define PLX_DMAMODE_WIDTH8 (BIT(0) * 0) /* 8 bits wide */
#define PLX_LOCAL_BUS_WIDTH_MASK 0x3 #define PLX_DMAMODE_WIDTH16 (BIT(0) * 1) /* 16 bits wide */
#define PLX_DMA_EN_READYIN_BIT 0x40 /* enable ready in input */ #define PLX_DMAMODE_WIDTH32 (BIT(0) * 2) /* 32 bits wide */
#define PLX_EN_BTERM_BIT 0x80 /* enable BTERM# input */ #define PLX_DMAMODE_WIDTH32A (BIT(0) * 3) /* 32 bits wide */
#define PLX_DMA_LOCAL_BURST_EN_BIT 0x100 /* enable local burst mode */ #define PLX_DMAMODE_WIDTH_MASK GENMASK(1, 0)
#define PLX_EN_CHAIN_BIT 0x200 /* enables chaining */ #define PLX_DMAMODE_WIDTH_SHIFT 0
/* enables interrupt on dma done */ /* Internal Wait States */
#define PLX_EN_DMA_DONE_INTR_BIT 0x400 #define PLX_DMAMODE_IWS(x) (BIT(2) * ((x) & 0xf))
/* hold local address constant (don't increment) */ #define PLX_DMAMODE_IWS_MASK GENMASK(5, 2)
#define PLX_LOCAL_ADDR_CONST_BIT 0x800 #define PLX_DMAMODE_SHIFT 2
/* enables demand-mode for dma transfer */ /* Ready Input Enable */
#define PLX_DEMAND_MODE_BIT 0x1000 #define PLX_DMAMODE_READYIEN BIT(6)
#define PLX_EOT_ENABLE_BIT 0x4000 /* BTERM# Input Enable */
#define PLX_STOP_MODE_BIT 0x8000 #define PLX_DMAMODE_BTERMIEN BIT(7)
/* routes dma interrupt to pci bus (instead of local bus) */ /* Local Burst Enable */
#define PLX_DMA_INTR_PCI_BIT 0x20000 #define PLX_DMAMODE_BURSTEN BIT(8)
/* Chaining Enable */
#define PLX_DMAMODE_CHAINEN BIT(9)
/* Done Interrupt Enable */
#define PLX_DMAMODE_DONEIEN BIT(10)
/* Hold Local Address Constant */
#define PLX_DMAMODE_LACONST BIT(11)
/* Demand Mode */
#define PLX_DMAMODE_DEMAND BIT(12)
/* Write And Invalidate Mode */
#define PLX_DMAMODE_WINVALIDATE BIT(13)
/* DMA EOT Enable - enables EOT0# or EOT1# input pin */
#define PLX_DMAMODE_EOTEN BIT(14)
/* DMA Stop Data Transfer Mode - 0:BLAST; 1:EOT asserted or DREQ deasserted */
#define PLX_DMAMODE_STOP BIT(15)
/* DMA Clear Count Mode - count in descriptor cleared on completion */
#define PLX_DMAMODE_CLRCOUNT BIT(16)
/* DMA Channel Interrupt Select - 0:local bus interrupt; 1:PCI interrupt */
#define PLX_DMAMODE_INTRPCI BIT(17)
/* DMA Channel N PCI Address Register (N <= 1) */ /* DMA Channel N PCI Address Register (N <= 1) */
#define PLX_REG_DMAPADR(n) ((n) ? PLX_REG_DMAPADR1 : PLX_REG_DMAPADR0) #define PLX_REG_DMAPADR(n) ((n) ? PLX_REG_DMAPADR1 : PLX_REG_DMAPADR0)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment