From patchwork Mon Aug 16 20:39:17 2010 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: =?utf-8?q?G=C3=A1bor_Stefanik?= X-Patchwork-Id: 119796 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by demeter.kernel.org (8.14.4/8.14.3) with ESMTP id o7GKdPbd025673 for ; Mon, 16 Aug 2010 20:39:26 GMT Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1756581Ab0HPUjY (ORCPT ); Mon, 16 Aug 2010 16:39:24 -0400 Received: from mail-fx0-f46.google.com ([209.85.161.46]:41041 "EHLO mail-fx0-f46.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1755353Ab0HPUjY (ORCPT ); Mon, 16 Aug 2010 16:39:24 -0400 Received: by mail-fx0-f46.google.com with SMTP id 13so3130309fxm.19 for ; Mon, 16 Aug 2010 13:39:23 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:received:received:from:to:cc:subject:date :message-id:x-mailer:in-reply-to:references:mime-version :content-type:content-transfer-encoding; bh=fTHMHzJssjzSzNf7sA4pAt7eSpvTBnrWfFJcfHlYnuQ=; b=BJcH1raIGVRs0SjdgsHHSVaS9WaVaEG5Jxbe9TeK5vBRoNyG1BMmOWokoeQEriV0f0 GDE4si5ed4WT8C/sOl/9WpY35BvkQ12/oLkF4MwLcmCvBr9PfIxnvraPNLfDy/iJgjRJ tPHGGwcgJMS7MMNPjygHmF/kHqRgJk9aNKaOA= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=from:to:cc:subject:date:message-id:x-mailer:in-reply-to:references :mime-version:content-type:content-transfer-encoding; b=pE7Owu/dO1y2JGTfYMZaLTm7bysNmnw2emKKngjXk19HCypxfiKH56iUzPFZ8uBbq6 zYUoBANDAMnA6BS6CX2uw+JG0oI0FKo1/cf/tPaCP4NBgd2Gsc9VnLrTtvVL0wpMgBLJ akuODYoJqgO/u5+4Ek87gEPGK+KILEdA9zi+w= Received: by 10.223.107.211 with SMTP id c19mr5660252fap.20.1281991162723; Mon, 16 Aug 2010 13:39:22 -0700 (PDT) Received: from localhost.localdomain (pool-0010a.externet.hu [80.85.49.9]) by mx.google.com with ESMTPS id r4sm1897477faa.43.2010.08.16.13.39.20 (version=TLSv1/SSLv3 cipher=RC4-MD5); Mon, 16 Aug 2010 13:39:21 -0700 (PDT) From: =?UTF-8?q?G=C3=A1bor=20Stefanik?= To: John Linville , =?UTF-8?q?Michael=20B=C3=BCsch?= Cc: linux-wireless@vger.kernel.org, b43-dev@lists.infradead.org, Larry Finger , =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= , =?UTF-8?q?G=C3=A1bor=20Stefanik?= Subject: [PATCH 4/4] b43: N-PHY: Implement RX core state setting for rev.2 and earlier PHYs Date: Mon, 16 Aug 2010 22:39:17 +0200 Message-Id: <1281991157-1557-4-git-send-email-netrolller.3d@gmail.com> X-Mailer: git-send-email 1.6.4.2 In-Reply-To: <1281991157-1557-3-git-send-email-netrolller.3d@gmail.com> References: <1281991157-1557-1-git-send-email-netrolller.3d@gmail.com> <1281991157-1557-2-git-send-email-netrolller.3d@gmail.com> <1281991157-1557-3-git-send-email-netrolller.3d@gmail.com> MIME-Version: 1.0 Sender: linux-wireless-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-wireless@vger.kernel.org X-Greylist: IP, sender and recipient auto-whitelisted, not delayed by milter-greylist-4.2.3 (demeter.kernel.org [140.211.167.41]); Mon, 16 Aug 2010 20:39:26 +0000 (UTC) diff --git a/drivers/net/wireless/b43/phy_n.c b/drivers/net/wireless/b43/phy_n.c index d2dab55..92cf8b8 100644 --- a/drivers/net/wireless/b43/phy_n.c +++ b/drivers/net/wireless/b43/phy_n.c @@ -3085,6 +3085,44 @@ static void b43_nphy_mac_phy_clock_set(struct b43_wldev *dev, bool on) ssb_write32(dev->dev, SSB_TMSLOW, tmslow); } +/* http://bcm-v4.sipsolutions.net/802.11/PHY/N/RxCoreSetState */ +static void b43_nphy_set_rx_core_state(struct b43_wldev *dev, u8 mask) +{ + struct b43_phy *phy = &dev->phy; + struct b43_phy_n *nphy = phy->n; + u16 buf[16]; + + if (0 /* FIXME clk */) + return; + + b43_mac_suspend(dev); + + if (nphy->hang_avoid) + b43_nphy_stay_in_carrier_search(dev, true); + + b43_phy_maskset(dev, B43_NPHY_RFSEQCA, ~B43_NPHY_RFSEQCA_RXEN, + (mask & 0x3) << B43_NPHY_RFSEQCA_RXEN_SHIFT); + + if (maskbits & 0x3 != 0x3) { + b43_phy_write(dev, B43_NPHY_HPANT_SWTHRES, 1); + if (dev->phy.rev >= 3) { + /* TODO */ + } + } else { + b43_phy_write(dev, B43_NPHY_HPANT_SWTHRES, 0x1E); + if (dev->phy.rev >= 3) { + /* TODO */ + } + } + + b43_nphy_force_rf_sequence(dev, B43_RFSEQ_RESET2RX); + + if (nphy->hang_avoid) + b43_nphy_stay_in_carrier_search(dev, false); + + b43_mac_enable(dev); +} + /* * Init N-PHY * http://bcm-v4.sipsolutions.net/802.11/PHY/Init/N @@ -3211,7 +3249,7 @@ int b43_phy_initn(struct b43_wldev *dev) } if (nphy->phyrxchain != 3) - ;/* TODO N PHY RX Core Set State with phyrxchain as argument */ + b43_nphy_set_rx_core_state(dev, nphy->phyrxchain); if (nphy->mphase_cal_phase_id > 0) ;/* TODO PHY Periodic Calibration Multi-Phase Restart */