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

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

Merge "regulator: cpr3: fix panic callback failure in interrupt context"

parents 458f7034 fd36b0f9
Loading
Loading
Loading
Loading
+1 −4
Original line number Diff line number Diff line
@@ -5891,14 +5891,11 @@ static int cpr3_panic_callback(struct notifier_block *nfb,
				struct cpr3_controller, panic_notifier);
	struct cpr3_panic_regs_info *regs_info = ctrl->panic_regs_info;
	struct cpr3_reg_info *reg;
	void __iomem *virt_addr;
	int i = 0;

	for (i = 0; i < regs_info->reg_count; i++) {
		reg = &(regs_info->regs[i]);
		virt_addr = ioremap(reg->addr, 0x4);
		reg->value = readl_relaxed(virt_addr);
		iounmap(virt_addr);
		reg->value = readl_relaxed(reg->virt_addr);
		pr_err("%s[0x%08x] = 0x%08x\n", reg->name, reg->addr,
			reg->value);
	}
+2 −0
Original line number Diff line number Diff line
@@ -498,6 +498,7 @@ struct cpr3_aging_sensor_info {
 * @name:	Register name
 * @addr:	Register physical address
 * @value:	Register content
 * @virt_addr:	Register virtual address
 *
 * This data structure is used to dump some critical register contents
 * when the device crashes due to a kernel panic.
@@ -506,6 +507,7 @@ struct cpr3_reg_info {
	const char	*name;
	u32		addr;
	u32		value;
	void __iomem	*virt_addr;
};

/**
+6 −0
Original line number Diff line number Diff line
@@ -1087,6 +1087,12 @@ static int cpr3_panic_notifier_init(struct cpr3_controller *ctrl)
				rc);
			return rc;
		}
		regs[i].virt_addr = devm_ioremap(ctrl->dev, regs[i].addr, 0x4);
		if (!regs[i].virt_addr) {
			pr_err("Unable to map panic register addr 0x%08x\n",
				regs[i].addr);
			return -EINVAL;
		}
		regs[i].value = 0xFFFFFFFF;
	}