b43: make finding the most significant bit common function
PATCH 1/2 b43: make finding the most significant bit common function
Signed-off-by Rafał Miłecki <[email protected]>
--- drivers/net/wireless/b43/phy_common.c | 14 ++++++++++++++ drivers/net/wireless/b43/phy_common.h | 1 + drivers/net/wireless/b43/phy_lp.c | 17 ++--------------- 3 files changed, 17 insertions(+), 15 deletions(-)
drivers/net/wireless/b43/phy_common.c +14 -0
@@ -421,3 +421,17 @@ void b43_phyop_switch_analog_generic(struct b43_wldev *dev, bool on) {b43_write16 (dev,B43_MMIO_PHY0 , on ?0 :0xF4 ); } + +/* Find the position of the most significant bit */ +u8 phy_nbits (s32 val) +{ +u32 tmp =abs (val); +u8 nbits =0 ; + +while (tmp !=0 ) { + nbits++; + tmp >>=1 ; + } + +return nbits; +}
drivers/net/wireless/b43/phy_common.h +1 -0
@@ -418,5 +418,6 @@ int b43_phy_shm_tssi_read(struct b43_wldev *dev, u16 shm_offset);*/ void b43_phyop_switch_analog_generic (struct b43_wldev *dev,bool on); +u8 phy_nbits (s32 val);#endif /* LINUX_B43_PHY_COMMON_H_ */
drivers/net/wireless/b43/phy_lp.c +2 -15
@@ -1593,19 +1593,6 @@ static const struct lpphy_rx_iq_comp lpphy_rev2plus_iq_comp = { .c0 = 0, }; -static u8 lpphy_nbits (s32 val) -{ -u32 tmp =abs (val); -u8 nbits =0 ; - -while (tmp !=0 ) { - nbits++; - tmp >>=1 ; - } - -return nbits; -} -static int lpphy_calc_rx_iq_comp (struct b43_wldev *dev,u16 samples) {struct lpphy_iq_est iq_est;
@@ -1632,8 +1619,8 @@ static int lpphy_calc_rx_iq_comp(struct b43_wldev *dev, u16 samples) goto out; } - prod_msb =lpphy_nbits (prod); - q_msb =lpphy_nbits (qpwr); + prod_msb =phy_nbits (prod); + q_msb =phy_nbits (qpwr); tmp1 = prod_msb -20 ;if (tmp1 >=0 ) {
Signature · 1 line
1.6.4.2
Quoted 20 lines · On Thursday 14 January 2010 13:21:27 Rafał Miłecki wrote:
Signed-off-by Rafał Miłecki <[email protected]>--- drivers/net/wireless/b43/phy_common.c | 14 ++++++++++++++ drivers/net/wireless/b43/phy_common.h | 1 + drivers/net/wireless/b43/phy_lp.c | 17 ++--------------- 3 files changed, 17 insertions(+), 15 deletions(-)drivers/net/wireless/b43/phy_common.c +4
-0@@ -421,3 +421,17 @@ void b43_phyop_switch_analog_generic(struct b43_wldev *dev, bool on) {b43_write16 (dev,B43_MMIO_PHY0 , on ?0 :0xF4 ); } + +/* Find the position of the most significant bit */ +u8 phy_nbits (s32 val) +{
drivers/net/wireless/b43/phy_common.c void b43_phyop_switch_analog_generic(struct b43_wldev *dev, bool on) · line 437
Quoted 10 lines
drivers/net/wireless/b43/phy_common.c +10
-0+u32 tmp =abs (val); +u8 nbits =0 ; + +while (tmp !=0 ) { + nbits++; + tmp >>=1 ; + } + +return nbits; +}
We already have fls() in bitops.h
I think the following call would be equivalent:
x = fls(abs(val));
So we don't need our own implementation in phy_common.c. Just use the standard funcs.
Signature · 1 line
Greetings, Michael.