From nobody Tue Sep 29 02:32:56 2026 Received: from mail-lj1-f169.google.com (mail-lj1-f169.google.com [209.85.208.169]) (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 42F1B4248A1 for ; Thu, 13 Aug 2026 06:52:51 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.208.169 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786603973; cv=none; b=PZNUeWx6iVx8V4ar8PRKVG53VoF/1NLcftndzwAmfsD2n43zKZT843iXoQYlrosvn0a0Yr8GpWiN6enfnMZA6913wSCeZTtgx864WKn8CTTxHzO6MXwm34aip65dB6Pif4PGMpZewq2BRCwLWA0eRVIUEGgtH2D7kBYEBV+e5LQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786603973; c=relaxed/simple; bh=jP70uOP2BCSma+JgjdwArgM9EWTT6A1QGv3/F1F0GvA=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=H7pcinkcExEBU9UAEkzkPhNPKy4hKgSnUmI6SVOqEeBe5OvX4BEf34kHzT78gGKpz3mutomqRKnhkk3MK7oQR89G6GhqlZZY0R5oKFcziKt3/Xzd4zGZHYHxBwP+TlwG82nXt8u+q9JUrKkYUi9uEdGmPSfMqXBOIAEWyRvJgT8= 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=CnHWVHFQ; arc=none smtp.client-ip=209.85.208.169 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="CnHWVHFQ" Received: by mail-lj1-f169.google.com with SMTP id 38308e7fff4ca-39f20d19895so3086561fa.2 for ; Wed, 12 Aug 2026 23:52:51 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1786603969; x=1787208769; 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=CnHWVHFQnb2s3Lreqc410DNDJiT6wxFbMR0E2IdZkeFdDVMF1RqxekzsYwxssv+aku ON9lud9tfl0lE73rffM8NJ6x9B7dwXYSMHPLjCwlu0hU36ty8xSbur3oGwU3TN2jQk3Q pbPz1yhqoxkBEwH5hl9uZhXSqqvRb7f9GudVrViqJ7JZ4/XcP0T0vuFb/9B/ZlTBvNbo 44acdCleLi37GPMMkmFiovuZflIjVKUnT6DwXq+tdbR4unO0Rl7WQn5RcHDPZ18iso71 sOjAypfmTY3/iQo9L5MBlZSPcZV5yDq11FBDgn2ALgJCJ9dCxXwh02ndfA3pVgjQxmM7 e+qA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1786603969; x=1787208769; 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=dOPKmyeAyCCaqMH7yDRkfgJthc/Ws7NDYPPqQth95zPfPDdylKPcGHmSBXBRe9FJE0 DRd0g7/t36+h+TOci9OPU5PPFNzsiVkPrUpAEFt7Vig8KB+Iqda4x7fupvw+b1uhQZuW aJ0h5cT6+jEaHqokQ5riuxZA16ZIG8+qmqVZ+9ahBzYdiInBFEhJJZhLXKfJkwBGKx2g vuUxN7Zg46gKoOXsPv4MY3ggPr1hLSfAQ+rCkdMx8iPMBurtw1+48TLyG9eho+PQrr2S L7ndlwjAP4lm33aBLITQA3ML/aWq+TybiqqnRXP+t26nVPz03Azrh4NGDeDIRymnpn/F tKrA== X-Forwarded-Encrypted: i=1; AHgh+RqwhQQX4zixRz43Ag5/i9G5kJlli3IAzeiIFO6ZsaaidQYinlhVK1UpzVMH0ILGoWJAFry4NtwRqvXZ0Lk=@vger.kernel.org X-Gm-Message-State: AOJu0YxOb6fM8dIVLbAWodB26DWYcy0PUwptIcWfMpr6oARsjeatk5t/ +RAgmWNh829VAwN1b6m8T4faQvzkxGNKrXa3RHWPQRCmdcIdA7VVWPNi X-Gm-Gg: AR+sD11N+AcwA+LOSXsXLN/1Q8YS4jFYFb2TgU/bh6hrYVNyKmJ5hnIVx0fw4dboDXk Bxa/9Io5u+DY5BEhI/mH+hDuhOFRLe84R4rQAkt2hMdcOaHeLTi4hB+LlpxberxZlOp1qz8BsCn nzMQpr9nt33qVDgQEsVH7la0MHE+TgQXKku4lE2NQqSXIXTBFnZZHHXEr+0GpZ8HeApHyUX58ze Jdica0uMZ3QzB+MS5vx4xKbT6aKSzbG2PbRWyPHhGFCozoFjQ80eM06myNVdLc8ZdG/9pMEoN2X WD9/A9ZzqHcFx0kPEbUJgNwttysi9ovJH9TJK25tI5a5/VTfe2DzkBpvohA9jI7HAO8qWViw3qN IWv0x0udYYjkx/1PEfz/KZ42Z28O89BrlM30dokcLyppZLe0XtKCSp780SMygMBm2Fj2yzfFGXl GnoOaBjlIay4MPD2Fmx2Q26Ng2nCwJOrPvCSr29OpNkshcywtPTIdrPjIk+QFcKiFJv6ZlnOVhC A9jL/voOfQQ7rn6RmrUB+WXlvLCcJCTN46GpODdVsMl6ztNN51u1hdytemZMQ== X-Received: by 2002:a05:651c:210e:b0:39c:6e84:99b6 with SMTP id 38308e7fff4ca-3a11a7a1fd4mr4088271fa.23.1786603968933; Wed, 12 Aug 2026 23:52:48 -0700 (PDT) Received: from archlinux ([94.180.96.85]) by smtp.gmail.com with ESMTPSA id 2adb3069b0e04-5b453a54adasm270076e87.38.2026.08.12.23.52.48 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 12 Aug 2026 23:52:48 -0700 (PDT) From: Arsenii Pashchenko To: pkshih@realtek.com Cc: linux-wireless@vger.kernel.org, linux-kernel@vger.kernel.org, Arsenii Pashchenko Subject: [PATCH rtw-next v3 1/4] wifi: rtw88: rtw8822c: convert DAC IQ buffers and signatures to s32 Date: Thu, 13 Aug 2026 13:52:32 +0700 Message-ID: <12e170032b884c8693a08c780fb8aa677aa4af4c.1786603749.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-f46.google.com (mail-lf1-f46.google.com [209.85.167.46]) (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 2CC3A4195C8 for ; Thu, 13 Aug 2026 06:52:52 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.167.46 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786603974; cv=none; b=IylrEFgO/TizkYDAGck1QU8fXR0zLHwApb37nsmN0mhJ0Sv5aeSRLFA+iqY+mcoPtvIaDx4FP1slEV589FDFpnAOVjrzWR7vEC8eL5kWFp0W81/tjdf2zMZsieBN+U+PlR3qW1oCndl5d6s0+nbvO38NNnZSs/1gAvlIE5Le5l8= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786603974; c=relaxed/simple; bh=ypHI0S+UNvDNhN5cj1MB0lINoArN61phj1Gchrhibgo=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=dl+GjaqR8vAiCpdZbUudzOYFhNQCuCzq7A9iMkQlkPe+6gANduoGbBMltCPJeySW2rVL8962rhxx1uWJXtszAbq4s1OmhzZKommqwI5aRQ9zn5CLxtM/cas+nT7oeEuOj6zHYoyG1zlwSSgMjsRXPNaQ1F4RrFfYEFF/F2lDBew= 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=a57Tib9A; arc=none smtp.client-ip=209.85.167.46 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="a57Tib9A" Received: by mail-lf1-f46.google.com with SMTP id 2adb3069b0e04-5b013aa02b2so803690e87.0 for ; Wed, 12 Aug 2026 23:52:51 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1786603970; x=1787208770; 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=a57Tib9Af6Bn0X4HuQzDLB1A0wRJET2aHF399y25hHdVJfwrfNNvPRNr4GrnZsn+fv U/AQ1KxD8nXq3q97kZ3eLvKWEi4zZpfP4V+9vBPqP0/oB1D1wqxrAFP+jND10mw5q7B2 887WCcRNTWA4XxLfZJLYVgcuf9aq0UxP50ULfGwpkxAHtilJVScMSGQy89uNNLSJwYVA a5nvwkL2FtRDOk+ubdzUWm6h/JimxKPCx+2LYIumqO7o3C7KMIVVZBUaMRQ2Rj6SpFbQ oDVpjUTPNkOi2SooyTFwVXrOM2DRvCsYmC/gHuJJ3zUHZGinLlkDlG653MB0HEUdmNke k4VA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1786603970; x=1787208770; 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=Z+mSOhGjLlVUtvR5OteytDs0M7vpqQjSwwNyxrHX1jZR+HUlWEYq8GEbQ8EhNx32ql /ahNFaBVawpBq3wc4eBeUpQCRIIHS0l6er1ogl1am+6MatxavhsWCgs0prBYHz38DOiE Pkgh36Z0Zh5lr39U915/jRyCfFzo+xipo3kEVyIN+aw/la7s6P6BKx95zaP+vyshfsoR oVjxGMhd8WC0D5NigJxks72dd/a9CrTayfX3Q4NHr5qq4erc+aeqstuMNck9eGEn0pta xX0iSnDNjrq8g4pqRjK3u2coXRDpBr7PN2JVLmYbVvZyWYrLBfPYSKosCCtzoiBk40Oc 4Ddg== X-Forwarded-Encrypted: i=1; AHgh+Ropn1n3uJVEZWshe7jSbPTtVu1hIpEUo3FIWMsOFonAK3SB5gKpuM120GkCdOu6leS/RRtgWx17p/qHNXQ=@vger.kernel.org X-Gm-Message-State: AOJu0YzD2fJ5vAwQ0XNJlWvQCn/kGL/wqb+GBpbKF+I7mw9ucn0Lq37J 0npIIV8ZNbb6KzUay4Bsts+bYnJOHcBmPtd2WZ83tEpgpj6V9c3J91d3k4YOFwrH X-Gm-Gg: AR+sD11FNMZaYOjNt47gB21s74+bFBf4NlgTngUFQOnSmccj4vid2DqC+K1K5taJr64 QXk+71Vz8SvXOFd/OIKtEdXd4K3F7+KZvqXz8eYbdXfJ8ycR557WYlMridKr+6w0WIaNY6Up6ex SgcSyxZX3sXEPRPgtUXKxaUqSY/ne2+vuE8HpfvWi2Aff0LKkX4JZoKwImOEqPtiaFCnqcpctSN w9kkl/yJvAVhKKQ/wo8XkMX1/FpjmTznTkdmSZk4vMB+3yvrRl20evaZGWpQU64gJz1lWdy8Dsl wUazU8rlKsTWtv4DhCA2s1/5/XZFtbdUyx1DWQ23clcNBWoeCWi6CIfa4YSdTbCX0Zlcb8Zi1eK 4LuMmi6E8vWMDjvRjmTYmWaYofkSXarwQNyrylhEO0Hkd2gKlOHDe6S4VwyWRuSHF1QnIQGHd2H jDBV19FqtV9+J8z9Qo7vzwGzHbqlyuG7Uit9OktKobHBjltUoYb1GFJ7S9xPv07asmqtv6gHSSN 3Mpsmro2qdbq832o/r0MiyUvZiRM3CrAKXFvxgWSdCHD+ukBGA1yZsL1U//pw== X-Received: by 2002:ac2:5b81:0:b0:5b2:a929:cec3 with SMTP id 2adb3069b0e04-5b453cc584fmr395146e87.13.1786603969767; Wed, 12 Aug 2026 23:52:49 -0700 (PDT) Received: from archlinux ([94.180.96.85]) by smtp.gmail.com with ESMTPSA id 2adb3069b0e04-5b453a54adasm270076e87.38.2026.08.12.23.52.49 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 12 Aug 2026 23:52:49 -0700 (PDT) From: Arsenii Pashchenko To: pkshih@realtek.com Cc: linux-wireless@vger.kernel.org, linux-kernel@vger.kernel.org, Arsenii Pashchenko Subject: [PATCH rtw-next v3 2/4] wifi: rtw88: rtw8822c: use sign_extend32 for DAC IQ validation Date: Thu, 13 Aug 2026 13:52:33 +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-f45.google.com (mail-lf1-f45.google.com [209.85.167.45]) (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 A52C242EED6 for ; Thu, 13 Aug 2026 06:52:52 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.167.45 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786603974; cv=none; b=oMe6ZkPe0fWqkSCENzz7mlgcKyTxx8tbgxZ0l+S0hCmOB9lvHNKS+kBtD1rJB7atufQvqxGWfHsKggBomJko5EFguPHE4KF5d5JE0ADEeC69zsaaU230gma/1NwEXgYMe2XUEtybWdNiK4Hukcq5hRbXw3TbOVG6FwMUZK/HrW8= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786603974; c=relaxed/simple; bh=5TXl+7FhJNDRzik5WEtBDUOOLm+EMBxf4N2AmcSdcd4=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=N/gbRSC4eacaxZFFvHvPHtsK4W5DsGH/zGCv5arUtF7i+/POQOXErCXvM+j1+2aGTBbKjXJXZfvyv8HNl3E4XDqGwZs8m/tK9HWRoQLxo0edZFgYWAlhMznQJXrtgP4VxzvVoEveNYsWBBm6cy94LChoMVbalSmO2qCHHRh+eaQ= 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=NINENh83; arc=none smtp.client-ip=209.85.167.45 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="NINENh83" Received: by mail-lf1-f45.google.com with SMTP id 2adb3069b0e04-5b0f19bea2fso2221218e87.1 for ; Wed, 12 Aug 2026 23:52:52 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1786603970; x=1787208770; 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=NINENh83K9ldqARdayB4yFqJzgtD6hSUTS2rjaIw8C/8eYzgCgTuVULzteosB3ISCk hoYVGuXoGdihgOS9c8DnzwTaDc8FyfMdHqlEXIdn1ta7dpxKTXFSRlrC110XRvVmOTIT 5Mbj964tjaFIJebflupGClhTY9Eaz75vPGWrfQMTaBNaTMw6QvlDi5M8tQ+eSK2S88PL 0mnwohLeOGHK+T/mGYtYIw7mVAytmlEMh500yEDBZaTTEZQczcoVDbKZ2mft9S5w+iNz yqVLaQJrqnnd0cmJaTxPoy4mR/H3QrUYG5Ny7z0DE9cDYIyMinM0khS+fuijwkcF7AKP r/5A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1786603970; x=1787208770; 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=iE7P4p3FtIX+HYYiV9WdfxfkolOHRgRNNAc/yQmQ5XRNwKItIJw6M9p8fBcQciIlXO zhkM92FrHI7LzN9dsf1sORFug+DmzoZews5+AqhiM9VR3oy4BtZeEBL0M6ZhP77Ux/iu VOZU6n4yl6R/0g8oe6dYL4bmvJ8SbhgWjgjQDtnPN6xgtFnz08fLuMmK3qnOnfU0KkUh iuqmf61GIewQdOzY9xbf13/CVqA3A2uNvzNYZ2FMg1cLvKsOy9Vm2+ufWsgM3320QNHk MqaCf86skfYrvE5tanj9QBiY2Ku0vzrq21qmvCuxXIuSnWFUX3+gBYh7KX7qq+lOBFQz ZiIQ== X-Forwarded-Encrypted: i=1; AHgh+RoSEZJLofxppMWyswkBwHV/YLYMFEb6ldfYhnKAUpVwO2YNeHf+XALIJxBHlV8ZIIAfY8a9wNf16Br0nBA=@vger.kernel.org X-Gm-Message-State: AOJu0YysXZJFsn1MlOWHQKc2/pXMpaEx3dVWWmS2MDcDVTUGA+ohhy1p LUHA9EENNHBoDhIAaaZoTKcky+YcQBDO2ZtEIpalTZ1wdTivTOInAbqa X-Gm-Gg: AR+sD106l/KHvLMoa3hw/6Q+2ZBd+Mx3+4PK+wBsgtvyOSaKQedTs8iBGwRj4ejNTqI b0x2ZDV4iJILR5Kho/Vf2GAl/GZ5p4hl8sOewOjZ25RSYSYtxXGCKQ1n+2IxD49H58Clk+jzrLx Zvkxusi0W8f4yFnlE9uVMlO5rkTTyPtd9aIemzNXJahyBY8icT+apaOWBj9y9hxzFuegun6FQt0 61jGOwNwIFvGahbUX5TUhnmXV45IPEEJ0SfzNd+1XB4Jd0B0qh6WW6J4PGHXXQKLfFMMyWO7wzZ m1UTcsi1s/YZ5BRm2NHGRuxWP0O+stPJfuI5Byc6M/ZWNmA6+LFSEDiQa1j6jn0XFvmymxorH3H DZUrvG39WsDfmECrVKnoNbeO/M+rE3HgqglNz9Nw2m83GymcwYlWsru6Z8dqegDaNNjS9hgawnn mm7WKsYLwTDIoed5cL1+/jYiox63KantXxg7FVOnm5dQ6tW6ktDlkwuMudAK6S9sIZc+fggrlI4 ci/sPOHI+H/fbXOHVayz30mCQcs3w0YY/YlqoIpLU07wTsYbEL+tNSaUi6r8g== X-Received: by 2002:ac2:44b4:0:b0:5b2:1dde:ab15 with SMTP id 2adb3069b0e04-5b453f96774mr294826e87.55.1786603970516; Wed, 12 Aug 2026 23:52:50 -0700 (PDT) Received: from archlinux ([94.180.96.85]) by smtp.gmail.com with ESMTPSA id 2adb3069b0e04-5b453a54adasm270076e87.38.2026.08.12.23.52.49 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 12 Aug 2026 23:52:50 -0700 (PDT) From: Arsenii Pashchenko To: pkshih@realtek.com Cc: linux-wireless@vger.kernel.org, linux-kernel@vger.kernel.org, Arsenii Pashchenko Subject: [PATCH rtw-next v3 3/4] wifi: rtw88: rtw8822c: switch to the kernel's sort() library Date: Thu, 13 Aug 2026 13:52:34 +0700 Message-ID: <4a0b85003aac26b23fcfc6e414e00b39e0d2aa45.1786603749.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-f53.google.com (mail-lf1-f53.google.com [209.85.167.53]) (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 86A723446A7 for ; Thu, 13 Aug 2026 06:52:53 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.167.53 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786603975; cv=none; b=rcDRfD5sCClR45CbtEUF5ckqTbqR1c3CdV5A+hDirBv/Zh50zkhDCfCEQY5DruuIp+lIDAuv1tKGZIJC7mkJGqxnlHaZbR+Pmq2dZsMgJ2ZuqM89O+Eb08AhnxUZtI1Ovhf8q8zbdIBoQxCFyRQDZpDtZy2cMHF/eJOylYRAR1c= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786603975; c=relaxed/simple; bh=mD4MIu7A6RBKLGLZhcQN38rVB6TQlU0KUw0OmGTmwG0=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=FAX6fm+dXRTBCBAXC9rO0faeYXKqSy6Tvpz409XaOGHgL1gKNc382O7y0YFAkiGx0RF79G7TFnOghJq6/GUjUhFneW3OQfxXvnkWlmwsmGCqDzrpXF/UsiIs85Y8nRbhiG+6Ze965eW1tYke3xAOltfM36tR27KToZPBLgE3Slw= 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=SWhuLZyR; arc=none smtp.client-ip=209.85.167.53 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="SWhuLZyR" Received: by mail-lf1-f53.google.com with SMTP id 2adb3069b0e04-5b00d083818so624381e87.1 for ; Wed, 12 Aug 2026 23:52:53 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1786603971; x=1787208771; 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=SWhuLZyRh657YJrnjpn4S3tebS0WdScj1A8xkz8NDEqnTpuaSfmZaZ2dUwKSP6qH6Z 4gev1e4NupWGuzRo+MjwHNTheemSC9qm6WYEmrlGZ8ZnWj5kwCANicNXJIDdxPgPFxuY B4W+CsZRI7LivIHBUMMvekFYaC3Fjo9F8UKSYke8QVAXv4Vvnau56qbsp/qyaFKa5DbA Tin0vTKKS3BbwBjLb5tYgF6i1zolS0hwbiz6HC05LtNe2YzqdD8vs4eYaKjZXbZk/5q1 uH/G74H3a3/Y918aszNQxloUc24xM1yAxY1rlunn7lANLpqIX+sawsW5mRT9b/6d6OYX kc/w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1786603971; x=1787208771; 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=qCEwCDvfoAh+F6mnBv25zSfr8yLedUw8AhhvW7PExl6I+wzIjWrbazSvpIG9fYlTZQ jXJU0ZpJV8QDPZSdegQVmiymLg1AwYokPR/arKfrrQDqguvzIfjI/SmHtir8yHKRLXUp tl62HXJIY+JcQyxxKwqKvSq38iBLyIvvAFmlBcVswlwF5h0QJ27FNoAFDhrkbeCnUJ7X mXgvRXGteHGuPuZud2W1e+jnxQFW/Vv6SDfiLi4m79dLY87u/yEKtnCbJfGmSBhl3FeI UOxM8dQCQ7i6T4Oq83hZpGN0tsU/1k2u7xKGG8y4KT4UGCAgdydCUNCdRgDUeZ85SQ4D lDww== X-Forwarded-Encrypted: i=1; AHgh+RrfEIAzqIyDvbsXnPXGeviBhmzG4A+aKvgcd7v5HYhshzArWuYwYOUH6Ol6db04RoIyokLDefXuql6y3uo=@vger.kernel.org X-Gm-Message-State: AOJu0Yw7bMFGNrXoOhu93X7569QDMWWTUVtYOYPUBffWgudWjESHgtXz ugNEqPKj8kR57QZjs6YrhxT9oIIN2vDwANz0OHJDYD7T92RUeeIF89b9 X-Gm-Gg: AR+sD13twKy9+ZBW/67GiYbg6OwBHylzg75RGuq/u7om23CwaASxUq3mHH4OSgyXwRn S5x6qYQ65kiK7QT0Nb4lvLSHCuReGXeouVp2UlsVQ/i3TU3dVAbuBkX7ljlx0f0g/V8KRQRivIi ei7MbpLzIW2sjGnxgx2cZKPT3+by4p4Y/tyxM378gg2sYIzDJ5/NmLVvJ7LzXFmMOunN3IJW5yF 9mBFJXsQ/t46/l0ed6zzfaIAk/9HpFmRw7Iq2kTXhdPZxeE+B2mIgqtv98It6MJ9E4hQJin7PBG MyGLqvwYpEbNGWuzM+nLtVunEmeXU/kfOLtsW2wDZ+pwuXtnzUM7YINrK4dUBpnwxeOk6mQx6Ug 2U9seky0rckSR9R4v3QM97EuNViu3sILSssp1UrzqGACO3DBTFYYh/bMf3kKsdlCAVS/8qjUnVH 7u3y0d1qMBfyzUolmb/88OR0gIM2rLC8mhFlHEeSJqt8lT/4F2mySvEMy/qMGNHt399QDAlariK 4moxtQCsr4jI3hMYxAljAvVDe/+ImIenGnKPHR4xKWEXVM2mXzbowxQtIScTw== X-Received: by 2002:a05:6512:239c:b0:5b2:aa5d:9ce7 with SMTP id 2adb3069b0e04-5b453cc56afmr627846e87.10.1786603971325; Wed, 12 Aug 2026 23:52:51 -0700 (PDT) Received: from archlinux ([94.180.96.85]) by smtp.gmail.com with ESMTPSA id 2adb3069b0e04-5b453a54adasm270076e87.38.2026.08.12.23.52.50 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 12 Aug 2026 23:52:51 -0700 (PDT) From: Arsenii Pashchenko To: pkshih@realtek.com Cc: linux-wireless@vger.kernel.org, linux-kernel@vger.kernel.org, Arsenii Pashchenko Subject: [PATCH rtw-next v3 4/4] wifi: rtw88: rtw8822c: simplify amplitude search and offset via s32 Date: Thu, 13 Aug 2026 13:52:35 +0700 Message-ID: <0bb6e2fb78d0b2def623210938204a0efbbe2034.1786603749.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