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

Commit a4ba740d authored by Arnd Bergmann's avatar Arnd Bergmann
Browse files

Merge tag 'mxs-fixes-3.9-3' of git://git.linaro.org/people/shawnguo/linux-2.6 into fixes

From Shawn Guo <shawn.guo@linaro.org>:

The mxs fixes for 3.9, take 3:
 - Fix the shifted framebuffer with X11 system

* tag 'mxs-fixes-3.9-3' of git://git.linaro.org/people/shawnguo/linux-2.6

:
  ARM: video: mxs: Fix mxsfb misconfiguring VDCTRL0

Signed-off-by: default avatarArnd Bergmann <arnd@arndb.de>
parents a937536b 6a15075e
Loading
Loading
Loading
Loading
+12 −12
Original line number Diff line number Diff line
@@ -41,8 +41,6 @@ static struct fb_videomode mx23evk_video_modes[] = {
		.lower_margin	= 4,
		.hsync_len	= 1,
		.vsync_len	= 1,
		.sync		= FB_SYNC_DATA_ENABLE_HIGH_ACT |
				  FB_SYNC_DOTCLK_FAILING_ACT,
	},
};

@@ -59,8 +57,6 @@ static struct fb_videomode mx28evk_video_modes[] = {
		.lower_margin	= 10,
		.hsync_len	= 10,
		.vsync_len	= 10,
		.sync		= FB_SYNC_DATA_ENABLE_HIGH_ACT |
				  FB_SYNC_DOTCLK_FAILING_ACT,
	},
};

@@ -77,7 +73,6 @@ static struct fb_videomode m28evk_video_modes[] = {
		.lower_margin	= 45,
		.hsync_len	= 1,
		.vsync_len	= 1,
		.sync		= FB_SYNC_DATA_ENABLE_HIGH_ACT,
	},
};

@@ -94,9 +89,7 @@ static struct fb_videomode apx4devkit_video_modes[] = {
		.lower_margin	= 13,
		.hsync_len	= 48,
		.vsync_len	= 3,
		.sync		= FB_SYNC_HOR_HIGH_ACT | FB_SYNC_VERT_HIGH_ACT |
				  FB_SYNC_DATA_ENABLE_HIGH_ACT |
				  FB_SYNC_DOTCLK_FAILING_ACT,
		.sync		= FB_SYNC_HOR_HIGH_ACT | FB_SYNC_VERT_HIGH_ACT,
	},
};

@@ -113,9 +106,7 @@ static struct fb_videomode apf28dev_video_modes[] = {
		.lower_margin = 0x15,
		.hsync_len = 64,
		.vsync_len = 4,
		.sync = FB_SYNC_HOR_HIGH_ACT | FB_SYNC_VERT_HIGH_ACT |
				FB_SYNC_DATA_ENABLE_HIGH_ACT |
				FB_SYNC_DOTCLK_FAILING_ACT,
		.sync = FB_SYNC_HOR_HIGH_ACT | FB_SYNC_VERT_HIGH_ACT,
	},
};

@@ -132,7 +123,6 @@ static struct fb_videomode cfa10049_video_modes[] = {
		.lower_margin	= 2,
		.hsync_len	= 15,
		.vsync_len	= 15,
		.sync		= FB_SYNC_DATA_ENABLE_HIGH_ACT
	},
};

@@ -259,6 +249,8 @@ static void __init imx23_evk_init(void)
	mxsfb_pdata.mode_count = ARRAY_SIZE(mx23evk_video_modes);
	mxsfb_pdata.default_bpp = 32;
	mxsfb_pdata.ld_intf_width = STMLCDIF_24BIT;
	mxsfb_pdata.sync = MXSFB_SYNC_DATA_ENABLE_HIGH_ACT |
				MXSFB_SYNC_DOTCLK_FAILING_ACT;
}

static inline void enable_clk_enet_out(void)
@@ -278,6 +270,8 @@ static void __init imx28_evk_init(void)
	mxsfb_pdata.mode_count = ARRAY_SIZE(mx28evk_video_modes);
	mxsfb_pdata.default_bpp = 32;
	mxsfb_pdata.ld_intf_width = STMLCDIF_24BIT;
	mxsfb_pdata.sync = MXSFB_SYNC_DATA_ENABLE_HIGH_ACT |
				MXSFB_SYNC_DOTCLK_FAILING_ACT;

	mxs_saif_clkmux_select(MXS_DIGCTL_SAIF_CLKMUX_EXTMSTR0);
}
@@ -297,6 +291,7 @@ static void __init m28evk_init(void)
	mxsfb_pdata.mode_count = ARRAY_SIZE(m28evk_video_modes);
	mxsfb_pdata.default_bpp = 16;
	mxsfb_pdata.ld_intf_width = STMLCDIF_18BIT;
	mxsfb_pdata.sync = MXSFB_SYNC_DATA_ENABLE_HIGH_ACT;
}

