mirror of
https://github.com/hardkernel/linux.git
synced 2026-06-07 11:26:02 +09:00
PM / devfreq: rockchip_dmc: dump current opp state when panic for ddr
panic log: rockchip-dmc dmc: cur_freq: 528000000 Hz, volt_vdd: 675000 uV, volt_mem: 700000 uV Signed-off-by: Liang Chen <cl@rock-chips.com> Change-Id: Iad0ef4c72f9761e23f68098d1e9ad03dec4d84a1
This commit is contained in:
@@ -118,6 +118,7 @@ struct rockchip_dmcfreq {
|
||||
struct regulator *vdd_center;
|
||||
struct regulator *mem_reg;
|
||||
struct notifier_block status_nb;
|
||||
struct notifier_block panic_nb;
|
||||
struct list_head video_info_list;
|
||||
struct freq_map_table *cpu_bw_tbl;
|
||||
struct work_struct boost_work;
|
||||
@@ -2619,6 +2620,23 @@ next:
|
||||
return NOTIFY_OK;
|
||||
}
|
||||
|
||||
static int rockchip_dmcfreq_panic_notifier(struct notifier_block *nb,
|
||||
unsigned long v, void *p)
|
||||
{
|
||||
struct rockchip_dmcfreq *dmcfreq =
|
||||
container_of(nb, struct rockchip_dmcfreq, panic_nb);
|
||||
struct device *dev = dmcfreq->dev;
|
||||
|
||||
if (dmcfreq->regulator_count == 1)
|
||||
dev_info(dev, "cur_freq: %lu Hz, volt: %lu uV\n",
|
||||
dmcfreq->rate, dmcfreq->volt);
|
||||
else
|
||||
dev_info(dev, "cur_freq: %lu Hz, volt_vdd: %lu uV, volt_mem: %lu uV\n",
|
||||
dmcfreq->rate, dmcfreq->volt, dmcfreq->mem_volt);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static ssize_t rockchip_dmcfreq_status_show(struct device *dev,
|
||||
struct device_attribute *attr,
|
||||
char *buf)
|
||||
@@ -3172,6 +3190,12 @@ static void rockchip_dmcfreq_register_notifier(struct rockchip_dmcfreq *dmcfreq)
|
||||
if (ret)
|
||||
dev_err(dmcfreq->dev, "failed to register system_status nb\n");
|
||||
|
||||
dmcfreq->panic_nb.notifier_call = rockchip_dmcfreq_panic_notifier;
|
||||
ret = atomic_notifier_chain_register(&panic_notifier_list,
|
||||
&dmcfreq->panic_nb);
|
||||
if (ret)
|
||||
dev_err(dmcfreq->dev, "failed to register panic nb\n");
|
||||
|
||||
dmc_mdevp.data = dmcfreq->info.devfreq;
|
||||
dmcfreq->mdev_info = rockchip_system_monitor_register(dmcfreq->dev,
|
||||
&dmc_mdevp);
|
||||
|
||||
Reference in New Issue
Block a user