Browse Source

Merge tag 'fbdev-fixes-4.2' of git://git.kernel.org/pub/scm/linux/kernel/git/tomba/linux

Pull fbdev fixes from Tomi Valkeinen:
 - fix display regression on Versatile boards
 - fix OF node refcount bugs on omapdss
 - fix WARN about clock prepare on pxa3xx_gcu
 - fix mem leak in videomode helpers
 - fix fbconsole related boot problem on sun7i-a20-olinuxino-micro

* tag 'fbdev-fixes-4.2' of git://git.kernel.org/pub/scm/linux/kernel/git/tomba/linux:
  fbcon: unconditionally initialize cursor blink interval
  video: Fix possible leak in of_get_videomode()
  video: fbdev: pxa3xx_gcu: prepare the clocks
  OMAPDSS: Fix omap_dss_find_output_by_port_node() port refcount decrement
  OMAPDSS: Fix node refcount leak in omapdss_of_get_next_port()
  fbdev: select versatile helpers for the integrator
Linus Torvalds 10 years ago
parent
commit
edf15b4d4b

+ 2 - 1
drivers/video/console/fbcon.c

@@ -1306,10 +1306,11 @@ static void fbcon_cursor(struct vc_data *vc, int mode)
 	int y;
 	int y;
  	int c = scr_readw((u16 *) vc->vc_pos);
  	int c = scr_readw((u16 *) vc->vc_pos);
 
 
+	ops->cur_blink_jiffies = msecs_to_jiffies(vc->vc_cur_blink_ms);
+
 	if (fbcon_is_inactive(vc, info) || vc->vc_deccm != 1)
 	if (fbcon_is_inactive(vc, info) || vc->vc_deccm != 1)
 		return;
 		return;
 
 
-	ops->cur_blink_jiffies = msecs_to_jiffies(vc->vc_cur_blink_ms);
 	if (vc->vc_cursor_type & 0x10)
 	if (vc->vc_cursor_type & 0x10)
 		fbcon_del_cursor_timer(info);
 		fbcon_del_cursor_timer(info);
 	else
 	else

+ 1 - 1
drivers/video/fbdev/Kconfig

@@ -298,7 +298,7 @@ config FB_ARMCLCD
 
 
 # Helper logic selected only by the ARM Versatile platform family.
 # Helper logic selected only by the ARM Versatile platform family.
 config PLAT_VERSATILE_CLCD
 config PLAT_VERSATILE_CLCD
-	def_bool ARCH_VERSATILE || ARCH_REALVIEW || ARCH_VEXPRESS
+	def_bool ARCH_VERSATILE || ARCH_REALVIEW || ARCH_VEXPRESS || ARCH_INTEGRATOR
 	depends on ARM
 	depends on ARM
 	depends on FB_ARMCLCD && FB=y
 	depends on FB_ARMCLCD && FB=y
 
 

+ 3 - 1
drivers/video/fbdev/omap2/dss/dss-of.c

@@ -60,6 +60,8 @@ omapdss_of_get_next_port(const struct device_node *parent,
 			}
 			}
 			prev = port;
 			prev = port;
 		} while (of_node_cmp(port->name, "port") != 0);
 		} while (of_node_cmp(port->name, "port") != 0);
+
+		of_node_put(ports);
 	}
 	}
 
 
 	return port;
 	return port;
@@ -94,7 +96,7 @@ struct device_node *dss_of_port_get_parent_device(struct device_node *port)
 	if (!port)
 	if (!port)
 		return NULL;
 		return NULL;
 
 
-	np = of_get_next_parent(port);
+	np = of_get_parent(port);
 
 
 	for (i = 0; i < 2 && np; ++i) {
 	for (i = 0; i < 2 && np; ++i) {
 		struct property *prop;
 		struct property *prop;

+ 2 - 2
drivers/video/fbdev/pxa3xx-gcu.c

@@ -653,7 +653,7 @@ static int pxa3xx_gcu_probe(struct platform_device *pdev)
 		goto err_free_dma;
 		goto err_free_dma;
 	}
 	}
 
 
-	ret = clk_enable(priv->clk);
+	ret = clk_prepare_enable(priv->clk);
 	if (ret < 0) {
 	if (ret < 0) {
 		dev_err(dev, "failed to enable clock\n");
 		dev_err(dev, "failed to enable clock\n");
 		goto err_misc_deregister;
 		goto err_misc_deregister;
@@ -685,7 +685,7 @@ err_misc_deregister:
 	misc_deregister(&priv->misc_dev);
 	misc_deregister(&priv->misc_dev);
 
 
 err_disable_clk:
 err_disable_clk:
-	clk_disable(priv->clk);
+	clk_disable_unprepare(priv->clk);
 
 
 	return ret;
 	return ret;
 }
 }

+ 1 - 3
drivers/video/of_videomode.c

@@ -44,11 +44,9 @@ int of_get_videomode(struct device_node *np, struct videomode *vm,
 		index = disp->native_mode;
 		index = disp->native_mode;
 
 
 	ret = videomode_from_timings(disp, vm, index);
 	ret = videomode_from_timings(disp, vm, index);
-	if (ret)
-		return ret;
 
 
 	display_timings_release(disp);
 	display_timings_release(disp);
 
 
-	return 0;
+	return ret;
 }
 }
 EXPORT_SYMBOL_GPL(of_get_videomode);
 EXPORT_SYMBOL_GPL(of_get_videomode);