static void __init sc_sps1_init(void)
@@ -322,6 +317,8 @@ static void __init apx4devkit_init(void)
	mxsfb_pdata.mode_count = ARRAY_SIZE(apx4devkit_video_modes);
	mxsfb_pdata.default_bpp = 32;
	mxsfb_pdata.ld_intf_width = STMLCDIF_24BIT;
	mxsfb_pdata.sync = MXSFB_SYNC_DATA_ENABLE_HIGH_ACT |
				MXSFB_SYNC_DOTCLK_FAILING_ACT;
}

#define ENET0_MDC__GPIO_4_0	MXS_GPIO_NR(4, 0)
@@ -407,6 +404,7 @@ static void __init cfa10049_init(void)
	mxsfb_pdata.mode_count = ARRAY_SIZE(cfa10049_video_modes);
	mxsfb_pdata.default_bpp = 32;
	mxsfb_pdata.ld_intf_width = STMLCDIF_18BIT;
	mxsfb_pdata.sync = MXSFB_SYNC_DATA_ENABLE_HIGH_ACT;
}

static void __init cfa10037_init(void)
@@ -423,6 +421,8 @@ static void __init apf28_init(void)
	mxsfb_pdata.mode_count = ARRAY_SIZE(apf28dev_video_modes);
	mxsfb_pdata.default_bpp = 16;
	mxsfb_pdata.ld_intf_width = STMLCDIF_16BIT;
	mxsfb_pdata.sync = MXSFB_SYNC_DATA_ENABLE_HIGH_ACT |
				MXSFB_SYNC_DOTCLK_FAILING_ACT;
}

static void __init mxs_machine_init(void)
+5 −2
Original line number Diff line number Diff line
@@ -169,6 +169,7 @@ struct mxsfb_info {
	unsigned dotclk_delay;
	const struct mxsfb_devdata *devdata;
	int mapped;
	u32 sync;
};

#define mxsfb_is_v3(host) (host->devdata->ipversion == 3)
@@ -456,9 +457,9 @@ static int mxsfb_set_par(struct fb_info *fb_info)
		vdctrl0 |= VDCTRL0_HSYNC_ACT_HIGH;
	if (fb_info->var.sync & FB_SYNC_VERT_HIGH_ACT)
		vdctrl0 |= VDCTRL0_VSYNC_ACT_HIGH;
	if (fb_info->var.sync & FB_SYNC_DATA_ENABLE_HIGH_ACT)
	if (host->sync & MXSFB_SYNC_DATA_ENABLE_HIGH_ACT)
		vdctrl0 |= VDCTRL0_ENABLE_ACT_HIGH;
	if (fb_info->var.sync & FB_SYNC_DOTCLK_FAILING_ACT)
	if (host->sync & MXSFB_SYNC_DOTCLK_FAILING_ACT)
		vdctrl0 |= VDCTRL0_DOTCLK_ACT_FAILING;

	writel(vdctrl0, host->base + LCDC_VDCTRL0);
@@ -861,6 +862,8 @@ static int mxsfb_probe(struct platform_device *pdev)

	INIT_LIST_HEAD(&fb_info->modelist);

	host->sync = pdata->sync;

	ret = mxsfb_init_fbinfo(host);
	if (ret != 0)
		goto error_init_fb;
+5 −2
Original line number Diff line number Diff line
@@ -24,8 +24,8 @@
#define STMLCDIF_18BIT 2 /** pixel data bus to the display is of 18 bit width */
#define STMLCDIF_24BIT 3 /** pixel data bus to the display is of 24 bit width */

#define FB_SYNC_DATA_ENABLE_HIGH_ACT	(1 << 6)
#define FB_SYNC_DOTCLK_FAILING_ACT	(1 << 7) /* failing/negtive edge sampling */
#define MXSFB_SYNC_DATA_ENABLE_HIGH_ACT	(1 << 6)
#define MXSFB_SYNC_DOTCLK_FAILING_ACT	(1 << 7) /* failing/negtive edge sampling */

struct mxsfb_platform_data {
	struct fb_videomode *mode_list;
@@ -44,6 +44,9 @@ struct mxsfb_platform_data {
				 * allocated. If specified,fb_size must also be specified.
				 * fb_phys must be unused by Linux.
				 */
	u32 sync;		/* sync mask, contains MXSFB specifics not
				 * carried in fb_info->var.sync
				 */
};

#endif /* __LINUX_MXSFB_H */