Thread (40 messages) 40 messages, 11 authors, 2021-11-24

[PATCH/RFC 17/17] rtw89: Use bitfield helpers

From: Larry Finger <hidden>
Date: 2021-11-22 18:38:57
Also in: alsa-devel, linux-clk, linux-gpio, linux-iio, linux-media, linux-mmc, linux-omap, linux-pm, linux-renesas-soc, linux-wireless, lkml, netdev

On 11/22/21 09:54, Geert Uytterhoeven wrote:
Use the field_{get,prep}() helpers, instead of open-coding the same
operations.

Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be>
---
Compile-tested only.
Marked RFC, as this depends on [PATCH 01/17], but follows a different
path to upstream.
---
  drivers/net/wireless/realtek/rtw89/core.h | 38 ++++-------------------
  1 file changed, 6 insertions(+), 32 deletions(-)
Tested-by: Larry Finger <Larry,Finger@lwfinger.net>

Larry
quoted hunk ↗ jump to hunk
diff --git a/drivers/net/wireless/realtek/rtw89/core.h b/drivers/net/wireless/realtek/rtw89/core.h
index c2885e4dd882f045..f9c0300ec373aaf2 100644
--- a/drivers/net/wireless/realtek/rtw89/core.h
+++ b/drivers/net/wireless/realtek/rtw89/core.h
@@ -2994,81 +2994,55 @@ rtw89_write32_clr(struct rtw89_dev *rtwdev, u32 addr, u32 bit)
  static inline u32
  rtw89_read32_mask(struct rtw89_dev *rtwdev, u32 addr, u32 mask)
  {
-	u32 shift = __ffs(mask);
-	u32 orig;
-	u32 ret;
-
-	orig = rtw89_read32(rtwdev, addr);
-	ret = (orig & mask) >> shift;
-
-	return ret;
+	return field_get(mask, rtw89_read32(rtwdev, addr));
  }
  
  static inline u16
  rtw89_read16_mask(struct rtw89_dev *rtwdev, u32 addr, u32 mask)
  {
-	u32 shift = __ffs(mask);
-	u32 orig;
-	u32 ret;
-
-	orig = rtw89_read16(rtwdev, addr);
-	ret = (orig & mask) >> shift;
-
-	return ret;
+	return field_get(mask, rtw89_read16(rtwdev, addr));
  }
  
  static inline u8
  rtw89_read8_mask(struct rtw89_dev *rtwdev, u32 addr, u32 mask)
  {
-	u32 shift = __ffs(mask);
-	u32 orig;
-	u32 ret;
-
-	orig = rtw89_read8(rtwdev, addr);
-	ret = (orig & mask) >> shift;
-
-	return ret;
+	return field_get(mask, rtw89_read8(rtwdev, addr));
  }
  
  static inline void
  rtw89_write32_mask(struct rtw89_dev *rtwdev, u32 addr, u32 mask, u32 data)
  {
-	u32 shift = __ffs(mask);
  	u32 orig;
  	u32 set;
  
  	WARN(addr & 0x3, "should be 4-byte aligned, addr = 0x%08x\n", addr);
  
  	orig = rtw89_read32(rtwdev, addr);
-	set = (orig & ~mask) | ((data << shift) & mask);
+	set = (orig & ~mask) | field_prep(mask, data);
  	rtw89_write32(rtwdev, addr, set);
  }
  
  static inline void
  rtw89_write16_mask(struct rtw89_dev *rtwdev, u32 addr, u32 mask, u16 data)
  {
-	u32 shift;
  	u16 orig, set;
  
  	mask &= 0xffff;
-	shift = __ffs(mask);
  
  	orig = rtw89_read16(rtwdev, addr);
-	set = (orig & ~mask) | ((data << shift) & mask);
+	set = (orig & ~mask) | field_prep(mask, data);
  	rtw89_write16(rtwdev, addr, set);
  }
  
  static inline void
  rtw89_write8_mask(struct rtw89_dev *rtwdev, u32 addr, u32 mask, u8 data)
  {
-	u32 shift;
  	u8 orig, set;
  
  	mask &= 0xff;
-	shift = __ffs(mask);
  
  	orig = rtw89_read8(rtwdev, addr);
-	set = (orig & ~mask) | ((data << shift) & mask);
+	set = (orig & ~mask) | field_prep(mask, data);
  	rtw89_write8(rtwdev, addr, set);
  }
  
  
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help