Received: by 2002:a25:868d:0:0:0:0:0 with SMTP id z13csp272248ybk; Tue, 19 May 2020 22:24:26 -0700 (PDT) X-Google-Smtp-Source: ABdhPJyCq4GYf+Kb/aPxA3TQ+4M25HjOWkghS2pBNePtx024XZlPHJ+wwYMwO8QVWEg+IZoBSLIj X-Received: by 2002:a17:906:4e87:: with SMTP id v7mr2100152eju.431.1589952265974; Tue, 19 May 2020 22:24:25 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1589952265; cv=none; d=google.com; s=arc-20160816; b=n2df+pNR77Qc7J8lI9cAsaPrxbWZYmtmiS1SCj/ywHEheTI5iy6Yv+Ya8d8K8lZlB8 6MxIAFL+PjFaHqA/W5JXm9EmV6QG6l4O09Hgg8v/iVvqdhr07ULctx8iSmh+Tz5m/gHA +OAbqw8xWBhismF9jPHnaDivN7c/Dd2D3nskxiT9/+5TGTombekQubSVW/8f7Go+PIjB qKKxchDRSZh7LjTuqwaTTtgI/W4WRiQScI9niNgTDCGgWDAbkbB+mHG5kOeS8ZZ5Zx+l zlaNNW89LtTnM+p+BGwsAIcjh3re+UHyIyQq1c5H+hBHAO8LT4x2kjRw7wf6Gq3GqpSl 5ubA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:authenticated-by; bh=YWZgpX7Ma/jCjIXzPvvBv2rI3DaJbg7/w5tWCXafNww=; b=VnV/q7dGkFt7p5Q3bZOK8V7kmNuv75XIRpRmVNHBRzJeTaz3jxC5xrt80VU0skSY1D dwMn6A5eJNNy0Iz3EQsTtTXTuOdbpZZlciGldQUXe9rcQ5tD4EW6xhCHfqHTCpAHGBu3 0x+sj9jt4Y7IIwQ/xzNm5cG4FmdJ9cvdlSmoz7lg2P9zc9SQWcEQqsf0XDVH3qAPzN1h ZCx3WPXMvaimQ/IWqvfeUB2tpAF6o+DFxyCGeRzSNr0mBkVareI8HRZhHfRtdoKuxqlG hBZjoECzK4McJpujdbRIvgDyy3HRCuCemnh5uvKmGWUkmGvGCnO2Q1E0+06GG2bWycpX JKUw== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-wireless-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-wireless-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id jz17si1197193ejb.282.2020.05.19.22.23.49; Tue, 19 May 2020 22:24:25 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-wireless-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-wireless-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-wireless-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726621AbgETFXp (ORCPT + 99 others); Wed, 20 May 2020 01:23:45 -0400 Received: from rtits2.realtek.com ([211.75.126.72]:38476 "EHLO rtits2.realtek.com.tw" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726475AbgETFXo (ORCPT ); Wed, 20 May 2020 01:23:44 -0400 Authenticated-By: X-SpamFilter-By: ArmorX SpamTrap 5.69 with qID 04K5Nev16011961, This message is accepted by code: ctloc85258 Received: from mail.realtek.com (rtexmb06.realtek.com.tw[172.21.6.99]) by rtits2.realtek.com.tw (8.15.2/2.66/5.86) with ESMTPS id 04K5Nev16011961 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128 verify=NOT); Wed, 20 May 2020 13:23:40 +0800 Received: from RTEXMB04.realtek.com.tw (172.21.6.97) by RTEXMB06.realtek.com.tw (172.21.6.99) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.1779.2; Wed, 20 May 2020 13:23:39 +0800 Received: from localhost.localdomain (172.21.68.128) by RTEXMB04.realtek.com.tw (172.21.6.97) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.1779.2; Wed, 20 May 2020 13:23:38 +0800 From: To: CC: , Subject: [PATCH 2/7] rtw88: 8821c: add set tx power index Date: Wed, 20 May 2020 13:23:30 +0800 Message-ID: <20200520052335.22466-3-yhchuang@realtek.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20200520052335.22466-1-yhchuang@realtek.com> References: <20200520052335.22466-1-yhchuang@realtek.com> MIME-Version: 1.0 Content-Type: text/plain X-Originating-IP: [172.21.68.128] X-ClientProxiedBy: RTEXMB02.realtek.com.tw (172.21.6.95) To RTEXMB04.realtek.com.tw (172.21.6.97) Sender: linux-wireless-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-wireless@vger.kernel.org From: Tzu-En Huang To configure the transmit power of 8821c, implements trasmit power index setting callback function for 8821c, which is very similar to the callback function of 8822b. Signed-off-by: Tzu-En Huang Signed-off-by: Yan-Hsuan Chuang --- drivers/net/wireless/realtek/rtw88/rtw8821c.c | 39 +++++++++++++++++++ 1 file changed, 39 insertions(+) diff --git a/drivers/net/wireless/realtek/rtw88/rtw8821c.c b/drivers/net/wireless/realtek/rtw88/rtw8821c.c index baf0cf5a35b3..ce580dace83c 100644 --- a/drivers/net/wireless/realtek/rtw88/rtw8821c.c +++ b/drivers/net/wireless/realtek/rtw88/rtw8821c.c @@ -162,6 +162,44 @@ static void rtw8821c_cfg_ldo25(struct rtw_dev *rtwdev, bool enable) rtw_write8(rtwdev, REG_LDO_EFUSE_CTRL + 3, ldo_pwr); } +static void +rtw8821c_set_tx_power_index_by_rate(struct rtw_dev *rtwdev, u8 path, u8 rs) +{ + struct rtw_hal *hal = &rtwdev->hal; + static const u32 offset_txagc[2] = {0x1d00, 0x1d80}; + static u32 phy_pwr_idx; + u8 rate, rate_idx, pwr_index, shift; + int j; + + for (j = 0; j < rtw_rate_size[rs]; j++) { + rate = rtw_rate_section[rs][j]; + pwr_index = hal->tx_pwr_tbl[path][rate]; + shift = rate & 0x3; + phy_pwr_idx |= ((u32)pwr_index << (shift * 8)); + if (shift == 0x3 || rate == DESC_RATEVHT1SS_MCS9) { + rate_idx = rate & 0xfc; + rtw_write32(rtwdev, offset_txagc[path] + rate_idx, + phy_pwr_idx); + phy_pwr_idx = 0; + } + } +} + +static void rtw8821c_set_tx_power_index(struct rtw_dev *rtwdev) +{ + struct rtw_hal *hal = &rtwdev->hal; + int rs, path; + + for (path = 0; path < hal->rf_path_num; path++) { + for (rs = 0; rs < RTW_RATE_SECTION_MAX; rs++) { + if (rs == RTW_RATE_SECTION_HT_2S || + rs == RTW_RATE_SECTION_VHT_2S) + continue; + rtw8821c_set_tx_power_index_by_rate(rtwdev, path, rs); + } + } +} + static struct rtw_pwr_seq_cmd trans_carddis_to_cardemu_8821c[] = { {0x0086, RTW_PWR_CUT_ALL_MSK, @@ -591,6 +629,7 @@ static struct rtw_chip_ops rtw8821c_ops = { .read_rf = rtw_phy_read_rf, .write_rf = rtw_phy_write_rf_reg_sipi, .set_antenna = NULL, + .set_tx_power_index = rtw8821c_set_tx_power_index, .cfg_ldo25 = rtw8821c_cfg_ldo25, }; -- 2.17.1