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

Commit 4df04ac9 authored by Tomi Valkeinen's avatar Tomi Valkeinen
Browse files

drm/omap: dsi: Fix crash in DSI debug dumps



Reading any of the DSI debugfs files results in a crash, as wrong
pointer is passed to the dump functions, and the dump functions use a
wrong pointer. This patch fixes DSI debug dumps.

Fixes: f3ed97f9 ("drm/omap: dsi: Simplify debugfs implementation")
Signed-off-by: default avatarTomi Valkeinen <tomi.valkeinen@ti.com>
Reviewed-by: default avatarLaurent Pinchart <laurent.pinchart@ideasonboard.com>
Signed-off-by: default avatarLaurent Pinchart <laurent.pinchart@ideasonboard.com>
Signed-off-by: default avatarTomi Valkeinen <tomi.valkeinen@ti.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20190111035120.20668-3-laurent.pinchart@ideasonboard.com
parent b14e945b
Loading
Loading
Loading
Loading
+6 −6
Original line number Original line Diff line number Diff line
@@ -1406,7 +1406,7 @@ static void dsi_pll_disable(struct dss_pll *pll)


static int dsi_dump_dsi_clocks(struct seq_file *s, void *p)
static int dsi_dump_dsi_clocks(struct seq_file *s, void *p)
{
{
	struct dsi_data *dsi = p;
	struct dsi_data *dsi = s->private;
	struct dss_pll_clock_info *cinfo = &dsi->pll.cinfo;
	struct dss_pll_clock_info *cinfo = &dsi->pll.cinfo;
	enum dss_clk_source dispc_clk_src, dsi_clk_src;
	enum dss_clk_source dispc_clk_src, dsi_clk_src;
	int dsi_module = dsi->module_id;
	int dsi_module = dsi->module_id;
@@ -1467,7 +1467,7 @@ static int dsi_dump_dsi_clocks(struct seq_file *s, void *p)
#ifdef CONFIG_OMAP2_DSS_COLLECT_IRQ_STATS
#ifdef CONFIG_OMAP2_DSS_COLLECT_IRQ_STATS
static int dsi_dump_dsi_irqs(struct seq_file *s, void *p)
static int dsi_dump_dsi_irqs(struct seq_file *s, void *p)
{
{
	struct dsi_data *dsi = p;
	struct dsi_data *dsi = s->private;
	unsigned long flags;
	unsigned long flags;
	struct dsi_irq_stats stats;
	struct dsi_irq_stats stats;


@@ -1558,7 +1558,7 @@ static int dsi_dump_dsi_irqs(struct seq_file *s, void *p)


static int dsi_dump_dsi_regs(struct seq_file *s, void *p)
static int dsi_dump_dsi_regs(struct seq_file *s, void *p)
{
{
	struct dsi_data *dsi = p;
	struct dsi_data *dsi = s->private;


	if (dsi_runtime_get(dsi))
	if (dsi_runtime_get(dsi))
		return 0;
		return 0;
@@ -5083,15 +5083,15 @@ static int dsi_bind(struct device *dev, struct device *master, void *data)


	snprintf(name, sizeof(name), "dsi%u_regs", dsi->module_id + 1);
	snprintf(name, sizeof(name), "dsi%u_regs", dsi->module_id + 1);
	dsi->debugfs.regs = dss_debugfs_create_file(dss, name,
	dsi->debugfs.regs = dss_debugfs_create_file(dss, name,
						    dsi_dump_dsi_regs, &dsi);
						    dsi_dump_dsi_regs, dsi);
#ifdef CONFIG_OMAP2_DSS_COLLECT_IRQ_STATS
#ifdef CONFIG_OMAP2_DSS_COLLECT_IRQ_STATS
	snprintf(name, sizeof(name), "dsi%u_irqs", dsi->module_id + 1);
	snprintf(name, sizeof(name), "dsi%u_irqs", dsi->module_id + 1);
	dsi->debugfs.irqs = dss_debugfs_create_file(dss, name,
	dsi->debugfs.irqs = dss_debugfs_create_file(dss, name,
						    dsi_dump_dsi_irqs, &dsi);
						    dsi_dump_dsi_irqs, dsi);
#endif
#endif
	snprintf(name, sizeof(name), "dsi%u_clks", dsi->module_id + 1);
	snprintf(name, sizeof(name), "dsi%u_clks", dsi->module_id + 1);
	dsi->debugfs.clks = dss_debugfs_create_file(dss, name,
	dsi->debugfs.clks = dss_debugfs_create_file(dss, name,
						    dsi_dump_dsi_clocks, &dsi);
						    dsi_dump_dsi_clocks, dsi);


	return 0;
	return 0;
}
}