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

Commit b9260881 authored by Siddharth Bhal's avatar Siddharth Bhal
Browse files

wcnss: dump PMU and SAW registers for pronto



Dump PMU and SAW registers in case of wcnss abort to know
status of watchdog and power collapse state during abort.

Change-Id: If19dc391c824d7c5f616c48d7e2723d1104ebf21
CRs-Fixed: 746668
Signed-off-by: default avatarSiddharth Bhal <sbhal@codeaurora.org>
parent c5bc590f
Loading
Loading
Loading
Loading
+36 −1
Original line number Diff line number Diff line
@@ -93,6 +93,7 @@ static DEFINE_SPINLOCK(reg_spinlock);
#define PRONTO_PMU_WLAN_GDSCR_OFFSET       0x0054
#define PRONTO_PMU_WLAN_GDSCR_SW_COLLAPSE  BIT(0)

#define PRONTO_PMU_WDOG_CTL		0x0068

#define PRONTO_PMU_CBCR_OFFSET        0x0008
#define PRONTO_PMU_CBCR_CLK_EN        BIT(0)
@@ -140,6 +141,14 @@ static DEFINE_SPINLOCK(reg_spinlock);
#define CCU_PRONTO_LAST_ADDR2_OFFSET		0x14

#define PRONTO_SAW2_SPM_STS_OFFSET		0x0c
#define PRONTO_SAW2_SPM_CTL		0x30
#define PRONTO_SAW2_SAW2_VERSION		0xFD0
#define PRONTO_SAW2_MAJOR_VER_OFFSET		0x1C
#define PRONTO_SAW2_MAJOR_VER_3		0x3
#define PRONTO_SAW2_SPM_SLP_SEQ		0x80
#define PRONTO_SAW2_SPM_SLP_SEQ_2		0x400
#define PRONTO_SAW2_SPM_SLP_SEQ_OFFSET		0x04
#define PRONTO_SAW2_SPM_SLP_SEQ_COUNT		0x08

#define PRONTO_PLL_STATUS_OFFSET		0x1c
#define PRONTO_PLL_MODE_OFFSET			0x1c0
@@ -600,7 +609,8 @@ void wcnss_pronto_is_a2xb_bus_stall(void *tst_addr, u32 fifo_mask, char *type)
void wcnss_pronto_log_debug_regs(void)
{
	void __iomem *reg_addr, *tst_addr, *tst_ctrl_addr;
	u32 reg = 0, reg2 = 0, reg3 = 0, reg4 = 0;
	u32 reg = 0, reg2 = 0, reg3 = 0, reg4 = 0, offset_addr = 0;
	int i;


	reg_addr = penv->msm_wcnss_base + PRONTO_PMU_SPARE_OFFSET;
@@ -627,10 +637,35 @@ void wcnss_pronto_log_debug_regs(void)
	reg = readl_relaxed(reg_addr);
	pr_err("PRONTO_PMU_SOFT_RESET %08x\n", reg);

	reg_addr = penv->msm_wcnss_base + PRONTO_PMU_WDOG_CTL;
	reg = readl_relaxed(reg_addr);
	pr_err("PRONTO_PMU_WDOG_CTL %08x\n", reg);

	reg_addr = penv->pronto_saw2_base + PRONTO_SAW2_SPM_STS_OFFSET;
	reg = readl_relaxed(reg_addr);
	pr_err("PRONTO_SAW2_SPM_STS %08x\n", reg);

	reg_addr = penv->pronto_saw2_base + PRONTO_SAW2_SPM_CTL;
	reg = readl_relaxed(reg_addr);
	pr_err("PRONTO_SAW2_SPM_CTL %08x\n", reg);

	reg_addr = penv->pronto_saw2_base + PRONTO_SAW2_SAW2_VERSION;
	reg = readl_relaxed(reg_addr);
	pr_err("PRONTO_SAW2_SAW2_VERSION %08x\n", reg);
	reg >>= PRONTO_SAW2_MAJOR_VER_OFFSET;

	if (reg >= PRONTO_SAW2_MAJOR_VER_3)
		offset_addr = PRONTO_SAW2_SPM_SLP_SEQ_2;
	else
		offset_addr = PRONTO_SAW2_SPM_SLP_SEQ;

	for (i = 0; i <= PRONTO_SAW2_SPM_SLP_SEQ_COUNT; i++) {
		reg_addr = penv->pronto_saw2_base + offset_addr
			+ (i * PRONTO_SAW2_SPM_SLP_SEQ_OFFSET);
		reg = readl_relaxed(reg_addr);
		pr_err("PRONTO_SAW2_SPM_SLP_SEQ_ENTRY_%d %08x\n", i, reg);
	}

	reg_addr = penv->pronto_pll_base + PRONTO_PLL_STATUS_OFFSET;
	reg = readl_relaxed(reg_addr);
	pr_err("PRONTO_PLL_STATUS %08x\n", reg);