Received: by 2002:ac0:98c7:0:0:0:0:0 with SMTP id g7-v6csp410928imd; Sat, 3 Nov 2018 03:01:44 -0700 (PDT) X-Google-Smtp-Source: AJdET5eRqAnD4AKtPMqj5B3ZwiJANajQkI34Ht5BXZREX3FGE+89qwTiFaR/5WuDAM8EBP1xz+a9 X-Received: by 2002:a17:902:3204:: with SMTP id y4-v6mr14855545plb.135.1541239304194; Sat, 03 Nov 2018 03:01:44 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1541239304; cv=none; d=google.com; s=arc-20160816; b=RgQ/EnCLUxWRA3AikehRO1/rWc82J2zjiKJLmAmQ1y+IjprXY7YQzYw12XVw/4iBIg c4y4dJabmNbc3W2Fsy5Nt9Vho6wF395xteNDT5FxC6y6rERDPgm31uIIf6Gl5IBkuo6A J1xbR6bO5SYjmD0rcN+x5iMpM2Xu2aYkrPqJExlTURlZ2LY3GQhlAB/85N7SVc1GGmsj IbRE4S2CrunRLl287v/SevixRupk5f1t1PjNYIKJ/42lONj361uUHcIspMGd/pTW0tRE YBIf8PHzdudogPEtAlAR+K/okj0APG18ySMEkh7Kp2aotwmDArOOn4rFr8ySldafOSz4 ap2w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=Iw3/eBMXKjL/tJozzy1CHxorjuHhPG60Rb0+2uCQXek=; b=PyI9h2JtAzafp/8nuauhReKVKg/NWNxZGrr4X00rHXbMsxDMx10F35Ogg+LcVlKPj0 O07xqACbcLiielDsB8rkKGzNhwf9tRzLRnQ9JoUACuwCke2UXvoNBPMmLZ8qsSOOPPSw Gw7EIHL2EpabApmQO3CCxjmAkYlPx6qkcfJGWZutMy6GGJWct4vj4gtIDdcHQ8xEGrei AA1UVVNoTYAFYsmlCTS0PUlZyI3IAZKId42Z9xfuI3LaK8lZT3GqGg8KCftVn100AJUX cW6Imq14UkoUIkTGiWXg+iBdF1jkK/QCZkJGPb+1TE0s+z6SjbjEbGjXRejlt/khMjIK ypSg== ARC-Authentication-Results: i=1; mx.google.com; dkim=fail header.i=@plaes.org header.s=mail header.b=lCuUYnH1; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id m3-v6si35749090pgr.32.2018.11.03.03.00.54; Sat, 03 Nov 2018 03:01:44 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=fail header.i=@plaes.org header.s=mail header.b=lCuUYnH1; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728342AbeKCTKm (ORCPT + 99 others); Sat, 3 Nov 2018 15:10:42 -0400 Received: from plaes.org ([188.166.43.21]:34634 "EHLO plaes.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726711AbeKCTKl (ORCPT ); Sat, 3 Nov 2018 15:10:41 -0400 Received: from localhost (85.253.196.132.cable.starman.ee [85.253.196.132]) by plaes.org (Postfix) with ESMTPSA id ADE964181D; Sat, 3 Nov 2018 09:59:52 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=plaes.org; s=mail; t=1541239192; bh=qaERkaGaX9K3eMgbFk+T005QS8FY727yLXnAPNLEV/s=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=lCuUYnH1dbZJNYbjHjf+soq8iOy2g2NzDqhbRwZ6rrVJPJrQvKiphEZyn2Mv827LN QKxZdpGA10+GzaoOotB22ys471QvokbZL50zY5PAKKdqNnZ1YNIGYRXcKNloVXGNWu qTMRirWfxIsczODmQ5s1AF6OS7vKryF1GpGMle0H19A1mygSehx2E/qfdKZzRzPskq KgGIcSpzTHmMzW8TSk87yfXGrGSy052VmW2TLFkFD+uu7pN/fFFiUWMuzh1SXu7N6P nav5BGjXxKsC20GrZWdfid1nbogIF86iBViwkHnJMTimEg0QAnKkLZDzu2gzNw1EYc 0OkIxM7+rZ4mA== From: Priit Laes To: linux-kernel@vger.kernel.org Cc: Kalle Valo , "David S. Miller" , linux-wireless@vger.kernel.org, b43-dev@lists.infradead.org, netdev@vger.kernel.org Subject: [PATCH 4/5] b43: Use common cordic algorithm from kernel lib Date: Sat, 3 Nov 2018 11:59:43 +0200 Message-Id: X-Mailer: git-send-email 2.19.1 In-Reply-To: References: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Signed-off-by: Priit Laes --- drivers/net/wireless/broadcom/b43/Kconfig | 1 + drivers/net/wireless/broadcom/b43/phy_lp.c | 13 +++++++------ drivers/net/wireless/broadcom/b43/phy_n.c | 13 +++++++------ 3 files changed, 15 insertions(+), 12 deletions(-) diff --git a/drivers/net/wireless/broadcom/b43/Kconfig b/drivers/net/wireless/broadcom/b43/Kconfig index fba8560..3e41457 100644 --- a/drivers/net/wireless/broadcom/b43/Kconfig +++ b/drivers/net/wireless/broadcom/b43/Kconfig @@ -4,6 +4,7 @@ config B43 select BCMA if B43_BCMA select SSB if B43_SSB select FW_LOADER + select CORDIC ---help--- b43 is a driver for the Broadcom 43xx series wireless devices. diff --git a/drivers/net/wireless/broadcom/b43/phy_lp.c b/drivers/net/wireless/broadcom/b43/phy_lp.c index 6922cbb..1718e3b 100644 --- a/drivers/net/wireless/broadcom/b43/phy_lp.c +++ b/drivers/net/wireless/broadcom/b43/phy_lp.c @@ -23,6 +23,7 @@ */ +#include #include #include "b43.h" @@ -1780,9 +1781,9 @@ static void lpphy_start_tx_tone(struct b43_wldev *dev, s32 freq, u16 max) { struct b43_phy_lp *lpphy = dev->phy.lp; u16 buf[64]; - int i, samples = 0, angle = 0; + int i, samples = 0, theta = 0; int rotation = (((36 * freq) / 20) << 16) / 100; - struct b43_c32 sample; + struct cordic_iq sample; lpphy->tx_tone_freq = freq; @@ -1798,10 +1799,10 @@ static void lpphy_start_tx_tone(struct b43_wldev *dev, s32 freq, u16 max) } for (i = 0; i < samples; i++) { - sample = b43_cordic(angle); - angle += rotation; - buf[i] = CORDIC_CONVERT((sample.i * max) & 0xFF) << 8; - buf[i] |= CORDIC_CONVERT((sample.q * max) & 0xFF); + sample = cordic_calc_iq(theta); + theta += rotation; + buf[i] = CORDIC_FLOAT((sample.i * max) & 0xFF) << 8; + buf[i] |= CORDIC_FLOAT((sample.q * max) & 0xFF); } b43_lptab_write_bulk(dev, B43_LPTAB16(5, 0), samples, buf); diff --git a/drivers/net/wireless/broadcom/b43/phy_n.c b/drivers/net/wireless/broadcom/b43/phy_n.c index 44ab080..1f9378a 100644 --- a/drivers/net/wireless/broadcom/b43/phy_n.c +++ b/drivers/net/wireless/broadcom/b43/phy_n.c @@ -23,6 +23,7 @@ */ +#include #include #include #include @@ -1513,7 +1514,7 @@ static void b43_radio_init2055(struct b43_wldev *dev) /* http://bcm-v4.sipsolutions.net/802.11/PHY/N/LoadSampleTable */ static int b43_nphy_load_samples(struct b43_wldev *dev, - struct b43_c32 *samples, u16 len) { + struct cordic_iq *samples, u16 len) { struct b43_phy_n *nphy = dev->phy.n; u16 i; u32 *data; @@ -1544,7 +1545,7 @@ static u16 b43_nphy_gen_load_samples(struct b43_wldev *dev, u32 freq, u16 max, { int i; u16 bw, len, rot, angle; - struct b43_c32 *samples; + struct cordic_iq *samples; bw = b43_is_40mhz(dev) ? 40 : 20; len = bw << 3; @@ -1561,7 +1562,7 @@ static u16 b43_nphy_gen_load_samples(struct b43_wldev *dev, u32 freq, u16 max, len = bw << 1; } - samples = kcalloc(len, sizeof(struct b43_c32), GFP_KERNEL); + samples = kcalloc(len, sizeof(struct cordic_iq), GFP_KERNEL); if (!samples) { b43err(dev->wl, "allocation for samples generation failed\n"); return 0; @@ -1570,10 +1571,10 @@ static u16 b43_nphy_gen_load_samples(struct b43_wldev *dev, u32 freq, u16 max, angle = 0; for (i = 0; i < len; i++) { - samples[i] = b43_cordic(angle); + samples[i] = cordic_calc_iq(angle); angle += rot; - samples[i].q = CORDIC_CONVERT(samples[i].q * max); - samples[i].i = CORDIC_CONVERT(samples[i].i * max); + samples[i].q = CORDIC_FLOAT(samples[i].q * max); + samples[i].i = CORDIC_FLOAT(samples[i].i * max); } i = b43_nphy_load_samples(dev, samples, len); -- git-series 0.9.1