phy.c (4353dd3b70783ebbc83fcf12d9c0af3fbab0223b) | phy.c (fc637a860a825e934886498874f9f8372798a462) |
---|---|
1// SPDX-License-Identifier: GPL-2.0 OR BSD-3-Clause 2/* Copyright(c) 2018-2019 Realtek Corporation 3 */ 4 5#include <linux/bcd.h> 6 7#include "main.h" 8#include "reg.h" --- 126 unchanged lines hidden (view full) --- 135 dm_info->igi_history[0] = rtw_read32_mask(rtwdev, addr, mask); 136 rtw_phy_cck_pd_init(rtwdev); 137} 138 139void rtw_phy_dig_write(struct rtw_dev *rtwdev, u8 igi) 140{ 141 struct rtw_chip_info *chip = rtwdev->chip; 142 struct rtw_hal *hal = &rtwdev->hal; | 1// SPDX-License-Identifier: GPL-2.0 OR BSD-3-Clause 2/* Copyright(c) 2018-2019 Realtek Corporation 3 */ 4 5#include <linux/bcd.h> 6 7#include "main.h" 8#include "reg.h" --- 126 unchanged lines hidden (view full) --- 135 dm_info->igi_history[0] = rtw_read32_mask(rtwdev, addr, mask); 136 rtw_phy_cck_pd_init(rtwdev); 137} 138 139void rtw_phy_dig_write(struct rtw_dev *rtwdev, u8 igi) 140{ 141 struct rtw_chip_info *chip = rtwdev->chip; 142 struct rtw_hal *hal = &rtwdev->hal; |
143 const struct rtw_hw_reg *dig_cck = &chip->dig_cck[0]; |
|
143 u32 addr, mask; 144 u8 path; 145 | 144 u32 addr, mask; 145 u8 path; 146 |
147 if (dig_cck) 148 rtw_write32_mask(rtwdev, dig_cck->addr, dig_cck->mask, igi >> 1); 149 |
|
146 for (path = 0; path < hal->rf_path_num; path++) { 147 addr = chip->dig[path].addr; 148 mask = chip->dig[path].mask; 149 rtw_write32_mask(rtwdev, addr, mask, igi); 150 } 151} 152 153static void rtw_phy_stat_false_alarm(struct rtw_dev *rtwdev) --- 520 unchanged lines hidden (view full) --- 674u32 rtw_phy_read_rf(struct rtw_dev *rtwdev, enum rtw_rf_path rf_path, 675 u32 addr, u32 mask) 676{ 677 struct rtw_hal *hal = &rtwdev->hal; 678 struct rtw_chip_info *chip = rtwdev->chip; 679 const u32 *base_addr = chip->rf_base_addr; 680 u32 val, direct_addr; 681 | 150 for (path = 0; path < hal->rf_path_num; path++) { 151 addr = chip->dig[path].addr; 152 mask = chip->dig[path].mask; 153 rtw_write32_mask(rtwdev, addr, mask, igi); 154 } 155} 156 157static void rtw_phy_stat_false_alarm(struct rtw_dev *rtwdev) --- 520 unchanged lines hidden (view full) --- 678u32 rtw_phy_read_rf(struct rtw_dev *rtwdev, enum rtw_rf_path rf_path, 679 u32 addr, u32 mask) 680{ 681 struct rtw_hal *hal = &rtwdev->hal; 682 struct rtw_chip_info *chip = rtwdev->chip; 683 const u32 *base_addr = chip->rf_base_addr; 684 u32 val, direct_addr; 685 |
682 if (rf_path >= hal->rf_path_num) { | 686 if (rf_path >= hal->rf_phy_num) { |
683 rtw_err(rtwdev, "unsupported rf path (%d)\n", rf_path); 684 return INV_RF_DATA; 685 } 686 687 addr &= 0xff; 688 direct_addr = base_addr[rf_path] + (addr << 2); 689 mask &= RFREG_MASK; 690 691 val = rtw_read32_mask(rtwdev, direct_addr, mask); 692 693 return val; 694} 695 | 687 rtw_err(rtwdev, "unsupported rf path (%d)\n", rf_path); 688 return INV_RF_DATA; 689 } 690 691 addr &= 0xff; 692 direct_addr = base_addr[rf_path] + (addr << 2); 693 mask &= RFREG_MASK; 694 695 val = rtw_read32_mask(rtwdev, direct_addr, mask); 696 697 return val; 698} 699 |
700u32 rtw_phy_read_rf_sipi(struct rtw_dev *rtwdev, enum rtw_rf_path rf_path, 701 u32 addr, u32 mask) 702{ 703 struct rtw_hal *hal = &rtwdev->hal; 704 struct rtw_chip_info *chip = rtwdev->chip; 705 const struct rtw_rf_sipi_addr *rf_sipi_addr; 706 const struct rtw_rf_sipi_addr *rf_sipi_addr_a; 707 u32 val32; 708 u32 en_pi; 709 u32 r_addr; 710 u32 shift; 711 712 if (rf_path >= hal->rf_phy_num) { 713 rtw_err(rtwdev, "unsupported rf path (%d)\n", rf_path); 714 return INV_RF_DATA; 715 } 716 717 if (!chip->rf_sipi_read_addr) { 718 rtw_err(rtwdev, "rf_sipi_read_addr isn't defined\n"); 719 return INV_RF_DATA; 720 } 721 722 rf_sipi_addr = &chip->rf_sipi_read_addr[rf_path]; 723 rf_sipi_addr_a = &chip->rf_sipi_read_addr[RF_PATH_A]; 724 725 addr &= 0xff; 726 727 val32 = rtw_read32(rtwdev, rf_sipi_addr->hssi_2); 728 val32 = (val32 & ~LSSI_READ_ADDR_MASK) | (addr << 23); 729 rtw_write32(rtwdev, rf_sipi_addr->hssi_2, val32); 730 731 /* toggle read edge of path A */ 732 val32 = rtw_read32(rtwdev, rf_sipi_addr_a->hssi_2); 733 rtw_write32(rtwdev, rf_sipi_addr_a->hssi_2, val32 & ~LSSI_READ_EDGE_MASK); 734 rtw_write32(rtwdev, rf_sipi_addr_a->hssi_2, val32 | LSSI_READ_EDGE_MASK); 735 736 udelay(120); 737 738 en_pi = rtw_read32_mask(rtwdev, rf_sipi_addr->hssi_1, BIT(8)); 739 r_addr = en_pi ? rf_sipi_addr->lssi_read_pi : rf_sipi_addr->lssi_read; 740 741 val32 = rtw_read32_mask(rtwdev, r_addr, LSSI_READ_DATA_MASK); 742 743 shift = __ffs(mask); 744 745 return (val32 & mask) >> shift; 746} 747 |
|
696bool rtw_phy_write_rf_reg_sipi(struct rtw_dev *rtwdev, enum rtw_rf_path rf_path, 697 u32 addr, u32 mask, u32 data) 698{ 699 struct rtw_hal *hal = &rtwdev->hal; 700 struct rtw_chip_info *chip = rtwdev->chip; 701 u32 *sipi_addr = chip->rf_sipi_addr; 702 u32 data_and_addr; 703 u32 old_data = 0; 704 u32 shift; 705 | 748bool rtw_phy_write_rf_reg_sipi(struct rtw_dev *rtwdev, enum rtw_rf_path rf_path, 749 u32 addr, u32 mask, u32 data) 750{ 751 struct rtw_hal *hal = &rtwdev->hal; 752 struct rtw_chip_info *chip = rtwdev->chip; 753 u32 *sipi_addr = chip->rf_sipi_addr; 754 u32 data_and_addr; 755 u32 old_data = 0; 756 u32 shift; 757 |
706 if (rf_path >= hal->rf_path_num) { | 758 if (rf_path >= hal->rf_phy_num) { |
707 rtw_err(rtwdev, "unsupported rf path (%d)\n", rf_path); 708 return false; 709 } 710 711 addr &= 0xff; 712 mask &= RFREG_MASK; 713 714 if (mask != RFREG_MASK) { | 759 rtw_err(rtwdev, "unsupported rf path (%d)\n", rf_path); 760 return false; 761 } 762 763 addr &= 0xff; 764 mask &= RFREG_MASK; 765 766 if (mask != RFREG_MASK) { |
715 old_data = rtw_phy_read_rf(rtwdev, rf_path, addr, RFREG_MASK); | 767 old_data = chip->ops->read_rf(rtwdev, rf_path, addr, RFREG_MASK); |
716 717 if (old_data == INV_RF_DATA) { 718 rtw_err(rtwdev, "Write fail, rf is disabled\n"); 719 return false; 720 } 721 722 shift = __ffs(mask); 723 data = ((old_data) & (~mask)) | (data << shift); --- 11 unchanged lines hidden (view full) --- 735bool rtw_phy_write_rf_reg(struct rtw_dev *rtwdev, enum rtw_rf_path rf_path, 736 u32 addr, u32 mask, u32 data) 737{ 738 struct rtw_hal *hal = &rtwdev->hal; 739 struct rtw_chip_info *chip = rtwdev->chip; 740 const u32 *base_addr = chip->rf_base_addr; 741 u32 direct_addr; 742 | 768 769 if (old_data == INV_RF_DATA) { 770 rtw_err(rtwdev, "Write fail, rf is disabled\n"); 771 return false; 772 } 773 774 shift = __ffs(mask); 775 data = ((old_data) & (~mask)) | (data << shift); --- 11 unchanged lines hidden (view full) --- 787bool rtw_phy_write_rf_reg(struct rtw_dev *rtwdev, enum rtw_rf_path rf_path, 788 u32 addr, u32 mask, u32 data) 789{ 790 struct rtw_hal *hal = &rtwdev->hal; 791 struct rtw_chip_info *chip = rtwdev->chip; 792 const u32 *base_addr = chip->rf_base_addr; 793 u32 direct_addr; 794 |
743 if (rf_path >= hal->rf_path_num) { | 795 if (rf_path >= hal->rf_phy_num) { |
744 rtw_err(rtwdev, "unsupported rf path (%d)\n", rf_path); 745 return false; 746 } 747 748 addr &= 0xff; 749 direct_addr = base_addr[rf_path] + (addr << 2); 750 mask &= RFREG_MASK; 751 --- 1332 unchanged lines hidden --- | 796 rtw_err(rtwdev, "unsupported rf path (%d)\n", rf_path); 797 return false; 798 } 799 800 addr &= 0xff; 801 direct_addr = base_addr[rf_path] + (addr << 2); 802 mask &= RFREG_MASK; 803 --- 1332 unchanged lines hidden --- |