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

Commit cf06cfab authored by Linux Build Service Account's avatar Linux Build Service Account
Browse files

Merge b84e72e5 on remote branch

Change-Id: Ic2030efb3067f294fd32c0878db86f00be7f8a37
parents ff6f3fd0 b84e72e5
Loading
Loading
Loading
Loading
+4 −1
Original line number Diff line number Diff line
/*
 * Copyright (c) 2017-2018, 2020-2021 The Linux Foundation. All rights reserved.
 * Copyright (c) 2023 Qualcomm Innovation Center, Inc. All rights reserved.
 *
 * Permission to use, copy, modify, and/or distribute this software for
 * any purpose with or without fee is hereby granted, provided that the
@@ -290,10 +291,12 @@ int pmo_core_psoc_clear_target_wake_up(struct wlan_objmgr_psoc *psoc);
 * pmo_core_psoc_target_suspend_acknowledge() - update target susspend status
 * @context: HTC_INIT_INFO->context
 * @wow_nack: true when wow is rejected
 * @reason_code : WoW status reason code
 *
 * Return: none
 */
void pmo_core_psoc_target_suspend_acknowledge(void *context, bool wow_nack);
void pmo_core_psoc_target_suspend_acknowledge(void *context, bool wow_nack,
					      uint16_t reason_code);

/**
 * pmo_core_psoc_wakeup_host_event_received() - received host wake up event
+24 −1
Original line number Diff line number Diff line
/*
 * Copyright (c) 2017-2021 The Linux Foundation. All rights reserved.
 * Copyright (c) 2023 Qualcomm Innovation Center, Inc. All rights reserved.
 *
 * Permission to use, copy, modify, and/or distribute this software for
 * any purpose with or without fee is hereby granted, provided that the
@@ -421,14 +422,17 @@ bool pmo_core_is_wow_enabled(struct pmo_psoc_priv_obj *psoc_ctx)
 * pmo_core_set_wow_nack() - Set wow nack flag
 * @psoc_ctx: Pointer to objmgr psoc handle
 * @value: true if received wow nack from else false
 * @reason_code: WoW status reason code
 *
 * Return: None
 */
static inline
void pmo_core_set_wow_nack(struct pmo_psoc_priv_obj *psoc_ctx, bool value)
void pmo_core_set_wow_nack(struct pmo_psoc_priv_obj *psoc_ctx, bool value,
			   uint16_t reason_code)
{
	qdf_spin_lock_bh(&psoc_ctx->lock);
	psoc_ctx->wow.wow_nack = value;
	psoc_ctx->wow.reason_code = reason_code;
	qdf_spin_unlock_bh(&psoc_ctx->lock);
}

@@ -449,6 +453,25 @@ bool pmo_core_get_wow_nack(struct pmo_psoc_priv_obj *psoc_ctx)

	return value;
}

/**
 * pmo_core_get_wow_reason_code() - Get wow status reason code
 * @psoc_ctx: Pointer to objmgr psoc handle
 *
 * Return: wow status reason code
 */
static inline
uint16_t pmo_core_get_wow_reason_code(struct pmo_psoc_priv_obj *psoc_ctx)
{
	uint16_t value;

	qdf_spin_lock_bh(&psoc_ctx->lock);
	value = psoc_ctx->wow.reason_code;
	qdf_spin_unlock_bh(&psoc_ctx->lock);

	return value;
}

