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

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

Merge "msm-pm: Print spm registers status on hotplug failure"

parents b31147a7 32db091b
Loading
Loading
Loading
Loading
+9 −2
Original line number Diff line number Diff line
@@ -437,7 +437,7 @@ bool msm_cpu_pm_enter_sleep(enum msm_pm_sleep_mode mode, bool from_idle)
 */
int msm_pm_wait_cpu_shutdown(unsigned int cpu)
{
	int timeout = 10;
	int timeout = 0;

	if (!msm_pm_slp_sts)
		return 0;
@@ -455,7 +455,14 @@ int msm_pm_wait_cpu_shutdown(unsigned int cpu)
			return 0;

		udelay(100);
		WARN(++timeout == 20, "CPU%u didn't collapse in 2ms\n", cpu);
		/*
		 * Dump spm registers for debugging
		 */
		if (++timeout == 20) {
			msm_spm_dump_regs(cpu);
			__WARN_printf("CPU%u didn't collapse in 2ms, sleep status: 0x%x\n",
					cpu, acc_sts);
		}
	}

	return -EBUSY;
+12 −0
Original line number Diff line number Diff line
@@ -252,6 +252,18 @@ void msm_spm_drv_flush_seq_entry(struct msm_spm_driver_data *dev)
	mb();
}

void dump_regs(struct msm_spm_driver_data *dev, int cpu)
{
	msm_spm_drv_load_shadow(dev, MSM_SPM_REG_SAW2_SPM_STS);
	mb();
	pr_err("CPU%d: spm register MSM_SPM_REG_SAW2_SPM_STS: 0x%x\n", cpu,
			dev->reg_shadow[MSM_SPM_REG_SAW2_SPM_STS]);
	msm_spm_drv_load_shadow(dev, MSM_SPM_REG_SAW2_SPM_CTL);
	mb();
	pr_err("CPU%d: spm register MSM_SPM_REG_SAW2_SPM_CTL: 0x%x\n", cpu,
			dev->reg_shadow[MSM_SPM_REG_SAW2_SPM_CTL]);
}

int msm_spm_drv_write_seq_data(struct msm_spm_driver_data *dev,
		uint8_t *cmd, uint32_t *offset)
{
+5 −0
Original line number Diff line number Diff line
@@ -90,6 +90,11 @@ int msm_spm_probe_done(void)
}
EXPORT_SYMBOL(msm_spm_probe_done);

void msm_spm_dump_regs(unsigned int cpu)
{
	dump_regs(&per_cpu(msm_cpu_spm_device, cpu).reg_data, cpu);
}

/**
 * msm_spm_set_vdd(): Set core voltage
 * @cpu: core id
+1 −0
Original line number Diff line number Diff line
@@ -101,6 +101,7 @@ int msm_spm_drv_set_low_power_mode(struct msm_spm_driver_data *dev,
		uint32_t addr, bool pc_mode);
int msm_spm_drv_set_vdd(struct msm_spm_driver_data *dev,
		unsigned int vlevel);
void dump_regs(struct msm_spm_driver_data *dev, int cpu);
uint32_t msm_spm_drv_get_sts_curr_pmic_data(
		struct msm_spm_driver_data *dev);
int msm_spm_drv_write_seq_data(struct msm_spm_driver_data *dev,
+7 −1
Original line number Diff line number Diff line
@@ -36,7 +36,7 @@ int msm_spm_config_low_power_mode(struct msm_spm_device *dev,
		unsigned int mode, bool notify_rpm);
int msm_spm_device_init(void);
bool msm_spm_is_mode_avail(unsigned int mode);

void msm_spm_dump_regs(unsigned int cpu);
#if defined(CONFIG_MSM_L2_SPM)

/* Public functions */
@@ -87,6 +87,12 @@ static inline int msm_spm_device_init(void)
{
	return -ENOSYS;
}

static void msm_spm_dump_regs(unsigned int cpu)
{
	return;
}

int msm_spm_config_low_power_mode(struct msm_spm_device *dev,
		unsigned int mode, bool notify_rpm)
{