staging: most: dim2-hdm: introduce function dim2_transfer_madr
authorChristian Gromm <christian.gromm@microchip.com>
Thu, 18 Aug 2016 14:58:47 +0000 (16:58 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 18 Aug 2016 15:24:00 +0000 (17:24 +0200)
This patch removes duplicated code by putting it into the new function
dim2_transfer_madr.

Signed-off-by: Andrey Shvetsov <andrey.shvetsov@k2l.de>
Signed-off-by: Christian Gromm <christian.gromm@microchip.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/staging/most/hdm-dim2/dim2_hal.c

index 901f742f2fd72c4b41b549d9be66b62c7ccdd8c9..20b69705cfdb215b17d5e9476a9be6bcb22d883b 100644 (file)
@@ -135,6 +135,17 @@ static void free_dbr(int offs, int size)
 
 /* -------------------------------------------------------------------------- */
 
+static void dim2_transfer_madr(u32 val)
+{
+       dimcb_io_write(&g.dim2->MADR, val);
+
+       /* wait for transfer completion */
+       while ((dimcb_io_read(&g.dim2->MCTL) & 1) != 1)
+               continue;
+
+       dimcb_io_write(&g.dim2->MCTL, 0);   /* clear transfer complete */
+}
+
 static void dim2_clear_dbr(u16 addr, u16 size)
 {
        enum { MADR_TB_BIT = 30, MADR_WNR_BIT = 31 };
@@ -145,26 +156,13 @@ static void dim2_clear_dbr(u16 addr, u16 size)
        dimcb_io_write(&g.dim2->MCTL, 0);   /* clear transfer complete */
        dimcb_io_write(&g.dim2->MDAT0, 0);
 
-       for (; addr < end_addr; addr++) {
-               dimcb_io_write(&g.dim2->MADR, cmd | addr);
-
-               /* wait till transfer is completed */
-               while ((dimcb_io_read(&g.dim2->MCTL) & 1) != 1)
-                       continue;
-
-               dimcb_io_write(&g.dim2->MCTL, 0);  /* clear transfer complete */
-       }
+       for (; addr < end_addr; addr++)
+               dim2_transfer_madr(cmd | addr);
 }
 
 static u32 dim2_read_ctr(u32 ctr_addr, u16 mdat_idx)
 {
-       dimcb_io_write(&g.dim2->MADR, ctr_addr);
-
-       /* wait till transfer is completed */
-       while ((dimcb_io_read(&g.dim2->MCTL) & 1) != 1)
-               continue;
-
-       dimcb_io_write(&g.dim2->MCTL, 0);   /* clear transfer complete */
+       dim2_transfer_madr(ctr_addr);
 
        return dimcb_io_read((&g.dim2->MDAT0) + mdat_idx);
 }
@@ -189,13 +187,7 @@ static void dim2_write_ctr_mask(u32 ctr_addr, const u32 *mask, const u32 *value)
        dimcb_io_write(&g.dim2->MDWE2, mask[2]);
        dimcb_io_write(&g.dim2->MDWE3, mask[3]);
 
-       dimcb_io_write(&g.dim2->MADR, bit_mask(MADR_WNR_BIT) | ctr_addr);
-
-       /* wait till transfer is completed */
-       while ((dimcb_io_read(&g.dim2->MCTL) & 1) != 1)
-               continue;
-
-       dimcb_io_write(&g.dim2->MCTL, 0);   /* clear transfer complete */
+       dim2_transfer_madr(bit_mask(MADR_WNR_BIT) | ctr_addr);
 }
 
 static inline void dim2_write_ctr(u32 ctr_addr, const u32 *value)