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

Commit 4d1a4f16 authored by Arend van Spriel's avatar Arend van Spriel Committed by John W. Linville
Browse files

brcmfmac: only show error message when brcmf_sdiod_regrw_helper() fails



In the function brcmf_sdiod_request_data() an error message is logged,
but the calling function retries it. This patch will only log an error
message when retry limit is reached. The low-level error is still
logged by a SDIO debug message.

Reviewed-by: default avatarDaniel (Deognyoun) Kim <dekim@broadcom.com>
Reviewed-by: default avatarPieter-Paul Giesberts <pieterpg@broadcom.com>
Signed-off-by: default avatarArend van Spriel <arend@broadcom.com>
Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
parent 58e9df46
Loading
Loading
Loading
Loading
+21 −20
Original line number Original line Diff line number Diff line
@@ -269,26 +269,17 @@ static int brcmf_sdiod_request_data(struct brcmf_sdio_dev *sdiodev, u8 fn,
		break;
		break;
	}
	}


	if (ret) {
	if (ret)
		/*
		 * SleepCSR register access can fail when
		 * waking up the device so reduce this noise
		 * in the logs.
		 */
		if (addr != SBSDIO_FUNC1_SLEEPCSR)
			brcmf_err("failed to %s data F%d@0x%05x, err: %d\n",
				  write ? "write" : "read", fn, addr, ret);
		else
		brcmf_dbg(SDIO, "failed to %s data F%d@0x%05x, err: %d\n",
		brcmf_dbg(SDIO, "failed to %s data F%d@0x%05x, err: %d\n",
			  write ? "write" : "read", fn, addr, ret);
			  write ? "write" : "read", fn, addr, ret);
	}

	return ret;
	return ret;
}
}


static int brcmf_sdiod_regrw_helper(struct brcmf_sdio_dev *sdiodev, u32 addr,
static int brcmf_sdiod_regrw_helper(struct brcmf_sdio_dev *sdiodev, u32 addr,
				   u8 regsz, void *data, bool write)
				   u8 regsz, void *data, bool write)
{
{
	u8 func_num;
	u8 func;
	s32 retry = 0;
	s32 retry = 0;
	int ret;
	int ret;


@@ -302,9 +293,9 @@ static int brcmf_sdiod_regrw_helper(struct brcmf_sdio_dev *sdiodev, u32 addr,
	 * The rest: function 1 silicon backplane core registers
	 * The rest: function 1 silicon backplane core registers
	 */
	 */
	if ((addr & ~REG_F0_REG_MASK) == 0)
	if ((addr & ~REG_F0_REG_MASK) == 0)
		func_num = SDIO_FUNC_0;
		func = SDIO_FUNC_0;
	else
	else
		func_num = SDIO_FUNC_1;
		func = SDIO_FUNC_1;


	do {
	do {
		if (!write)
		if (!write)
@@ -312,16 +303,26 @@ static int brcmf_sdiod_regrw_helper(struct brcmf_sdio_dev *sdiodev, u32 addr,
		/* for retry wait for 1 ms till bus get settled down */
		/* for retry wait for 1 ms till bus get settled down */
		if (retry)
		if (retry)
			usleep_range(1000, 2000);
			usleep_range(1000, 2000);
		ret = brcmf_sdiod_request_data(sdiodev, func_num, addr, regsz,
		ret = brcmf_sdiod_request_data(sdiodev, func, addr, regsz,
					       data, write);
					       data, write);
	} while (ret != 0 && ret != -ENOMEDIUM &&
	} while (ret != 0 && ret != -ENOMEDIUM &&
		 retry++ < SDIOH_API_ACCESS_RETRY_LIMIT);
		 retry++ < SDIOH_API_ACCESS_RETRY_LIMIT);


	if (ret == -ENOMEDIUM)
	if (ret == -ENOMEDIUM)
		brcmf_bus_change_state(sdiodev->bus_if, BRCMF_BUS_NOMEDIUM);
		brcmf_bus_change_state(sdiodev->bus_if, BRCMF_BUS_NOMEDIUM);
	else if (ret != 0)
	else if (ret != 0) {
		brcmf_err("failed with %d\n", ret);
		/*

		 * SleepCSR register access can fail when
		 * waking up the device so reduce this noise
		 * in the logs.
		 */
		if (addr != SBSDIO_FUNC1_SLEEPCSR)
			brcmf_err("failed to %s data F%d@0x%05x, err: %d\n",
				  write ? "write" : "read", func, addr, ret);
		else
			brcmf_dbg(SDIO, "failed to %s data F%d@0x%05x, err: %d\n",
				  write ? "write" : "read", func, addr, ret);
	}
	return ret;
	return ret;
}
}