From nobody Tue Sep 29 02:32:56 2026 Received: from mail-lf1-f52.google.com (mail-lf1-f52.google.com [209.85.167.52]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 2D5DD3D5668 for ; Thu, 13 Aug 2026 05:48:00 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.167.52 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786600083; cv=none; b=adeoe9e9XixCgo/5HT36f6Ph/e+uP+2DWXOX6ZeX8yCE2VJiYyBk0JdywhDapJ6qgs9iQ92FLrOvuHLWGQ+n4LqkbPluYpAasTkMFh5zDJvp0ZPOwjm6t9Whm2awZCHeCPHlkJykiHsR78gSzIJIYDvUhxRm1JMRqOWDfKcHmFk= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786600083; c=relaxed/simple; bh=jP70uOP2BCSma+JgjdwArgM9EWTT6A1QGv3/F1F0GvA=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=I2r9DBAduDgPMjfr6u4OPSIJa4B3yOd/kqB2ajQ1Gy2MP/wfKpV0KkzSCWtidDdcQxPjT30ftrLyl6VwFMqXXv132QKBxdVbrVXLzSjN/5/Im/5Bj0p7Ccn1XVVQhRLEuT4vk1B9P9JIPcJ9tyUYa7D2Q8G3cnYJ+lixBwPwTOg= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=YdPXeqd9; arc=none smtp.client-ip=209.85.167.52 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="YdPXeqd9" Received: by mail-lf1-f52.google.com with SMTP id 2adb3069b0e04-5aeba09900bso1320320e87.2 for ; Wed, 12 Aug 2026 22:48:00 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1786600079; x=1787204879; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=xjVce0bOiDbqJh+cO9vi5Yx6lQL92Gy5xiafEpIBLzI=; b=YdPXeqd9X8twUHJ3KSxgaJFN/tQxtLoxSRh8LanqPSM8XOCXB42fFHFPKbbWLhIKuj pFKHRnQAXRSfVs3MEExFo+TnKFZmSXVPfIZVVtJrKgLCz+DFlOThjLTFvVRoKnp2oZPg O9m+L3HGip+aABq3rJ9Kp6vB7gOl2GoFiqI8T6qchZxLemcfKIZU9isvWG6UcVg1J9EU KI4Gvm7t/moYht52JoVzdfk3vE0K+dGK1/clSfAa4+PiYhCV6LEqNLDYF5cQHjhkpefI iF34W6gL1v1ubdZP0F/wSvo/dgeg6J7fmmXYzHl5dZq4X8qMTJW1Cj+Clf7bbw/PjMlb 4yjg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1786600079; x=1787204879; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=xjVce0bOiDbqJh+cO9vi5Yx6lQL92Gy5xiafEpIBLzI=; b=YhzHoNaG86ZZCeGhDiPVV7VeYv+/NZIgSBR9WdJ26uB6o/iQbxUAs0VumbuahTWs/J M3EbSSBWa9SIh/KwK2WR7uZTZUv9L+4sen+R9J+BSqUE5hVo7uuRsJMQ/1pavwuCGWH4 /Fo1VwGqYRI9Bh2FeTHqgY7gziQ+SOAWj6CIA8kUQ/Ru6/dVp05QoA+6rNI0sQBscPVe hNN2Y0u+Wk/KGasEP9FU1tRV7o7kPBAyIccd3mfjkuHa/GyCRNpvKR0gVrszdPYSldqZ bQqs0fdRHWxuUz48yEXfHqix9XYL13W3I31QwYMa9vkEys6m+IW+9PGAgwQgLe33fGiB u3tw== X-Forwarded-Encrypted: i=1; AHgh+RogtBV4WmOH0UR+pNDArUQqBQApqgi0lOClZ3X+Kj4YSbb2240WgXrEhZMSu5LEmUXQrJ2y1I6t8lvfm1Q=@vger.kernel.org X-Gm-Message-State: AOJu0YzDXuAaGm6zerr2wiYcVClqWm0tjzWHX9BkZj8Y0CZ+v2vEmK6n AnyuYjrjBq+es0tsi8kq7hvuBtmu52WY6NTxqP0nmc+nYqdCJtER9H5A X-Gm-Gg: AR+sD11PZweZXz0KJEYHcL5PWofDK58qEQzs/6X8q3Ed9UyPuZmUuPw2Ej1XCjElaQz Z4tGi7FmKtP0vsEYaEaRjAYqASki0XMq4idzf09/HJGfVTKdvuJZkI9zDBSGUV4VJkS/yPcsnxt HpaNnVjCp1QnM5pMyd0BCPE3n/t5cgcF7Vis8LMJ8Hg5RFHPQ/sBfIeNdRdokYHN33QMgdzQKVD dCGv8zAGM08AVv+P6FoRoaP/8akSQH9nlxxGGhbW8lm+2wV9YkmIi+5OBn/OYQP+uB+Iv/Cpriu gCVn+sk/wc2ZWyEtX3AyjwHrHktldfhZx88wRTeEdsqtt5Ef+EIefsmr+VswT7MrrttaWcwzxiQ X+edIV2dR5EJhg7bOnTqFkK9r8y74RcxVCI4gtwCXXEtQXfEY4Qz/wNBepSjhlGgAk/TZuCvjtj 1+wyk5b7lR4jOlstogPu0BkufK2H+NoTSs4LIE5yqbA1VKlBTO8r6aklUzC3wQXZxnWhYzEryu2 3WiRA4blsP+Y0IYNI5XbpJrihHyINEtSBRfFyW+MAq175xmMvo0nLNF920sGA== X-Received: by 2002:a05:6512:3ba3:b0:5ae:b969:417d with SMTP id 2adb3069b0e04-5b453d0bd39mr460817e87.0.1786600078616; Wed, 12 Aug 2026 22:47:58 -0700 (PDT) Received: from archlinux ([94.180.96.85]) by smtp.gmail.com with ESMTPSA id 2adb3069b0e04-5b4539e9673sm252483e87.23.2026.08.12.22.47.57 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 12 Aug 2026 22:47:58 -0700 (PDT) From: Arsenii Pashchenko To: pkshih@realtek.com Cc: linux-wireless@vger.kernel.org, linux-kernel@vger.kernel.org, Arsenii Pashchenko Subject: [PATCH wireless-next v2 1/4] wifi: rtw88: rtw8822c: convert DAC IQ buffers and signatures to s32 Date: Thu, 13 Aug 2026 12:47:29 +0700 Message-ID: <12e170032b884c8693a08c780fb8aa677aa4af4c.1786599645.git.ulijg308@gmail.com> X-Mailer: git-send-email 2.55.0 In-Reply-To: References: Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Prepare the DAC IQ calibration path for signed math by converting the temporary stack arrays 'iv' and 'qv' from u32 to s32. Update all internal function signatures to accept s32 pointers. To guarantee bisectability, wrap the existing unsigned logic in temporary casts to u32. This maintains identical mathematical behavior and avoids any compiler sign-compare warnings. Signed-off-by: Arsenii Pashchenko --- drivers/net/wireless/realtek/rtw88/rtw8822c.c | 49 +++++++++++-------- 1 file changed, 28 insertions(+), 21 deletions(-) diff --git a/drivers/net/wireless/realtek/rtw88/rtw8822c.c b/drivers/net/wi= reless/realtek/rtw88/rtw8822c.c index 244c80264..896e3e7b9 100644 --- a/drivers/net/wireless/realtek/rtw88/rtw8822c.c +++ b/drivers/net/wireless/realtek/rtw88/rtw8822c.c @@ -153,9 +153,12 @@ static void rtw8822c_dac_restore_reg(struct rtw_dev *r= twdev, } } =20 -static void rtw8822c_rf_minmax_cmp(struct rtw_dev *rtwdev, u32 value, - u32 *min, u32 *max) +static void rtw8822c_rf_minmax_cmp(struct rtw_dev *rtwdev, s32 value_s32, + s32 *min_s32, s32 *max_s32) { + u32 value =3D (u32)value_s32; + u32 *min =3D (u32 *)min_s32; + u32 *max =3D (u32 *)max_s32; if (value >=3D 0x200) { if (*min >=3D 0x200) { if (*min > value) @@ -182,8 +185,10 @@ static void rtw8822c_rf_minmax_cmp(struct rtw_dev *rtw= dev, u32 value, } } =20 -static void __rtw8822c_dac_iq_sort(struct rtw_dev *rtwdev, u32 *v1, u32 *v= 2) +static void __rtw8822c_dac_iq_sort(struct rtw_dev *rtwdev, s32 *v1_s32, s3= 2 *v2_s32) { + u32 *v1 =3D (u32 *)v1_s32; + u32 *v2 =3D (u32 *)v2_s32; if (*v1 >=3D 0x200 && *v2 >=3D 0x200) { if (*v1 > *v2) swap(*v1, *v2); @@ -195,7 +200,7 @@ static void __rtw8822c_dac_iq_sort(struct rtw_dev *rtwd= ev, u32 *v1, u32 *v2) } } =20 -static void rtw8822c_dac_iq_sort(struct rtw_dev *rtwdev, u32 *iv, u32 *qv) +static void rtw8822c_dac_iq_sort(struct rtw_dev *rtwdev, s32 *iv, s32 *qv) { u32 i, j; =20 @@ -207,8 +212,9 @@ static void rtw8822c_dac_iq_sort(struct rtw_dev *rtwdev= , u32 *iv, u32 *qv) } } =20 -static void rtw8822c_dac_iq_offset(struct rtw_dev *rtwdev, u32 *vec, u32 *= val) +static void rtw8822c_dac_iq_offset(struct rtw_dev *rtwdev, s32 *vec_s32, u= 32 *val) { + u32 *vec =3D (u32 *)vec_s32; u32 p, m, t, i; =20 m =3D 0; @@ -271,8 +277,9 @@ static u32 rtw8822c_get_path_read_addr(u8 path) return base_addr; } =20 -static bool rtw8822c_dac_iq_check(struct rtw_dev *rtwdev, u32 value) +static bool rtw8822c_dac_iq_check(struct rtw_dev *rtwdev, s32 value_s32) { + u32 value =3D (u32)value_s32; bool ret =3D true; =20 if ((value >=3D 0x200 && (0x400 - value) > 0x64) || @@ -284,7 +291,7 @@ static bool rtw8822c_dac_iq_check(struct rtw_dev *rtwde= v, u32 value) return ret; } =20 -static void rtw8822c_dac_cal_iq_sample(struct rtw_dev *rtwdev, u32 *iv, u3= 2 *qv) +static void rtw8822c_dac_cal_iq_sample(struct rtw_dev *rtwdev, s32 *iv, s3= 2 *qv) { u32 temp; int i =3D 0, cnt =3D 0; @@ -292,8 +299,8 @@ static void rtw8822c_dac_cal_iq_sample(struct rtw_dev *= rtwdev, u32 *iv, u32 *qv) while (i < DACK_SN_8822C && cnt < 10000) { cnt++; temp =3D rtw_read32_mask(rtwdev, 0x2dbc, 0x3fffff); - iv[i] =3D (temp & 0x3ff000) >> 12; - qv[i] =3D temp & 0x3ff; + iv[i] =3D (s32)((temp & 0x3ff000) >> 12); + qv[i] =3D (s32)(temp & 0x3ff); =20 if (rtw8822c_dac_iq_check(rtwdev, iv[i]) && rtw8822c_dac_iq_check(rtwdev, qv[i])) @@ -302,7 +309,7 @@ static void rtw8822c_dac_cal_iq_sample(struct rtw_dev *= rtwdev, u32 *iv, u32 *qv) } =20 static void rtw8822c_dac_cal_iq_search(struct rtw_dev *rtwdev, - u32 *iv, u32 *qv, + s32 *iv, s32 *qv, u32 *i_value, u32 *q_value) { u32 i_max =3D 0, q_max =3D 0, i_min =3D 0, q_min =3D 0; @@ -311,13 +318,13 @@ static void rtw8822c_dac_cal_iq_search(struct rtw_dev= *rtwdev, int i, cnt =3D 0; =20 do { - i_min =3D iv[0]; - i_max =3D iv[0]; - q_min =3D qv[0]; - q_max =3D qv[0]; + i_min =3D (u32)iv[0]; + i_max =3D (u32)iv[0]; + q_min =3D (u32)qv[0]; + q_max =3D (u32)qv[0]; for (i =3D 0; i < DACK_SN_8822C; i++) { - rtw8822c_rf_minmax_cmp(rtwdev, iv[i], &i_min, &i_max); - rtw8822c_rf_minmax_cmp(rtwdev, qv[i], &q_min, &q_max); + rtw8822c_rf_minmax_cmp(rtwdev, iv[i], (s32 *)&i_min, (s32 *)&i_max); + rtw8822c_rf_minmax_cmp(rtwdev, qv[i], (s32 *)&q_min, (s32 *)&q_max); } =20 if (i_max < 0x200 && i_min < 0x200) @@ -345,11 +352,11 @@ static void rtw8822c_dac_cal_iq_search(struct rtw_dev= *rtwdev, =20 if (i_delta > 5 || q_delta > 5) { temp =3D rtw_read32_mask(rtwdev, 0x2dbc, 0x3fffff); - iv[0] =3D (temp & 0x3ff000) >> 12; - qv[0] =3D temp & 0x3ff; + iv[0] =3D (s32)((temp & 0x3ff000) >> 12); + qv[0] =3D (s32)(temp & 0x3ff); temp =3D rtw_read32_mask(rtwdev, 0x2dbc, 0x3fffff); - iv[DACK_SN_8822C - 1] =3D (temp & 0x3ff000) >> 12; - qv[DACK_SN_8822C - 1] =3D temp & 0x3ff; + iv[DACK_SN_8822C - 1] =3D (s32)((temp & 0x3ff000) >> 12); + qv[DACK_SN_8822C - 1] =3D (s32)(temp & 0x3ff); } else { break; } @@ -362,7 +369,7 @@ static void rtw8822c_dac_cal_iq_search(struct rtw_dev *= rtwdev, static void rtw8822c_dac_cal_rf_mode(struct rtw_dev *rtwdev, u32 *i_value, u32 *q_value) { - u32 iv[DACK_SN_8822C], qv[DACK_SN_8822C]; + s32 iv[DACK_SN_8822C], qv[DACK_SN_8822C]; u32 rf_a, rf_b; =20 rf_a =3D rtw_read_rf(rtwdev, RF_PATH_A, 0x0, RFREG_MASK); --=20 2.55.0 From nobody Tue Sep 29 02:32:56 2026 Received: from mail-lf1-f54.google.com (mail-lf1-f54.google.com [209.85.167.54]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 1F42A411FB7 for ; Thu, 13 Aug 2026 05:48:01 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.167.54 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786600084; cv=none; b=TuaxK1aaAACY0sNN7P0IHtOrDVAFllB8w8Ei1A41/HNIBBJ6RunYkdEiejUhmzmtM1dhzyk2QA4Ozyb8j3rvIVV1CaiHGipW07QvG8hz0hTN+l2ASn6ULu4hpAGPKp90K2prdCRQmzWidmYxg1vFrexcBTb7shZ/MByd+x7CFho= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786600084; c=relaxed/simple; bh=ypHI0S+UNvDNhN5cj1MB0lINoArN61phj1Gchrhibgo=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=qKAJKtP8PMi3wW3b5LXYQa8SiqsNKj33NrGUg/bZ9F1yVN6TDbg0EnOtjGdviGLpKIBnm5O1o/al6znSBSjsV1rVogEdkZREZ0yF/QcCGsk7CpkbPHyWmaXAGFx84ceAxpXxLkQUwc+SzYtMx6vfKiXuYs1YvUeVO8/Rvz9q7/s= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=VShUQGbV; arc=none smtp.client-ip=209.85.167.54 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="VShUQGbV" Received: by mail-lf1-f54.google.com with SMTP id 2adb3069b0e04-5aeb59d54b1so1988526e87.1 for ; Wed, 12 Aug 2026 22:48:01 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1786600080; x=1787204880; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=9SQr3P3H65aB8k8MZd33ziaOzUGlc9kgkH4DtThvPgg=; b=VShUQGbVbGaJ1LKM6y505t7KxLeDQDCHnNRBlRMw/i+HXUqAAzvOJNH1n//x2VJ+ha T8iegZhhNwDSgzkCdaV3QZzW36285YoNXN53WHWAhaE6O81FJpx4r88YfPmapAstc4aL u5tgp3+JJPBr8jmHAYp8cIXiaRdUuW21TAyW+7B6h9Zvw6r/29O9o7G/1VxLhKB7UeUc hH+OjNmWIQWbYvdIZ28VoZvL/oFUTOjaEgnAsXeqh9i+NDaExtuSTML6zKsCwDwoa6Xc vkbbnrH4cc+w9mUXRLfJk0fckfR6TWX+zRz7SDeW5FHgFKykYg2OwN03sXayeeijmkWB IEmQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1786600080; x=1787204880; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=9SQr3P3H65aB8k8MZd33ziaOzUGlc9kgkH4DtThvPgg=; b=H/EJ4BY/qD9Ynat1aTIzuoir8d3Jwl6y8lCmAnuuhtsaq0hYbkX3q9q5z5QAedazCQ GhVnI/tk60nar2ntgGs8hLoVujbFSzqEuBZlwmoVwS7GwVccISqC1Iaqa+PTSZyXpJOT lVXdc5Il4oEfuFfBXCsNlmf4BxAEImrui5fF06okam5YOnRXjP4KLOiR+53wBQx2LNwM x2doi5p5qmV8TVQf/Vti69tisQf3lFtCt3ge8yMyEOgfwswHGoO1howblGG5gyYaolsY fvS2VbdQiZkghrrV+oQ+vyJyCX4DdVQhy84luoY9BKAkzaf4og3O/8/JQXv4P2UZ/QaU 3UBw== X-Forwarded-Encrypted: i=1; AHgh+Ror8vMEyffZFrtWaFj28sWVTQqr3PBEeGKa7Tda3z9mWQJgeawFQcvYykwxb1mXkGWLcYr6GymqWNPBjic=@vger.kernel.org X-Gm-Message-State: AOJu0Yy3MKoqAOo3ZWwElYHv2/okw2pyhrjymB2GR1/Hl6YqkXpP/Nc3 KIC00wq5FuYTHgsrM+kY5BMNG/OeikZUAJEmvfZj22rAPsQjDsbtVez3 X-Gm-Gg: AR+sD10ZbXcf2YHNPFoVNvXaEUaPpxtA2BA5XyuiLbRXWSGBLqEBKOpw9So96pPqvkO XPfBY/AQaE9ugH5IqO0fy/2oG5En/s1y6ZREpsZfkl6tv4aFQ3J2q8dBzPzDtL3ih0yhk6e8mU2 2qAxsVM47D7ITMvg/1ghUAyYw2pG4pTQ9cFGP1FeZRRpadwE+FetGL+6Gn8q9JerQ4wMQTiIkHB RWZXb0HkuCPkbh/3y1fmiXwG1hWZGM9sepFETz+hIVYFLmXaNkEN3i8pFDGprVLVvJaBq8S30H2 IILaWlfhkSTlSJFuXKzm/Z5hfR1hUnaIxYGZNpn+Vr3n7j2j9pQSOWHMgiXSzs50NX9BK0rPybA DLPbu1/eeUlYrjJYWG/ulP6q9/SNLbvhAl0tk87lsewGRHbiIK9cFkiCCq0zrbpwB/rDgSUlU5L YX7yXzDob1gQz5WeQ9xDGSnokYEYeBHQdcCDVOry1OEHbD1661qeoNyc8axAS8DurYp5+M+dPAy grFqOohOJpUHF5Ixf2pMI4OUPZquioVnrYn6Snv2Uf8O91BEW32ulUHoR+Kng== X-Received: by 2002:a05:6512:3123:b0:5b1:5a2d:55f9 with SMTP id 2adb3069b0e04-5b453f4e69dmr248876e87.21.1786600079932; Wed, 12 Aug 2026 22:47:59 -0700 (PDT) Received: from archlinux ([94.180.96.85]) by smtp.gmail.com with ESMTPSA id 2adb3069b0e04-5b4539e9673sm252483e87.23.2026.08.12.22.47.58 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 12 Aug 2026 22:47:59 -0700 (PDT) From: Arsenii Pashchenko To: pkshih@realtek.com Cc: linux-wireless@vger.kernel.org, linux-kernel@vger.kernel.org, Arsenii Pashchenko Subject: [PATCH wireless-next v2 2/4] wifi: rtw88: rtw8822c: use sign_extend32 for DAC IQ validation Date: Thu, 13 Aug 2026 12:47:30 +0700 Message-ID: X-Mailer: git-send-email 2.55.0 In-Reply-To: References: Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Leverage the kernel's native sign_extend32() macro to properly interpret the 10-bit raw values from hardware registers as signed 32-bit (s10) integers covering the [-512, 511] range. This allows us to completely rewrite rtw8822c_dac_iq_check() to use a simple, clean amplitude boundary check instead of complex, nested unsigned boundary conditions. Drop the temporary u32 casts inside the check and sampling routines. Signed-off-by: Arsenii Pashchenko --- drivers/net/wireless/realtek/rtw88/rtw8822c.c | 24 +++++++++---------- 1 file changed, 11 insertions(+), 13 deletions(-) diff --git a/drivers/net/wireless/realtek/rtw88/rtw8822c.c b/drivers/net/wi= reless/realtek/rtw88/rtw8822c.c index 896e3e7b9..d06986d09 100644 --- a/drivers/net/wireless/realtek/rtw88/rtw8822c.c +++ b/drivers/net/wireless/realtek/rtw88/rtw8822c.c @@ -3,6 +3,7 @@ */ =20 #include +#include #include "main.h" #include "coex.h" #include "fw.h" @@ -277,18 +278,15 @@ static u32 rtw8822c_get_path_read_addr(u8 path) return base_addr; } =20 -static bool rtw8822c_dac_iq_check(struct rtw_dev *rtwdev, s32 value_s32) +static bool rtw8822c_dac_iq_check(struct rtw_dev *rtwdev, s32 value) { - u32 value =3D (u32)value_s32; - bool ret =3D true; =20 - if ((value >=3D 0x200 && (0x400 - value) > 0x64) || - (value < 0x200 && value > 0x64)) { - ret =3D false; + if (value > 100 || value < -100) { rtw_dbg(rtwdev, RTW_DBG_RFK, "[DACK] Error overflow\n"); + return false; } =20 - return ret; + return true; } =20 static void rtw8822c_dac_cal_iq_sample(struct rtw_dev *rtwdev, s32 *iv, s3= 2 *qv) @@ -299,8 +297,8 @@ static void rtw8822c_dac_cal_iq_sample(struct rtw_dev *= rtwdev, s32 *iv, s32 *qv) while (i < DACK_SN_8822C && cnt < 10000) { cnt++; temp =3D rtw_read32_mask(rtwdev, 0x2dbc, 0x3fffff); - iv[i] =3D (s32)((temp & 0x3ff000) >> 12); - qv[i] =3D (s32)(temp & 0x3ff); + iv[i] =3D sign_extend32((temp & 0x3ff000) >> 12, 9); + qv[i] =3D sign_extend32(temp & 0x3ff, 9); =20 if (rtw8822c_dac_iq_check(rtwdev, iv[i]) && rtw8822c_dac_iq_check(rtwdev, qv[i])) @@ -352,11 +350,11 @@ static void rtw8822c_dac_cal_iq_search(struct rtw_dev= *rtwdev, =20 if (i_delta > 5 || q_delta > 5) { temp =3D rtw_read32_mask(rtwdev, 0x2dbc, 0x3fffff); - iv[0] =3D (s32)((temp & 0x3ff000) >> 12); - qv[0] =3D (s32)(temp & 0x3ff); + iv[0] =3D sign_extend32((temp & 0x3ff000) >> 12, 9); + qv[0] =3D sign_extend32(temp & 0x3ff, 9); temp =3D rtw_read32_mask(rtwdev, 0x2dbc, 0x3fffff); - iv[DACK_SN_8822C - 1] =3D (s32)((temp & 0x3ff000) >> 12); - qv[DACK_SN_8822C - 1] =3D (s32)(temp & 0x3ff); + iv[DACK_SN_8822C - 1] =3D sign_extend32((temp & 0x3ff000) >> 12, 9); + qv[DACK_SN_8822C - 1] =3D sign_extend32(temp & 0x3ff, 9); } else { break; } --=20 2.55.0 From nobody Tue Sep 29 02:32:56 2026 Received: from mail-lf1-f52.google.com (mail-lf1-f52.google.com [209.85.167.52]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id A888537647B for ; Thu, 13 Aug 2026 05:48:03 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.167.52 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786600085; cv=none; b=GcqwokuyKwzeFaPXpX+488icoH0ohFpevuXGBD5jHwpywNMVEPUiPrAaYsaZwzjCHR0IoH4y3I3mXH5UkppdccCy/Z5+VKtfSetdnnCWPbbq7ym8VDtTob9AZhUKkq708Dz4Tx1EaVpgSstGCI1N/QeFeg6pOVPgPX01encblHw= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786600085; c=relaxed/simple; bh=5TXl+7FhJNDRzik5WEtBDUOOLm+EMBxf4N2AmcSdcd4=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=Co3oFRgATXEdnnpaDo1K2MhHUhy9xr94CXMx6RQPQmMthxF+RTPoI2VmNCRJRoZB+d/CZCT0G3CnYE73dKp/LCC/vCeLyPqjE6lFAbjuzJfev/3ciJCsXA/PILe89XEsxf0VKDgLhwcFIRdN6cWQ/RBV8yhie8hgoftOD5yUC6A= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=Iju3+zho; arc=none smtp.client-ip=209.85.167.52 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="Iju3+zho" Received: by mail-lf1-f52.google.com with SMTP id 2adb3069b0e04-5b2aa3be376so252169e87.0 for ; Wed, 12 Aug 2026 22:48:03 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1786600081; x=1787204881; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=6mNXe4icQAHTtL3mT5idpm+v38V2NUoG/qN7vf7IPgA=; b=Iju3+zho56ctK2YEnU8OzscVWB7BzDWvsAZ5DJZyxJyBYBzIrKKxVyIN1rVQqzfBiw 7s2OARX4fe+AK/qA30z/xRyF9E/9hR7CXCFnYPSqcqPK3nNpXSbLWTnOlt2IdMdRN9um ihKJ8M+3loA/HWIbnZyVpOsZDaiLiDgS3W5JXUHe4BpappDedKB2SBs6PGpz+aQ/atwa nmTkaJoNA4jQfOF4XznYvtHQ531BmG0P0ag9QyMOirOd/giHY2aeQI3WL8aNXj3AsGM4 iV5Fk1P44pLTyy3cwrrExOksfhtoBir9Mzc4HAnl+NHGJ3g9julc0BgyIHFwY5wv/4G/ OqWg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1786600081; x=1787204881; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=6mNXe4icQAHTtL3mT5idpm+v38V2NUoG/qN7vf7IPgA=; b=LTzOIml/BttLTqGoz8QTMry+AlYsn57lAqCIRpqZadlW//gv8rEy8te0ZWlooG/YKs vZYGaD/ZH4XxGpU+P3odfsAI81AXr27A5njbwxpt9MuRzs2rseDqYA2TNkjEatjQ6Wd7 WtfTywG3t7xHAMrRvKvLmDaH8fkSYMUejO6ivPFtqRBpTz5V1BTT1i/2pRHaKPHxmV6x 6TDKtdG0OtHwu3GTofC7HuojaWJ7BY8PxMtA9idqr+ar7/rmJSQ+iaNAWuzdP3FuDriu V+t2ZL0JjKfvF0vTNinJFMxTFupEF9u/NSHJDG7Pw48ReDN1yBHNpiM2LRcRRhLmp34V qn/w== X-Forwarded-Encrypted: i=1; AHgh+RoEAWjTI0LEBKdwLo3KzVm8ZaBFy1fuEn/is8Birzav3oGZaSCVJOTLioVPxbqsXi4MUjflXoSbuIwugIw=@vger.kernel.org X-Gm-Message-State: AOJu0Yyf8gZLZCMNRYwv7UQEFuD40w9eYWPdL58NrI2IbVnJqEX+s27N rj0uHguC5zY9jFcYFvpY7ZfLJZbPc+2umQKjaGGlQW+xgQBpYHd+ws9x X-Gm-Gg: AR+sD13g1+pGTKAUOFED4qkpMF5uk9+DtLk15F/2JvdNXkNaeeC9fqWLAwNaWS+8A9h 2i8tkUyc0VW5FCacsn6pGu/q+mGYNJLkxGbiRN6biJeztnhkdQe6D2WW1qrPEOV/YrH5xCjIuW5 NwzZpaZUb5+tgVoQxLnlk4F5OI4QVh9linIvcbwevbtojSZqzDAE1xJ/trziJsyXvlNA1I4s6Z0 LUK77/p6Mjb0CqWMFR6yaMbAtff0Nkyk+WZGM1Ft11TJ7JPAcywFNojNJgEYw96J8fcGjw4yRTe 5ndUXP7EGIJ4xOgf1NIgd9gBbOVUtzXZP2L4guiZ0sv3Y5b6x2QY/SxQ0lF2iZgPQ6Cf5q9U509 UKQ1fQZ4y1GIm6fctH4cPxtMqZVghBY449qqCtMJFbH7MnMKCvjTADLTr/T/Nl5jk8MVekWtn7T Cal4kFfm41L7sayQ7BVC28o6D2OdbUmDCU4AoXB8PjQ2XrIBpc39tUY6u0cJ1LvO/JpGU35VxyM tqy2vMwGdG8mIDjmJzaMjDnnVPuzqwQERlc7QosFZTC33fP7lfC+S4i/FJpe+Lnio1wfwy9 X-Received: by 2002:a05:6512:66cf:b0:5b4:5352:e2b5 with SMTP id 2adb3069b0e04-5b453f3c39amr285039e87.15.1786600081321; Wed, 12 Aug 2026 22:48:01 -0700 (PDT) Received: from archlinux ([94.180.96.85]) by smtp.gmail.com with ESMTPSA id 2adb3069b0e04-5b4539e9673sm252483e87.23.2026.08.12.22.48.00 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 12 Aug 2026 22:48:00 -0700 (PDT) From: Arsenii Pashchenko To: pkshih@realtek.com Cc: linux-wireless@vger.kernel.org, linux-kernel@vger.kernel.org, Arsenii Pashchenko Subject: [PATCH wireless-next v2 3/4] wifi: rtw88: rtw8822c: switch to the kernel's sort() library Date: Thu, 13 Aug 2026 12:47:31 +0700 Message-ID: <4a0b85003aac26b23fcfc6e414e00b39e0d2aa45.1786599645.git.ulijg308@gmail.com> X-Mailer: git-send-email 2.55.0 In-Reply-To: References: Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Replace the custom, nested bubble-sort logic in rtw8822c_dac_iq_sort() and __rtw8822c_dac_iq_sort() with a call to the kernel's optimized heapsort implementation. Implement a concise, localized s32 comparator. Since the previous patch already guarantees that input values are properly sign-extended into signed arrays, the custom circular index sorting rules completely disappear, trimming down lines of code. Signed-off-by: Arsenii Pashchenko --- drivers/net/wireless/realtek/rtw88/rtw8822c.c | 28 ++++++------------- 1 file changed, 8 insertions(+), 20 deletions(-) diff --git a/drivers/net/wireless/realtek/rtw88/rtw8822c.c b/drivers/net/wi= reless/realtek/rtw88/rtw8822c.c index d06986d09..642ac2e2b 100644 --- a/drivers/net/wireless/realtek/rtw88/rtw8822c.c +++ b/drivers/net/wireless/realtek/rtw88/rtw8822c.c @@ -4,6 +4,7 @@ =20 #include #include +#include #include "main.h" #include "coex.h" #include "fw.h" @@ -186,31 +187,18 @@ static void rtw8822c_rf_minmax_cmp(struct rtw_dev *rt= wdev, s32 value_s32, } } =20 -static void __rtw8822c_dac_iq_sort(struct rtw_dev *rtwdev, s32 *v1_s32, s3= 2 *v2_s32) +static int rtw8822c_dac_iq_cmp_s32(const void *a, const void *b) { - u32 *v1 =3D (u32 *)v1_s32; - u32 *v2 =3D (u32 *)v2_s32; - if (*v1 >=3D 0x200 && *v2 >=3D 0x200) { - if (*v1 > *v2) - swap(*v1, *v2); - } else if (*v1 < 0x200 && *v2 < 0x200) { - if (*v1 > *v2) - swap(*v1, *v2); - } else if (*v1 < 0x200 && *v2 >=3D 0x200) { - swap(*v1, *v2); - } + s32 va =3D *(const s32 *)a; + s32 vb =3D *(const s32 *)b; + + return (va > vb) - (va < vb); } =20 static void rtw8822c_dac_iq_sort(struct rtw_dev *rtwdev, s32 *iv, s32 *qv) { - u32 i, j; - - for (i =3D 0; i < DACK_SN_8822C - 1; i++) { - for (j =3D 0; j < (DACK_SN_8822C - 1 - i) ; j++) { - __rtw8822c_dac_iq_sort(rtwdev, &iv[j], &iv[j + 1]); - __rtw8822c_dac_iq_sort(rtwdev, &qv[j], &qv[j + 1]); - } - } + sort(iv, DACK_SN_8822C, sizeof(s32), rtw8822c_dac_iq_cmp_s32, NULL); + sort(qv, DACK_SN_8822C, sizeof(s32), rtw8822c_dac_iq_cmp_s32, NULL); } =20 static void rtw8822c_dac_iq_offset(struct rtw_dev *rtwdev, s32 *vec_s32, u= 32 *val) --=20 2.55.0 From nobody Tue Sep 29 02:32:56 2026 Received: from mail-lf1-f52.google.com (mail-lf1-f52.google.com [209.85.167.52]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 771D4415F0F for ; Thu, 13 Aug 2026 05:48:04 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.167.52 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786600087; cv=none; b=a5IxyoWEP7Q4yt58jxH/LjWl+gxkTjzE+vn93MRQpsaAQsJEkc6NTMKHFHJplyzACwiwZo7erCYJ7Dqvm38bw85yzjxmdz+jNOPCvxKvTfi7vxfUZilm5d9+dqjbnUiHaRn5AQ8Xd9K3JmoOUGEtPqDw3/g+ucQ/Ye0oY77QFgw= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786600087; c=relaxed/simple; bh=mD4MIu7A6RBKLGLZhcQN38rVB6TQlU0KUw0OmGTmwG0=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=PvCBSIhMu3WhKky1dZH/BW/Mq2kONJHfpRFUqoa6Q+5Lc/3AHS/c6rx90205B+h/pzFJoby6T2xQ3TAVoZ/6tuSA99XqUdkez2ZeNxO6b5jNKaN43Y8Wby/i07tq+j6Xq3c7HZXOULINBgM3ltsHTrDw8dWWnZO1ilCM+nSoz2Q= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=J4Nsc2y3; arc=none smtp.client-ip=209.85.167.52 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="J4Nsc2y3" Received: by mail-lf1-f52.google.com with SMTP id 2adb3069b0e04-5aeb24c0807so1313946e87.0 for ; Wed, 12 Aug 2026 22:48:04 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1786600082; x=1787204882; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=kRTl+sLRqkpeXssOlH0oy3ZfbvcTh31CRPscib/8rhE=; b=J4Nsc2y3iENYzhb5m2kEf/CAqf0tJxkXL5jwWOEwfdXgM94BEcTSJDKAn92YBvhLb+ JNwp5G+j48qorZo0lCDG+41Dc89VfWQMBHjf6zOcomwvxwE67dM1/mySuUw8n8ecr/yo idhn8J03Yizd1FbeWd29CXIwteV6orBht4a5j0IxUeciPzAJqdGURPaoGKHq4bcVdYb2 rN92uc+G0FcTvRwXioFZ1D02IcCh++gU47nCcCcf9L4KnEIa48ixdbkE9hw2K0Kf6Pk3 MfKYnsMyGTK5QRbGrVnVpl8KweCmCTR6Koiqq4q61lMjZMhrDUItQwlg56d/0ZvzFgVS YPeQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1786600082; x=1787204882; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=kRTl+sLRqkpeXssOlH0oy3ZfbvcTh31CRPscib/8rhE=; b=VfJz0cxOhYVS4FcbaFo20uQdRxy3qS508DppMayNCpxuyIrEhLw4wk/0Js52M4wvMk lRd3yAh/m0q29rQl2q9DpoR2FiNS3T4a4g5DD/nrYPNwMzkGCyA8B7JTbzAjYZJcJROB cmXFe96dJBWgOuZF44d3Ogw6ciWazQh7HOZyCHLIpEfEPb9ryX2BZY376ErDRC+gPkGh 70EENxvDwBeGLHhuYAFAq8c3WXCNqB0M5lWkm8gfmmFOJRDJLNj/yGaSuwAqsx/VF2GT wtKHI9/3pQ2eaqokWkRsd3jCEDDS7QLjCVKG5p6Vj+YR6T+JTDKgnCod55jMWdfPgGjB ptNw== X-Forwarded-Encrypted: i=1; AHgh+RqM0AT+NWkMsC4HM4JcOjorZ5VNIUuiduGzcpDhaGZSI1bCmsvrEdDtAEMXThUeD3lMkZPb4cyKDFA61T8=@vger.kernel.org X-Gm-Message-State: AOJu0YwwL41sfdORwVnrDHYF2Zjq8xExTOOgL906D6XMdsBFYbEGp3KJ c1AH6qfM1hlcB/ZFhFqUM3KEf3FyoZh489812FwALrDGEvKCJZRys4tVBgSikq2k X-Gm-Gg: AR+sD11Ad4pkzQp7awuoeVkYa5xRbAvpE5wm6u8HLyr/We0Ck2A90NdY6IdzluXDwTa yq/PKtVATHkija2suOCkFADDG86neIsTDHFWmKHPS0BdSq2KZGzPRn/67zqIDqhJYsG2kFDUXHp +flv1SY9WSPpSNoyzoho3u16fnZ9U5SQo3kEVaoh9gGvNjDk1nOetASOGXU3dtFMFud2n2TMJgs rVa4lWa5x5albs0cqrFBvaTClLNXUKP2me4sg97qv9hd7cGPTPV8oNeZDTna64Si31AcICyunLp IMWzTATOFNMpJDdFJwB3LYSrNTrDiZEPLFCFjYGrE+sQ9TJwGklvUSeW4zWqrA9pPJ+WrC+2QkF K8sRK2shnNQyg8p2BU8zoJY0R28gN3SDgNkp1qQY0buyVHZ/G3BKI6Y9Fg4PHOZC1W3XNjX76JP aQk6v1ACRo/jDeWc4iFRbRAM04uKn/BUrdHRgteG38nZCDUKtap6JbsDbQOZe+g5bFHGTzTdIUT 9eA3wa1T5VUeW6ldxL5zUBX/WSFwzLwqHWVRsqOYlaVXwTKbeYgwxRXbn5WegtY/0SmXuOo X-Received: by 2002:a05:6512:a496:b0:5b2:9c9d:6448 with SMTP id 2adb3069b0e04-5b453f4e6a8mr263010e87.12.1786600082355; Wed, 12 Aug 2026 22:48:02 -0700 (PDT) Received: from archlinux ([94.180.96.85]) by smtp.gmail.com with ESMTPSA id 2adb3069b0e04-5b4539e9673sm252483e87.23.2026.08.12.22.48.01 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 12 Aug 2026 22:48:02 -0700 (PDT) From: Arsenii Pashchenko To: pkshih@realtek.com Cc: linux-wireless@vger.kernel.org, linux-kernel@vger.kernel.org, Arsenii Pashchenko Subject: [PATCH wireless-next v2 4/4] wifi: rtw88: rtw8822c: simplify amplitude search and offset via s32 Date: Thu, 13 Aug 2026 12:47:32 +0700 Message-ID: <0bb6e2fb78d0b2def623210938204a0efbbe2034.1786599645.git.ulijg308@gmail.com> X-Mailer: git-send-email 2.55.0 In-Reply-To: References: Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Complete the signed data transition by removing the complex rtw8822c_rf_minmax_cmp() helper. On a true linear s32 scale, finding the delta amplitude simplifies to a direct difference (max - min) without any nested circular wrap-around conditions. Refactor rtw8822c_dac_iq_offset() to directly calculate the trimmed arithmetic mean, casting back to the hardware register's offset orientation only at the final assignment using a ternary operator. Signed-off-by: Arsenii Pashchenko --- drivers/net/wireless/realtek/rtw88/rtw8822c.c | 103 +++++------------- 1 file changed, 25 insertions(+), 78 deletions(-) diff --git a/drivers/net/wireless/realtek/rtw88/rtw8822c.c b/drivers/net/wi= reless/realtek/rtw88/rtw8822c.c index 642ac2e2b..6fcdfc64c 100644 --- a/drivers/net/wireless/realtek/rtw88/rtw8822c.c +++ b/drivers/net/wireless/realtek/rtw88/rtw8822c.c @@ -155,38 +155,6 @@ static void rtw8822c_dac_restore_reg(struct rtw_dev *r= twdev, } } =20 -static void rtw8822c_rf_minmax_cmp(struct rtw_dev *rtwdev, s32 value_s32, - s32 *min_s32, s32 *max_s32) -{ - u32 value =3D (u32)value_s32; - u32 *min =3D (u32 *)min_s32; - u32 *max =3D (u32 *)max_s32; - if (value >=3D 0x200) { - if (*min >=3D 0x200) { - if (*min > value) - *min =3D value; - } else { - *min =3D value; - } - if (*max >=3D 0x200) { - if (*max < value) - *max =3D value; - } - } else { - if (*min < 0x200) { - if (*min > value) - *min =3D value; - } - - if (*max >=3D 0x200) { - *max =3D value; - } else { - if (*max < value) - *max =3D value; - } - } -} - static int rtw8822c_dac_iq_cmp_s32(const void *a, const void *b) { s32 va =3D *(const s32 *)a; @@ -201,31 +169,16 @@ static void rtw8822c_dac_iq_sort(struct rtw_dev *rtwd= ev, s32 *iv, s32 *qv) sort(qv, DACK_SN_8822C, sizeof(s32), rtw8822c_dac_iq_cmp_s32, NULL); } =20 -static void rtw8822c_dac_iq_offset(struct rtw_dev *rtwdev, s32 *vec_s32, u= 32 *val) +static s32 rtw8822c_dac_iq_offset(struct rtw_dev *rtwdev, s32 *vec) { - u32 *vec =3D (u32 *)vec_s32; - u32 p, m, t, i; + s32 sum =3D 0; =20 - m =3D 0; - p =3D 0; - for (i =3D 10; i < DACK_SN_8822C - 10; i++) { - if (vec[i] > 0x200) - m =3D (0x400 - vec[i]) + m; - else - p =3D vec[i] + p; - } + for (u32 i =3D 10; i < DACK_SN_8822C - 10; i++) + sum +=3D vec[i]; =20 - if (p > m) { - t =3D p - m; - t =3D t / (DACK_SN_8822C - 20); - } else { - t =3D m - p; - t =3D t / (DACK_SN_8822C - 20); - if (t !=3D 0x0) - t =3D 0x400 - t; - } + s32 avg =3D sum / (DACK_SN_8822C - 20); =20 - *val =3D t; + return avg >=3D 0 ? avg : 0x400 + avg; } =20 static u32 rtw8822c_get_path_write_addr(u8 path) @@ -280,7 +233,7 @@ static bool rtw8822c_dac_iq_check(struct rtw_dev *rtwde= v, s32 value) static void rtw8822c_dac_cal_iq_sample(struct rtw_dev *rtwdev, s32 *iv, s3= 2 *qv) { u32 temp; - int i =3D 0, cnt =3D 0; + u32 i =3D 0, cnt =3D 0; =20 while (i < DACK_SN_8822C && cnt < 10000) { cnt++; @@ -298,34 +251,28 @@ static void rtw8822c_dac_cal_iq_search(struct rtw_dev= *rtwdev, s32 *iv, s32 *qv, u32 *i_value, u32 *q_value) { - u32 i_max =3D 0, q_max =3D 0, i_min =3D 0, q_min =3D 0; - u32 i_delta, q_delta; + s32 i_max =3D 0, q_max =3D 0, i_min =3D 0, q_min =3D 0; u32 temp; - int i, cnt =3D 0; + u32 i, cnt =3D 0; =20 do { - i_min =3D (u32)iv[0]; - i_max =3D (u32)iv[0]; - q_min =3D (u32)qv[0]; - q_max =3D (u32)qv[0]; + i_min =3D iv[0]; + i_max =3D iv[0]; + q_min =3D qv[0]; + q_max =3D qv[0]; for (i =3D 0; i < DACK_SN_8822C; i++) { - rtw8822c_rf_minmax_cmp(rtwdev, iv[i], (s32 *)&i_min, (s32 *)&i_max); - rtw8822c_rf_minmax_cmp(rtwdev, qv[i], (s32 *)&q_min, (s32 *)&q_max); + if (iv[i] < i_min) + i_min =3D iv[i]; + if (iv[i] > i_max) + i_max =3D iv[i]; + if (qv[i] < q_min) + q_min =3D qv[i]; + if (qv[i] > q_max) + q_max =3D qv[i]; } =20 - if (i_max < 0x200 && i_min < 0x200) - i_delta =3D i_max - i_min; - else if (i_max >=3D 0x200 && i_min >=3D 0x200) - i_delta =3D i_max - i_min; - else - i_delta =3D i_max + (0x400 - i_min); - - if (q_max < 0x200 && q_min < 0x200) - q_delta =3D q_max - q_min; - else if (q_max >=3D 0x200 && q_min >=3D 0x200) - q_delta =3D q_max - q_min; - else - q_delta =3D q_max + (0x400 - q_min); + u32 i_delta =3D (u32)(i_max - i_min); + u32 q_delta =3D (u32)(q_max - q_min); =20 rtw_dbg(rtwdev, RTW_DBG_RFK, "[DACK] i: min=3D0x%08x, max=3D0x%08x, delta=3D0x%08x\n", @@ -348,8 +295,8 @@ static void rtw8822c_dac_cal_iq_search(struct rtw_dev *= rtwdev, } } while (cnt++ < 100); =20 - rtw8822c_dac_iq_offset(rtwdev, iv, i_value); - rtw8822c_dac_iq_offset(rtwdev, qv, q_value); + *i_value =3D rtw8822c_dac_iq_offset(rtwdev, iv); + *q_value =3D rtw8822c_dac_iq_offset(rtwdev, qv); } =20 static void rtw8822c_dac_cal_rf_mode(struct rtw_dev *rtwdev, --=20 2.55.0