Received: by 2002:a25:1985:0:0:0:0:0 with SMTP id 127csp1869721ybz; Thu, 30 Apr 2020 06:59:35 -0700 (PDT) X-Google-Smtp-Source: APiQypL/hKJYs1ypL2BG9ty7IsHFKZn7crLpra99U3XMAskntCOC5LNE44TkcLhXat5owswJIdtS X-Received: by 2002:a50:e68e:: with SMTP id z14mr2901042edm.307.1588255175677; Thu, 30 Apr 2020 06:59:35 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1588255175; cv=none; d=google.com; s=arc-20160816; b=HbCVhNryyAAfnI8wTHEywQXR66jA/rC06YnLYB7LT6gF8pk9uSlI+RuFd2FQUZtiC0 BTe7tX/ldtganZhvaM8Xe6+4KvPCopXKvOe2H/RZelKh2xUqz4dpLajw6BFu5Hs1OaUL HQQXx/UTB2figRa8XRyhcZd8/Pxjs4ClFOvJcJZD3PqgSUNjwqvcosbS+8BeReF66O9Q NknpPoCI2Y1B6GumN5DXuprn3bgKnFMVzalTa2SmBSm64bP0anQG3SM1JqOo40J4Uw3d Gu4OIWYYPi6i4Bj6L8hN/h1QLxA3kcJNxzkXwmy8SU7UDBS9NwAZW42/lBWWu5lu/gBs xnBA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:in-reply-to:content-disposition :mime-version:references:message-id:subject:cc:to:from:date; bh=1IWhQGlWMoDAVlCLemQJDQd3eYpqpOd9HBcIVIPjBA4=; b=n3PFuIYjwvf38CesWX8B22VzzZhvAOXqZTLN9LIUgqO1mw02FJiEQubGBYUc+0TIw2 xMAEONLWZ0nR2EYysVIUNqBQrXTYcapHFG8BO4LMIMd48JH2LGUOlr8bekOvhCG2SLj/ tosFFhge1PuwapX2DxyijMeVz4CW1YoAk9yREf7NdncTukhl0CSVZuXV88S8vVi+WsaA qgzeiWg4ax7j3zzOuqbdMv2BeOeju3+BucoSj9eAMMsvU/jZZXFriJcjqeoEDmvA1KdU WeErCnyxcNoaaV6ewxftp3Iu819KBMRwdupbjDvusiQM6aYNw1IQEzbt/sc90XXjmvbz +pVA== 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 w21si5697720edt.595.2020.04.30.06.58.53; Thu, 30 Apr 2020 06:59:35 -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 S1729304AbgD3N5y (ORCPT + 99 others); Thu, 30 Apr 2020 09:57:54 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:55806 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1729006AbgD3N5x (ORCPT ); Thu, 30 Apr 2020 09:57:53 -0400 Received: from Galois.linutronix.de (Galois.linutronix.de [IPv6:2a0a:51c0:0:12e:550::1]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 3EA3CC035494 for ; Thu, 30 Apr 2020 06:57:53 -0700 (PDT) Received: from bigeasy by Galois.linutronix.de with local (Exim 4.80) (envelope-from ) id 1jU9hF-0003xy-VQ; Thu, 30 Apr 2020 15:57:50 +0200 Date: Thu, 30 Apr 2020 15:57:49 +0200 From: Sebastian Andrzej Siewior To: yhchuang@realtek.com Cc: kvalo@codeaurora.org, pkshih@realtek.com, linux-wireless@vger.kernel.org, briannorris@chromium.org, kevin_yang@realtek.com Subject: Re: [PATCH 25/40] rtw88: 8723d: Add LC calibration Message-ID: <20200430135749.pjtzrnsnvkknwjim@linutronix.de> References: <20200417074653.15591-1-yhchuang@realtek.com> <20200417074653.15591-26-yhchuang@realtek.com> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline In-Reply-To: <20200417074653.15591-26-yhchuang@realtek.com> Sender: linux-wireless-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-wireless@vger.kernel.org On 2020-04-17 15:46:38 [+0800], yhchuang@realtek.com wrote: > index cf897af380c1..94784c7f0743 100644 > --- a/drivers/net/wireless/realtek/rtw88/rtw8723d.c > +++ b/drivers/net/wireless/realtek/rtw88/rtw8723d.c > @@ -64,6 +64,33 @@ static const struct rtw_hw_reg rtw8723d_txagc[] = { > #define WLAN_LTR_CTRL1 0xCB004010 > #define WLAN_LTR_CTRL2 0x01233425 > > +static void rtw8723d_lck(struct rtw_dev *rtwdev) > +{ > +#define BIT_LCK BIT(15) please don't add defines like this within a function. > + u8 val_ctx; > + u32 lc_cal, cnt; > + > + val_ctx = rtw_read8(rtwdev, REG_CTX); > + if ((val_ctx & BIT_MASK_CTX_TYPE) != 0) > + rtw_write8(rtwdev, REG_CTX, val_ctx & ~BIT_MASK_CTX_TYPE); > + else > + rtw_write8(rtwdev, REG_TXPAUSE, 0xFF); > + lc_cal = rtw_read_rf(rtwdev, RF_PATH_A, RF_CFGCH, RFREG_MASK); > + > + rtw_write_rf(rtwdev, RF_PATH_A, RF_CFGCH, RFREG_MASK, lc_cal | BIT_LCK); > + for (cnt = 0; cnt < 100; cnt++) { > + if (rtw_read_rf(rtwdev, RF_PATH_A, RF_CFGCH, BIT_LCK) != 0x1) > + break; > + mdelay(10); Do you have any numbers on how long this takes? Like best-case, on average, worst case? I'm asking because if the bit does not flip on the first read then you busy-loop-delay here for 10ms. If it does not flip at all, you busy waited a whole second without any consequence. It looks like this context here is not atomic so msleep() would work where. Sebastian