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

Commit 3e5a7c98 authored by David S. Miller's avatar David S. Miller
Browse files

Merge tag 'wireless-drivers-for-davem-2019-02-04' of...

Merge tag 'wireless-drivers-for-davem-2019-02-04' of git://git.kernel.org/pub/scm/linux/kernel/git/kvalo/wireless-drivers



Kalle Valo says:

====================
wireless-drivers fixes for 5.0

First set of small, but importnat, fixes for 5.0.

iwlwifi

* fix a build regression introduced in 5.0-rc1

wlcore

* fix a firmware regression from v4.18-rc1

mt76x0

* fix for configuring tx power from user space

ath10k

* fix wcn3990 regression from v4.20-rc1
====================

Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parents 277aa590 8c22d81d
Loading
Loading
Loading
Loading
+7 −0
Original line number Diff line number Diff line
@@ -12873,6 +12873,13 @@ F: Documentation/devicetree/bindings/net/dsa/realtek-smi.txt
F:	drivers/net/dsa/realtek-smi*
F:	drivers/net/dsa/rtl83*

REDPINE WIRELESS DRIVER
M:	Amitkumar Karwar <amitkarwar@gmail.com>
M:	Siva Rebbagondla <siva8118@gmail.com>
L:	linux-wireless@vger.kernel.org
S:	Maintained
F:	drivers/net/wireless/rsi/

REGISTER MAP ABSTRACTION
M:	Mark Brown <broonie@kernel.org>
L:	linux-kernel@vger.kernel.org
+1 −1
Original line number Diff line number Diff line
@@ -548,7 +548,7 @@ static const struct ath10k_hw_params ath10k_hw_params_list[] = {
	{
		.id = WCN3990_HW_1_0_DEV_VERSION,
		.dev_id = 0,
		.bus = ATH10K_BUS_PCI,
		.bus = ATH10K_BUS_SNOC,
		.name = "wcn3990 hw1.0",
		.continuous_frag_desc = true,
		.tx_chain_mask = 0x7,
+2 −1
Original line number Diff line number Diff line
config IWLWIFI
	tristate "Intel Wireless WiFi Next Gen AGN - Wireless-N/Advanced-N/Ultimate-N (iwlwifi) "
	depends on PCI && HAS_IOMEM
	depends on PCI && HAS_IOMEM && CFG80211
	select FW_LOADER
	---help---
	  Select to build the driver supporting the:
@@ -47,6 +47,7 @@ if IWLWIFI
config IWLWIFI_LEDS
	bool
	depends on LEDS_CLASS=y || LEDS_CLASS=IWLWIFI
	depends on IWLMVM || IWLDVM
	select LEDS_TRIGGERS
	select MAC80211_LEDS
	default y
+19 −21
Original line number Diff line number Diff line
@@ -212,24 +212,24 @@ void mt76x0_get_tx_power_per_rate(struct mt76x02_dev *dev)
	mt76x02_add_rate_power_offset(t, delta);
}

void mt76x0_get_power_info(struct mt76x02_dev *dev, u8 *info)
void mt76x0_get_power_info(struct mt76x02_dev *dev, s8 *tp)
{
	struct mt76x0_chan_map {
		u8 chan;
		u8 offset;
	} chan_map[] = {
		{   2,  0 }, {   4,  1 }, {   6,  2 }, {   8,  3 },
		{  10,  4 }, {  12,  5 }, {  14,  6 }, {  38,  0 },
		{  44,  1 }, {  48,  2 }, {  54,  3 }, {  60,  4 },
		{  64,  5 }, { 102,  6 }, { 108,  7 }, { 112,  8 },
		{ 118,  9 }, { 124, 10 }, { 128, 11 }, { 134, 12 },
		{ 140, 13 }, { 151, 14 }, { 157, 15 }, { 161, 16 },
		{ 167, 17 }, { 171, 18 }, { 173, 19 },
		{   2,  0 }, {   4,  2 }, {   6,  4 }, {   8,  6 },
		{  10,  8 }, {  12, 10 }, {  14, 12 }, {  38,  0 },
		{  44,  2 }, {  48,  4 }, {  54,  6 }, {  60,  8 },
		{  64, 10 }, { 102, 12 }, { 108, 14 }, { 112, 16 },
		{ 118, 18 }, { 124, 20 }, { 128, 22 }, { 134, 24 },
		{ 140, 26 }, { 151, 28 }, { 157, 30 }, { 161, 32 },
		{ 167, 34 }, { 171, 36 }, { 175, 38 },
	};
	struct ieee80211_channel *chan = dev->mt76.chandef.chan;
	u8 offset, addr;
	int i, idx = 0;
	u16 data;
	int i;

	if (mt76x0_tssi_enabled(dev)) {
		s8 target_power;
@@ -239,14 +239,14 @@ void mt76x0_get_power_info(struct mt76x02_dev *dev, u8 *info)
		else
			data = mt76x02_eeprom_get(dev, MT_EE_2G_TARGET_POWER);
		target_power = (data & 0xff) - dev->mt76.rate_power.ofdm[7];
		info[0] = target_power + mt76x0_get_delta(dev);
		info[1] = 0;
		*tp = target_power + mt76x0_get_delta(dev);

		return;
	}

	for (i = 0; i < ARRAY_SIZE(chan_map); i++) {
		if (chan_map[i].chan <= chan->hw_value) {
		if (chan->hw_value <= chan_map[i].chan) {
			idx = (chan->hw_value == chan_map[i].chan);
			offset = chan_map[i].offset;
			break;
		}
@@ -258,13 +258,16 @@ void mt76x0_get_power_info(struct mt76x02_dev *dev, u8 *info)
		addr = MT_EE_TX_POWER_DELTA_BW80 + offset;
	} else {
		switch (chan->hw_value) {
		case 42:
			offset = 2;
			break;
		case 58:
			offset = 8;
			break;
		case 106:
			offset = 14;
			break;
		case 112:
		case 122:
			offset = 20;
			break;
		case 155:
@@ -277,14 +280,9 @@ void mt76x0_get_power_info(struct mt76x02_dev *dev, u8 *info)
	}

	data = mt76x02_eeprom_get(dev, addr);

	info[0] = data;
	if (!info[0] || info[0] > 0x3f)
		info[0] = 5;

	info[1] = data >> 8;
	if (!info[1] || info[1] > 0x3f)
		info[1] = 5;
	*tp = data >> (8 * idx);
	if (*tp < 0 || *tp > 0x3f)
		*tp = 5;
}

static int mt76x0_check_eeprom(struct mt76x02_dev *dev)
+1 −1
Original line number Diff line number Diff line
@@ -26,7 +26,7 @@ struct mt76x02_dev;
int mt76x0_eeprom_init(struct mt76x02_dev *dev);
void mt76x0_read_rx_gain(struct mt76x02_dev *dev);
void mt76x0_get_tx_power_per_rate(struct mt76x02_dev *dev);
void mt76x0_get_power_info(struct mt76x02_dev *dev, u8 *info);
void mt76x0_get_power_info(struct mt76x02_dev *dev, s8 *tp);

static inline s8 s6_to_s8(u32 val)
{
Loading