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

Commit 467fc498 authored by Magnus Damm's avatar Magnus Damm Committed by Paul Mundt
Browse files

video: deferred io cleanup fix for sh_mobile_lcdcfb



Fix deferred io cleanup patch in the sh_mobile_lcdcfb driver.

If probe() fails early the sh_mobile_lcdc_stop() function will
be called to clean up deferred io. This patch modifies the
code to only call fb_deferred_io_cleanup() after deferred io
has been initialized.

With this patch applied we no longer hit BUG_ON() inside
fb_deferred_io_cleanup(). Triggers on a Migo-R with the
SYS QVGA panel board unmounted.

Signed-off-by: default avatarMagnus Damm <damm@igel.co.jp>
Signed-off-by: default avatarPaul Mundt <lethal@linux-sh.org>
parent ba087e6f
Loading
Loading
Loading
Loading
+2 −4
Original line number Diff line number Diff line
@@ -446,7 +446,6 @@ static void sh_mobile_lcdc_stop(struct sh_mobile_lcdc_priv *priv)
{
	struct sh_mobile_lcdc_chan *ch;
	struct sh_mobile_lcdc_board_cfg	*board_cfg;
	unsigned long tmp;
	int k;

	/* tell the board code to disable the panel */
@@ -456,9 +455,8 @@ static void sh_mobile_lcdc_stop(struct sh_mobile_lcdc_priv *priv)
		if (board_cfg->display_off)
			board_cfg->display_off(board_cfg->board_data);

		/* cleanup deferred io if SYS bus */
		tmp = ch->cfg.sys_bus_cfg.deferred_io_msec;
		if (ch->ldmt1r_value & (1 << 12) && tmp) {
		/* cleanup deferred io if enabled */
		if (ch->info.fbdefio) {
			fb_deferred_io_cleanup(&ch->info);
			ch->info.fbdefio = NULL;
		}