From mboxrd@z Thu Jan 1 00:00:00 1970 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: 8bit 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/wireless/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 @@ */ #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; } -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 = (u32)value_s32; - bool ret = true; - if ((value >= 0x200 && (0x400 - value) > 0x64) || - (value < 0x200 && value > 0x64)) { - ret = false; + if (value > 100 || value < -100) { rtw_dbg(rtwdev, RTW_DBG_RFK, "[DACK] Error overflow\n"); + return false; } - return ret; + return true; } static void rtw8822c_dac_cal_iq_sample(struct rtw_dev *rtwdev, s32 *iv, s32 *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 = rtw_read32_mask(rtwdev, 0x2dbc, 0x3fffff); - iv[i] = (s32)((temp & 0x3ff000) >> 12); - qv[i] = (s32)(temp & 0x3ff); + iv[i] = sign_extend32((temp & 0x3ff000) >> 12, 9); + qv[i] = sign_extend32(temp & 0x3ff, 9); 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, if (i_delta > 5 || q_delta > 5) { temp = rtw_read32_mask(rtwdev, 0x2dbc, 0x3fffff); - iv[0] = (s32)((temp & 0x3ff000) >> 12); - qv[0] = (s32)(temp & 0x3ff); + iv[0] = sign_extend32((temp & 0x3ff000) >> 12, 9); + qv[0] = sign_extend32(temp & 0x3ff, 9); temp = rtw_read32_mask(rtwdev, 0x2dbc, 0x3fffff); - iv[DACK_SN_8822C - 1] = (s32)((temp & 0x3ff000) >> 12); - qv[DACK_SN_8822C - 1] = (s32)(temp & 0x3ff); + iv[DACK_SN_8822C - 1] = sign_extend32((temp & 0x3ff000) >> 12, 9); + qv[DACK_SN_8822C - 1] = sign_extend32(temp & 0x3ff, 9); } else { break; } -- 2.55.0