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

Commit 7db9a1a9 authored by Anand N Sunkad's avatar Anand N Sunkad
Browse files

wcnss: handle CBC complete event from firmware



Add case to handle cold boot calibration complete
event from firmware.

Change-Id: I3d3dce178fadd7f993ee31667c89bcebb02c388b
CRs-Fixed: 734932
Signed-off-by: default avatarAnand N Sunkad <asunka@codeaurora.org>
parent 384d6b23
Loading
Loading
Loading
Loading
+16 −0
Original line number Diff line number Diff line
@@ -199,6 +199,7 @@ static DEFINE_SPINLOCK(reg_spinlock);
#define	WCNSS_BUILD_VER_REQ           (WCNSS_CTRL_MSG_START + 9)
#define	WCNSS_BUILD_VER_RSP           (WCNSS_CTRL_MSG_START + 10)
#define	WCNSS_PM_CONFIG_REQ           (WCNSS_CTRL_MSG_START + 11)
#define WCNSS_CBC_COMPLETE_IND		(WCNSS_CTRL_MSG_START + 12)

/* max 20mhz channel count */
#define WCNSS_MAX_CH_NUM			45
@@ -384,6 +385,7 @@ static struct {
	void __iomem *alarms_tactl;
	void __iomem *fiq_reg;
	int	nv_downloaded;
	int	is_cbc_done;
	unsigned char *fw_cal_data;
	unsigned char *user_cal_data;
	int	fw_cal_rcvd;
@@ -1195,6 +1197,7 @@ static void wcnss_smd_notify_event(void *data, unsigned int event)
		pr_debug("wcnss: closing WCNSS SMD channel :%s",
				WCNSS_CTRL_CHANNEL);
		penv->nv_downloaded = 0;
		penv->is_cbc_done = 0;
		break;

	default:
@@ -1459,6 +1462,15 @@ int wcnss_device_ready(void)
}
EXPORT_SYMBOL(wcnss_device_ready);

int wcnss_cbc_complete(void)
{
	if (penv && penv->pdev && penv->is_cbc_done &&
		!wcnss_device_is_shutdown())
		return 1;
	return 0;
}
EXPORT_SYMBOL(wcnss_cbc_complete);

int wcnss_device_is_shutdown(void)
{
	if (penv && penv->is_shutdown)
@@ -2101,6 +2113,10 @@ static void wcnssctrl_rx_handler(struct work_struct *worker)
		pr_debug("wcnss: received WCNSS_CALDATA_DNLD_RSP from ccpu %u\n",
			fw_status);
		break;
	case WCNSS_CBC_COMPLETE_IND:
		penv->is_cbc_done = 1;
		pr_info("wcnss: received WCNSS_CBC_COMPLETE_IND from FW\n");
		break;

	case WCNSS_CALDATA_UPLD_REQ:
		extract_cal_data(len);
+2 −0
Original line number Diff line number Diff line
@@ -51,6 +51,7 @@ enum {
#define HAVE_WCNSS_SUSPEND_RESUME_NOTIFY 1
#define HAVE_WCNSS_RESET_INTR 1
#define HAVE_WCNSS_CAL_DOWNLOAD 1
#define HAVE_CBC_DONE 1
#define HAVE_WCNSS_RX_BUFF_COUNT 1
#define WLAN_MAC_ADDR_SIZE (6)
#define WLAN_RF_REG_ADDR_START_OFFSET	0x3
@@ -101,6 +102,7 @@ void wcnss_resume_notify(void);
void wcnss_riva_log_debug_regs(void);
void wcnss_pronto_log_debug_regs(void);
int wcnss_device_ready(void);
int wcnss_cbc_complete(void);
int wcnss_device_is_shutdown(void);
void wcnss_riva_dump_pmic_regs(void);
int wcnss_xo_auto_detect_enabled(void);