|
@@ -201,11 +201,26 @@ static inline void r8a66597_write(struct r8a66597 *r8a66597, u16 val,
|
|
|
iowrite16(val, r8a66597->reg + offset);
|
|
|
}
|
|
|
|
|
|
+static inline void r8a66597_mdfy(struct r8a66597 *r8a66597,
|
|
|
+ u16 val, u16 pat, unsigned long offset)
|
|
|
+{
|
|
|
+ u16 tmp;
|
|
|
+ tmp = r8a66597_read(r8a66597, offset);
|
|
|
+ tmp = tmp & (~pat);
|
|
|
+ tmp = tmp | val;
|
|
|
+ r8a66597_write(r8a66597, tmp, offset);
|
|
|
+}
|
|
|
+
|
|
|
+#define r8a66597_bclr(r8a66597, val, offset) \
|
|
|
+ r8a66597_mdfy(r8a66597, 0, val, offset)
|
|
|
+#define r8a66597_bset(r8a66597, val, offset) \
|
|
|
+ r8a66597_mdfy(r8a66597, val, 0, offset)
|
|
|
+
|
|
|
static inline void r8a66597_write_fifo(struct r8a66597 *r8a66597,
|
|
|
- unsigned long offset, u16 *buf,
|
|
|
+ struct r8a66597_pipe *pipe, u16 *buf,
|
|
|
int len)
|
|
|
{
|
|
|
- void __iomem *fifoaddr = r8a66597->reg + offset;
|
|
|
+ void __iomem *fifoaddr = r8a66597->reg + pipe->fifoaddr;
|
|
|
unsigned long count;
|
|
|
unsigned char *pb;
|
|
|
int i;
|
|
@@ -230,26 +245,15 @@ static inline void r8a66597_write_fifo(struct r8a66597 *r8a66597,
|
|
|
iowrite16_rep(fifoaddr, buf, len);
|
|
|
if (unlikely(odd)) {
|
|
|
buf = &buf[len];
|
|
|
+ if (r8a66597->pdata->wr0_shorted_to_wr1)
|
|
|
+ r8a66597_bclr(r8a66597, MBW_16, pipe->fifosel);
|
|
|
iowrite8((unsigned char)*buf, fifoaddr);
|
|
|
+ if (r8a66597->pdata->wr0_shorted_to_wr1)
|
|
|
+ r8a66597_bset(r8a66597, MBW_16, pipe->fifosel);
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
|
|
|
-static inline void r8a66597_mdfy(struct r8a66597 *r8a66597,
|
|
|
- u16 val, u16 pat, unsigned long offset)
|
|
|
-{
|
|
|
- u16 tmp;
|
|
|
- tmp = r8a66597_read(r8a66597, offset);
|
|
|
- tmp = tmp & (~pat);
|
|
|
- tmp = tmp | val;
|
|
|
- r8a66597_write(r8a66597, tmp, offset);
|
|
|
-}
|
|
|
-
|
|
|
-#define r8a66597_bclr(r8a66597, val, offset) \
|
|
|
- r8a66597_mdfy(r8a66597, 0, val, offset)
|
|
|
-#define r8a66597_bset(r8a66597, val, offset) \
|
|
|
- r8a66597_mdfy(r8a66597, val, 0, offset)
|
|
|
-
|
|
|
static inline unsigned long get_syscfg_reg(int port)
|
|
|
{
|
|
|
return port == 0 ? SYSCFG0 : SYSCFG1;
|