* [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 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
* 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: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 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
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).