linux-wireless.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 1/2] b43: N-PHY: band width setting with dumb clock control call
@ 2010-08-22 19:49 Rafał Miłecki
  2010-08-22 19:49 ` [PATCH 2/2] b43: N-PHY: add sub calls of band width setting Rafał Miłecki
  2010-08-22 23:20 ` [PATCH 1/2] b43: N-PHY: band width setting with dumb clock control call Julian Calaby
  0 siblings, 2 replies; 15+ messages in thread
From: Rafał Miłecki @ 2010-08-22 19:49 UTC (permalink / raw)
  To: linux-wireless, John W. Linville
  Cc: b43-dev, Gábor Stefanik, Rafał Miłecki

Signed-off-by: Rafał Miłecki <zajec5@gmail.com>
---
 drivers/net/wireless/b43/phy_common.c |   20 ++++++++++++++++++++
 drivers/net/wireless/b43/phy_common.h |   11 +++++++++++
 drivers/net/wireless/b43/phy_n.c      |    4 ++--
 drivers/net/wireless/b43/phy_n.h      |    1 -
 4 files changed, 33 insertions(+), 3 deletions(-)

diff --git a/drivers/net/wireless/b43/phy_common.c b/drivers/net/wireless/b43/phy_common.c
index 8f7d7ef..b06e3f0 100644
--- a/drivers/net/wireless/b43/phy_common.c
+++ b/drivers/net/wireless/b43/phy_common.c
@@ -466,3 +466,23 @@ struct b43_c32 b43_cordic(int theta)
 
 	return ret;
 }
