コード例 #1
0
ファイル: phy.c プロジェクト: 791254467/u8500_kernel
void rtl92ce_phy_set_rf_reg(struct ieee80211_hw *hw,
			    enum radio_path rfpath,
			    u32 regaddr, u32 bitmask, u32 data)
{
	struct rtl_priv *rtlpriv = rtl_priv(hw);
	struct rtl_phy *rtlphy = &(rtlpriv->phy);
	u32 original_value, bitshift;
	unsigned long flags;

	RT_TRACE(rtlpriv, COMP_RF, DBG_TRACE,
		 ("regaddr(%#x), bitmask(%#x), data(%#x), rfpath(%#x)\n",
		  regaddr, bitmask, data, rfpath));

	spin_lock_irqsave(&rtlpriv->locks.rf_lock, flags);

	if (rtlphy->rf_mode != RF_OP_BY_FW) {
		if (bitmask != RFREG_OFFSET_MASK) {
			original_value = _rtl92c_phy_rf_serial_read(hw,
								    rfpath,
								    regaddr);
			bitshift = _rtl92c_phy_calculate_bit_shift(bitmask);
			data =
			    ((original_value & (~bitmask)) |
			     (data << bitshift));
		}

		_rtl92c_phy_rf_serial_write(hw, rfpath, regaddr, data);
	} else {
		if (bitmask != RFREG_OFFSET_MASK) {
			original_value = _rtl92c_phy_fw_rf_serial_read(hw,
								       rfpath,
								       regaddr);
			bitshift = _rtl92c_phy_calculate_bit_shift(bitmask);
			data =
			    ((original_value & (~bitmask)) |
			     (data << bitshift));
		}
		_rtl92c_phy_fw_rf_serial_write(hw, rfpath, regaddr, data);
	}

	spin_unlock_irqrestore(&rtlpriv->locks.rf_lock, flags);

	RT_TRACE(rtlpriv, COMP_RF, DBG_TRACE, ("regaddr(%#x), "
					       "bitmask(%#x), data(%#x), "
					       "rfpath(%#x)\n", regaddr,
					       bitmask, data, rfpath));
}
コード例 #2
0
void rtl92cu_phy_set_rf_reg( struct ieee80211_hw *hw,
			    enum radio_path rfpath,
			    u32 regaddr, u32 bitmask, u32 data )
{
	struct rtl_priv *rtlpriv = rtl_priv( hw );
	struct rtl_phy *rtlphy = &( rtlpriv->phy );
	u32 original_value, bitshift;

	RT_TRACE( rtlpriv, COMP_RF, DBG_TRACE,
		 "regaddr(%#x), bitmask(%#x), data(%#x), rfpath(%#x)\n",
		 regaddr, bitmask, data, rfpath );
	if ( rtlphy->rf_mode != RF_OP_BY_FW ) {
		if ( bitmask != RFREG_OFFSET_MASK ) {
			original_value = _rtl92c_phy_rf_serial_read( hw,
								    rfpath,
								    regaddr );
			bitshift = _rtl92c_phy_calculate_bit_shift( bitmask );
			data =
			    ( ( original_value & ( ~bitmask ) ) |
			     ( data << bitshift ) );
		}
		_rtl92c_phy_rf_serial_write( hw, rfpath, regaddr, data );
	} else {
		if ( bitmask != RFREG_OFFSET_MASK ) {
			original_value = _rtl92c_phy_fw_rf_serial_read( hw,
								       rfpath,
								       regaddr );
			bitshift = _rtl92c_phy_calculate_bit_shift( bitmask );
			data =
			    ( ( original_value & ( ~bitmask ) ) |
			     ( data << bitshift ) );
		}
		_rtl92c_phy_fw_rf_serial_write( hw, rfpath, regaddr, data );
	}
	RT_TRACE( rtlpriv, COMP_RF, DBG_TRACE,
		 "regaddr(%#x), bitmask(%#x), data(%#x), rfpath(%#x)\n",
		 regaddr, bitmask, data, rfpath );
}