Browse Source

staging: sm750fb: change definition of DE_DESTINATION fields

Use stratight-forward definition of DE_DESTINATION register fields
and use open-coded implementation for register manipulation

Signed-off-by: Mike Rapoport <mike.rapoport@gmail.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Mike Rapoport 9 years ago
parent
commit
aeaab18678
2 changed files with 10 additions and 14 deletions
  1. 6 9
      drivers/staging/sm750fb/sm750_accel.c
  2. 4 5
      drivers/staging/sm750fb/sm750_accel.h

+ 6 - 9
drivers/staging/sm750fb/sm750_accel.c

@@ -115,9 +115,8 @@ int hw_fillrect(struct lynx_accel *accel,
 	write_dpr(accel, DE_FOREGROUND, color); /* DPR14 */
 	write_dpr(accel, DE_FOREGROUND, color); /* DPR14 */
 
 
 	write_dpr(accel, DE_DESTINATION,
 	write_dpr(accel, DE_DESTINATION,
-			FIELD_SET(0, DE_DESTINATION, WRAP, DISABLE)|
-			FIELD_VALUE(0, DE_DESTINATION, X, x)|
-			FIELD_VALUE(0, DE_DESTINATION, Y, y)); /* dpr4 */
+		  ((x << DE_DESTINATION_X_SHIFT) & DE_DESTINATION_X_MASK) |
+		  (y & DE_DESTINATION_Y_MASK)); /* dpr4 */
 
 
 	write_dpr(accel, DE_DIMENSION,
 	write_dpr(accel, DE_DIMENSION,
 			FIELD_VALUE(0, DE_DIMENSION, X, width)|
 			FIELD_VALUE(0, DE_DIMENSION, X, width)|
@@ -259,9 +258,8 @@ unsigned int rop2)   /* ROP value */
 		  ((sx << DE_SOURCE_X_K1_SHIFT) & DE_SOURCE_X_K1_MASK) |
 		  ((sx << DE_SOURCE_X_K1_SHIFT) & DE_SOURCE_X_K1_MASK) |
 		  (sy & DE_SOURCE_Y_K2_MASK)); /* dpr0 */
 		  (sy & DE_SOURCE_Y_K2_MASK)); /* dpr0 */
 	write_dpr(accel, DE_DESTINATION,
 	write_dpr(accel, DE_DESTINATION,
-		  FIELD_SET(0, DE_DESTINATION, WRAP, DISABLE) |
-		  FIELD_VALUE(0, DE_DESTINATION, X,    dx)  |
-		  FIELD_VALUE(0, DE_DESTINATION, Y,    dy)); /* dpr04 */
+		  ((dx << DE_DESTINATION_X_SHIFT) & DE_DESTINATION_X_MASK) |
+		  (dy & DE_DESTINATION_Y_MASK)); /* dpr04 */
 	write_dpr(accel, DE_DIMENSION,
 	write_dpr(accel, DE_DIMENSION,
 		  FIELD_VALUE(0, DE_DIMENSION, X,    width) |
 		  FIELD_VALUE(0, DE_DIMENSION, X,    width) |
 		  FIELD_VALUE(0, DE_DIMENSION, Y_ET, height)); /* dpr08 */
 		  FIELD_VALUE(0, DE_DIMENSION, Y_ET, height)); /* dpr08 */
@@ -357,9 +355,8 @@ int hw_imageblit(struct lynx_accel *accel,
 		  DE_SOURCE_X_K1_MONO_MASK); /* dpr00 */
 		  DE_SOURCE_X_K1_MONO_MASK); /* dpr00 */
 
 
 	write_dpr(accel, DE_DESTINATION,
 	write_dpr(accel, DE_DESTINATION,
-		  FIELD_SET(0, DE_DESTINATION, WRAP, DISABLE) |
-		  FIELD_VALUE(0, DE_DESTINATION, X,    dx)    |
-		  FIELD_VALUE(0, DE_DESTINATION, Y,    dy)); /* dpr04 */
+		  ((dx << DE_DESTINATION_X_SHIFT) & DE_DESTINATION_X_MASK) |
+		  (dy & DE_DESTINATION_Y_MASK)); /* dpr04 */
 
 
 	write_dpr(accel, DE_DIMENSION,
 	write_dpr(accel, DE_DIMENSION,
 		  FIELD_VALUE(0, DE_DIMENSION, X,    width) |
 		  FIELD_VALUE(0, DE_DIMENSION, X,    width) |

+ 4 - 5
drivers/staging/sm750fb/sm750_accel.h

@@ -28,11 +28,10 @@
 #define DE_SOURCE_Y_K2_MASK                             0xffff
 #define DE_SOURCE_Y_K2_MASK                             0xffff
 
 
 #define DE_DESTINATION                                  0x4
 #define DE_DESTINATION                                  0x4
-#define DE_DESTINATION_WRAP                             31:31
-#define DE_DESTINATION_WRAP_DISABLE                     0
-#define DE_DESTINATION_WRAP_ENABLE                      1
-#define DE_DESTINATION_X                                28:16
-#define DE_DESTINATION_Y                                15:0
+#define DE_DESTINATION_WRAP                             BIT(31)
+#define DE_DESTINATION_X_SHIFT                          16
+#define DE_DESTINATION_X_MASK                           (0x1fff << 16)
+#define DE_DESTINATION_Y_MASK                           0xffff
 
 
 #define DE_DIMENSION                                    0x8
 #define DE_DIMENSION                                    0x8
 #define DE_DIMENSION_X                                  28:16
 #define DE_DIMENSION_X                                  28:16