+
+/* http://bcm-v4.sipsolutions.net/802.11/PHY/ClkCtlClk */
+static void b43_clock_control(struct b43_wldev *dev, u32 mode)
+{
+	; /* TODO */
+}
+
+/* http://bcm-v4.sipsolutions.net/802.11/PHY/BmacBwSet */
+void b43_bmac_set_b_width(struct b43_wldev *dev, u8 b_width)
+{
+	bool fast = dev->phy.forcefastclk;;
+	if (!fast)
+		b43_clock_control(dev, 0);
+	dev->phy.b_width = b_width;
+	b43_read32(dev, B43_MMIO_MACCTL); /* flush writes */
+	/* TODO: Call PHY BMAC Reset */
+	dev->phy.ops->init(dev);
+	if (fast)
+		b43_clock_control(dev, 2);
+}
diff --git a/drivers/net/wireless/b43/phy_common.h b/drivers/net/wireless/b43/phy_common.h
index bd480b4..9886db0 100644
--- a/drivers/net/wireless/b43/phy_common.h
+++ b/drivers/net/wireless/b43/phy_common.h
@@ -218,6 +218,9 @@ struct b43_phy {
 	bool supports_2ghz;
 	bool supports_5ghz;
 
+	/* Band width */
+	u8 b_width;
+
 	/* HT info */
 	bool is_40mhz;
 
@@ -256,6 +259,9 @@ struct b43_phy {
 	/* PHY TX errors counter. */
 	atomic_t txerr_cnt;
 
+	/* Clock */
+	bool forcefastclk;
+
 #ifdef CONFIG_B43_DEBUG
 	/* PHY registers locked (w.r.t. firmware) */
 	bool phy_locked;
@@ -429,4 +435,9 @@ void b43_phyop_switch_analog_generic(struct b43_wldev *dev, bool on);
 
 struct b43_c32 b43_cordic(int theta);
 
+/**
+ * b43_bmac_set_b_width - Set band width
+ */
+void b43_bmac_set_b_width(struct b43_wldev *dev, u8 b_width);
+
 #endif /* LINUX_B43_PHY_COMMON_H_ */
diff --git a/drivers/net/wireless/b43/phy_n.c b/drivers/net/wireless/b43/phy_n.c
index 2466c0a..ac217da 100644
--- a/drivers/net/wireless/b43/phy_n.c
+++ b/drivers/net/wireless/b43/phy_n.c
@@ -3410,8 +3410,8 @@ static int b43_nphy_set_chanspec(struct b43_wldev *dev,
 
 	nphy->radio_chanspec = chanspec;
 
-	if (chanspec.b_width != nphy->b_width)
-		; /* TODO: BMAC BW Set (chanspec.b_width) */
+	if (chanspec.b_width != dev->phy.b_width)
+		b43_bmac_set_b_width(dev, chanspec.b_width);
 
 	/* TODO: use defines */
 	if (chanspec.b_width == 3) {
diff --git a/drivers/net/wireless/b43/phy_n.h b/drivers/net/wireless/b43/phy_n.h
index 8b6d570..e7acae2 100644
--- a/drivers/net/wireless/b43/phy_n.h
+++ b/drivers/net/wireless/b43/phy_n.h
@@ -984,7 +984,6 @@ struct b43_phy_n {
 	u16 papd_epsilon_offset[2];
 	s32 preamble_override;
 	u32 bb_mult_save;
-	u8 b_width;
 	struct b43_chanspec radio_chanspec;
 
 	bool gain_boost;
-- 
1.7.1


^ permalink raw reply related	[flat|nested] 15+ messages in thread

* [PATCH 2/2] b43: N-PHY: add sub calls of band width setting
  2010-08-22 19:49 [PATCH 1/2] b43: N-PHY: band width setting with dumb clock control call Rafał Miłecki
@ 2010-08-22 19:49 ` Rafał Miłecki
  2010-08-22 19:52   ` Gábor Stefanik
  2010-08-22 23:20 ` [PATCH 1/2] b43: N-PHY: band width setting with dumb clock control call Julian Calaby
  1 sibling, 1 reply; 15+ messages in thread
From: Rafał Miłecki @ 2010-08-22 19:49 UTC (permalink / raw)
  To: linux-wireless, John W. Linville
  Cc: b43-dev, Gábor Stefanik, Rafał Miłecki

Signed-off-by: Rafał Miłecki <zajec5@gmail.com>
---
 drivers/net/wireless/b43/b43.h        |    1 +
 drivers/net/wireless/b43/phy_common.c |  150 ++++++++++++++++++++++++++++++++-
 drivers/net/wireless/b43/phy_common.h |    7 ++
 3 files changed, 157 insertions(+), 1 deletions(-)

diff --git a/drivers/net/wireless/b43/b43.h b/drivers/net/wireless/b43/b43.h
index 8674a99..73376ff 100644
--- a/drivers/net/wireless/b43/b43.h
+++ b/drivers/net/wireless/b43/b43.h
@@ -57,6 +57,7 @@
 #define B43_MMIO_TSF_CFP_REP		0x188
 #define B43_MMIO_TSF_CFP_START		0x18C
 #define B43_MMIO_TSF_CFP_MAXDUR		0x190
+#define B43_MMIO_CLKCTL			0x1E0	/* clock control status */
 
 /* 32-bit DMA */
 #define B43_MMIO_DMA32_BASE0		0x200
diff --git a/drivers/net/wireless/b43/phy_common.c b/drivers/net/wireless/b43/phy_common.c
index b06e3f0..10b9e6f 100644
--- a/drivers/net/wireless/b43/phy_common.c
+++ b/drivers/net/wireless/b43/phy_common.c
@@ -467,10 +467,158 @@ struct b43_c32 b43_cordic(int theta)
 	return ret;
 }
 
+/* http://bcm-v4.sipsolutions.net/802.11/NcClkCtlCc */
+static bool b43_no_check_clock_control_chip_common(struct b43_wldev *dev,
+								u32 mode)
+{
+	/* TODO: this is temporary hack */
+	return (mode == 0);
+}
+
+/* http://bcm-v4.sipsolutions.net/802.11/ClkCtlCc */
+static bool b43_clock_control_chip_common(struct b43_wldev *dev, u32 mode)
+{
+	struct ssb_bus *bus = dev->dev->bus;
+	u16 chip_id = bus->chip_id;
+	u16 chip_rev = bus->chip_rev;
+	/* TODO: specs distinguish PCI and PCIe */
+	bool pci = (bus->bustype == SSB_BUSTYPE_PCI);
+
+	if (dev->dev->id.revision < 6)
+		return false;
+	if (pci && ((chip_id == 0x4311 && chip_rev < 2) ||
+		    (pci && chip_id == 0x4321) ||
+		    (pci && chip_id == 0x4716)))
+		return (mode == 0);
+	return b43_no_check_clock_control_chip_common(dev, mode);
+}
+
+/* http://bcm-v4.sipsolutions.net/802.11/PHY/BmacWaitForWake */
+static void b43_phy_bmac_wait_for_wake(struct b43_wldev *dev)
+{
+	u8 core_rev = dev->dev->bus->pcicore.dev->id.revision;
+	u16 tmp, i;
+
+	if (core_rev == 4) {
+		udelay(5);
+		return;
+	}
+
+	if (dev->phy.type == B43_PHYTYPE_G && core_rev == 5)
+		udelay(2000);
+	else
+		udelay(40);
+
+	for (i = 0; i < 1500; i++) {
+		tmp = b43_shm_read16(dev, B43_SHM_SHARED,
+					B43_SHM_SH_UCODESTAT);
+		if (tmp == B43_SHM_SH_UCODESTAT_SLEEP) {
+			i = 0;
+			break;
+		}
+		udelay(10);
+	}
+	if (i)
+		b43err(dev->wl, "ucode wake up timeout\n");
+}
+
+/* http://bcm-v4.sipsolutions.net/802.11/PHY/MctrlWrite */
+static void b43_phy_mac_control_write(struct b43_wldev *dev)
+{
+	u32 tmp = dev->phy.maccontrol;
+	if (dev->phy.wake_override)
+		tmp |= B43_MACCTL_AWAKE;
+	if (dev->phy.mute_override)
+		tmp &= ~B43_MACCTL_AP;
+	tmp |= B43_MACCTL_INFRA;
+	b43_write32(dev, B43_MMIO_MACCTL, tmp);
+}
+
+/* http://bcm-v4.sipsolutions.net/802.11/PHY/UcodeWakeOverrideSet */
+static void b43_ucode_wake_override_set(struct b43_wldev *dev, u32 override)
+{
+	dev->phy.wake_override |= override;
+	if (dev->phy.wake_override || dev->phy.maccontrol & B43_MACCTL_AWAKE)
+		return;
+	b43_phy_mac_control_write(dev);
+	b43_phy_bmac_wait_for_wake(dev);
+}
+
+/* http://bcm-v4.sipsolutions.net/802.11/PHY/UcodeWakeOverrideClear */
+static void b43_ucode_wake_override_clear(struct b43_wldev *dev, u32 override)
+{
+	dev->phy.wake_override &= ~override;
+	if (dev->phy.wake_override != (dev->phy.maccontrol & B43_MACCTL_AWAKE))
+		return;
+	b43_phy_mac_control_write(dev);
+}
+
 /* http://bcm-v4.sipsolutions.net/802.11/PHY/ClkCtlClk */
 static void b43_clock_control(struct b43_wldev *dev, u32 mode)
 {
-	; /* TODO */
+	struct b43_phy *phy = &dev->phy;
+	struct ssb_bus *bus = dev->dev->bus;
+	u8 core_rev = bus->pcicore.dev->id.revision;
+	u16 i;
+	u32 clkctl;
+	bool wakeup;
+
+	if (bus->chipco.capabilities & SSB_CHIPCO_CAP_PMU) { /* PMU Present */
+		B43_WARN_ON(core_rev < 20);
+		if (phy->clk) {
+			bool tmp = (bus->chipco.pmu.rev == 0 &&
+				(b43_read32(dev, B43_MMIO_CLKCTL) & 0x12));
+
+			if (mode == 0) {
+				clkctl = b43_read32(dev, B43_MMIO_CLKCTL);
+				clkctl |= 0x2;
+				b43_write32(dev, B43_MMIO_CLKCTL, clkctl);
+				udelay(33);
+			}
+
+			if (mode == 0 || tmp) {
+				for (i = 0; i < 1500; i++) {
+					clkctl = b43_read32(dev, B43_MMIO_CLKCTL);
+					if ((clkctl & 0x20000) == 0) {
+						i = 0;
+						break;
+					}
+					udelay(10);
+				}
+				if (i)
+					b43err(dev->wl, "clock timeout\n");
+			}
+
+			if (mode != 0 && tmp) {
+				clkctl = b43_read32(dev, B43_MMIO_CLKCTL);
+				clkctl &= ~0x2;
+				b43_write32(dev, B43_MMIO_CLKCTL, clkctl);
+			}
+		}
+		phy->forcefastclk = (mode == 0);
+	} else {
+		B43_WARN_ON(core_rev >= 20);
+
+		wakeup = (core_rev < 9);
+		if (phy->up && wakeup)
+			b43_ucode_wake_override_set(dev, 1);
+
+		phy->forcefastclk = b43_clock_control_chip_common(dev, mode);
+		if (core_rev < 11) {
+			if (phy->forcefastclk)
+				; /* TODO: b43_mhf(dev, 0, 0x400, 0x400, 3); */
+			else
+				; /* TODO: b43_mhf(dev, 0, 0x400, 0, 3); */
+		}
+
+		if (phy->forcefastclk)
+			phy->wake_override |= 0x10;
+		else
+			phy->wake_override &= ~0x10;
+
+		if (phy->up && wakeup)
+			b43_ucode_wake_override_clear(dev, 1);
+	}
 }
 
 /* http://bcm-v4.sipsolutions.net/802.11/PHY/BmacBwSet */
diff --git a/drivers/net/wireless/b43/phy_common.h b/drivers/net/wireless/b43/phy_common.h
index 9886db0..fa20548 100644
--- a/drivers/net/wireless/b43/phy_common.h
+++ b/drivers/net/wireless/b43/phy_common.h
@@ -260,8 +260,15 @@ struct b43_phy {
 	atomic_t txerr_cnt;
 
 	/* Clock */
+	u32 clk;
 	bool forcefastclk;
 
+	bool up;
+	u32 maccontrol;
+
+	u32 wake_override;
+	u32 mute_override;
+
 #ifdef CONFIG_B43_DEBUG
 	/* PHY registers locked (w.r.t. firmware) */
 	bool phy_locked;
-- 
1.7.1


^ permalink raw reply related	[flat|nested] 15+ messages in thread

* Re: [PATCH 2/2] b43: N-PHY: add sub calls of band width setting
  2010-08-22 19:49 ` [PATCH 2/2] b43: N-PHY: add sub calls of band width setting Rafał Miłecki
@ 2010-08-22 19:52   ` Gábor Stefanik
  2010-08-22 19:58     ` Rafał Miłecki
  0 siblings, 1 reply; 15+ messages in thread
From: Gábor Stefanik @ 2010-08-22 19:52 UTC (permalink / raw)
  To: Rafał Miłecki; +Cc: linux-wireless, John W. Linville, b43-dev

MjAxMC84LzIyIFJhZmHFgiBNacWCZWNraSA8emFqZWM1QGdtYWlsLmNvbT46Cj4gU2lnbmVkLW9m
Zi1ieTogUmFmYcWCIE1pxYJlY2tpIDx6YWplYzVAZ21haWwuY29tPgo+IC0tLQo+IMKgZHJpdmVy
cy9uZXQvd2lyZWxlc3MvYjQzL2I0My5oIMKgIMKgIMKgIMKgfCDCoCDCoDEgKwo+IMKgZHJpdmVy
cy9uZXQvd2lyZWxlc3MvYjQzL3BoeV9jb21tb24uYyB8IMKgMTUwICsrKysrKysrKysrKysrKysr
KysrKysrKysrKysrKysrLQo+IMKgZHJpdmVycy9uZXQvd2lyZWxlc3MvYjQzL3BoeV9jb21tb24u
aCB8IMKgIMKgNyArKwo+IMKgMyBmaWxlcyBjaGFuZ2VkLCAxNTcgaW5zZXJ0aW9ucygrKSwgMSBk
ZWxldGlvbnMoLSkKPgo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9iNDMvYjQz
LmggYi9kcml2ZXJzL25ldC93aXJlbGVzcy9iNDMvYjQzLmgKPiBpbmRleCA4Njc0YTk5Li43MzM3
NmZmIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2I0My9iNDMuaAo+ICsrKyBi
L2RyaXZlcnMvbmV0L3dpcmVsZXNzL2I0My9iNDMuaAo+IEBAIC01Nyw2ICs1Nyw3IEBACj4gwqAj
ZGVmaW5lIEI0M19NTUlPX1RTRl9DRlBfUkVQIMKgIMKgIMKgIMKgIMKgIDB4MTg4Cj4gwqAjZGVm
aW5lIEI0M19NTUlPX1RTRl9DRlBfU1RBUlQgwqAgwqAgwqAgwqAgMHgxOEMKPiDCoCNkZWZpbmUg
QjQzX01NSU9fVFNGX0NGUF9NQVhEVVIgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAweDE5MAo+ICsj
ZGVmaW5lIEI0M19NTUlPX0NMS0NUTCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC
oDB4MUUwIMKgIC8qIGNsb2NrIGNvbnRyb2wgc3RhdHVzICovCj4KPiDCoC8qIDMyLWJpdCBETUEg
Ki8KPiDCoCNkZWZpbmUgQjQzX01NSU9fRE1BMzJfQkFTRTAgwqAgwqAgwqAgwqAgwqAgMHgyMDAK
PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYjQzL3BoeV9jb21tb24uYyBiL2Ry
aXZlcnMvbmV0L3dpcmVsZXNzL2I0My9waHlfY29tbW9uLmMKPiBpbmRleCBiMDZlM2YwLi4xMGI5
ZTZmIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2I0My9waHlfY29tbW9uLmMK
PiArKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9iNDMvcGh5X2NvbW1vbi5jCj4gQEAgLTQ2Nywx
MCArNDY3LDE1OCBAQCBzdHJ1Y3QgYjQzX2MzMiBiNDNfY29yZGljKGludCB0aGV0YSkKPiDCoCDC
oCDCoCDCoHJldHVybiByZXQ7Cj4gwqB9Cj4KPiArLyogaHR0cDovL2JjbS12NC5zaXBzb2x1dGlv
bnMubmV0LzgwMi4xMS9OY0Nsa0N0bENjICovCj4gK3N0YXRpYyBib29sIGI0M19ub19jaGVja19j
bG9ja19jb250cm9sX2NoaXBfY29tbW9uKHN0cnVjdCBiNDNfd2xkZXYgKmRldiwKPiArIMKgIMKg
IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg
IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHUzMiBtb2RlKQo+ICt7Cj4gKyDCoCDCoCDC
oCAvKiBUT0RPOiB0aGlzIGlzIHRlbXBvcmFyeSBoYWNrICovCj4gKyDCoCDCoCDCoCByZXR1cm4g
KG1vZGUgPT0gMCk7Cj4gK30KPiArCj4gKy8qIGh0dHA6Ly9iY20tdjQuc2lwc29sdXRpb25zLm5l
dC84MDIuMTEvQ2xrQ3RsQ2MgKi8KPiArc3RhdGljIGJvb2wgYjQzX2Nsb2NrX2NvbnRyb2xfY2hp
cF9jb21tb24oc3RydWN0IGI0M193bGRldiAqZGV2LCB1MzIgbW9kZSkKPiArewo+ICsgwqAgwqAg
wqAgc3RydWN0IHNzYl9idXMgKmJ1cyA9IGRldi0+ZGV2LT5idXM7Cj4gKyDCoCDCoCDCoCB1MTYg
Y2hpcF9pZCA9IGJ1cy0+Y2hpcF9pZDsKPiArIMKgIMKgIMKgIHUxNiBjaGlwX3JldiA9IGJ1cy0+
Y2hpcF9yZXY7Cj4gKyDCoCDCoCDCoCAvKiBUT0RPOiBzcGVjcyBkaXN0aW5ndWlzaCBQQ0kgYW5k
IFBDSWUgKi8KPiArIMKgIMKgIMKgIGJvb2wgcGNpID0gKGJ1cy0+YnVzdHlwZSA9PSBTU0JfQlVT
VFlQRV9QQ0kpOwo+ICsKPiArIMKgIMKgIMKgIGlmIChkZXYtPmRldi0+aWQucmV2aXNpb24gPCA2
KQo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgcmV0dXJuIGZhbHNlOwo+ICsgwqAgwqAgwqAgaWYg
KHBjaSAmJiAoKGNoaXBfaWQgPT0gMHg0MzExICYmIGNoaXBfcmV2IDwgMikgfHwKPiArIMKgIMKg
IMKgIMKgIMKgIMKgIMKgIMKgIMKgIChwY2kgJiYgY2hpcF9pZCA9PSAweDQzMjEpIHx8Cj4gKyDC
oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCAocGNpICYmIGNoaXBfaWQgPT0gMHg0NzE2KSkpCj4g
KyDCoCDCoCDCoCDCoCDCoCDCoCDCoCByZXR1cm4gKG1vZGUgPT0gMCk7Cj4gKyDCoCDCoCDCoCBy
ZXR1cm4gYjQzX25vX2NoZWNrX2Nsb2NrX2NvbnRyb2xfY2hpcF9jb21tb24oZGV2LCBtb2RlKTsK
PiArfQo+ICsKPiArLyogaHR0cDovL2JjbS12NC5zaXBzb2x1dGlvbnMubmV0LzgwMi4xMS9QSFkv
Qm1hY1dhaXRGb3JXYWtlICovCj4gK3N0YXRpYyB2b2lkIGI0M19waHlfYm1hY193YWl0X2Zvcl93
YWtlKHN0cnVjdCBiNDNfd2xkZXYgKmRldikKPiArewo+ICsgwqAgwqAgwqAgdTggY29yZV9yZXYg
PSBkZXYtPmRldi0+YnVzLT5wY2ljb3JlLmRldi0+aWQucmV2aXNpb247Cj4gKyDCoCDCoCDCoCB1
MTYgdG1wLCBpOwo+ICsKPiArIMKgIMKgIMKgIGlmIChjb3JlX3JldiA9PSA0KSB7Cj4gKyDCoCDC
oCDCoCDCoCDCoCDCoCDCoCB1ZGVsYXkoNSk7Cj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCByZXR1
cm47Cj4gKyDCoCDCoCDCoCB9Cj4gKwo+ICsgwqAgwqAgwqAgaWYgKGRldi0+cGh5LnR5cGUgPT0g
QjQzX1BIWVRZUEVfRyAmJiBjb3JlX3JldiA9PSA1KQo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAg
dWRlbGF5KDIwMDApOwo+ICsgwqAgwqAgwqAgZWxzZQo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAg
dWRlbGF5KDQwKTsKPiArCj4gKyDCoCDCoCDCoCBmb3IgKGkgPSAwOyBpIDwgMTUwMDsgaSsrKSB7
Cj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCB0bXAgPSBiNDNfc2htX3JlYWQxNihkZXYsIEI0M19T
SE1fU0hBUkVELAo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg
wqAgwqAgwqAgwqAgwqAgQjQzX1NITV9TSF9VQ09ERVNUQVQpOwo+ICsgwqAgwqAgwqAgwqAgwqAg
wqAgwqAgaWYgKHRtcCA9PSBCNDNfU0hNX1NIX1VDT0RFU1RBVF9TTEVFUCkgewo+ICsgwqAgwqAg
wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgaSA9IDA7Cj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDC
oCDCoCDCoCDCoCDCoCBicmVhazsKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIH0KPiArIMKgIMKg
IMKgIMKgIMKgIMKgIMKgIHVkZWxheSgxMCk7Cj4gKyDCoCDCoCDCoCB9Cj4gKyDCoCDCoCDCoCBp
ZiAoaSkKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGI0M2VycihkZXYtPndsLCAidWNvZGUgd2Fr
ZSB1cCB0aW1lb3V0XG4iKTsKPiArfQo+ICsKPiArLyogaHR0cDovL2JjbS12NC5zaXBzb2x1dGlv
bnMubmV0LzgwMi4xMS9QSFkvTWN0cmxXcml0ZSAqLwo+ICtzdGF0aWMgdm9pZCBiNDNfcGh5X21h
Y19jb250cm9sX3dyaXRlKHN0cnVjdCBiNDNfd2xkZXYgKmRldikKPiArewo+ICsgwqAgwqAgwqAg
dTMyIHRtcCA9IGRldi0+cGh5Lm1hY2NvbnRyb2w7Cj4gKyDCoCDCoCDCoCBpZiAoZGV2LT5waHku
d2FrZV9vdmVycmlkZSkKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHRtcCB8PSBCNDNfTUFDQ1RM
X0FXQUtFOwo+ICsgwqAgwqAgwqAgaWYgKGRldi0+cGh5Lm11dGVfb3ZlcnJpZGUpCj4gKyDCoCDC
oCDCoCDCoCDCoCDCoCDCoCB0bXAgJj0gfkI0M19NQUNDVExfQVA7Cj4gKyDCoCDCoCDCoCB0bXAg
fD0gQjQzX01BQ0NUTF9JTkZSQTsKPiArIMKgIMKgIMKgIGI0M193cml0ZTMyKGRldiwgQjQzX01N
SU9fTUFDQ1RMLCB0bXApOwo+ICt9Cj4gKwo+ICsvKiBodHRwOi8vYmNtLXY0LnNpcHNvbHV0aW9u
cy5uZXQvODAyLjExL1BIWS9VY29kZVdha2VPdmVycmlkZVNldCAqLwo+ICtzdGF0aWMgdm9pZCBi
NDNfdWNvZGVfd2FrZV9vdmVycmlkZV9zZXQoc3RydWN0IGI0M193bGRldiAqZGV2LCB1MzIgb3Zl
cnJpZGUpCj4gK3sKPiArIMKgIMKgIMKgIGRldi0+cGh5Lndha2Vfb3ZlcnJpZGUgfD0gb3ZlcnJp
ZGU7Cj4gKyDCoCDCoCDCoCBpZiAoZGV2LT5waHkud2FrZV9vdmVycmlkZSB8fCBkZXYtPnBoeS5t
YWNjb250cm9sICYgQjQzX01BQ0NUTF9BV0FLRSkKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHJl
dHVybjsKPiArIMKgIMKgIMKgIGI0M19waHlfbWFjX2NvbnRyb2xfd3JpdGUoZGV2KTsKPiArIMKg
IMKgIMKgIGI0M19waHlfYm1hY193YWl0X2Zvcl93YWtlKGRldik7Cj4gK30KPiArCj4gKy8qIGh0
dHA6Ly9iY20tdjQuc2lwc29sdXRpb25zLm5ldC84MDIuMTEvUEhZL1Vjb2RlV2FrZU92ZXJyaWRl
Q2xlYXIgKi8KPiArc3RhdGljIHZvaWQgYjQzX3Vjb2RlX3dha2Vfb3ZlcnJpZGVfY2xlYXIoc3Ry
dWN0IGI0M193bGRldiAqZGV2LCB1MzIgb3ZlcnJpZGUpCj4gK3sKPiArIMKgIMKgIMKgIGRldi0+
cGh5Lndha2Vfb3ZlcnJpZGUgJj0gfm92ZXJyaWRlOwo+ICsgwqAgwqAgwqAgaWYgKGRldi0+cGh5
Lndha2Vfb3ZlcnJpZGUgIT0gKGRldi0+cGh5Lm1hY2NvbnRyb2wgJiBCNDNfTUFDQ1RMX0FXQUtF
KSkKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHJldHVybjsKPiArIMKgIMKgIMKgIGI0M19waHlf
bWFjX2NvbnRyb2xfd3JpdGUoZGV2KTsKPiArfQo+ICsKPiDCoC8qIGh0dHA6Ly9iY20tdjQuc2lw
c29sdXRpb25zLm5ldC84MDIuMTEvUEhZL0Nsa0N0bENsayAqLwo+IMKgc3RhdGljIHZvaWQgYjQz
X2Nsb2NrX2NvbnRyb2woc3RydWN0IGI0M193bGRldiAqZGV2LCB1MzIgbW9kZSkKPiDCoHsKPiAt
IMKgIMKgIMKgIDsgLyogVE9ETyAqLwo+ICsgwqAgwqAgwqAgc3RydWN0IGI0M19waHkgKnBoeSA9
ICZkZXYtPnBoeTsKPiArIMKgIMKgIMKgIHN0cnVjdCBzc2JfYnVzICpidXMgPSBkZXYtPmRldi0+
YnVzOwo+ICsgwqAgwqAgwqAgdTggY29yZV9yZXYgPSBidXMtPnBjaWNvcmUuZGV2LT5pZC5yZXZp
c2lvbjsKPiArIMKgIMKgIMKgIHUxNiBpOwo+ICsgwqAgwqAgwqAgdTMyIGNsa2N0bDsKPiArIMKg
IMKgIMKgIGJvb2wgd2FrZXVwOwo+ICsKPiArIMKgIMKgIMKgIGlmIChidXMtPmNoaXBjby5jYXBh
YmlsaXRpZXMgJiBTU0JfQ0hJUENPX0NBUF9QTVUpIHsgLyogUE1VIFByZXNlbnQgKi8KPiArIMKg
IMKgIMKgIMKgIMKgIMKgIMKgIEI0M19XQVJOX09OKGNvcmVfcmV2IDwgMjApOwo+ICsgwqAgwqAg
wqAgwqAgwqAgwqAgwqAgaWYgKHBoeS0+Y2xrKSB7Cj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC
oCDCoCDCoCDCoCBib29sIHRtcCA9IChidXMtPmNoaXBjby5wbXUucmV2ID09IDAgJiYKPiArIMKg
IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIChiNDNfcmVhZDMyKGRl
diwgQjQzX01NSU9fQ0xLQ1RMKSAmIDB4MTIpKTsKPiArCj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDC
oCDCoCDCoCDCoCDCoCBpZiAobW9kZSA9PSAwKSB7Cj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC
oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBjbGtjdGwgPSBiNDNfcmVhZDMyKGRldiwgQjQzX01NSU9f
Q0xLQ1RMKTsKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg
IGNsa2N0bCB8PSAweDI7Cj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC
oCDCoCDCoCBiNDNfd3JpdGUzMihkZXYsIEI0M19NTUlPX0NMS0NUTCwgY2xrY3RsKTsKPiArIMKg
IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHVkZWxheSgzMyk7Cj4g
KyDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB9Cj4gKwo+ICsgwqAgwqAgwqAgwqAg
wqAgwqAgwqAgwqAgwqAgwqAgwqAgaWYgKG1vZGUgPT0gMCB8fCB0bXApIHsKPiArIMKgIMKgIMKg
IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGZvciAoaSA9IDA7IGkgPCAxNTAw
OyBpKyspIHsKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg
IMKgIMKgIMKgIMKgIGNsa2N0bCA9IGI0M19yZWFkMzIoZGV2LCBCNDNfTU1JT19DTEtDVEwpOwo+
ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg
wqAgaWYgKChjbGtjdGwgJiAweDIwMDAwKSA9PSAwKSB7Cj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDC
oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBpID0gMDsK
PiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg
IMKgIMKgIMKgIMKgIMKgIGJyZWFrOwo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg
wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgfQo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg
wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgdWRlbGF5KDEwKTsKPiArIMKgIMKgIMKg
IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIH0KPiArIMKgIMKgIMKgIMKgIMKg
IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGlmIChpKQo+ICsgwqAgwqAgwqAgwqAgwqAg
wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgYjQzZXJyKGRldi0+d2ws
ICJjbG9jayB0aW1lb3V0XG4iKTsKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg
IH0KPiArCj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBpZiAobW9kZSAhPSAw
ICYmIHRtcCkgewo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg
wqAgY2xrY3RsID0gYjQzX3JlYWQzMihkZXYsIEI0M19NTUlPX0NMS0NUTCk7Cj4gKyDCoCDCoCDC
oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBjbGtjdGwgJj0gfjB4MjsKPiAr
IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGI0M193cml0ZTMy
KGRldiwgQjQzX01NSU9fQ0xLQ1RMLCBjbGtjdGwpOwo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAg
wqAgwqAgwqAgwqAgfQo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgfQo+ICsgwqAgwqAgwqAgwqAg
wqAgwqAgwqAgcGh5LT5mb3JjZWZhc3RjbGsgPSAobW9kZSA9PSAwKTsKPiArIMKgIMKgIMKgIH0g
ZWxzZSB7Cj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCBCNDNfV0FSTl9PTihjb3JlX3JldiA+PSAy
MCk7Cj4gKwo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgd2FrZXVwID0gKGNvcmVfcmV2IDwgOSk7
Cj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCBpZiAocGh5LT51cCAmJiB3YWtldXApCj4gKyDCoCDC
oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBiNDNfdWNvZGVfd2FrZV9vdmVycmlkZV9zZXQo
ZGV2LCAxKTsKPiArCj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCBwaHktPmZvcmNlZmFzdGNsayA9
IGI0M19jbG9ja19jb250cm9sX2NoaXBfY29tbW9uKGRldiwgbW9kZSk7Cj4gKyDCoCDCoCDCoCDC
oCDCoCDCoCDCoCBpZiAoY29yZV9yZXYgPCAxMSkgewo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAg
wqAgwqAgwqAgwqAgaWYgKHBoeS0+Zm9yY2VmYXN0Y2xrKQo+ICsgwqAgwqAgwqAgwqAgwqAgwqAg
wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgOyAvKiBUT0RPOiBiNDNfbWhmKGRldiwgMCwgMHg0
MDAsIDB4NDAwLCAzKTsgKi8KPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGVs
c2UKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIDsgLyog
VE9ETzogYjQzX21oZihkZXYsIDAsIDB4NDAwLCAwLCAzKTsgKi8KCldlIGRvIGltcGxlbWVudCBt
aGYgYWxyZWFkeSwgdGhvdWdoIGl0IGlzIGRvbmUgZGlmZmVyZW50bHkgdGhhbiBpbiB3bC4KU2Vl
IG15IGVhcmxpZXIgIkFkZCBtaXNzaW5nIEhGIHdyaXRlIiBwYXRjaC4KCj4gKyDCoCDCoCDCoCDC
oCDCoCDCoCDCoCB9Cj4gKwo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgaWYgKHBoeS0+Zm9yY2Vm
YXN0Y2xrKQo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgcGh5LT53YWtlX292
ZXJyaWRlIHw9IDB4MTA7Cj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCBlbHNlCj4gKyDCoCDCoCDC
oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBwaHktPndha2Vfb3ZlcnJpZGUgJj0gfjB4MTA7Cj4g
Kwo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgaWYgKHBoeS0+dXAgJiYgd2FrZXVwKQo+ICsgwqAg
wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgYjQzX3Vjb2RlX3dha2Vfb3ZlcnJpZGVfY2xl
YXIoZGV2LCAxKTsKPiArIMKgIMKgIMKgIH0KPiDCoH0KPgo+IMKgLyogaHR0cDovL2JjbS12NC5z
aXBzb2x1dGlvbnMubmV0LzgwMi4xMS9QSFkvQm1hY0J3U2V0ICovCj4gZGlmZiAtLWdpdCBhL2Ry
aXZlcnMvbmV0L3dpcmVsZXNzL2I0My9waHlfY29tbW9uLmggYi9kcml2ZXJzL25ldC93aXJlbGVz
cy9iNDMvcGh5X2NvbW1vbi5oCj4gaW5kZXggOTg4NmRiMC4uZmEyMDU0OCAxMDA2NDQKPiAtLS0g
YS9kcml2ZXJzL25ldC93aXJlbGVzcy9iNDMvcGh5X2NvbW1vbi5oCj4gKysrIGIvZHJpdmVycy9u
ZXQvd2lyZWxlc3MvYjQzL3BoeV9jb21tb24uaAo+IEBAIC0yNjAsOCArMjYwLDE1IEBAIHN0cnVj
dCBiNDNfcGh5IHsKPiDCoCDCoCDCoCDCoGF0b21pY190IHR4ZXJyX2NudDsKPgo+IMKgIMKgIMKg
IMKgLyogQ2xvY2sgKi8KPiArIMKgIMKgIMKgIHUzMiBjbGs7Cj4gwqAgwqAgwqAgwqBib29sIGZv
cmNlZmFzdGNsazsKPgo+ICsgwqAgwqAgwqAgYm9vbCB1cDsKPiArIMKgIMKgIMKgIHUzMiBtYWNj
b250cm9sOwo+ICsKPiArIMKgIMKgIMKgIHUzMiB3YWtlX292ZXJyaWRlOwo+ICsgwqAgwqAgwqAg
dTMyIG11dGVfb3ZlcnJpZGU7Cj4gKwo+IMKgI2lmZGVmIENPTkZJR19CNDNfREVCVUcKPiDCoCDC
oCDCoCDCoC8qIFBIWSByZWdpc3RlcnMgbG9ja2VkICh3LnIudC4gZmlybXdhcmUpICovCj4gwqAg
wqAgwqAgwqBib29sIHBoeV9sb2NrZWQ7Cj4gLS0KPiAxLjcuMQo+Cj4KCgoKLS0gClZpc3RhOiBb
Vl1pcnVzZXMsIFtJXW50cnVkZXJzLCBbU11weXdhcmUsIFtUXXJvamFucyBhbmQgW0FdZHdhcmUu
IDotKQo=

^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: [PATCH 2/2] b43: N-PHY: add sub calls of band width setting
  2010-08-22 19:52   ` Gábor Stefanik
@ 2010-08-22 19:58     ` Rafał Miłecki
  2010-08-22 20:04       ` Gábor Stefanik
  0 siblings, 1 reply; 15+ messages in thread
From: Rafał Miłecki @ 2010-08-22 19:58 UTC (permalink / raw)
  To: Gábor Stefanik; +Cc: linux-wireless, John W. Linville, b43-dev

VyBkbml1IDIyIHNpZXJwbmlhIDIwMTAgMjE6NTIgdcW8eXRrb3duaWsgR8OhYm9yIFN0ZWZhbmlr
CjxuZXRyb2xsbGVyLjNkQGdtYWlsLmNvbT4gbmFwaXNhxYI6Cj4gMjAxMC84LzIyIFJhZmHFgiBN
acWCZWNraSA8emFqZWM1QGdtYWlsLmNvbT46Cj4+IFNpZ25lZC1vZmYtYnk6IFJhZmHFgiBNacWC
ZWNraSA8emFqZWM1QGdtYWlsLmNvbT4KPj4gLS0tCj4+IMKgZHJpdmVycy9uZXQvd2lyZWxlc3Mv
YjQzL2I0My5oIMKgIMKgIMKgIMKgfCDCoCDCoDEgKwo+PiDCoGRyaXZlcnMvbmV0L3dpcmVsZXNz
L2I0My9waHlfY29tbW9uLmMgfCDCoDE1MCArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr
Ky0KPj4gwqBkcml2ZXJzL25ldC93aXJlbGVzcy9iNDMvcGh5X2NvbW1vbi5oIHwgwqAgwqA3ICsr
Cj4+IMKgMyBmaWxlcyBjaGFuZ2VkLCAxNTcgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbnMoLSkK
Pj4KPj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2I0My9iNDMuaCBiL2RyaXZl
cnMvbmV0L3dpcmVsZXNzL2I0My9iNDMuaAo+PiBpbmRleCA4Njc0YTk5Li43MzM3NmZmIDEwMDY0
NAo+PiAtLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9iNDMvYjQzLmgKPj4gKysrIGIvZHJpdmVy
cy9uZXQvd2lyZWxlc3MvYjQzL2I0My5oCj4+IEBAIC01Nyw2ICs1Nyw3IEBACj4+IMKgI2RlZmlu
ZSBCNDNfTU1JT19UU0ZfQ0ZQX1JFUCDCoCDCoCDCoCDCoCDCoCAweDE4OAo+PiDCoCNkZWZpbmUg
QjQzX01NSU9fVFNGX0NGUF9TVEFSVCDCoCDCoCDCoCDCoCAweDE4Qwo+PiDCoCNkZWZpbmUgQjQz
X01NSU9fVFNGX0NGUF9NQVhEVVIgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAweDE5MAo+PiArI2Rl
ZmluZSBCNDNfTU1JT19DTEtDVEwgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAw
eDFFMCDCoCAvKiBjbG9jayBjb250cm9sIHN0YXR1cyAqLwo+Pgo+PiDCoC8qIDMyLWJpdCBETUEg
Ki8KPj4gwqAjZGVmaW5lIEI0M19NTUlPX0RNQTMyX0JBU0UwIMKgIMKgIMKgIMKgIMKgIDB4MjAw
Cj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9iNDMvcGh5X2NvbW1vbi5jIGIv
ZHJpdmVycy9uZXQvd2lyZWxlc3MvYjQzL3BoeV9jb21tb24uYwo+PiBpbmRleCBiMDZlM2YwLi4x
MGI5ZTZmIDEwMDY0NAo+PiAtLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9iNDMvcGh5X2NvbW1v
bi5jCj4+ICsrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2I0My9waHlfY29tbW9uLmMKPj4gQEAg
LTQ2NywxMCArNDY3LDE1OCBAQCBzdHJ1Y3QgYjQzX2MzMiBiNDNfY29yZGljKGludCB0aGV0YSkK
Pj4gwqAgwqAgwqAgwqByZXR1cm4gcmV0Owo+PiDCoH0KPj4KPj4gKy8qIGh0dHA6Ly9iY20tdjQu
c2lwc29sdXRpb25zLm5ldC84MDIuMTEvTmNDbGtDdGxDYyAqLwo+PiArc3RhdGljIGJvb2wgYjQz
X25vX2NoZWNrX2Nsb2NrX2NvbnRyb2xfY2hpcF9jb21tb24oc3RydWN0IGI0M193bGRldiAqZGV2
LAo+PiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg
IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHUzMiBtb2RlKQo+PiAr
ewo+PiArIMKgIMKgIMKgIC8qIFRPRE86IHRoaXMgaXMgdGVtcG9yYXJ5IGhhY2sgKi8KPj4gKyDC
oCDCoCDCoCByZXR1cm4gKG1vZGUgPT0gMCk7Cj4+ICt9Cj4+ICsKPj4gKy8qIGh0dHA6Ly9iY20t
djQuc2lwc29sdXRpb25zLm5ldC84MDIuMTEvQ2xrQ3RsQ2MgKi8KPj4gK3N0YXRpYyBib29sIGI0
M19jbG9ja19jb250cm9sX2NoaXBfY29tbW9uKHN0cnVjdCBiNDNfd2xkZXYgKmRldiwgdTMyIG1v
ZGUpCj4+ICt7Cj4+ICsgwqAgwqAgwqAgc3RydWN0IHNzYl9idXMgKmJ1cyA9IGRldi0+ZGV2LT5i
dXM7Cj4+ICsgwqAgwqAgwqAgdTE2IGNoaXBfaWQgPSBidXMtPmNoaXBfaWQ7Cj4+ICsgwqAgwqAg
wqAgdTE2IGNoaXBfcmV2ID0gYnVzLT5jaGlwX3JldjsKPj4gKyDCoCDCoCDCoCAvKiBUT0RPOiBz
cGVjcyBkaXN0aW5ndWlzaCBQQ0kgYW5kIFBDSWUgKi8KPj4gKyDCoCDCoCDCoCBib29sIHBjaSA9
IChidXMtPmJ1c3R5cGUgPT0gU1NCX0JVU1RZUEVfUENJKTsKPj4gKwo+PiArIMKgIMKgIMKgIGlm
IChkZXYtPmRldi0+aWQucmV2aXNpb24gPCA2KQo+PiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHJl
dHVybiBmYWxzZTsKPj4gKyDCoCDCoCDCoCBpZiAocGNpICYmICgoY2hpcF9pZCA9PSAweDQzMTEg
JiYgY2hpcF9yZXYgPCAyKSB8fAo+PiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIChwY2kg
JiYgY2hpcF9pZCA9PSAweDQzMjEpIHx8Cj4+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg
KHBjaSAmJiBjaGlwX2lkID09IDB4NDcxNikpKQo+PiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHJl
dHVybiAobW9kZSA9PSAwKTsKPj4gKyDCoCDCoCDCoCByZXR1cm4gYjQzX25vX2NoZWNrX2Nsb2Nr
X2NvbnRyb2xfY2hpcF9jb21tb24oZGV2LCBtb2RlKTsKPj4gK30KPj4gKwo+PiArLyogaHR0cDov
L2JjbS12NC5zaXBzb2x1dGlvbnMubmV0LzgwMi4xMS9QSFkvQm1hY1dhaXRGb3JXYWtlICovCj4+
ICtzdGF0aWMgdm9pZCBiNDNfcGh5X2JtYWNfd2FpdF9mb3Jfd2FrZShzdHJ1Y3QgYjQzX3dsZGV2
ICpkZXYpCj4+ICt7Cj4+ICsgwqAgwqAgwqAgdTggY29yZV9yZXYgPSBkZXYtPmRldi0+YnVzLT5w
Y2ljb3JlLmRldi0+aWQucmV2aXNpb247Cj4+ICsgwqAgwqAgwqAgdTE2IHRtcCwgaTsKPj4gKwo+
PiArIMKgIMKgIMKgIGlmIChjb3JlX3JldiA9PSA0KSB7Cj4+ICsgwqAgwqAgwqAgwqAgwqAgwqAg
wqAgdWRlbGF5KDUpOwo+PiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHJldHVybjsKPj4gKyDCoCDC
oCDCoCB9Cj4+ICsKPj4gKyDCoCDCoCDCoCBpZiAoZGV2LT5waHkudHlwZSA9PSBCNDNfUEhZVFlQ
RV9HICYmIGNvcmVfcmV2ID09IDUpCj4+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgdWRlbGF5KDIw
MDApOwo+PiArIMKgIMKgIMKgIGVsc2UKPj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCB1ZGVsYXko
NDApOwo+PiArCj4+ICsgwqAgwqAgwqAgZm9yIChpID0gMDsgaSA8IDE1MDA7IGkrKykgewo+PiAr
IMKgIMKgIMKgIMKgIMKgIMKgIMKgIHRtcCA9IGI0M19zaG1fcmVhZDE2KGRldiwgQjQzX1NITV9T
SEFSRUQsCj4+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg
wqAgwqAgwqAgwqAgQjQzX1NITV9TSF9VQ09ERVNUQVQpOwo+PiArIMKgIMKgIMKgIMKgIMKgIMKg
IMKgIGlmICh0bXAgPT0gQjQzX1NITV9TSF9VQ09ERVNUQVRfU0xFRVApIHsKPj4gKyDCoCDCoCDC
oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBpID0gMDsKPj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDC
oCDCoCDCoCDCoCDCoCBicmVhazsKPj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCB9Cj4+ICsgwqAg
wqAgwqAgwqAgwqAgwqAgwqAgdWRlbGF5KDEwKTsKPj4gKyDCoCDCoCDCoCB9Cj4+ICsgwqAgwqAg
wqAgaWYgKGkpCj4+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgYjQzZXJyKGRldi0+d2wsICJ1Y29k
ZSB3YWtlIHVwIHRpbWVvdXRcbiIpOwo+PiArfQo+PiArCj4+ICsvKiBodHRwOi8vYmNtLXY0LnNp
cHNvbHV0aW9ucy5uZXQvODAyLjExL1BIWS9NY3RybFdyaXRlICovCj4+ICtzdGF0aWMgdm9pZCBi
NDNfcGh5X21hY19jb250cm9sX3dyaXRlKHN0cnVjdCBiNDNfd2xkZXYgKmRldikKPj4gK3sKPj4g
KyDCoCDCoCDCoCB1MzIgdG1wID0gZGV2LT5waHkubWFjY29udHJvbDsKPj4gKyDCoCDCoCDCoCBp
ZiAoZGV2LT5waHkud2FrZV9vdmVycmlkZSkKPj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCB0bXAg
fD0gQjQzX01BQ0NUTF9BV0FLRTsKPj4gKyDCoCDCoCDCoCBpZiAoZGV2LT5waHkubXV0ZV9vdmVy
cmlkZSkKPj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCB0bXAgJj0gfkI0M19NQUNDVExfQVA7Cj4+
ICsgwqAgwqAgwqAgdG1wIHw9IEI0M19NQUNDVExfSU5GUkE7Cj4+ICsgwqAgwqAgwqAgYjQzX3dy
aXRlMzIoZGV2LCBCNDNfTU1JT19NQUNDVEwsIHRtcCk7Cj4+ICt9Cj4+ICsKPj4gKy8qIGh0dHA6
Ly9iY20tdjQuc2lwc29sdXRpb25zLm5ldC84MDIuMTEvUEhZL1Vjb2RlV2FrZU92ZXJyaWRlU2V0
ICovCj4+ICtzdGF0aWMgdm9pZCBiNDNfdWNvZGVfd2FrZV9vdmVycmlkZV9zZXQoc3RydWN0IGI0
M193bGRldiAqZGV2LCB1MzIgb3ZlcnJpZGUpCj4+ICt7Cj4+ICsgwqAgwqAgwqAgZGV2LT5waHku
d2FrZV9vdmVycmlkZSB8PSBvdmVycmlkZTsKPj4gKyDCoCDCoCDCoCBpZiAoZGV2LT5waHkud2Fr
ZV9vdmVycmlkZSB8fCBkZXYtPnBoeS5tYWNjb250cm9sICYgQjQzX01BQ0NUTF9BV0FLRSkKPj4g
KyDCoCDCoCDCoCDCoCDCoCDCoCDCoCByZXR1cm47Cj4+ICsgwqAgwqAgwqAgYjQzX3BoeV9tYWNf
Y29udHJvbF93cml0ZShkZXYpOwo+PiArIMKgIMKgIMKgIGI0M19waHlfYm1hY193YWl0X2Zvcl93
YWtlKGRldik7Cj4+ICt9Cj4+ICsKPj4gKy8qIGh0dHA6Ly9iY20tdjQuc2lwc29sdXRpb25zLm5l
dC84MDIuMTEvUEhZL1Vjb2RlV2FrZU92ZXJyaWRlQ2xlYXIgKi8KPj4gK3N0YXRpYyB2b2lkIGI0
M191Y29kZV93YWtlX292ZXJyaWRlX2NsZWFyKHN0cnVjdCBiNDNfd2xkZXYgKmRldiwgdTMyIG92
ZXJyaWRlKQo+PiArewo+PiArIMKgIMKgIMKgIGRldi0+cGh5Lndha2Vfb3ZlcnJpZGUgJj0gfm92
ZXJyaWRlOwo+PiArIMKgIMKgIMKgIGlmIChkZXYtPnBoeS53YWtlX292ZXJyaWRlICE9IChkZXYt
PnBoeS5tYWNjb250cm9sICYgQjQzX01BQ0NUTF9BV0FLRSkpCj4+ICsgwqAgwqAgwqAgwqAgwqAg
wqAgwqAgcmV0dXJuOwo+PiArIMKgIMKgIMKgIGI0M19waHlfbWFjX2NvbnRyb2xfd3JpdGUoZGV2
KTsKPj4gK30KPj4gKwo+PiDCoC8qIGh0dHA6Ly9iY20tdjQuc2lwc29sdXRpb25zLm5ldC84MDIu
MTEvUEhZL0Nsa0N0bENsayAqLwo+PiDCoHN0YXRpYyB2b2lkIGI0M19jbG9ja19jb250cm9sKHN0
cnVjdCBiNDNfd2xkZXYgKmRldiwgdTMyIG1vZGUpCj4+IMKgewo+PiAtIMKgIMKgIMKgIDsgLyog
VE9ETyAqLwo+PiArIMKgIMKgIMKgIHN0cnVjdCBiNDNfcGh5ICpwaHkgPSAmZGV2LT5waHk7Cj4+
ICsgwqAgwqAgwqAgc3RydWN0IHNzYl9idXMgKmJ1cyA9IGRldi0+ZGV2LT5idXM7Cj4+ICsgwqAg
wqAgwqAgdTggY29yZV9yZXYgPSBidXMtPnBjaWNvcmUuZGV2LT5pZC5yZXZpc2lvbjsKPj4gKyDC
oCDCoCDCoCB1MTYgaTsKPj4gKyDCoCDCoCDCoCB1MzIgY2xrY3RsOwo+PiArIMKgIMKgIMKgIGJv
b2wgd2FrZXVwOwo+PiArCj4+ICsgwqAgwqAgwqAgaWYgKGJ1cy0+Y2hpcGNvLmNhcGFiaWxpdGll
cyAmIFNTQl9DSElQQ09fQ0FQX1BNVSkgeyAvKiBQTVUgUHJlc2VudCAqLwo+PiArIMKgIMKgIMKg
IMKgIMKgIMKgIMKgIEI0M19XQVJOX09OKGNvcmVfcmV2IDwgMjApOwo+PiArIMKgIMKgIMKgIMKg
IMKgIMKgIMKgIGlmIChwaHktPmNsaykgewo+PiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg
IMKgIMKgIGJvb2wgdG1wID0gKGJ1cy0+Y2hpcGNvLnBtdS5yZXYgPT0gMCAmJgo+PiArIMKgIMKg
IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIChiNDNfcmVhZDMyKGRldiwg
QjQzX01NSU9fQ0xLQ1RMKSAmIDB4MTIpKTsKPj4gKwo+PiArIMKgIMKgIMKgIMKgIMKgIMKgIMKg
IMKgIMKgIMKgIMKgIGlmIChtb2RlID09IDApIHsKPj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC
oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBjbGtjdGwgPSBiNDNfcmVhZDMyKGRldiwgQjQzX01NSU9f
Q0xLQ1RMKTsKPj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC
oCBjbGtjdGwgfD0gMHgyOwo+PiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg
IMKgIMKgIMKgIGI0M193cml0ZTMyKGRldiwgQjQzX01NSU9fQ0xLQ1RMLCBjbGtjdGwpOwo+PiAr
IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHVkZWxheSgzMyk7
Cj4+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgfQo+PiArCj4+ICsgwqAgwqAg
wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgaWYgKG1vZGUgPT0gMCB8fCB0bXApIHsKPj4gKyDC
oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBmb3IgKGkgPSAwOyBp
IDwgMTUwMDsgaSsrKSB7Cj4+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg
wqAgwqAgwqAgwqAgwqAgwqAgwqAgY2xrY3RsID0gYjQzX3JlYWQzMihkZXYsIEI0M19NTUlPX0NM
S0NUTCk7Cj4+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg
wqAgwqAgwqAgwqAgaWYgKChjbGtjdGwgJiAweDIwMDAwKSA9PSAwKSB7Cj4+ICsgwqAgwqAgwqAg
wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg
wqAgaSA9IDA7Cj4+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg
wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgYnJlYWs7Cj4+ICsgwqAgwqAgwqAgwqAgwqAgwqAg
wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgfQo+PiArIMKgIMKgIMKgIMKg
IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHVkZWxheSgxMCk7
Cj4+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgfQo+PiAr
IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGlmIChpKQo+PiAr
IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg
IGI0M2VycihkZXYtPndsLCAiY2xvY2sgdGltZW91dFxuIik7Cj4+ICsgwqAgwqAgwqAgwqAgwqAg
wqAgwqAgwqAgwqAgwqAgwqAgfQo+PiArCj4+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg
wqAgwqAgaWYgKG1vZGUgIT0gMCAmJiB0bXApIHsKPj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC
oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBjbGtjdGwgPSBiNDNfcmVhZDMyKGRldiwgQjQzX01NSU9f
Q0xLQ1RMKTsKPj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC
oCBjbGtjdGwgJj0gfjB4MjsKPj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC
oCDCoCDCoCDCoCBiNDNfd3JpdGUzMihkZXYsIEI0M19NTUlPX0NMS0NUTCwgY2xrY3RsKTsKPj4g
KyDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB9Cj4+ICsgwqAgwqAgwqAgwqAgwqAg
wqAgwqAgfQo+PiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHBoeS0+Zm9yY2VmYXN0Y2xrID0gKG1v
ZGUgPT0gMCk7Cj4+ICsgwqAgwqAgwqAgfSBlbHNlIHsKPj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDC
oCBCNDNfV0FSTl9PTihjb3JlX3JldiA+PSAyMCk7Cj4+ICsKPj4gKyDCoCDCoCDCoCDCoCDCoCDC
oCDCoCB3YWtldXAgPSAoY29yZV9yZXYgPCA5KTsKPj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCBp
ZiAocGh5LT51cCAmJiB3YWtldXApCj4+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg
wqAgYjQzX3Vjb2RlX3dha2Vfb3ZlcnJpZGVfc2V0KGRldiwgMSk7Cj4+ICsKPj4gKyDCoCDCoCDC
oCDCoCDCoCDCoCDCoCBwaHktPmZvcmNlZmFzdGNsayA9IGI0M19jbG9ja19jb250cm9sX2NoaXBf
Y29tbW9uKGRldiwgbW9kZSk7Cj4+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgaWYgKGNvcmVfcmV2
IDwgMTEpIHsKPj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBpZiAocGh5LT5m
b3JjZWZhc3RjbGspCj4+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg
wqAgwqAgOyAvKiBUT0RPOiBiNDNfbWhmKGRldiwgMCwgMHg0MDAsIDB4NDAwLCAzKTsgKi8KPj4g
KyDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBlbHNlCj4+ICsgwqAgwqAgwqAgwqAg
wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgOyAvKiBUT0RPOiBiNDNfbWhmKGRldiwg
MCwgMHg0MDAsIDAsIDMpOyAqLwo+Cj4gV2UgZG8gaW1wbGVtZW50IG1oZiBhbHJlYWR5LCB0aG91
Z2ggaXQgaXMgZG9uZSBkaWZmZXJlbnRseSB0aGFuIGluIHdsLgo+IFNlZSBteSBlYXJsaWVyICJB
ZGQgbWlzc2luZyBIRiB3cml0ZSIgcGF0Y2guCgpZZXMsIEkgbm90aWNlZCB0aGlzIGluIHlvdXIg
cGF0Y2gsIHRoYW5rcywgaG93ZXZlciBJIGRvbid0IHVuZGVyc3RhbmQKcmVsYXRpb24gYmV0d2Vl
biBvdXIgaW1wbGVtZW50YXRpb24gYW5kIHdsIHlldC4gSSdtIG5vdCAxMDAlIHN1cmUgaG93CnRv
IHRyYW5zbGF0ZSB0aGlzLCBzbyBJIGRlY2lkZWQgdG8gbGVmdCB0aGlzIGFzIFRPRE8uIERpZG4n
dCB3YW50IHRvCndhaXQgYW55bW9yZSBiZWZvcmUgcHVibGlzaGluZyB0aGlzLCB0byBhdm9pZCBz
aXR1YXRpb24gb2YKaW1wbGVtZW50aW5nIHRoZSBzYW1lIGZ1bmN0aW9ucyBhbmQgd2FzdGluZyB5
b3VyIGFuZC9vciBtaW5lIHRpbWUuCgpDb3VsZCB5b3UgcG9zdCBhIHBhdGNoIG1ha2luZyByZWFs
IGNhbGwgaW5zdGVhZCBvZiB0aGlzIGNvbW1lbnQsIHBsZWFzZT8KCi0tIApSYWZhxYIK

^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: [PATCH 2/2] b43: N-PHY: add sub calls of band width setting
  2010-08-22 19:58     ` Rafał Miłecki
@ 2010-08-22 20:04       ` Gábor Stefanik
  2010-08-22 20:14         ` Rafał Miłecki
                           ` (2 more replies)
  0 siblings, 3 replies; 15+ messages in thread
From: Gábor Stefanik @ 2010-08-22 20:04 UTC (permalink / raw)
  To: Rafał Miłecki; +Cc: linux-wireless, John W. Linville, b43-dev

2010/8/22 Rafał Miłecki <zajec5@gmail.com>:
> W dniu 22 sierpnia 2010 21:52 użytkownik Gábor Stefanik
> <netrolller.3d@gmail.com> napisał:
>> 2010/8/22 Rafał Miłecki <zajec5@gmail.com>:
>>> Signed-off-by: Rafał Miłecki <zajec5@gmail.com>
>>> ---
>>>  drivers/net/wireless/b43/b43.h        |    1 +
>>>  drivers/net/wireless/b43/phy_common.c |  150 ++++++++++++++++++++++++++++++++-
>>>  drivers/net/wireless/b43/phy_common.h |    7 ++
>>>  3 files changed, 157 insertions(+), 1 deletions(-)
>>>
>>> diff --git a/drivers/net/wireless/b43/b43.h b/drivers/net/wireless/b43/b43.h
>>> index 8674a99..73376ff 100644
>>> --- a/drivers/net/wireless/b43/b43.h
>>> +++ b/drivers/net/wireless/b43/b43.h
>>> @@ -57,6 +57,7 @@
>>>  #define B43_MMIO_TSF_CFP_REP           0x188
>>>  #define B43_MMIO_TSF_CFP_START         0x18C
>>>  #define B43_MMIO_TSF_CFP_MAXDUR                0x190
>>> +#define B43_MMIO_CLKCTL                        0x1E0   /* clock control status */
>>>
>>>  /* 32-bit DMA */
>>>  #define B43_MMIO_DMA32_BASE0           0x200
>>> diff --git a/drivers/net/wireless/b43/phy_common.c b/drivers/net/wireless/b43/phy_common.c
>>> index b06e3f0..10b9e6f 100644
>>> --- a/drivers/net/wireless/b43/phy_common.c
>>> +++ b/drivers/net/wireless/b43/phy_common.c
>>> @@ -467,10 +467,158 @@ struct b43_c32 b43_cordic(int theta)
>>>        return ret;
>>>  }
>>>
>>> +/* http://bcm-v4.sipsolutions.net/802.11/NcClkCtlCc */
>>> +static bool b43_no_check_clock_control_chip_common(struct b43_wldev *dev,
>>> +                                                               u32 mode)
>>> +{
>>> +       /* TODO: this is temporary hack */
>>> +       return (mode == 0);
>>> +}
>>> +
>>> +/* http://bcm-v4.sipsolutions.net/802.11/ClkCtlCc */
>>> +static bool b43_clock_control_chip_common(struct b43_wldev *dev, u32 mode)
>>> +{
>>> +       struct ssb_bus *bus = dev->dev->bus;
>>> +       u16 chip_id = bus->chip_id;
>>> +       u16 chip_rev = bus->chip_rev;
>>> +       /* TODO: specs distinguish PCI and PCIe */
>>> +       bool pci = (bus->bustype == SSB_BUSTYPE_PCI);
>>> +
>>> +       if (dev->dev->id.revision < 6)
>>> +               return false;
>>> +       if (pci && ((chip_id == 0x4311 && chip_rev < 2) ||
>>> +                   (pci && chip_id == 0x4321) ||
>>> +                   (pci && chip_id == 0x4716)))
>>> +               return (mode == 0);
>>> +       return b43_no_check_clock_control_chip_common(dev, mode);
>>> +}
>>> +
>>> +/* http://bcm-v4.sipsolutions.net/802.11/PHY/BmacWaitForWake */
>>> +static void b43_phy_bmac_wait_for_wake(struct b43_wldev *dev)
>>> +{
>>> +       u8 core_rev = dev->dev->bus->pcicore.dev->id.revision;
>>> +       u16 tmp, i;
>>> +
>>> +       if (core_rev == 4) {
>>> +               udelay(5);
>>> +               return;
>>> +       }
>>> +
>>> +       if (dev->phy.type == B43_PHYTYPE_G && core_rev == 5)
>>> +               udelay(2000);
>>> +       else
>>> +               udelay(40);
>>> +
>>> +       for (i = 0; i < 1500; i++) {
>>> +               tmp = b43_shm_read16(dev, B43_SHM_SHARED,
>>> +                                       B43_SHM_SH_UCODESTAT);
>>> +               if (tmp == B43_SHM_SH_UCODESTAT_SLEEP) {
>>> +                       i = 0;
>>> +                       break;
>>> +               }
>>> +               udelay(10);
>>> +       }
>>> +       if (i)
>>> +               b43err(dev->wl, "ucode wake up timeout\n");
>>> +}
>>> +
>>> +/* http://bcm-v4.sipsolutions.net/802.11/PHY/MctrlWrite */
>>> +static void b43_phy_mac_control_write(struct b43_wldev *dev)
>>> +{
>>> +       u32 tmp = dev->phy.maccontrol;
>>> +       if (dev->phy.wake_override)
>>> +               tmp |= B43_MACCTL_AWAKE;
>>> +       if (dev->phy.mute_override)
>>> +               tmp &= ~B43_MACCTL_AP;
>>> +       tmp |= B43_MACCTL_INFRA;
>>> +       b43_write32(dev, B43_MMIO_MACCTL, tmp);
>>> +}
>>> +
>>> +/* http://bcm-v4.sipsolutions.net/802.11/PHY/UcodeWakeOverrideSet */
>>> +static void b43_ucode_wake_override_set(struct b43_wldev *dev, u32 override)
>>> +{
>>> +       dev->phy.wake_override |= override;
>>> +       if (dev->phy.wake_override || dev->phy.maccontrol & B43_MACCTL_AWAKE)
>>> +               return;
>>> +       b43_phy_mac_control_write(dev);
>>> +       b43_phy_bmac_wait_for_wake(dev);
>>> +}
>>> +
>>> +/* http://bcm-v4.sipsolutions.net/802.11/PHY/UcodeWakeOverrideClear */
>>> +static void b43_ucode_wake_override_clear(struct b43_wldev *dev, u32 override)
>>> +{
>>> +       dev->phy.wake_override &= ~override;
>>> +       if (dev->phy.wake_override != (dev->phy.maccontrol & B43_MACCTL_AWAKE))
>>> +               return;
>>> +       b43_phy_mac_control_write(dev);
>>> +}
>>> +
>>>  /* http://bcm-v4.sipsolutions.net/802.11/PHY/ClkCtlClk */
>>>  static void b43_clock_control(struct b43_wldev *dev, u32 mode)
>>>  {
>>> -       ; /* TODO */
>>> +       struct b43_phy *phy = &dev->phy;
>>> +       struct ssb_bus *bus = dev->dev->bus;
>>> +       u8 core_rev = bus->pcicore.dev->id.revision;
>>> +       u16 i;
>>> +       u32 clkctl;
>>> +       bool wakeup;
>>> +
>>> +       if (bus->chipco.capabilities & SSB_CHIPCO_CAP_PMU) { /* PMU Present */
>>> +               B43_WARN_ON(core_rev < 20);
>>> +               if (phy->clk) {
>>> +                       bool tmp = (bus->chipco.pmu.rev == 0 &&
>>> +                               (b43_read32(dev, B43_MMIO_CLKCTL) & 0x12));
>>> +
>>> +                       if (mode == 0) {
>>> +                               clkctl = b43_read32(dev, B43_MMIO_CLKCTL);
>>> +                               clkctl |= 0x2;
>>> +                               b43_write32(dev, B43_MMIO_CLKCTL, clkctl);
>>> +                               udelay(33);
>>> +                       }
>>> +
>>> +                       if (mode == 0 || tmp) {
>>> +                               for (i = 0; i < 1500; i++) {
>>> +                                       clkctl = b43_read32(dev, B43_MMIO_CLKCTL);
>>> +                                       if ((clkctl & 0x20000) == 0) {
>>> +                                               i = 0;
>>> +                                               break;
>>> +                                       }
>>> +                                       udelay(10);
>>> +                               }
>>> +                               if (i)
>>> +                                       b43err(dev->wl, "clock timeout\n");
>>> +                       }
>>> +
>>> +                       if (mode != 0 && tmp) {
>>> +                               clkctl = b43_read32(dev, B43_MMIO_CLKCTL);
>>> +                               clkctl &= ~0x2;
>>> +                               b43_write32(dev, B43_MMIO_CLKCTL, clkctl);
>>> +                       }
>>> +               }
>>> +               phy->forcefastclk = (mode == 0);
>>> +       } else {
>>> +               B43_WARN_ON(core_rev >= 20);
>>> +
>>> +               wakeup = (core_rev < 9);
>>> +               if (phy->up && wakeup)
>>> +                       b43_ucode_wake_override_set(dev, 1);
>>> +
>>> +               phy->forcefastclk = b43_clock_control_chip_common(dev, mode);
>>> +               if (core_rev < 11) {
>>> +                       if (phy->forcefastclk)
>>> +                               ; /* TODO: b43_mhf(dev, 0, 0x400, 0x400, 3); */
>>> +                       else
>>> +                               ; /* TODO: b43_mhf(dev, 0, 0x400, 0, 3); */
>>
>> We do implement mhf already, though it is done differently than in wl.
>> See my earlier "Add missing HF write" patch.
>
> Yes, I noticed this in your patch, thanks, however I don't understand
> relation between our implementation and wl yet. I'm not 100% sure how
> to translate this, so I decided to left this as TODO. Didn't want to
> wait anymore before publishing this, to avoid situation of
> implementing the same functions and wasting your and/or mine time.
>
> Could you post a patch making real call instead of this comment, please?
>
> --
> Rafał
>

Sorry, I'm on a Windows-only machine right now.
However, the general rule of translation is:
mhf(a, b, c, d) -> b43_hf_write(dev, (b43_hf_read(dev) & (~b <<
(a*16))) | (c << (a*16)))
(Yes, the last parameter is ignored; it seems to be just Broadcrap -
crap written by Broadcom.)

-- 
Vista: [V]iruses, [I]ntruders, [S]pyware, [T]rojans and [A]dware. :-)

^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: [PATCH 2/2] b43: N-PHY: add sub calls of band width setting
  2010-08-22 20:04       ` Gábor Stefanik
@ 2010-08-22 20:14         ` Rafał Miłecki
  2010-08-22 20:29         ` Larry Finger
  2010-08-25 19:07         ` Michael Büsch
  2 siblings, 0 replies; 15+ messages in thread
From: Rafał Miłecki @ 2010-08-22 20:14 UTC (permalink / raw)
  To: Gábor Stefanik; +Cc: linux-wireless, John W. Linville, b43-dev

VyBkbml1IDIyIHNpZXJwbmlhIDIwMTAgMjI6MDQgdcW8eXRrb3duaWsgR8OhYm9yIFN0ZWZhbmlr
CjxuZXRyb2xsbGVyLjNkQGdtYWlsLmNvbT4gbmFwaXNhxYI6Cj4gMjAxMC84LzIyIFJhZmHFgiBN
acWCZWNraSA8emFqZWM1QGdtYWlsLmNvbT46Cj4+IFcgZG5pdSAyMiBzaWVycG5pYSAyMDEwIDIx
OjUyIHXFvHl0a293bmlrIEfDoWJvciBTdGVmYW5pawo+PiA8bmV0cm9sbGxlci4zZEBnbWFpbC5j
b20+IG5hcGlzYcWCOgo+Pj4gMjAxMC84LzIyIFJhZmHFgiBNacWCZWNraSA8emFqZWM1QGdtYWls
LmNvbT46Cj4+Pj4gU2lnbmVkLW9mZi1ieTogUmFmYcWCIE1pxYJlY2tpIDx6YWplYzVAZ21haWwu
Y29tPgo+Pj4+IC0tLQo+Pj4+IMKgZHJpdmVycy9uZXQvd2lyZWxlc3MvYjQzL2I0My5oIMKgIMKg
IMKgIMKgfCDCoCDCoDEgKwo+Pj4+IMKgZHJpdmVycy9uZXQvd2lyZWxlc3MvYjQzL3BoeV9jb21t
b24uYyB8IMKgMTUwICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLQo+Pj4+IMKgZHJp
dmVycy9uZXQvd2lyZWxlc3MvYjQzL3BoeV9jb21tb24uaCB8IMKgIMKgNyArKwo+Pj4+IMKgMyBm
aWxlcyBjaGFuZ2VkLCAxNTcgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbnMoLSkKPj4+Pgo+Pj4+
IGRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9iNDMvYjQzLmggYi9kcml2ZXJzL25l
dC93aXJlbGVzcy9iNDMvYjQzLmgKPj4+PiBpbmRleCA4Njc0YTk5Li43MzM3NmZmIDEwMDY0NAo+
Pj4+IC0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2I0My9iNDMuaAo+Pj4+ICsrKyBiL2RyaXZl
cnMvbmV0L3dpcmVsZXNzL2I0My9iNDMuaAo+Pj4+IEBAIC01Nyw2ICs1Nyw3IEBACj4+Pj4gwqAj
ZGVmaW5lIEI0M19NTUlPX1RTRl9DRlBfUkVQIMKgIMKgIMKgIMKgIMKgIDB4MTg4Cj4+Pj4gwqAj
ZGVmaW5lIEI0M19NTUlPX1RTRl9DRlBfU1RBUlQgwqAgwqAgwqAgwqAgMHgxOEMKPj4+PiDCoCNk
ZWZpbmUgQjQzX01NSU9fVFNGX0NGUF9NQVhEVVIgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAweDE5
MAo+Pj4+ICsjZGVmaW5lIEI0M19NTUlPX0NMS0NUTCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC
oCDCoCDCoCDCoDB4MUUwIMKgIC8qIGNsb2NrIGNvbnRyb2wgc3RhdHVzICovCj4+Pj4KPj4+PiDC
oC8qIDMyLWJpdCBETUEgKi8KPj4+PiDCoCNkZWZpbmUgQjQzX01NSU9fRE1BMzJfQkFTRTAgwqAg
wqAgwqAgwqAgwqAgMHgyMDAKPj4+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3Mv
YjQzL3BoeV9jb21tb24uYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2I0My9waHlfY29tbW9uLmMK
Pj4+PiBpbmRleCBiMDZlM2YwLi4xMGI5ZTZmIDEwMDY0NAo+Pj4+IC0tLSBhL2RyaXZlcnMvbmV0
L3dpcmVsZXNzL2I0My9waHlfY29tbW9uLmMKPj4+PiArKysgYi9kcml2ZXJzL25ldC93aXJlbGVz
cy9iNDMvcGh5X2NvbW1vbi5jCj4+Pj4gQEAgLTQ2NywxMCArNDY3LDE1OCBAQCBzdHJ1Y3QgYjQz
X2MzMiBiNDNfY29yZGljKGludCB0aGV0YSkKPj4+PiDCoCDCoCDCoCDCoHJldHVybiByZXQ7Cj4+
Pj4gwqB9Cj4+Pj4KPj4+PiArLyogaHR0cDovL2JjbS12NC5zaXBzb2x1dGlvbnMubmV0LzgwMi4x
MS9OY0Nsa0N0bENjICovCj4+Pj4gK3N0YXRpYyBib29sIGI0M19ub19jaGVja19jbG9ja19jb250
cm9sX2NoaXBfY29tbW9uKHN0cnVjdCBiNDNfd2xkZXYgKmRldiwKPj4+PiArIMKgIMKgIMKgIMKg
IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg
IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHUzMiBtb2RlKQo+Pj4+ICt7Cj4+Pj4gKyDCoCDCoCDC
oCAvKiBUT0RPOiB0aGlzIGlzIHRlbXBvcmFyeSBoYWNrICovCj4+Pj4gKyDCoCDCoCDCoCByZXR1
cm4gKG1vZGUgPT0gMCk7Cj4+Pj4gK30KPj4+PiArCj4+Pj4gKy8qIGh0dHA6Ly9iY20tdjQuc2lw
c29sdXRpb25zLm5ldC84MDIuMTEvQ2xrQ3RsQ2MgKi8KPj4+PiArc3RhdGljIGJvb2wgYjQzX2Ns
b2NrX2NvbnRyb2xfY2hpcF9jb21tb24oc3RydWN0IGI0M193bGRldiAqZGV2LCB1MzIgbW9kZSkK
Pj4+PiArewo+Pj4+ICsgwqAgwqAgwqAgc3RydWN0IHNzYl9idXMgKmJ1cyA9IGRldi0+ZGV2LT5i
dXM7Cj4+Pj4gKyDCoCDCoCDCoCB1MTYgY2hpcF9pZCA9IGJ1cy0+Y2hpcF9pZDsKPj4+PiArIMKg
IMKgIMKgIHUxNiBjaGlwX3JldiA9IGJ1cy0+Y2hpcF9yZXY7Cj4+Pj4gKyDCoCDCoCDCoCAvKiBU
T0RPOiBzcGVjcyBkaXN0aW5ndWlzaCBQQ0kgYW5kIFBDSWUgKi8KPj4+PiArIMKgIMKgIMKgIGJv
b2wgcGNpID0gKGJ1cy0+YnVzdHlwZSA9PSBTU0JfQlVTVFlQRV9QQ0kpOwo+Pj4+ICsKPj4+PiAr
IMKgIMKgIMKgIGlmIChkZXYtPmRldi0+aWQucmV2aXNpb24gPCA2KQo+Pj4+ICsgwqAgwqAgwqAg
wqAgwqAgwqAgwqAgcmV0dXJuIGZhbHNlOwo+Pj4+ICsgwqAgwqAgwqAgaWYgKHBjaSAmJiAoKGNo
aXBfaWQgPT0gMHg0MzExICYmIGNoaXBfcmV2IDwgMikgfHwKPj4+PiArIMKgIMKgIMKgIMKgIMKg
IMKgIMKgIMKgIMKgIChwY2kgJiYgY2hpcF9pZCA9PSAweDQzMjEpIHx8Cj4+Pj4gKyDCoCDCoCDC
oCDCoCDCoCDCoCDCoCDCoCDCoCAocGNpICYmIGNoaXBfaWQgPT0gMHg0NzE2KSkpCj4+Pj4gKyDC
oCDCoCDCoCDCoCDCoCDCoCDCoCByZXR1cm4gKG1vZGUgPT0gMCk7Cj4+Pj4gKyDCoCDCoCDCoCBy
ZXR1cm4gYjQzX25vX2NoZWNrX2Nsb2NrX2NvbnRyb2xfY2hpcF9jb21tb24oZGV2LCBtb2RlKTsK
Pj4+PiArfQo+Pj4+ICsKPj4+PiArLyogaHR0cDovL2JjbS12NC5zaXBzb2x1dGlvbnMubmV0Lzgw
Mi4xMS9QSFkvQm1hY1dhaXRGb3JXYWtlICovCj4+Pj4gK3N0YXRpYyB2b2lkIGI0M19waHlfYm1h
Y193YWl0X2Zvcl93YWtlKHN0cnVjdCBiNDNfd2xkZXYgKmRldikKPj4+PiArewo+Pj4+ICsgwqAg
wqAgwqAgdTggY29yZV9yZXYgPSBkZXYtPmRldi0+YnVzLT5wY2ljb3JlLmRldi0+aWQucmV2aXNp
b247Cj4+Pj4gKyDCoCDCoCDCoCB1MTYgdG1wLCBpOwo+Pj4+ICsKPj4+PiArIMKgIMKgIMKgIGlm
IChjb3JlX3JldiA9PSA0KSB7Cj4+Pj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCB1ZGVsYXkoNSk7
Cj4+Pj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCByZXR1cm47Cj4+Pj4gKyDCoCDCoCDCoCB9Cj4+
Pj4gKwo+Pj4+ICsgwqAgwqAgwqAgaWYgKGRldi0+cGh5LnR5cGUgPT0gQjQzX1BIWVRZUEVfRyAm
JiBjb3JlX3JldiA9PSA1KQo+Pj4+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgdWRlbGF5KDIwMDAp
Owo+Pj4+ICsgwqAgwqAgwqAgZWxzZQo+Pj4+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgdWRlbGF5
KDQwKTsKPj4+PiArCj4+Pj4gKyDCoCDCoCDCoCBmb3IgKGkgPSAwOyBpIDwgMTUwMDsgaSsrKSB7
Cj4+Pj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCB0bXAgPSBiNDNfc2htX3JlYWQxNihkZXYsIEI0
M19TSE1fU0hBUkVELAo+Pj4+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg
wqAgwqAgwqAgwqAgwqAgwqAgwqAgQjQzX1NITV9TSF9VQ09ERVNUQVQpOwo+Pj4+ICsgwqAgwqAg
wqAgwqAgwqAgwqAgwqAgaWYgKHRtcCA9PSBCNDNfU0hNX1NIX1VDT0RFU1RBVF9TTEVFUCkgewo+
Pj4+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgaSA9IDA7Cj4+Pj4gKyDCoCDC
oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBicmVhazsKPj4+PiArIMKgIMKgIMKgIMKgIMKg
IMKgIMKgIH0KPj4+PiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHVkZWxheSgxMCk7Cj4+Pj4gKyDC
oCDCoCDCoCB9Cj4+Pj4gKyDCoCDCoCDCoCBpZiAoaSkKPj4+PiArIMKgIMKgIMKgIMKgIMKgIMKg
IMKgIGI0M2VycihkZXYtPndsLCAidWNvZGUgd2FrZSB1cCB0aW1lb3V0XG4iKTsKPj4+PiArfQo+
Pj4+ICsKPj4+PiArLyogaHR0cDovL2JjbS12NC5zaXBzb2x1dGlvbnMubmV0LzgwMi4xMS9QSFkv
TWN0cmxXcml0ZSAqLwo+Pj4+ICtzdGF0aWMgdm9pZCBiNDNfcGh5X21hY19jb250cm9sX3dyaXRl
KHN0cnVjdCBiNDNfd2xkZXYgKmRldikKPj4+PiArewo+Pj4+ICsgwqAgwqAgwqAgdTMyIHRtcCA9
IGRldi0+cGh5Lm1hY2NvbnRyb2w7Cj4+Pj4gKyDCoCDCoCDCoCBpZiAoZGV2LT5waHkud2FrZV9v
dmVycmlkZSkKPj4+PiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHRtcCB8PSBCNDNfTUFDQ1RMX0FX
QUtFOwo+Pj4+ICsgwqAgwqAgwqAgaWYgKGRldi0+cGh5Lm11dGVfb3ZlcnJpZGUpCj4+Pj4gKyDC
oCDCoCDCoCDCoCDCoCDCoCDCoCB0bXAgJj0gfkI0M19NQUNDVExfQVA7Cj4+Pj4gKyDCoCDCoCDC
oCB0bXAgfD0gQjQzX01BQ0NUTF9JTkZSQTsKPj4+PiArIMKgIMKgIMKgIGI0M193cml0ZTMyKGRl
diwgQjQzX01NSU9fTUFDQ1RMLCB0bXApOwo+Pj4+ICt9Cj4+Pj4gKwo+Pj4+ICsvKiBodHRwOi8v
YmNtLXY0LnNpcHNvbHV0aW9ucy5uZXQvODAyLjExL1BIWS9VY29kZVdha2VPdmVycmlkZVNldCAq
Lwo+Pj4+ICtzdGF0aWMgdm9pZCBiNDNfdWNvZGVfd2FrZV9vdmVycmlkZV9zZXQoc3RydWN0IGI0
M193bGRldiAqZGV2LCB1MzIgb3ZlcnJpZGUpCj4+Pj4gK3sKPj4+PiArIMKgIMKgIMKgIGRldi0+
cGh5Lndha2Vfb3ZlcnJpZGUgfD0gb3ZlcnJpZGU7Cj4+Pj4gKyDCoCDCoCDCoCBpZiAoZGV2LT5w
aHkud2FrZV9vdmVycmlkZSB8fCBkZXYtPnBoeS5tYWNjb250cm9sICYgQjQzX01BQ0NUTF9BV0FL
RSkKPj4+PiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHJldHVybjsKPj4+PiArIMKgIMKgIMKgIGI0
M19waHlfbWFjX2NvbnRyb2xfd3JpdGUoZGV2KTsKPj4+PiArIMKgIMKgIMKgIGI0M19waHlfYm1h
Y193YWl0X2Zvcl93YWtlKGRldik7Cj4+Pj4gK30KPj4+PiArCj4+Pj4gKy8qIGh0dHA6Ly9iY20t
djQuc2lwc29sdXRpb25zLm5ldC84MDIuMTEvUEhZL1Vjb2RlV2FrZU92ZXJyaWRlQ2xlYXIgKi8K
Pj4+PiArc3RhdGljIHZvaWQgYjQzX3Vjb2RlX3dha2Vfb3ZlcnJpZGVfY2xlYXIoc3RydWN0IGI0
M193bGRldiAqZGV2LCB1MzIgb3ZlcnJpZGUpCj4+Pj4gK3sKPj4+PiArIMKgIMKgIMKgIGRldi0+
cGh5Lndha2Vfb3ZlcnJpZGUgJj0gfm92ZXJyaWRlOwo+Pj4+ICsgwqAgwqAgwqAgaWYgKGRldi0+
cGh5Lndha2Vfb3ZlcnJpZGUgIT0gKGRldi0+cGh5Lm1hY2NvbnRyb2wgJiBCNDNfTUFDQ1RMX0FX
QUtFKSkKPj4+PiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHJldHVybjsKPj4+PiArIMKgIMKgIMKg
IGI0M19waHlfbWFjX2NvbnRyb2xfd3JpdGUoZGV2KTsKPj4+PiArfQo+Pj4+ICsKPj4+PiDCoC8q
IGh0dHA6Ly9iY20tdjQuc2lwc29sdXRpb25zLm5ldC84MDIuMTEvUEhZL0Nsa0N0bENsayAqLwo+
Pj4+IMKgc3RhdGljIHZvaWQgYjQzX2Nsb2NrX2NvbnRyb2woc3RydWN0IGI0M193bGRldiAqZGV2
LCB1MzIgbW9kZSkKPj4+PiDCoHsKPj4+PiAtIMKgIMKgIMKgIDsgLyogVE9ETyAqLwo+Pj4+ICsg
wqAgwqAgwqAgc3RydWN0IGI0M19waHkgKnBoeSA9ICZkZXYtPnBoeTsKPj4+PiArIMKgIMKgIMKg
IHN0cnVjdCBzc2JfYnVzICpidXMgPSBkZXYtPmRldi0+YnVzOwo+Pj4+ICsgwqAgwqAgwqAgdTgg
Y29yZV9yZXYgPSBidXMtPnBjaWNvcmUuZGV2LT5pZC5yZXZpc2lvbjsKPj4+PiArIMKgIMKgIMKg
IHUxNiBpOwo+Pj4+ICsgwqAgwqAgwqAgdTMyIGNsa2N0bDsKPj4+PiArIMKgIMKgIMKgIGJvb2wg
d2FrZXVwOwo+Pj4+ICsKPj4+PiArIMKgIMKgIMKgIGlmIChidXMtPmNoaXBjby5jYXBhYmlsaXRp
ZXMgJiBTU0JfQ0hJUENPX0NBUF9QTVUpIHsgLyogUE1VIFByZXNlbnQgKi8KPj4+PiArIMKgIMKg
IMKgIMKgIMKgIMKgIMKgIEI0M19XQVJOX09OKGNvcmVfcmV2IDwgMjApOwo+Pj4+ICsgwqAgwqAg
wqAgwqAgwqAgwqAgwqAgaWYgKHBoeS0+Y2xrKSB7Cj4+Pj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDC
oCDCoCDCoCDCoCDCoCBib29sIHRtcCA9IChidXMtPmNoaXBjby5wbXUucmV2ID09IDAgJiYKPj4+
PiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIChiNDNfcmVh
ZDMyKGRldiwgQjQzX01NSU9fQ0xLQ1RMKSAmIDB4MTIpKTsKPj4+PiArCj4+Pj4gKyDCoCDCoCDC
oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBpZiAobW9kZSA9PSAwKSB7Cj4+Pj4gKyDCoCDCoCDC
oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBjbGtjdGwgPSBiNDNfcmVhZDMy
KGRldiwgQjQzX01NSU9fQ0xLQ1RMKTsKPj4+PiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg
IMKgIMKgIMKgIMKgIMKgIMKgIGNsa2N0bCB8PSAweDI7Cj4+Pj4gKyDCoCDCoCDCoCDCoCDCoCDC
oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBiNDNfd3JpdGUzMihkZXYsIEI0M19NTUlPX0NM
S0NUTCwgY2xrY3RsKTsKPj4+PiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg
IMKgIMKgIMKgIHVkZWxheSgzMyk7Cj4+Pj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC
oCDCoCB9Cj4+Pj4gKwo+Pj4+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgaWYg
KG1vZGUgPT0gMCB8fCB0bXApIHsKPj4+PiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg
IMKgIMKgIMKgIMKgIMKgIGZvciAoaSA9IDA7IGkgPCAxNTAwOyBpKyspIHsKPj4+PiArIMKgIMKg
IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGNsa2N0
bCA9IGI0M19yZWFkMzIoZGV2LCBCNDNfTU1JT19DTEtDVEwpOwo+Pj4+ICsgwqAgwqAgwqAgwqAg
wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgaWYgKChjbGtjdGwg
JiAweDIwMDAwKSA9PSAwKSB7Cj4+Pj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC
oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBpID0gMDsKPj4+PiArIMKgIMKg
IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg
IMKgIMKgIGJyZWFrOwo+Pj4+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg
wqAgwqAgwqAgwqAgwqAgwqAgwqAgfQo+Pj4+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg
wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgdWRlbGF5KDEwKTsKPj4+PiArIMKgIMKgIMKg
IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIH0KPj4+PiArIMKgIMKgIMKgIMKg
IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGlmIChpKQo+Pj4+ICsgwqAgwqAgwqAg
wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgYjQzZXJyKGRl
di0+d2wsICJjbG9jayB0aW1lb3V0XG4iKTsKPj4+PiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg
IMKgIMKgIMKgIH0KPj4+PiArCj4+Pj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC
oCBpZiAobW9kZSAhPSAwICYmIHRtcCkgewo+Pj4+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg
wqAgwqAgwqAgwqAgwqAgwqAgwqAgY2xrY3RsID0gYjQzX3JlYWQzMihkZXYsIEI0M19NTUlPX0NM
S0NUTCk7Cj4+Pj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC
oCBjbGtjdGwgJj0gfjB4MjsKPj4+PiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg
IMKgIMKgIMKgIMKgIGI0M193cml0ZTMyKGRldiwgQjQzX01NSU9fQ0xLQ1RMLCBjbGtjdGwpOwo+
Pj4+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgfQo+Pj4+ICsgwqAgwqAgwqAg
wqAgwqAgwqAgwqAgfQo+Pj4+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgcGh5LT5mb3JjZWZhc3Rj
bGsgPSAobW9kZSA9PSAwKTsKPj4+PiArIMKgIMKgIMKgIH0gZWxzZSB7Cj4+Pj4gKyDCoCDCoCDC
oCDCoCDCoCDCoCDCoCBCNDNfV0FSTl9PTihjb3JlX3JldiA+PSAyMCk7Cj4+Pj4gKwo+Pj4+ICsg
wqAgwqAgwqAgwqAgwqAgwqAgwqAgd2FrZXVwID0gKGNvcmVfcmV2IDwgOSk7Cj4+Pj4gKyDCoCDC
oCDCoCDCoCDCoCDCoCDCoCBpZiAocGh5LT51cCAmJiB3YWtldXApCj4+Pj4gKyDCoCDCoCDCoCDC
oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBiNDNfdWNvZGVfd2FrZV9vdmVycmlkZV9zZXQoZGV2LCAx
KTsKPj4+PiArCj4+Pj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCBwaHktPmZvcmNlZmFzdGNsayA9
IGI0M19jbG9ja19jb250cm9sX2NoaXBfY29tbW9uKGRldiwgbW9kZSk7Cj4+Pj4gKyDCoCDCoCDC
oCDCoCDCoCDCoCDCoCBpZiAoY29yZV9yZXYgPCAxMSkgewo+Pj4+ICsgwqAgwqAgwqAgwqAgwqAg
wqAgwqAgwqAgwqAgwqAgwqAgaWYgKHBoeS0+Zm9yY2VmYXN0Y2xrKQo+Pj4+ICsgwqAgwqAgwqAg
wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgOyAvKiBUT0RPOiBiNDNfbWhmKGRl
diwgMCwgMHg0MDAsIDB4NDAwLCAzKTsgKi8KPj4+PiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg
IMKgIMKgIMKgIGVsc2UKPj4+PiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg
IMKgIMKgIMKgIDsgLyogVE9ETzogYjQzX21oZihkZXYsIDAsIDB4NDAwLCAwLCAzKTsgKi8KPj4+
Cj4+PiBXZSBkbyBpbXBsZW1lbnQgbWhmIGFscmVhZHksIHRob3VnaCBpdCBpcyBkb25lIGRpZmZl
cmVudGx5IHRoYW4gaW4gd2wuCj4+PiBTZWUgbXkgZWFybGllciAiQWRkIG1pc3NpbmcgSEYgd3Jp
dGUiIHBhdGNoLgo+Pgo+PiBZZXMsIEkgbm90aWNlZCB0aGlzIGluIHlvdXIgcGF0Y2gsIHRoYW5r
cywgaG93ZXZlciBJIGRvbid0IHVuZGVyc3RhbmQKPj4gcmVsYXRpb24gYmV0d2VlbiBvdXIgaW1w
bGVtZW50YXRpb24gYW5kIHdsIHlldC4gSSdtIG5vdCAxMDAlIHN1cmUgaG93Cj4+IHRvIHRyYW5z
bGF0ZSB0aGlzLCBzbyBJIGRlY2lkZWQgdG8gbGVmdCB0aGlzIGFzIFRPRE8uIERpZG4ndCB3YW50
IHRvCj4+IHdhaXQgYW55bW9yZSBiZWZvcmUgcHVibGlzaGluZyB0aGlzLCB0byBhdm9pZCBzaXR1
YXRpb24gb2YKPj4gaW1wbGVtZW50aW5nIHRoZSBzYW1lIGZ1bmN0aW9ucyBhbmQgd2FzdGluZyB5
b3VyIGFuZC9vciBtaW5lIHRpbWUuCj4+Cj4+IENvdWxkIHlvdSBwb3N0IGEgcGF0Y2ggbWFraW5n
IHJlYWwgY2FsbCBpbnN0ZWFkIG9mIHRoaXMgY29tbWVudCwgcGxlYXNlPwo+Pgo+PiAtLQo+PiBS
YWZhxYIKPj4KPgo+IFNvcnJ5LCBJJ20gb24gYSBXaW5kb3dzLW9ubHkgbWFjaGluZSByaWdodCBu
b3cuCj4gSG93ZXZlciwgdGhlIGdlbmVyYWwgcnVsZSBvZiB0cmFuc2xhdGlvbiBpczoKPiBtaGYo
YSwgYiwgYywgZCkgLT4gYjQzX2hmX3dyaXRlKGRldiwgKGI0M19oZl9yZWFkKGRldikgJiAofmIg
PDwKPiAoYSoxNikpKSB8IChjIDw8IChhKjE2KSkpCj4gKFllcywgdGhlIGxhc3QgcGFyYW1ldGVy
IGlzIGlnbm9yZWQ7IGl0IHNlZW1zIHRvIGJlIGp1c3QgQnJvYWRjcmFwIC0KPiBjcmFwIHdyaXR0
ZW4gYnkgQnJvYWRjb20uKQoKSG0sIE9LLCB0aGFua3MuIFN0aWxsLCBJJ3ZlIHRvIHJlYWQgaXQg
Y2FsbWx5LCBhcyBpdCBsb29rcyB0aGF0Cmh0dHA6Ly9iY20tdjQuc2lwc29sdXRpb25zLm5ldC84
MDIuMTEvTWhmCnVzZXMgbGFzdCBwYXJhbWV0ZXIgYW5kIGdlbmVyYWxseSBpcyBhIGxpdHRsZSBk
aWZmZXJlbnQuIEkgZG9uJ3QgbWVhbgp5b3UncmUgd3JvbmcsIGp1c3QgbmVlZCB0aW1lIHRvIHJl
YWQgdGhpcyBhbmQgdW5kZXJzdGFuZCBpdCA6KQoKLS0gClJhZmHFggo=

^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: [PATCH 2/2] b43: N-PHY: add sub calls of band width setting
  2010-08-22 20:04       ` Gábor Stefanik
  2010-08-22 20:14         ` Rafał Miłecki
@ 2010-08-22 20:29         ` Larry Finger
  2010-08-25 19:07         ` Michael Büsch
  2 siblings, 0 replies; 15+ messages in thread
From: Larry Finger @ 2010-08-22 20:29 UTC (permalink / raw)
  To: Gábor Stefanik; +Cc: Rafał Miłecki, linux-wireless, b43-dev

On 08/22/2010 03:04 PM, Gábor Stefanik wrote:
> 
> Sorry, I'm on a Windows-only machine right now.
> However, the general rule of translation is:
> mhf(a, b, c, d) -> b43_hf_write(dev, (b43_hf_read(dev) & (~b <<
> (a*16))) | (c << (a*16)))
> (Yes, the last parameter is ignored; it seems to be just Broadcrap -
> crap written by Broadcom.)
> 

IIRC, the d part is a flag used to save the state and avoid writes if the code
is setting a state already available. As these writes are not very expensive,
this part can indeed be called Broadcrap.

Larry

^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: [PATCH 1/2] b43: N-PHY: band width setting with dumb clock control call
  2010-08-22 19:49 [PATCH 1/2] b43: N-PHY: band width setting with dumb clock control call Rafał Miłecki
  2010-08-22 19:49 ` [PATCH 2/2] b43: N-PHY: add sub calls of band width setting Rafał Miłecki
@ 2010-08-22 23:20 ` Julian Calaby
  2010-08-22 23:30   ` Gábor Stefanik
  2010-08-22 23:35   ` Rafał Miłecki
  1 sibling, 2 replies; 15+ messages in thread
From: Julian Calaby @ 2010-08-22 23:20 UTC (permalink / raw)
  To: Rafał Miłecki
  Cc: linux-wireless, John W. Linville, b43-dev, Gábor Stefanik

Rafal,

Couple of minor style issues, if you're re-submitting.

2010/8/23 Rafał Miłecki <zajec5@gmail.com>:
> Signed-off-by: Rafał Miłecki <zajec5@gmail.com>
> ---
>  drivers/net/wireless/b43/phy_common.c |   20 ++++++++++++++++++++
>  drivers/net/wireless/b43/phy_common.h |   11 +++++++++++
>  drivers/net/wireless/b43/phy_n.c      |    4 ++--
>  drivers/net/wireless/b43/phy_n.h      |    1 -
>  4 files changed, 33 insertions(+), 3 deletions(-)
>
> diff --git a/drivers/net/wireless/b43/phy_common.c b/drivers/net/wireless/b43/phy_common.c
> index 8f7d7ef..b06e3f0 100644
> --- a/drivers/net/wireless/b43/phy_common.c
> +++ b/drivers/net/wireless/b43/phy_common.c
> @@ -466,3 +466,23 @@ struct b43_c32 b43_cordic(int theta)
>
>        return ret;
>  }
> +
> +/* http://bcm-v4.sipsolutions.net/802.11/PHY/ClkCtlClk */
> +static void b43_clock_control(struct b43_wldev *dev, u32 mode)
> +{
> +       ; /* TODO */

You don't need the semicolon here, as I understand it.

> +}
> +
> +/* http://bcm-v4.sipsolutions.net/802.11/PHY/BmacBwSet */
> +void b43_bmac_set_b_width(struct b43_wldev *dev, u8 b_width)
> +{
> +       bool fast = dev->phy.forcefastclk;;

Double semicolon - and is it necessary to assign a local variable here?

> +       if (!fast)
> +               b43_clock_control(dev, 0);
> +       dev->phy.b_width = b_width;
> +       b43_read32(dev, B43_MMIO_MACCTL); /* flush writes */
> +       /* TODO: Call PHY BMAC Reset */
> +       dev->phy.ops->init(dev);
> +       if (fast)
> +               b43_clock_control(dev, 2);
> +}

Thanks,

-- 

Julian Calaby

Email: julian.calaby@gmail.com
.Plan: http://sites.google.com/site/juliancalaby/

^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: [PATCH 1/2] b43: N-PHY: band width setting with dumb clock control call
  2010-08-22 23:20 ` [PATCH 1/2] b43: N-PHY: band width setting with dumb clock control call Julian Calaby
@ 2010-08-22 23:30   ` Gábor Stefanik
  2010-08-22 23:37     ` Rafał Miłecki
  2010-08-23 22:53     ` Rafał Miłecki
  2010-08-22 23:35   ` Rafał Miłecki
  1 sibling, 2 replies; 15+ messages in thread
From: Gábor Stefanik @ 2010-08-22 23:30 UTC (permalink / raw)
  To: Julian Calaby
  Cc: Rafał Miłecki, linux-wireless, John W. Linville,
	b43-dev, Larry Finger

On Mon, Aug 23, 2010 at 1:20 AM, Julian Calaby <julian.calaby@gmail.com> wrote:
> Rafal,
>
> Couple of minor style issues, if you're re-submitting.
>
> 2010/8/23 Rafał Miłecki <zajec5@gmail.com>:
>> Signed-off-by: Rafał Miłecki <zajec5@gmail.com>
>> ---
>>  drivers/net/wireless/b43/phy_common.c |   20 ++++++++++++++++++++
>>  drivers/net/wireless/b43/phy_common.h |   11 +++++++++++
>>  drivers/net/wireless/b43/phy_n.c      |    4 ++--
>>  drivers/net/wireless/b43/phy_n.h      |    1 -
>>  4 files changed, 33 insertions(+), 3 deletions(-)
>>
>> diff --git a/drivers/net/wireless/b43/phy_common.c b/drivers/net/wireless/b43/phy_common.c
>> index 8f7d7ef..b06e3f0 100644
>> --- a/drivers/net/wireless/b43/phy_common.c
>> +++ b/drivers/net/wireless/b43/phy_common.c
>> @@ -466,3 +466,23 @@ struct b43_c32 b43_cordic(int theta)
>>
>>        return ret;
>>  }
>> +
>> +/* http://bcm-v4.sipsolutions.net/802.11/PHY/ClkCtlClk */
>> +static void b43_clock_control(struct b43_wldev *dev, u32 mode)
>> +{
>> +       ; /* TODO */
>
> You don't need the semicolon here, as I understand it.
>
>> +}
>> +
>> +/* http://bcm-v4.sipsolutions.net/802.11/PHY/BmacBwSet */
>> +void b43_bmac_set_b_width(struct b43_wldev *dev, u8 b_width)
>> +{
>> +       bool fast = dev->phy.forcefastclk;;
>
> Double semicolon - and is it necessary to assign a local variable here?

I agree - don't blindly follow the specs; accessing struct members it
not expensive.

>
>> +       if (!fast)
>> +               b43_clock_control(dev, 0);
>> +       dev->phy.b_width = b_width;
>> +       b43_read32(dev, B43_MMIO_MACCTL); /* flush writes */
>> +       /* TODO: Call PHY BMAC Reset */
>> +       dev->phy.ops->init(dev);

I believe you need to do the whole PHY init, including the common
part; not just the PHY type-specific init. Larry, is this true?

>> +       if (fast)
>> +               b43_clock_control(dev, 2);
>> +}
>
> Thanks,
>
> --
>
> Julian Calaby
>
> Email: julian.calaby@gmail.com
> .Plan: http://sites.google.com/site/juliancalaby/
>



-- 
Vista: [V]iruses, [I]ntruders, [S]pyware, [T]rojans and [A]dware. :-)

^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: [PATCH 1/2] b43: N-PHY: band width setting with dumb clock control call
  2010-08-22 23:20 ` [PATCH 1/2] b43: N-PHY: band width setting with dumb clock control call Julian Calaby
  2010-08-22 23:30   ` Gábor Stefanik
@ 2010-08-22 23:35   ` Rafał Miłecki
  1 sibling, 0 replies; 15+ messages in thread
From: Rafał Miłecki @ 2010-08-22 23:35 UTC (permalink / raw)
  To: Julian Calaby
  Cc: linux-wireless, John W. Linville, b43-dev, Gábor Stefanik

2010/8/23 Julian Calaby <julian.calaby@gmail.com>:
> Rafal,
>
> Couple of minor style issues, if you're re-submitting.

Thanks for reviewing! :)


> 2010/8/23 Rafał Miłecki <zajec5@gmail.com>:
>> Signed-off-by: Rafał Miłecki <zajec5@gmail.com>
>> ---
>>  drivers/net/wireless/b43/phy_common.c |   20 ++++++++++++++++++++
>>  drivers/net/wireless/b43/phy_common.h |   11 +++++++++++
>>  drivers/net/wireless/b43/phy_n.c      |    4 ++--
>>  drivers/net/wireless/b43/phy_n.h      |    1 -
>>  4 files changed, 33 insertions(+), 3 deletions(-)
>>
>> diff --git a/drivers/net/wireless/b43/phy_common.c b/drivers/net/wireless/b43/phy_common.c
>> index 8f7d7ef..b06e3f0 100644
>> --- a/drivers/net/wireless/b43/phy_common.c
>> +++ b/drivers/net/wireless/b43/phy_common.c
>> @@ -466,3 +466,23 @@ struct b43_c32 b43_cordic(int theta)
>>
>>        return ret;
>>  }
>> +
>> +/* http://bcm-v4.sipsolutions.net/802.11/PHY/ClkCtlClk */
>> +static void b43_clock_control(struct b43_wldev *dev, u32 mode)
>> +{
>> +       ; /* TODO */
>
> You don't need the semicolon here, as I understand it.

Yeah, could be skipped without causing warning. However it was
replaced anyway with 2/2. And this code doesn't come from the patch
you comment in this thread ;)


>> +}
>> +
>> +/* http://bcm-v4.sipsolutions.net/802.11/PHY/BmacBwSet */
>> +void b43_bmac_set_b_width(struct b43_wldev *dev, u8 b_width)
>> +{
>> +       bool fast = dev->phy.forcefastclk;;
>
> Double semicolon - and is it necessary to assign a local variable here?

Bingo for double semicolon. We need to keep copy of "forcefastclk" as
this can be changed in sub calls.

-- 
Rafał

^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: [PATCH 1/2] b43: N-PHY: band width setting with dumb clock control call
  2010-08-22 23:30   ` Gábor Stefanik
@ 2010-08-22 23:37     ` Rafał Miłecki
  2010-08-23 22:53     ` Rafał Miłecki
  1 sibling, 0 replies; 15+ messages in thread
From: Rafał Miłecki @ 2010-08-22 23:37 UTC (permalink / raw)
  To: Gábor Stefanik
  Cc: Julian Calaby, linux-wireless, John W. Linville, b43-dev, Larry Finger

W dniu 23 sierpnia 2010 01:30 użytkownik Gábor Stefanik
<netrolller.3d@gmail.com> napisał:
> On Mon, Aug 23, 2010 at 1:20 AM, Julian Calaby <julian.calaby@gmail.com> wrote:
>> Rafal,
>>
>> Couple of minor style issues, if you're re-submitting.
>>
>> 2010/8/23 Rafał Miłecki <zajec5@gmail.com>:
>>> Signed-off-by: Rafał Miłecki <zajec5@gmail.com>
>>> ---
>>>  drivers/net/wireless/b43/phy_common.c |   20 ++++++++++++++++++++
>>>  drivers/net/wireless/b43/phy_common.h |   11 +++++++++++
>>>  drivers/net/wireless/b43/phy_n.c      |    4 ++--
>>>  drivers/net/wireless/b43/phy_n.h      |    1 -
>>>  4 files changed, 33 insertions(+), 3 deletions(-)
>>>
>>> diff --git a/drivers/net/wireless/b43/phy_common.c b/drivers/net/wireless/b43/phy_common.c
>>> index 8f7d7ef..b06e3f0 100644
>>> --- a/drivers/net/wireless/b43/phy_common.c
>>> +++ b/drivers/net/wireless/b43/phy_common.c
>>> @@ -466,3 +466,23 @@ struct b43_c32 b43_cordic(int theta)
>>>
>>>        return ret;
>>>  }
>>> +
>>> +/* http://bcm-v4.sipsolutions.net/802.11/PHY/ClkCtlClk */
>>> +static void b43_clock_control(struct b43_wldev *dev, u32 mode)
>>> +{
>>> +       ; /* TODO */
>>
>> You don't need the semicolon here, as I understand it.
>>
>>> +}
>>> +
>>> +/* http://bcm-v4.sipsolutions.net/802.11/PHY/BmacBwSet */
>>> +void b43_bmac_set_b_width(struct b43_wldev *dev, u8 b_width)
>>> +{
>>> +       bool fast = dev->phy.forcefastclk;;
>>
>> Double semicolon - and is it necessary to assign a local variable here?
>
> I agree - don't blindly follow the specs; accessing struct members it
> not expensive.

Check for sub call "b43_clock_control", it sets "forcefastclk". And we
use local "fast" variable *after* calling "b43_clock_control". I
believe it is needed.

-- 
Rafał

^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: [PATCH 1/2] b43: N-PHY: band width setting with dumb clock control call
  2010-08-22 23:30   ` Gábor Stefanik
  2010-08-22 23:37     ` Rafał Miłecki
@ 2010-08-23 22:53     ` Rafał Miłecki
  2010-08-23 23:17       ` Larry Finger
  1 sibling, 1 reply; 15+ messages in thread
From: Rafał Miłecki @ 2010-08-23 22:53 UTC (permalink / raw)
  To: Gábor Stefanik
  Cc: Julian Calaby, linux-wireless, John W. Linville, b43-dev, Larry Finger

W dniu 23 sierpnia 2010 01:30 użytkownik Gábor Stefanik
<netrolller.3d@gmail.com> napisał:
>>> +       if (!fast)
>>> +               b43_clock_control(dev, 0);
>>> +       dev->phy.b_width = b_width;
>>> +       b43_read32(dev, B43_MMIO_MACCTL); /* flush writes */
>>> +       /* TODO: Call PHY BMAC Reset */
>>> +       dev->phy.ops->init(dev);
>
> I believe you need to do the whole PHY init, including the common
> part; not just the PHY type-specific init. Larry, is this true?

Do you mean b43_phy_init? Larry: I guess indeed some tip would be nice :)

-- 
Rafał

^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: [PATCH 1/2] b43: N-PHY: band width setting with dumb clock control call
  2010-08-23 22:53     ` Rafał Miłecki
@ 2010-08-23 23:17       ` Larry Finger
  2010-08-23 23:56         ` Gábor Stefanik
  0 siblings, 1 reply; 15+ messages in thread
From: Larry Finger @ 2010-08-23 23:17 UTC (permalink / raw)
  To: Rafał Miłecki
  Cc: Gábor Stefanik, Julian Calaby, linux-wireless,
	John W. Linville, b43-dev

On 08/23/2010 05:53 PM, Rafał Miłecki wrote:
>> I believe you need to do the whole PHY init, including the common
>> part; not just the PHY type-specific init. Larry, is this true?
> 
> Do you mean b43_phy_init? Larry: I guess indeed some tip would be nice :)

As it shows in http://bcm-v4.sipsolutions.net/802.11/PHY/Init, you need to do
the Common steps. #15 in that list is the specific routines for the PHY type in
the device.

The code in b43_phy_init() seems not to have all of these steps in it, but I'm
not sure where they are implemented.

Larry

^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: [PATCH 1/2] b43: N-PHY: band width setting with dumb clock control call
  2010-08-23 23:17       ` Larry Finger
@ 2010-08-23 23:56         ` Gábor Stefanik
  0 siblings, 0 replies; 15+ messages in thread
From: Gábor Stefanik @ 2010-08-23 23:56 UTC (permalink / raw)
  To: Larry Finger
  Cc: Rafał Miłecki, Julian Calaby, linux-wireless,
	John W. Linville, b43-dev

On Tue, Aug 24, 2010 at 1:17 AM, Larry Finger <Larry.Finger@lwfinger.net> wrote:
> On 08/23/2010 05:53 PM, Rafał Miłecki wrote:
>>> I believe you need to do the whole PHY init, including the common
>>> part; not just the PHY type-specific init. Larry, is this true?
>>
>> Do you mean b43_phy_init? Larry: I guess indeed some tip would be nice :)
>
> As it shows in http://bcm-v4.sipsolutions.net/802.11/PHY/Init, you need to do
> the Common steps. #15 in that list is the specific routines for the PHY type in
> the device.
>
> The code in b43_phy_init() seems not to have all of these steps in it, but I'm
> not sure where they are implemented.

This spec page seems to have lots of Broadcrap in it... it especially
needs de-chanspec-tamination; how the driver handles band and
bandwidth selection is irrelevant to a HW specification. (Also, many
referenced chanspec-related functions are missing.)

>
> Larry
>



-- 
Vista: [V]iruses, [I]ntruders, [S]pyware, [T]rojans and [A]dware. :-)

^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: [PATCH 2/2] b43: N-PHY: add sub calls of band width setting
  2010-08-22 20:04       ` Gábor Stefanik
  2010-08-22 20:14         ` Rafał Miłecki
  2010-08-22 20:29         ` Larry Finger
@ 2010-08-25 19:07         ` Michael Büsch
  2 siblings, 0 replies; 15+ messages in thread
From: Michael Büsch @ 2010-08-25 19:07 UTC (permalink / raw)
  To: Gábor Stefanik, Rafał Miłecki; +Cc: wireless, b43-dev

On 08/22/2010 10:04 PM, Gábor Stefanik wrote:
>>>> +#define B43_MMIO_CLKCTL                        0x1E0   /* clock control status */

Is it possible that all this stuff is completely bogus?
All this clock control stuff you are trying to implement really
looks like the standard SSB clock control which is already
implemented in SSB. The clock control and status register
of the chipcommon is 0x1E0.

That "phy reset" stuff also mostly looks like you are reinventing the wheel
for code that is already present.

-- 
Greetings Michael.

^ permalink raw reply	[flat|nested] 15+ messages in thread

end of thread, other threads:[~2010-08-25 19:07 UTC | newest]

Thread overview: 15+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2010-08-22 19:49 [PATCH 1/2] b43: N-PHY: band width setting with dumb clock control call Rafał Miłecki
2010-08-22 19:49 ` [PATCH 2/2] b43: N-PHY: add sub calls of band width setting Rafał Miłecki
2010-08-22 19:52   ` Gábor Stefanik
2010-08-22 19:58     ` Rafał Miłecki
2010-08-22 20:04       ` Gábor Stefanik
2010-08-22 20:14         ` Rafał Miłecki
2010-08-22 20:29         ` Larry Finger
2010-08-25 19:07         ` Michael Büsch
2010-08-22 23:20 ` [PATCH 1/2] b43: N-PHY: band width setting with dumb clock control call Julian Calaby
2010-08-22 23:30   ` Gábor Stefanik
2010-08-22 23:37     ` Rafał Miłecki
2010-08-23 22:53     ` Rafał Miłecki
2010-08-23 23:17       ` Larry Finger
2010-08-23 23:56         ` Gábor Stefanik
2010-08-22 23:35   ` Rafał Miłecki

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).