rt2x00: add RXDCOC calibration for MT7620
PATCH 6/15 rt2x00: add RXDCOC calibration for MT7620
From: Tomislav Požega <[email protected]>
Add RXDCOC calibration code from mtk driver.
Signed-off-by Daniel Golle <[email protected]>
[fixed typo reported by Serge Vasilugin <[email protected]>]
Signed-off-by Tomislav Požega <[email protected]>
--- .../net/wireless/ralink/rt2x00/rt2800lib.c | 65 +++++++++++++++++++ 1 file changed, 65 insertions(+)
drivers/net/wireless/ralink/rt2x00/rt2800lib.c +65 -0
@@ -8631,6 +8631,70 @@ static void rt2800_r_calibration(struct rt2x00_dev *rt2x00dev)rt2800_register_write (rt2x00dev,PWR_PIN_CFG ,MAC_PWR_PIN_CFG ); } +static void rt2800_rxdcoc_calibration (struct rt2x00_dev *rt2x00dev) +{ +u8 bbpreg =0 ; +u32 macvalue =0 , macvalue1 =0 ; +u8 saverfb0r2, saverfb5r4, saverfb7r4, rfvalue; +int i; + + saverfb0r2 =rt2800_rfcsr_read_bank (rt2x00dev,0 ,2 ); + rfvalue = saverfb0r2; + rfvalue |=0x03 ; +rt2800_rfcsr_write_bank (rt2x00dev,0 ,2 , rfvalue); + +rt2800_bbp_write (rt2x00dev,158 ,141 ); + bbpreg =rt2800_bbp_read (rt2x00dev,159 ); + bbpreg |=0x10 ; +rt2800_bbp_write (rt2x00dev,159 , bbpreg); + + macvalue =rt2800_register_read (rt2x00dev,MAC_SYS_CTRL ); +rt2800_register_write (rt2x00dev,MAC_SYS_CTRL ,0x8 ); + +for (i =0 ; i <10000 ; i++) { + macvalue1 =rt2800_register_read (rt2x00dev,MAC_STATUS_CFG ); +if (macvalue1 &0x1 ) +usleep_range (50 ,100 ); +else +break ; + } + + saverfb5r4 =rt2800_rfcsr_read_bank (rt2x00dev,5 ,4 ); + saverfb7r4 =rt2800_rfcsr_read_bank (rt2x00dev,7 ,4 ); + saverfb5r4 = saverfb5r4 & (~0x40 ); + saverfb7r4 = saverfb7r4 & (~0x40 ); +rt2800_rfcsr_write_dccal (rt2x00dev,4 ,0x64 ); +rt2800_rfcsr_write_bank (rt2x00dev,5 ,4 , saverfb5r4); +rt2800_rfcsr_write_bank (rt2x00dev,7 ,4 , saverfb7r4); + +rt2800_bbp_write (rt2x00dev,158 ,141 ); + bbpreg =rt2800_bbp_read (rt2x00dev,159 ); + bbpreg = bbpreg & (~0x40 ); +rt2800_bbp_write (rt2x00dev,159 , bbpreg); + bbpreg |=0x48 ; +rt2800_bbp_write (rt2x00dev,159 , bbpreg); + +for (i =0 ; i <10000 ; i++) { + bbpreg =rt2800_bbp_read (rt2x00dev,159 ); +if ((bbpreg &0x40 ) ==0 ) +break ; +usleep_range (50 ,100 ); + } + + bbpreg =rt2800_bbp_read (rt2x00dev,159 ); + bbpreg = bbpreg & (~0x40 ); +rt2800_bbp_write (rt2x00dev,159 , bbpreg); + +rt2800_register_write (rt2x00dev,MAC_SYS_CTRL , macvalue); + +rt2800_bbp_write (rt2x00dev,158 ,141 ); + bbpreg =rt2800_bbp_read (rt2x00dev,159 ); + bbpreg &= (~0x10 ); +rt2800_bbp_write (rt2x00dev,159 , bbpreg); + +rt2800_rfcsr_write_bank (rt2x00dev,0 ,2 , saverfb0r2); +} +static void rt2800_bbp_core_soft_reset (struct rt2x00_dev *rt2x00dev,bool set_bw,bool is_ht40) {
@@ -9240,6 +9304,7 @@ static void rt2800_init_rfcsr_6352(struct rt2x00_dev *rt2x00dev)rt2800_r_calibration (rt2x00dev);rt2800_rf_self_txdc_cal (rt2x00dev); +rt2800_rxdcoc_calibration (rt2x00dev);rt2800_bw_filter_calibration (rt2x00dev, true);rt2800_bw_filter_calibration (rt2x00dev, false); }
Signature · 1 line
2.37.3