Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 3695b932 authored by Rafał Miłecki's avatar Rafał Miłecki Committed by John W. Linville
Browse files

b43: enable radio 0x2057 rev 9 (AKA BCM43228) support



Support for N-PHY rev 8 with 0x2057 rev 5 is almost ready, but we still
need to figure out how to handle rev 9 first.

Signed-off-by: default avatarRafał Miłecki <zajec5@gmail.com>
Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
parent 785e7dbb
Loading
Loading
Loading
Loading
+22 −2
Original line number Original line Diff line number Diff line
@@ -210,6 +210,9 @@ static struct ieee80211_channel b43_2ghz_chantable[] = {
	CHAN2G(13, 2472, 0),
	CHAN2G(13, 2472, 0),
	CHAN2G(14, 2484, 0),
	CHAN2G(14, 2484, 0),
};
};

/* No support for the last 3 channels (12, 13, 14) */
#define b43_2ghz_chantable_limited_size		11
#undef CHAN2G
#undef CHAN2G


#define CHAN4G(_channel, _flags) {				\
#define CHAN4G(_channel, _flags) {				\
@@ -335,6 +338,14 @@ static struct ieee80211_supported_band b43_band_2GHz = {
	.n_bitrates	= b43_g_ratetable_size,
	.n_bitrates	= b43_g_ratetable_size,
};
};


static struct ieee80211_supported_band b43_band_2ghz_limited = {
	.band		= IEEE80211_BAND_2GHZ,
	.channels	= b43_2ghz_chantable,
	.n_channels	= b43_2ghz_chantable_limited_size,
	.bitrates	= b43_g_ratetable,
	.n_bitrates	= b43_g_ratetable_size,
};

static void b43_wireless_core_exit(struct b43_wldev *dev);
static void b43_wireless_core_exit(struct b43_wldev *dev);
static int b43_wireless_core_init(struct b43_wldev *dev);
static int b43_wireless_core_init(struct b43_wldev *dev);
static struct b43_wldev * b43_wireless_core_stop(struct b43_wldev *dev);
static struct b43_wldev * b43_wireless_core_stop(struct b43_wldev *dev);
@@ -4459,7 +4470,10 @@ static int b43_phy_versioning(struct b43_wldev *dev)
			unsupported = 1;
			unsupported = 1;
		break;
		break;
	case B43_PHYTYPE_N:
	case B43_PHYTYPE_N:
		if (radio_ver != 0x2055 && radio_ver != 0x2056)
		if (radio_ver != 0x2055 && radio_ver != 0x2056 &&
		    radio_ver != 0x2057)
			unsupported = 1;
		if (radio_ver == 0x2057 && !(radio_rev == 9))
			unsupported = 1;
			unsupported = 1;
		break;
		break;
	case B43_PHYTYPE_LP:
	case B43_PHYTYPE_LP:
@@ -5095,9 +5109,15 @@ static int b43_setup_bands(struct b43_wldev *dev,
			   bool have_2ghz_phy, bool have_5ghz_phy)
			   bool have_2ghz_phy, bool have_5ghz_phy)
{
{
	struct ieee80211_hw *hw = dev->wl->hw;
	struct ieee80211_hw *hw = dev->wl->hw;
	struct b43_phy *phy = &dev->phy;
	bool limited_2g;

	/* We don't support all 2 GHz channels on some devices */
	limited_2g = phy->radio_ver == 0x2057 && phy->radio_rev == 9;


	if (have_2ghz_phy)
	if (have_2ghz_phy)
		hw->wiphy->bands[IEEE80211_BAND_2GHZ] = &b43_band_2GHz;
		hw->wiphy->bands[IEEE80211_BAND_2GHZ] = limited_2g ?
			&b43_band_2ghz_limited : &b43_band_2GHz;
	if (dev->phy.type == B43_PHYTYPE_N) {
	if (dev->phy.type == B43_PHYTYPE_N) {
		if (have_5ghz_phy)
		if (have_5ghz_phy)
			hw->wiphy->bands[IEEE80211_BAND_5GHZ] = &b43_band_5GHz_nphy;
			hw->wiphy->bands[IEEE80211_BAND_5GHZ] = &b43_band_5GHz_nphy;