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

Commit 4935250a authored by Felix Fietkau's avatar Felix Fietkau Committed by John W. Linville
Browse files

ath9k_hw: add support for parsing PA predistortion related EEPROM fields

parent ab334498
Loading
Loading
Loading
Loading
+10 −3
Original line number Diff line number Diff line
@@ -67,6 +67,7 @@ static const struct ar9300_eeprom ar9300_default = {
		  * bit2 - enable fastClock - enabled
		  * bit3 - enable doubling - enabled
		  * bit4 - enable internal regulator - disabled
		  * bit5 - enable pa predistortion - disabled
		  */
		.miscConfiguration = 0, /* bit0 - turn down drivestrength */
		.eepromWriteEnableGpio = 3,
@@ -129,9 +130,11 @@ static const struct ar9300_eeprom ar9300_default = {
		.txEndToRxOn = 0x2,
		.txFrameToXpaOn = 0xe,
		.thresh62 = 28,
		.futureModal = { /* [32] */
		.papdRateMaskHt20 = LE32(0x80c080),
		.papdRateMaskHt40 = LE32(0x80c080),
		.futureModal = {
			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
			0, 0, 0, 0, 0, 0, 0, 0
		},
	 },
	.calFreqPier2G = {
@@ -326,9 +329,11 @@ static const struct ar9300_eeprom ar9300_default = {
		.txEndToRxOn = 0x2,
		.txFrameToXpaOn = 0xe,
		.thresh62 = 28,
		.papdRateMaskHt20 = LE32(0xf0e0e0),
		.papdRateMaskHt40 = LE32(0xf0e0e0),
		.futureModal = {
			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
			0, 0, 0, 0, 0, 0, 0, 0
		},
	 },
	.calFreqPier5G = {
@@ -644,6 +649,8 @@ static u32 ath9k_hw_ar9300_get_eeprom(struct ath_hw *ah,
		return (pBase->featureEnable & 0x10) >> 4;
	case EEP_SWREG:
		return le32_to_cpu(pBase->swreg);
	case EEP_PAPRD:
		return !!(pBase->featureEnable & BIT(5));
	default:
		return 0;
	}
+3 −1
Original line number Diff line number Diff line
@@ -234,7 +234,9 @@ struct ar9300_modal_eep_header {
	u8 txEndToRxOn;
	u8 txFrameToXpaOn;
	u8 thresh62;
	u8 futureModal[32];
	__le32 papdRateMaskHt20;
	__le32 papdRateMaskHt40;
	u8 futureModal[24];
} __packed;

struct ar9300_cal_data_per_freq_op_loop {
+2 −1
Original line number Diff line number Diff line
@@ -263,7 +263,8 @@ enum eeprom_param {
	EEP_PWR_TABLE_OFFSET,
	EEP_DRIVE_STRENGTH,
	EEP_INTERNAL_REGULATOR,
	EEP_SWREG
	EEP_SWREG,
	EEP_PAPRD,
};

enum ar5416_rates {
+2 −0
Original line number Diff line number Diff line
@@ -2235,6 +2235,8 @@ int ath9k_hw_fill_cap_info(struct ath_hw *ah)
		pCap->rx_status_len = sizeof(struct ar9003_rxs);
		pCap->tx_desc_len = sizeof(struct ar9003_txc);
		pCap->txs_len = sizeof(struct ar9003_txs);
		if (ah->eep_ops->get_eeprom(ah, EEP_PAPRD))
			pCap->hw_caps |= ATH9K_HW_CAP_PAPRD;
	} else {
		pCap->tx_desc_len = sizeof(struct ath_desc);
		if (AR_SREV_9280_20(ah) &&
+1 −0
Original line number Diff line number Diff line
@@ -200,6 +200,7 @@ enum ath9k_hw_caps {
	ATH9K_HW_CAP_LDPC			= BIT(19),
	ATH9K_HW_CAP_FASTCLOCK			= BIT(20),
	ATH9K_HW_CAP_SGI_20			= BIT(21),
	ATH9K_HW_CAP_PAPRD			= BIT(22),
};

enum ath9k_capability_type {