include/soc/qcom/tcs.h | 19 ++++++++----------- 1 file changed, 8 insertions(+), 11 deletions(-)
Reworked BCM_TCS_CMD macro in order to fix warnings from sparse:
drivers/clk/qcom/clk-rpmh.c:270:28: warning: restricted __le32 degrades to integer
drivers/clk/qcom/clk-rpmh.c:270:28: warning: restricted __le32 degrades to integer
While at it, used u32_encode_bits which made the code easier to
follow and removed unnecessary shift definitions.
Signed-off-by: Eugen Hristev <eugen.hristev@linaro.org>
---
include/soc/qcom/tcs.h | 19 ++++++++-----------
1 file changed, 8 insertions(+), 11 deletions(-)
diff --git a/include/soc/qcom/tcs.h b/include/soc/qcom/tcs.h
index 3acca067c72b..130ed2582f37 100644
--- a/include/soc/qcom/tcs.h
+++ b/include/soc/qcom/tcs.h
@@ -60,22 +60,19 @@ struct tcs_request {
struct tcs_cmd *cmds;
};
-#define BCM_TCS_CMD_COMMIT_SHFT 30
#define BCM_TCS_CMD_COMMIT_MASK 0x40000000
-#define BCM_TCS_CMD_VALID_SHFT 29
#define BCM_TCS_CMD_VALID_MASK 0x20000000
-#define BCM_TCS_CMD_VOTE_X_SHFT 14
#define BCM_TCS_CMD_VOTE_MASK 0x3fff
-#define BCM_TCS_CMD_VOTE_Y_SHFT 0
-#define BCM_TCS_CMD_VOTE_Y_MASK 0xfffc000
+#define BCM_TCS_CMD_VOTE_Y_MASK 0x3fff
+#define BCM_TCS_CMD_VOTE_X_MASK 0xfffc000
/* Construct a Bus Clock Manager (BCM) specific TCS command */
#define BCM_TCS_CMD(commit, valid, vote_x, vote_y) \
- (((commit) << BCM_TCS_CMD_COMMIT_SHFT) | \
- ((valid) << BCM_TCS_CMD_VALID_SHFT) | \
- ((cpu_to_le32(vote_x) & \
- BCM_TCS_CMD_VOTE_MASK) << BCM_TCS_CMD_VOTE_X_SHFT) | \
- ((cpu_to_le32(vote_y) & \
- BCM_TCS_CMD_VOTE_MASK) << BCM_TCS_CMD_VOTE_Y_SHFT))
+ (u32_encode_bits(commit, BCM_TCS_CMD_COMMIT_MASK) | \
+ u32_encode_bits(valid, BCM_TCS_CMD_VALID_MASK) | \
+ u32_encode_bits((__force u32)cpu_to_le32(vote_x), \
+ BCM_TCS_CMD_VOTE_X_MASK) | \
+ u32_encode_bits((__force u32)cpu_to_le32(vote_y), \
+ BCM_TCS_CMD_VOTE_Y_MASK))
#endif /* __SOC_QCOM_TCS_H__ */
--
2.43.0
Hi Eugen, kernel test robot noticed the following build errors: [auto build test ERROR on linus/master] [also build test ERROR on v6.12-rc4 next-20241025] [If your patch is applied to the wrong git tree, kindly drop us a note. And when submitting patch, we suggest to use '--base' as documented in https://git-scm.com/docs/git-format-patch#_base_tree_information] url: https://github.com/intel-lab-lkp/linux/commits/Eugen-Hristev/soc-qcom-Rework-BCM_TCS_CMD-macro/20241025-165212 base: linus/master patch link: https://lore.kernel.org/r/20241025084823.475199-1-eugen.hristev%40linaro.org patch subject: [PATCH] soc: qcom: Rework BCM_TCS_CMD macro config: x86_64-buildonly-randconfig-004-20241026 (https://download.01.org/0day-ci/archive/20241026/202410261552.E8TiGYdV-lkp@intel.com/config) compiler: clang version 19.1.2 (https://github.com/llvm/llvm-project 7ba7d8e2f7b6445b60679da826210cdde29eaf8b) reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20241026/202410261552.E8TiGYdV-lkp@intel.com/reproduce) If you fix the issue in a separate patch/commit (i.e. not just a new version of the same patch/commit), kindly add following tags | Reported-by: kernel test robot <lkp@intel.com> | Closes: https://lore.kernel.org/oe-kbuild-all/202410261552.E8TiGYdV-lkp@intel.com/ All errors (new ones prefixed by >>): >> drivers/clk/qcom/clk-rpmh.c:270:14: error: call to undeclared function 'u32_encode_bits'; ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration] 270 | cmd.data = BCM_TCS_CMD(1, enable, 0, cmd_state); | ^ include/soc/qcom/tcs.h:71:3: note: expanded from macro 'BCM_TCS_CMD' 71 | (u32_encode_bits(commit, BCM_TCS_CMD_COMMIT_MASK) | \ | ^ 1 error generated. vim +/u32_encode_bits +270 drivers/clk/qcom/clk-rpmh.c 9c7e47025a6b9a Taniya Das 2018-05-09 250 04053f4d23a41b David Dai 2019-01-24 251 static int clk_rpmh_bcm_send_cmd(struct clk_rpmh *c, bool enable) 04053f4d23a41b David Dai 2019-01-24 252 { 04053f4d23a41b David Dai 2019-01-24 253 struct tcs_cmd cmd = { 0 }; 04053f4d23a41b David Dai 2019-01-24 254 u32 cmd_state; 2cf7a4cbcb4e10 Stephen Boyd 2020-03-09 255 int ret = 0; 04053f4d23a41b David Dai 2019-01-24 256 04053f4d23a41b David Dai 2019-01-24 257 mutex_lock(&rpmh_clk_lock); 04053f4d23a41b David Dai 2019-01-24 258 if (enable) { 04053f4d23a41b David Dai 2019-01-24 259 cmd_state = 1; 04053f4d23a41b David Dai 2019-01-24 260 if (c->aggr_state) 04053f4d23a41b David Dai 2019-01-24 261 cmd_state = c->aggr_state; 2cf7a4cbcb4e10 Stephen Boyd 2020-03-09 262 } else { 2cf7a4cbcb4e10 Stephen Boyd 2020-03-09 263 cmd_state = 0; 04053f4d23a41b David Dai 2019-01-24 264 } 04053f4d23a41b David Dai 2019-01-24 265 a4e5af27e6f6a8 Mike Tipton 2024-08-09 266 cmd_state = min(cmd_state, BCM_TCS_CMD_VOTE_MASK); a4e5af27e6f6a8 Mike Tipton 2024-08-09 267 2cf7a4cbcb4e10 Stephen Boyd 2020-03-09 268 if (c->last_sent_aggr_state != cmd_state) { 04053f4d23a41b David Dai 2019-01-24 269 cmd.addr = c->res_addr; 6311b6521bcc80 Jordan Crouse 2019-08-05 @270 cmd.data = BCM_TCS_CMD(1, enable, 0, cmd_state); 04053f4d23a41b David Dai 2019-01-24 271 29f66b625281a3 Stephen Boyd 2022-05-17 272 /* 29f66b625281a3 Stephen Boyd 2022-05-17 273 * Send only an active only state request. RPMh continues to 29f66b625281a3 Stephen Boyd 2022-05-17 274 * use the active state when we're in sleep/wake state as long 29f66b625281a3 Stephen Boyd 2022-05-17 275 * as the sleep/wake state has never been set. 29f66b625281a3 Stephen Boyd 2022-05-17 276 */ dad4e7fda4bdc1 Mike Tipton 2020-02-14 277 ret = clk_rpmh_send(c, RPMH_ACTIVE_ONLY_STATE, &cmd, enable); 04053f4d23a41b David Dai 2019-01-24 278 if (ret) { 04053f4d23a41b David Dai 2019-01-24 279 dev_err(c->dev, "set active state of %s failed: (%d)\n", 04053f4d23a41b David Dai 2019-01-24 280 c->res_name, ret); 2cf7a4cbcb4e10 Stephen Boyd 2020-03-09 281 } else { 04053f4d23a41b David Dai 2019-01-24 282 c->last_sent_aggr_state = cmd_state; 2cf7a4cbcb4e10 Stephen Boyd 2020-03-09 283 } 2cf7a4cbcb4e10 Stephen Boyd 2020-03-09 284 } 04053f4d23a41b David Dai 2019-01-24 285 04053f4d23a41b David Dai 2019-01-24 286 mutex_unlock(&rpmh_clk_lock); 04053f4d23a41b David Dai 2019-01-24 287 2cf7a4cbcb4e10 Stephen Boyd 2020-03-09 288 return ret; 04053f4d23a41b David Dai 2019-01-24 289 } 04053f4d23a41b David Dai 2019-01-24 290 -- 0-DAY CI Kernel Test Service https://github.com/intel/lkp-tests/wiki
Hi Eugen, kernel test robot noticed the following build errors: [auto build test ERROR on linus/master] [also build test ERROR on v6.12-rc4 next-20241025] [If your patch is applied to the wrong git tree, kindly drop us a note. And when submitting patch, we suggest to use '--base' as documented in https://git-scm.com/docs/git-format-patch#_base_tree_information] url: https://github.com/intel-lab-lkp/linux/commits/Eugen-Hristev/soc-qcom-Rework-BCM_TCS_CMD-macro/20241025-165212 base: linus/master patch link: https://lore.kernel.org/r/20241025084823.475199-1-eugen.hristev%40linaro.org patch subject: [PATCH] soc: qcom: Rework BCM_TCS_CMD macro config: alpha-allyesconfig (https://download.01.org/0day-ci/archive/20241026/202410260419.qGKBvJHZ-lkp@intel.com/config) compiler: alpha-linux-gcc (GCC) 13.3.0 reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20241026/202410260419.qGKBvJHZ-lkp@intel.com/reproduce) If you fix the issue in a separate patch/commit (i.e. not just a new version of the same patch/commit), kindly add following tags | Reported-by: kernel test robot <lkp@intel.com> | Closes: https://lore.kernel.org/oe-kbuild-all/202410260419.qGKBvJHZ-lkp@intel.com/ All errors (new ones prefixed by >>): In file included from include/soc/qcom/rpmh.h:9, from drivers/clk/qcom/clk-rpmh.c:13: drivers/clk/qcom/clk-rpmh.c: In function 'clk_rpmh_bcm_send_cmd': >> include/soc/qcom/tcs.h:71:10: error: implicit declaration of function 'u32_encode_bits' [-Werror=implicit-function-declaration] 71 | (u32_encode_bits(commit, BCM_TCS_CMD_COMMIT_MASK) | \ | ^~~~~~~~~~~~~~~ drivers/clk/qcom/clk-rpmh.c:270:28: note: in expansion of macro 'BCM_TCS_CMD' 270 | cmd.data = BCM_TCS_CMD(1, enable, 0, cmd_state); | ^~~~~~~~~~~ cc1: some warnings being treated as errors vim +/u32_encode_bits +71 include/soc/qcom/tcs.h 68 69 /* Construct a Bus Clock Manager (BCM) specific TCS command */ 70 #define BCM_TCS_CMD(commit, valid, vote_x, vote_y) \ > 71 (u32_encode_bits(commit, BCM_TCS_CMD_COMMIT_MASK) | \ 72 u32_encode_bits(valid, BCM_TCS_CMD_VALID_MASK) | \ 73 u32_encode_bits((__force u32)cpu_to_le32(vote_x), \ 74 BCM_TCS_CMD_VOTE_X_MASK) | \ 75 u32_encode_bits((__force u32)cpu_to_le32(vote_y), \ 76 BCM_TCS_CMD_VOTE_Y_MASK)) 77 -- 0-DAY CI Kernel Test Service https://github.com/intel/lkp-tests/wiki
On 25.10.2024 10:48 AM, Eugen Hristev wrote: > Reworked BCM_TCS_CMD macro in order to fix warnings from sparse: > > drivers/clk/qcom/clk-rpmh.c:270:28: warning: restricted __le32 degrades to integer > drivers/clk/qcom/clk-rpmh.c:270:28: warning: restricted __le32 degrades to integer > > While at it, used u32_encode_bits which made the code easier to > follow and removed unnecessary shift definitions. > > Signed-off-by: Eugen Hristev <eugen.hristev@linaro.org> > --- > include/soc/qcom/tcs.h | 19 ++++++++----------- > 1 file changed, 8 insertions(+), 11 deletions(-) > > diff --git a/include/soc/qcom/tcs.h b/include/soc/qcom/tcs.h > index 3acca067c72b..130ed2582f37 100644 > --- a/include/soc/qcom/tcs.h > +++ b/include/soc/qcom/tcs.h > @@ -60,22 +60,19 @@ struct tcs_request { > struct tcs_cmd *cmds; > }; > > -#define BCM_TCS_CMD_COMMIT_SHFT 30 > #define BCM_TCS_CMD_COMMIT_MASK 0x40000000 > -#define BCM_TCS_CMD_VALID_SHFT 29 > #define BCM_TCS_CMD_VALID_MASK 0x20000000 > -#define BCM_TCS_CMD_VOTE_X_SHFT 14 > #define BCM_TCS_CMD_VOTE_MASK 0x3fff > -#define BCM_TCS_CMD_VOTE_Y_SHFT 0 > -#define BCM_TCS_CMD_VOTE_Y_MASK 0xfffc000 > +#define BCM_TCS_CMD_VOTE_Y_MASK 0x3fff > +#define BCM_TCS_CMD_VOTE_X_MASK 0xfffc000 > > /* Construct a Bus Clock Manager (BCM) specific TCS command */ > #define BCM_TCS_CMD(commit, valid, vote_x, vote_y) \ > - (((commit) << BCM_TCS_CMD_COMMIT_SHFT) | \ > - ((valid) << BCM_TCS_CMD_VALID_SHFT) | \ > - ((cpu_to_le32(vote_x) & \ > - BCM_TCS_CMD_VOTE_MASK) << BCM_TCS_CMD_VOTE_X_SHFT) | \ > - ((cpu_to_le32(vote_y) & \ > - BCM_TCS_CMD_VOTE_MASK) << BCM_TCS_CMD_VOTE_Y_SHFT)) > + (u32_encode_bits(commit, BCM_TCS_CMD_COMMIT_MASK) | \ > + u32_encode_bits(valid, BCM_TCS_CMD_VALID_MASK) | \ > + u32_encode_bits((__force u32)cpu_to_le32(vote_x), \ > + BCM_TCS_CMD_VOTE_X_MASK) | \ > + u32_encode_bits((__force u32)cpu_to_le32(vote_y), \ > + BCM_TCS_CMD_VOTE_Y_MASK)) FIELD_PREP/GET? Konrad
On 10/25/24 12:03, Konrad Dybcio wrote: > On 25.10.2024 10:48 AM, Eugen Hristev wrote: >> Reworked BCM_TCS_CMD macro in order to fix warnings from sparse: >> >> drivers/clk/qcom/clk-rpmh.c:270:28: warning: restricted __le32 degrades to integer >> drivers/clk/qcom/clk-rpmh.c:270:28: warning: restricted __le32 degrades to integer >> >> While at it, used u32_encode_bits which made the code easier to >> follow and removed unnecessary shift definitions. >> >> Signed-off-by: Eugen Hristev <eugen.hristev@linaro.org> >> --- >> include/soc/qcom/tcs.h | 19 ++++++++----------- >> 1 file changed, 8 insertions(+), 11 deletions(-) >> >> diff --git a/include/soc/qcom/tcs.h b/include/soc/qcom/tcs.h >> index 3acca067c72b..130ed2582f37 100644 >> --- a/include/soc/qcom/tcs.h >> +++ b/include/soc/qcom/tcs.h >> @@ -60,22 +60,19 @@ struct tcs_request { >> struct tcs_cmd *cmds; >> }; >> >> -#define BCM_TCS_CMD_COMMIT_SHFT 30 >> #define BCM_TCS_CMD_COMMIT_MASK 0x40000000 >> -#define BCM_TCS_CMD_VALID_SHFT 29 >> #define BCM_TCS_CMD_VALID_MASK 0x20000000 >> -#define BCM_TCS_CMD_VOTE_X_SHFT 14 >> #define BCM_TCS_CMD_VOTE_MASK 0x3fff >> -#define BCM_TCS_CMD_VOTE_Y_SHFT 0 >> -#define BCM_TCS_CMD_VOTE_Y_MASK 0xfffc000 >> +#define BCM_TCS_CMD_VOTE_Y_MASK 0x3fff >> +#define BCM_TCS_CMD_VOTE_X_MASK 0xfffc000 >> >> /* Construct a Bus Clock Manager (BCM) specific TCS command */ >> #define BCM_TCS_CMD(commit, valid, vote_x, vote_y) \ >> - (((commit) << BCM_TCS_CMD_COMMIT_SHFT) | \ >> - ((valid) << BCM_TCS_CMD_VALID_SHFT) | \ >> - ((cpu_to_le32(vote_x) & \ >> - BCM_TCS_CMD_VOTE_MASK) << BCM_TCS_CMD_VOTE_X_SHFT) | \ >> - ((cpu_to_le32(vote_y) & \ >> - BCM_TCS_CMD_VOTE_MASK) << BCM_TCS_CMD_VOTE_Y_SHFT)) >> + (u32_encode_bits(commit, BCM_TCS_CMD_COMMIT_MASK) | \ >> + u32_encode_bits(valid, BCM_TCS_CMD_VALID_MASK) | \ >> + u32_encode_bits((__force u32)cpu_to_le32(vote_x), \ >> + BCM_TCS_CMD_VOTE_X_MASK) | \ >> + u32_encode_bits((__force u32)cpu_to_le32(vote_y), \ >> + BCM_TCS_CMD_VOTE_Y_MASK)) > > FIELD_PREP/GET? > > Konrad What would be the difference/advantage in using FIELD_PREP/GET instead of u32_encode_bits ?
On 25.10.2024 2:06 PM, Eugen Hristev wrote: > > > On 10/25/24 12:03, Konrad Dybcio wrote: >> On 25.10.2024 10:48 AM, Eugen Hristev wrote: >>> Reworked BCM_TCS_CMD macro in order to fix warnings from sparse: >>> >>> drivers/clk/qcom/clk-rpmh.c:270:28: warning: restricted __le32 degrades to integer >>> drivers/clk/qcom/clk-rpmh.c:270:28: warning: restricted __le32 degrades to integer >>> >>> While at it, used u32_encode_bits which made the code easier to >>> follow and removed unnecessary shift definitions. >>> >>> Signed-off-by: Eugen Hristev <eugen.hristev@linaro.org> >>> --- >>> include/soc/qcom/tcs.h | 19 ++++++++----------- >>> 1 file changed, 8 insertions(+), 11 deletions(-) >>> >>> diff --git a/include/soc/qcom/tcs.h b/include/soc/qcom/tcs.h >>> index 3acca067c72b..130ed2582f37 100644 >>> --- a/include/soc/qcom/tcs.h >>> +++ b/include/soc/qcom/tcs.h >>> @@ -60,22 +60,19 @@ struct tcs_request { >>> struct tcs_cmd *cmds; >>> }; >>> -#define BCM_TCS_CMD_COMMIT_SHFT 30 >>> #define BCM_TCS_CMD_COMMIT_MASK 0x40000000 >>> -#define BCM_TCS_CMD_VALID_SHFT 29 >>> #define BCM_TCS_CMD_VALID_MASK 0x20000000 >>> -#define BCM_TCS_CMD_VOTE_X_SHFT 14 >>> #define BCM_TCS_CMD_VOTE_MASK 0x3fff >>> -#define BCM_TCS_CMD_VOTE_Y_SHFT 0 >>> -#define BCM_TCS_CMD_VOTE_Y_MASK 0xfffc000 >>> +#define BCM_TCS_CMD_VOTE_Y_MASK 0x3fff >>> +#define BCM_TCS_CMD_VOTE_X_MASK 0xfffc000 >>> /* Construct a Bus Clock Manager (BCM) specific TCS command */ >>> #define BCM_TCS_CMD(commit, valid, vote_x, vote_y) \ >>> - (((commit) << BCM_TCS_CMD_COMMIT_SHFT) | \ >>> - ((valid) << BCM_TCS_CMD_VALID_SHFT) | \ >>> - ((cpu_to_le32(vote_x) & \ >>> - BCM_TCS_CMD_VOTE_MASK) << BCM_TCS_CMD_VOTE_X_SHFT) | \ >>> - ((cpu_to_le32(vote_y) & \ >>> - BCM_TCS_CMD_VOTE_MASK) << BCM_TCS_CMD_VOTE_Y_SHFT)) >>> + (u32_encode_bits(commit, BCM_TCS_CMD_COMMIT_MASK) | \ >>> + u32_encode_bits(valid, BCM_TCS_CMD_VALID_MASK) | \ >>> + u32_encode_bits((__force u32)cpu_to_le32(vote_x), \ >>> + BCM_TCS_CMD_VOTE_X_MASK) | \ >>> + u32_encode_bits((__force u32)cpu_to_le32(vote_y), \ >>> + BCM_TCS_CMD_VOTE_Y_MASK)) >> >> FIELD_PREP/GET? >> >> Konrad > > What would be the difference/advantage in using FIELD_PREP/GET instead of u32_encode_bits ? Probably none. I thought it was a function and not another magic macro, as it's lowercase.. Doesn't le32_encode_bits do what you need then? Konrad
On 10/25/24 20:03, Konrad Dybcio wrote: > On 25.10.2024 2:06 PM, Eugen Hristev wrote: >> >> >> On 10/25/24 12:03, Konrad Dybcio wrote: >>> On 25.10.2024 10:48 AM, Eugen Hristev wrote: >>>> Reworked BCM_TCS_CMD macro in order to fix warnings from sparse: >>>> >>>> drivers/clk/qcom/clk-rpmh.c:270:28: warning: restricted __le32 degrades to integer >>>> drivers/clk/qcom/clk-rpmh.c:270:28: warning: restricted __le32 degrades to integer >>>> >>>> While at it, used u32_encode_bits which made the code easier to >>>> follow and removed unnecessary shift definitions. >>>> >>>> Signed-off-by: Eugen Hristev <eugen.hristev@linaro.org> >>>> --- >>>> include/soc/qcom/tcs.h | 19 ++++++++----------- >>>> 1 file changed, 8 insertions(+), 11 deletions(-) >>>> >>>> diff --git a/include/soc/qcom/tcs.h b/include/soc/qcom/tcs.h >>>> index 3acca067c72b..130ed2582f37 100644 >>>> --- a/include/soc/qcom/tcs.h >>>> +++ b/include/soc/qcom/tcs.h >>>> @@ -60,22 +60,19 @@ struct tcs_request { >>>> struct tcs_cmd *cmds; >>>> }; >>>> -#define BCM_TCS_CMD_COMMIT_SHFT 30 >>>> #define BCM_TCS_CMD_COMMIT_MASK 0x40000000 >>>> -#define BCM_TCS_CMD_VALID_SHFT 29 >>>> #define BCM_TCS_CMD_VALID_MASK 0x20000000 >>>> -#define BCM_TCS_CMD_VOTE_X_SHFT 14 >>>> #define BCM_TCS_CMD_VOTE_MASK 0x3fff >>>> -#define BCM_TCS_CMD_VOTE_Y_SHFT 0 >>>> -#define BCM_TCS_CMD_VOTE_Y_MASK 0xfffc000 >>>> +#define BCM_TCS_CMD_VOTE_Y_MASK 0x3fff >>>> +#define BCM_TCS_CMD_VOTE_X_MASK 0xfffc000 >>>> /* Construct a Bus Clock Manager (BCM) specific TCS command */ >>>> #define BCM_TCS_CMD(commit, valid, vote_x, vote_y) \ >>>> - (((commit) << BCM_TCS_CMD_COMMIT_SHFT) | \ >>>> - ((valid) << BCM_TCS_CMD_VALID_SHFT) | \ >>>> - ((cpu_to_le32(vote_x) & \ >>>> - BCM_TCS_CMD_VOTE_MASK) << BCM_TCS_CMD_VOTE_X_SHFT) | \ >>>> - ((cpu_to_le32(vote_y) & \ >>>> - BCM_TCS_CMD_VOTE_MASK) << BCM_TCS_CMD_VOTE_Y_SHFT)) >>>> + (u32_encode_bits(commit, BCM_TCS_CMD_COMMIT_MASK) | \ >>>> + u32_encode_bits(valid, BCM_TCS_CMD_VALID_MASK) | \ >>>> + u32_encode_bits((__force u32)cpu_to_le32(vote_x), \ >>>> + BCM_TCS_CMD_VOTE_X_MASK) | \ >>>> + u32_encode_bits((__force u32)cpu_to_le32(vote_y), \ >>>> + BCM_TCS_CMD_VOTE_Y_MASK)) >>> >>> FIELD_PREP/GET? >>> >>> Konrad >> >> What would be the difference/advantage in using FIELD_PREP/GET instead of u32_encode_bits ? > > Probably none. I thought it was a function and not another magic macro, > as it's lowercase.. > > Doesn't le32_encode_bits do what you need then? That works too. It would move the `__force u32` to a higher level, but works. I am sending a v2 with that. > > Konrad
© 2016 - 2024 Red Hat, Inc.