Commit f789dcc7 authored by Linus Torvalds's avatar Linus Torvalds

Merge tag 'omapdss-for-3.7-rc' of git://gitorious.org/linux-omap-dss2/linux

Pull omapdss fixes from Tomi Valkeinen:
 "Here are a few OMAPDSS fixes for the next -rc.  I'm sending these
  directly to you, and quite late, as the fbdev tree maintainer
  (Florian) has been busy with his work and hasn't had time to manage
  the fb patches."

* tag 'omapdss-for-3.7-rc' of git://gitorious.org/linux-omap-dss2/linux:
  OMAPDSS: do not fail if dpll4_m4_ck is missing
  OMAPFB: Fix possible null pointer dereferencing
  OMAPDSS: HDMI: fix missing unlock on error in hdmi_dump_regs()
  omapdss: dss: Fix clocks on OMAP363x
  OMAPDSS: DSI: fix dsi_get_dsidev_from_id()
parents 33f14593 8ad9375f
...@@ -365,11 +365,20 @@ struct platform_device *dsi_get_dsidev_from_id(int module) ...@@ -365,11 +365,20 @@ struct platform_device *dsi_get_dsidev_from_id(int module)
struct omap_dss_output *out; struct omap_dss_output *out;
enum omap_dss_output_id id; enum omap_dss_output_id id;
id = module == 0 ? OMAP_DSS_OUTPUT_DSI1 : OMAP_DSS_OUTPUT_DSI2; switch (module) {
case 0:
id = OMAP_DSS_OUTPUT_DSI1;
break;
case 1:
id = OMAP_DSS_OUTPUT_DSI2;
break;
default:
return NULL;
}
out = omap_dss_get_output(id); out = omap_dss_get_output(id);
return out->pdev; return out ? out->pdev : NULL;
} }
static inline void dsi_write_reg(struct platform_device *dsidev, static inline void dsi_write_reg(struct platform_device *dsidev,
......
...@@ -697,11 +697,15 @@ static int dss_get_clocks(void) ...@@ -697,11 +697,15 @@ static int dss_get_clocks(void)
dss.dss_clk = clk; dss.dss_clk = clk;
clk = clk_get(NULL, dss.feat->clk_name); if (dss.feat->clk_name) {
if (IS_ERR(clk)) { clk = clk_get(NULL, dss.feat->clk_name);
DSSERR("Failed to get %s\n", dss.feat->clk_name); if (IS_ERR(clk)) {
r = PTR_ERR(clk); DSSERR("Failed to get %s\n", dss.feat->clk_name);
goto err; r = PTR_ERR(clk);
goto err;
}
} else {
clk = NULL;
} }
dss.dpll4_m4_ck = clk; dss.dpll4_m4_ck = clk;
...@@ -805,10 +809,10 @@ static int __init dss_init_features(struct device *dev) ...@@ -805,10 +809,10 @@ static int __init dss_init_features(struct device *dev)
if (cpu_is_omap24xx()) if (cpu_is_omap24xx())
src = &omap24xx_dss_feats; src = &omap24xx_dss_feats;
else if (cpu_is_omap34xx())
src = &omap34xx_dss_feats;
else if (cpu_is_omap3630()) else if (cpu_is_omap3630())
src = &omap3630_dss_feats; src = &omap3630_dss_feats;
else if (cpu_is_omap34xx())
src = &omap34xx_dss_feats;
else if (cpu_is_omap44xx()) else if (cpu_is_omap44xx())
src = &omap44xx_dss_feats; src = &omap44xx_dss_feats;
else if (soc_is_omap54xx()) else if (soc_is_omap54xx())
......
...@@ -644,8 +644,10 @@ static void hdmi_dump_regs(struct seq_file *s) ...@@ -644,8 +644,10 @@ static void hdmi_dump_regs(struct seq_file *s)
{ {
mutex_lock(&hdmi.lock); mutex_lock(&hdmi.lock);
if (hdmi_runtime_get()) if (hdmi_runtime_get()) {
mutex_unlock(&hdmi.lock);
return; return;
}
hdmi.ip_data.ops->dump_wrapper(&hdmi.ip_data, s); hdmi.ip_data.ops->dump_wrapper(&hdmi.ip_data, s);
hdmi.ip_data.ops->dump_pll(&hdmi.ip_data, s); hdmi.ip_data.ops->dump_pll(&hdmi.ip_data, s);
......
...@@ -787,7 +787,7 @@ int omapfb_ioctl(struct fb_info *fbi, unsigned int cmd, unsigned long arg) ...@@ -787,7 +787,7 @@ int omapfb_ioctl(struct fb_info *fbi, unsigned int cmd, unsigned long arg)
case OMAPFB_WAITFORVSYNC: case OMAPFB_WAITFORVSYNC:
DBG("ioctl WAITFORVSYNC\n"); DBG("ioctl WAITFORVSYNC\n");
if (!display && !display->output && !display->output->manager) { if (!display || !display->output || !display->output->manager) {
r = -EINVAL; r = -EINVAL;
break; break;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment