Commit 7a7cb2eb authored by Or Ron's avatar Or Ron Committed by Miri Korenblit
Browse files

wifi: iwlwifi: phy periph read - flow modification



If for some reason the reading of phy prph fails, there is no reason to
keep reading them. Check the status abd break early in such case.

Signed-off-by: default avatarOr Ron <or.ron@intel.com>
Reviewed-by: default avatarEilon Rinat <eilon.rinat@intel.com>
Signed-off-by: default avatarMiri Korenblit <miriam.rachel.korenblit@intel.com>
Link: https://patch.msgid.link/20250611222325.124ce6613edd.Ic1aad57cc6163f0551a3dafae048434f4a2fe7f5@changeid
parent cc8d9cbf
Loading
Loading
Loading
Loading
+16 −0
Original line number Diff line number Diff line
@@ -1106,6 +1106,7 @@ static int iwl_dump_ini_prph_phy_iter_common(struct iwl_fw_runtime *fwrt,
	u32 prph_val;
	u32 dphy_state;
	u32 dphy_addr;
	u32 prph_stts;
	int i;

	range->internal_base_addr = cpu_to_le32(addr);
@@ -1133,6 +1134,21 @@ static int iwl_dump_ini_prph_phy_iter_common(struct iwl_fw_runtime *fwrt,

		iwl_write_prph_no_grab(fwrt->trans, indirect_wr_addr,
				       WMAL_INDRCT_CMD(addr + i));

		if (fwrt->trans->info.hw_rf_id != IWL_CFG_RF_TYPE_JF1 &&
		    fwrt->trans->info.hw_rf_id != IWL_CFG_RF_TYPE_JF2 &&
		    fwrt->trans->info.hw_rf_id != IWL_CFG_RF_TYPE_HR1 &&
		    fwrt->trans->info.hw_rf_id != IWL_CFG_RF_TYPE_HR2) {
			udelay(2);
			prph_stts = iwl_read_prph_no_grab(fwrt->trans,
							  WMAL_MRSPF_STTS);

			/* Abort dump if status is 0xA5A5A5A2 or FIFO1 empty */
			if (prph_stts == WMAL_TIMEOUT_VAL ||
			    !WMAL_MRSPF_STTS_IS_FIFO1_NOT_EMPTY(prph_stts))
				break;
		}

		prph_val = iwl_read_prph_no_grab(fwrt->trans,
						 indirect_rd_addr);
		*val++ = cpu_to_le32(prph_val);
+9 −1
Original line number Diff line number Diff line
/* SPDX-License-Identifier: GPL-2.0 OR BSD-3-Clause */
/*
 * Copyright (C) 2005-2014, 2018-2024 Intel Corporation
 * Copyright (C) 2005-2014, 2018-2025 Intel Corporation
 * Copyright (C) 2013-2015 Intel Mobile Communications GmbH
 * Copyright (C) 2016 Intel Deutschland GmbH
 */
@@ -514,6 +514,14 @@ enum {
#define WMAL_INDRCT_CMD(addr) \
	((WMAL_CMD_READ_BURST_ACCESS << WMAL_INDRCT_RD_CMD1_OPMOD_POS) | \
	 ((addr) & WMAL_INDRCT_RD_CMD1_BYTE_ADDRESS_MSK))
#define WMAL_MRSPF_STTS 0xADFC24
#define WMAL_MRSPF_STTS_FIFO1_NOT_EMPTY_POS 15
#define WMAL_MRSPF_STTS_FIFO1_NOT_EMPTY_MSK 0x8000
#define WMAL_TIMEOUT_VAL 0xA5A5A5A2
#define WMAL_MRSPF_STTS_IS_FIFO1_NOT_EMPTY(val) \
	(((val) >> (WMAL_MRSPF_STTS_FIFO1_NOT_EMPTY_POS)) & \
	 ((WMAL_MRSPF_STTS_FIFO1_NOT_EMPTY_MSK) >> \
	  (WMAL_MRSPF_STTS_FIFO1_NOT_EMPTY_POS)))

#define WFPM_LMAC1_PS_CTL_RW 0xA03380
#define WFPM_LMAC2_PS_CTL_RW 0xA033C0