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

Commit b774bd6f authored by Linux Build Service Account's avatar Linux Build Service Account Committed by Gerrit - the friendly Code Review server
Browse files

Merge "wcnss: get MUX control before dumping IRIS register"

parents 077b692a ca991bcd
Loading
Loading
Loading
Loading
+1 −3
Original line number Diff line number Diff line
/* Copyright (c) 2011-2014, The Linux Foundation. All rights reserved.
/* Copyright (c) 2011-2015, The Linux Foundation. All rights reserved.
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License version 2 and
@@ -34,7 +34,6 @@ static int auto_detect;
static int is_power_on;

#define RIVA_PMU_OFFSET         0x28
#define PRONTO_PMU_OFFSET       0x1004

#define RIVA_SPARE_OFFSET       0x0b4
#define PRONTO_SPARE_OFFSET     0x1088
@@ -52,7 +51,6 @@ static int is_power_on;

#define WCNSS_PMU_CFG_IRIS_XO_CFG          BIT(3)
#define WCNSS_PMU_CFG_IRIS_XO_EN           BIT(4)
#define WCNSS_PMU_CFG_GC_BUS_MUX_SEL_TOP   BIT(5)
#define WCNSS_PMU_CFG_IRIS_XO_CFG_STS      BIT(6) /* 1: in progress, 0: done */

#define WCNSS_PMU_CFG_IRIS_RESET           BIT(7)
+16 −1
Original line number Diff line number Diff line
/* Copyright (c) 2011-2014, The Linux Foundation. All rights reserved.
/* Copyright (c) 2011-2015, The Linux Foundation. All rights reserved.
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License version 2 and
@@ -1083,6 +1083,19 @@ static void wcnss_log_iris_regs(void)
	}
}

void wcnss_get_mux_control(void)
{
	void __iomem *pmu_conf_reg;
	struct wcnss_wlan_config *cfg = wcnss_get_wlan_config();
	u32 reg = 0;

	pmu_conf_reg = cfg->msm_wcnss_base + PRONTO_PMU_OFFSET;
	writel_relaxed(0, pmu_conf_reg);
	reg = readl_relaxed(pmu_conf_reg);
	reg |= WCNSS_PMU_CFG_GC_BUS_MUX_SEL_TOP;
	writel_relaxed(reg, pmu_conf_reg);
}

void wcnss_log_debug_regs_on_bite(void)
{
	struct platform_device *pdev = wcnss_get_platform_device();
@@ -1112,6 +1125,7 @@ void wcnss_log_debug_regs_on_bite(void)

		if (clk_rate) {
			wcnss_pronto_log_debug_regs();
			wcnss_get_mux_control();
			wcnss_log_iris_regs();
		} else {
			pr_err("clock frequency is zero, cannot access PMU or other registers\n");
@@ -1128,6 +1142,7 @@ void wcnss_reset_intr(void)
{
	if (wcnss_hardware_type() == WCNSS_PRONTO_HW) {
		wcnss_pronto_log_debug_regs();
		wcnss_get_mux_control();
		wcnss_log_iris_regs();
		wmb();
		__raw_writel(1 << 16, penv->fiq_reg);
+3 −1
Original line number Diff line number Diff line
/* Copyright (c) 2011-2014, The Linux Foundation. All rights reserved.
/* Copyright (c) 2011-2015, The Linux Foundation. All rights reserved.
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License version 2 and
@@ -66,6 +66,8 @@ enum {
#define WLAN_RF_DATA0_SHIFT		0
#define WLAN_RF_DATA1_SHIFT		1
#define WLAN_RF_DATA2_SHIFT		2
#define PRONTO_PMU_OFFSET       0x1004
#define WCNSS_PMU_CFG_GC_BUS_MUX_SEL_TOP   BIT(5)

struct device *wcnss_wlan_get_device(void);
void wcnss_get_monotonic_boottime(struct timespec *ts);