7
7
* Author: Donghwa Lee <[email protected] >
8
8
*/
9
9
10
+ #include <linux/bits.h>
10
11
#include <linux/clk.h>
11
12
#include <linux/delay.h>
12
13
#include <linux/err.h>
29
30
#define SAMSUNG_KEYIFFC 0x10
30
31
31
32
/* SAMSUNG_KEYIFCON */
32
- #define SAMSUNG_KEYIFCON_INT_F_EN (1 << 0)
33
- #define SAMSUNG_KEYIFCON_INT_R_EN (1 << 1)
34
- #define SAMSUNG_KEYIFCON_DF_EN (1 << 2)
35
- #define SAMSUNG_KEYIFCON_FC_EN (1 << 3)
36
- #define SAMSUNG_KEYIFCON_WAKEUPEN (1 << 4)
33
+ #define SAMSUNG_KEYIFCON_INT_F_EN BIT( 0)
34
+ #define SAMSUNG_KEYIFCON_INT_R_EN BIT( 1)
35
+ #define SAMSUNG_KEYIFCON_DF_EN BIT( 2)
36
+ #define SAMSUNG_KEYIFCON_FC_EN BIT( 3)
37
+ #define SAMSUNG_KEYIFCON_WAKEUPEN BIT( 4)
37
38
38
39
/* SAMSUNG_KEYIFSTSCLR */
39
40
#define SAMSUNG_KEYIFSTSCLR_P_INT_MASK (0xff << 0)
@@ -81,14 +82,14 @@ static void samsung_keypad_scan(struct samsung_keypad *keypad,
81
82
unsigned int val ;
82
83
83
84
for (col = 0 ; col < keypad -> cols ; col ++ ) {
84
- val = SAMSUNG_KEYIFCOL_MASK & ~( 1 << col );
85
+ val = SAMSUNG_KEYIFCOL_MASK & ~BIT ( col );
85
86
val <<= keypad -> chip -> column_shift ;
86
87
87
88
writel (val , keypad -> base + SAMSUNG_KEYIFCOL );
88
89
mdelay (1 );
89
90
90
91
val = readl (keypad -> base + SAMSUNG_KEYIFROW );
91
- row_state [col ] = ~val & (( 1 << keypad -> rows ) - 1 );
92
+ row_state [col ] = ~val & GENMASK ( keypad -> rows - 1 , 0 );
92
93
}
93
94
94
95
/* KEYIFCOL reg clear */
@@ -112,10 +113,10 @@ static bool samsung_keypad_report(struct samsung_keypad *keypad,
112
113
continue ;
113
114
114
115
for (row = 0 ; row < keypad -> rows ; row ++ ) {
115
- if (!(changed & ( 1 << row )))
116
+ if (!(changed & BIT ( row )))
116
117
continue ;
117
118
118
- pressed = row_state [col ] & ( 1 << row );
119
+ pressed = row_state [col ] & BIT ( row );
119
120
120
121
dev_dbg (& keypad -> input_dev -> dev ,
121
122
"key %s, row: %d, col: %d\n" ,
0 commit comments