Loading drivers/regulator/cpr3-regulator.c +1 −4 Original line number Diff line number Diff line Loading @@ -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); } Loading drivers/regulator/cpr3-regulator.h +2 −0 Original line number Diff line number Diff line Loading @@ -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. Loading @@ -506,6 +507,7 @@ struct cpr3_reg_info { const char *name; u32 addr; u32 value; void __iomem *virt_addr; }; /** Loading drivers/regulator/cpr3-util.c +6 −0 Original line number Diff line number Diff line Loading @@ -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; } Loading Loading
drivers/regulator/cpr3-regulator.c +1 −4 Original line number Diff line number Diff line Loading @@ -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); } Loading
drivers/regulator/cpr3-regulator.h +2 −0 Original line number Diff line number Diff line Loading @@ -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. Loading @@ -506,6 +507,7 @@ struct cpr3_reg_info { const char *name; u32 addr; u32 value; void __iomem *virt_addr; }; /** Loading
drivers/regulator/cpr3-util.c +6 −0 Original line number Diff line number Diff line Loading @@ -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; } Loading