/**
 * pmo_core_update_wow_enable_cmd_sent() - update wow enable cmd sent flag
 * @psoc_ctx: Pointer to objmgr psoc handle
+8 −5
Original line number Diff line number Diff line
/*
 * Copyright (c) 2017-2021 The Linux Foundation. All rights reserved.
 * Copyright (c) 2022 Qualcomm Innovation Center, Inc. All rights reserved.
 * Copyright (c) 2022-2023 Qualcomm Innovation Center, Inc. All rights reserved.
 *
 * Permission to use, copy, modify, and/or distribute this software for
 * any purpose with or without fee is hereby granted, provided that the
@@ -735,12 +735,13 @@ pmo_core_enable_wow_in_fw(struct wlan_objmgr_psoc *psoc,
	struct pmo_psoc_cfg *psoc_cfg = &psoc_ctx->psoc_cfg;
	QDF_STATUS status;
	void *hif_ctx;
	uint16_t reason_code;

	pmo_enter();

	hif_ctx = pmo_core_psoc_get_hif_handle(psoc);
	qdf_event_reset(&psoc_ctx->wow.target_suspend);
	pmo_core_set_wow_nack(psoc_ctx, false);
	pmo_core_set_wow_nack(psoc_ctx, false, 0);
	host_credits = pmo_tgt_psoc_get_host_credits(psoc);
	wmi_pending_cmds = pmo_tgt_psoc_get_pending_cmnds(psoc);
	pmo_debug("Credits:%d; Pending_Cmds: %d",
@@ -847,7 +848,8 @@ pmo_core_enable_wow_in_fw(struct wlan_objmgr_psoc *psoc,
	}

	if (pmo_core_get_wow_nack(psoc_ctx)) {
		pmo_err("FW not ready to WOW");
		reason_code = pmo_core_get_wow_reason_code(psoc_ctx);
		pmo_err("FW not ready to WOW reason code: %d", reason_code);
		pmo_tgt_update_target_suspend_flag(psoc, false);
		status = QDF_STATUS_E_AGAIN;
		goto out;
@@ -1514,7 +1516,8 @@ QDF_STATUS pmo_core_psoc_bus_resume_req(struct wlan_objmgr_psoc *psoc,
	return status;
}

void pmo_core_psoc_target_suspend_acknowledge(void *context, bool wow_nack)
void pmo_core_psoc_target_suspend_acknowledge(void *context, bool wow_nack,
					      uint16_t reason_code)
{
	struct pmo_psoc_priv_obj *psoc_ctx;
	struct wlan_objmgr_psoc *psoc = (struct wlan_objmgr_psoc *)context;
@@ -1535,7 +1538,7 @@ void pmo_core_psoc_target_suspend_acknowledge(void *context, bool wow_nack)

	psoc_ctx = pmo_psoc_get_priv(psoc);

	pmo_core_set_wow_nack(psoc_ctx, wow_nack);
	pmo_core_set_wow_nack(psoc_ctx, wow_nack, reason_code);
	qdf_event_set(&psoc_ctx->wow.target_suspend);
	if (!pmo_tgt_psoc_get_runtime_pm_in_progress(psoc)) {
		if (wow_nack)
+8 −3
Original line number Diff line number Diff line
/*
 * Copyright (c) 2017-2021 The Linux Foundation. All rights reserved.
 * Copyright (c) 2023 Qualcomm Innovation Center, Inc. All rights reserved.
 *
 * Permission to use, copy, modify, and/or distribute this software for
 * any purpose with or without fee is hereby granted, provided that the
@@ -993,11 +994,14 @@ int ucfg_pmo_psoc_clear_target_wake_up(struct wlan_objmgr_psoc *psoc);

/**
 * ucfg_pmo_psoc_target_suspend_acknowledge() - Clear initial wake up status
 * @psoc: objmgr psoc handle
 * @context: caller-provided context
 * @wow_nack: Was WoW NACK'ed
 * @reason_code: WoW status reason code
 *
 * Return: None
 */
void ucfg_pmo_psoc_target_suspend_acknowledge(void *context, bool wow_nack);
void ucfg_pmo_psoc_target_suspend_acknowledge(void *context, bool wow_nack,
					      uint16_t reason_code);

/**
 * ucfg_pmo_psoc_wakeup_host_event_received() - got host wake up evennt from fwr
@@ -1665,7 +1669,8 @@ ucfg_pmo_psoc_clear_target_wake_up(struct wlan_objmgr_psoc *psoc)
}

static inline void
ucfg_pmo_psoc_target_suspend_acknowledge(void *context, bool wow_nack)
ucfg_pmo_psoc_target_suspend_acknowledge(void *context, bool wow_nack,
					 uint16_t reason_code)
{
}

+4 −2
Original line number Diff line number Diff line
/*
 * Copyright (c) 2017-2021 The Linux Foundation. All rights reserved.
 * Copyright (c) 2022 Qualcomm Innovation Center, Inc. All rights reserved.
 * Copyright (c) 2022-2023 Qualcomm Innovation Center, Inc. All rights reserved.
 *
 * Permission to use, copy, modify, and/or distribute this software for
 * any purpose with or without fee is hereby granted, provided that the
@@ -224,6 +224,7 @@ enum pmo_wow_state {
 * @target_suspend: target suspend event
 * @target_resume: target resume event
 * @wow_nack: wow negative ack flag
 * @reason_code : wow status reason code
 * @wow_initial_wake_up: target initial wake up is received
 * @wow_wake_lock: wow wake lock
 * @lphb_cache: lphb cache
@@ -245,7 +246,8 @@ struct pmo_wow {
	enum pmo_wow_state wow_state;
	qdf_event_t target_suspend;
	qdf_event_t target_resume;
	int wow_nack;
	bool wow_nack;
	uint16_t reason_code;
	atomic_t wow_initial_wake_up;
	qdf_wake_lock_t wow_wake_lock;
	/*
Loading