Commit dfa71c49 authored by Michael Straube's avatar Michael Straube Committed by Greg Kroah-Hartman
Browse files

staging: r8188eu: make c2h_evt_read() static



The function c2h_evt_read() is only used in rtw_cmd.c.
Make it static.

This addresses the TODO item:
* Remove the HAL layer and migrate its functionality into the relevant
  parts of the driver.

Tested-by: Philipp Hortmann <philipp.g.hortmann@gmail.com> # Edimax N150
Signed-off-by: default avatarMichael Straube <straube.linux@gmail.com>
Link: https://lore.kernel.org/r/20220909100232.8305-1-straube.linux@gmail.com


Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent 9ca57c63
Loading
Loading
Loading
Loading
+60 −0
Original line number Diff line number Diff line
@@ -1277,6 +1277,66 @@ u8 rtw_c2h_wk_cmd(struct adapter *padapter, u8 *c2h_evt)
	return res;
}

/* C2H event format:
 * Field    TRIGGER      CONTENT     CMD_SEQ    CMD_LEN    CMD_ID
 * BITS     [127:120]    [119:16]    [15:8]     [7:4]      [3:0]
 */
static s32 c2h_evt_read(struct adapter *adapter, u8 *buf)
{
	s32 ret = _FAIL;
	struct c2h_evt_hdr *c2h_evt;
	int i;
	u8 trigger;

	if (!buf)
		goto exit;

	ret = rtw_read8(adapter, REG_C2HEVT_CLEAR, &trigger);
	if (ret)
		return _FAIL;

	if (trigger == C2H_EVT_HOST_CLOSE)
		goto exit; /* Not ready */
	else if (trigger != C2H_EVT_FW_CLOSE)
		goto clear_evt; /* Not a valid value */

	c2h_evt = (struct c2h_evt_hdr *)buf;

	memset(c2h_evt, 0, 16);

	ret = rtw_read8(adapter, REG_C2HEVT_MSG_NORMAL, buf);
	if (ret) {
		ret = _FAIL;
		goto clear_evt;
	}

	ret = rtw_read8(adapter, REG_C2HEVT_MSG_NORMAL + 1, buf + 1);
	if (ret) {
		ret = _FAIL;
		goto clear_evt;
	}
	/* Read the content */
	for (i = 0; i < c2h_evt->plen; i++) {
		ret = rtw_read8(adapter, REG_C2HEVT_MSG_NORMAL +
				sizeof(*c2h_evt) + i, c2h_evt->payload + i);
		if (ret) {
			ret = _FAIL;
			goto clear_evt;
		}
	}

	ret = _SUCCESS;

clear_evt:
	/* Clear event to notify FW we have read the command.
	 * If this field isn't clear, the FW won't update the next
	 * command message.
	 */
	rtw_write8(adapter, REG_C2HEVT_CLEAR, C2H_EVT_HOST_CLOSE);
exit:
	return ret;
}

static void c2h_evt_hdl(struct adapter *adapter, struct c2h_evt_hdr *c2h_evt, c2h_id_filter filter)
{
	u8 buf[16];
+0 −63
Original line number Diff line number Diff line
@@ -137,66 +137,3 @@ void HalSetBrateCfg(struct adapter *adapt, u8 *brates, u16 *rate_cfg)
		}
	}
}

/*
* C2H event format:
* Field	 TRIGGER		CONTENT	   CMD_SEQ	CMD_LEN		 CMD_ID
* BITS	 [127:120]	[119:16]      [15:8]		  [7:4]		   [3:0]
*/

s32 c2h_evt_read(struct adapter *adapter, u8 *buf)
{
	s32 ret = _FAIL;
	struct c2h_evt_hdr *c2h_evt;
	int i;
	u8 trigger;

	if (!buf)
		goto exit;

	ret = rtw_read8(adapter, REG_C2HEVT_CLEAR, &trigger);
	if (ret)
		return _FAIL;

	if (trigger == C2H_EVT_HOST_CLOSE)
		goto exit; /* Not ready */
	else if (trigger != C2H_EVT_FW_CLOSE)
		goto clear_evt; /* Not a valid value */

	c2h_evt = (struct c2h_evt_hdr *)buf;

	memset(c2h_evt, 0, 16);

	ret = rtw_read8(adapter, REG_C2HEVT_MSG_NORMAL, buf);
	if (ret) {
		ret = _FAIL;
		goto clear_evt;
	}

	ret = rtw_read8(adapter, REG_C2HEVT_MSG_NORMAL + 1, buf + 1);
	if (ret) {
		ret = _FAIL;
		goto clear_evt;
	}
	/* Read the content */
	for (i = 0; i < c2h_evt->plen; i++) {
		ret = rtw_read8(adapter, REG_C2HEVT_MSG_NORMAL +
						sizeof(*c2h_evt) + i, c2h_evt->payload + i);
		if (ret) {
			ret = _FAIL;
			goto clear_evt;
		}
	}

	ret = _SUCCESS;

clear_evt:
	/*
	* Clear event to notify FW we have read the command.
	* If this field isn't clear, the FW won't update the next
	* command message.
	*/
	rtw_write8(adapter, REG_C2HEVT_CLEAR, C2H_EVT_HOST_CLOSE);
exit:
	return ret;
}
+0 −2
Original line number Diff line number Diff line
@@ -143,6 +143,4 @@ u8 MRateToHwRate(u8 rate);

void HalSetBrateCfg(struct adapter *Adapter, u8 *mBratesOS, u16 *pBrateCfg);

s32 c2h_evt_read(struct adapter *adapter, u8 *buf);

#endif /* __HAL_COMMON_H__ */