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

Commit 9db973a5 authored by Sascha Hauer's avatar Sascha Hauer
Browse files

[ARM] pcm038: Add framebuffer support



Add framebuffer support for PCM038

Signed-off-by: default avatarSascha Hauer <s.hauer@pengutronix.de>
parent c0b90a31
Loading
Loading
Loading
Loading
+69 −1
Original line number Diff line number Diff line
@@ -17,9 +17,76 @@
 */

#include <linux/platform_device.h>
#include <mach/hardware.h>

#include <asm/mach/arch.h>

#include <mach/hardware.h>
#include <mach/common.h>
#include <mach/imxfb.h>
#include <mach/iomux.h>

#include "devices.h"

static int mxc_fb_pins[] = {
	PA5_PF_LSCLK,	PA6_PF_LD0,	PA7_PF_LD1,	PA8_PF_LD2,
	PA9_PF_LD3,	PA10_PF_LD4,	PA11_PF_LD5,	PA12_PF_LD6,
	PA13_PF_LD7,	PA14_PF_LD8,	PA15_PF_LD9,	PA16_PF_LD10,
	PA17_PF_LD11,	PA18_PF_LD12,	PA19_PF_LD13,	PA20_PF_LD14,
	PA21_PF_LD15,	PA22_PF_LD16,	PA23_PF_LD17,	PA24_PF_REV,
	PA25_PF_CLS,	PA26_PF_PS,	PA27_PF_SPL_SPR, PA28_PF_HSYNC,
	PA29_PF_VSYNC,	PA30_PF_CONTRAST, PA31_PF_OE_ACD
};

static int pcm038_fb_init(struct platform_device *pdev)
{
	return mxc_gpio_setup_multiple_pins(mxc_fb_pins,
			ARRAY_SIZE(mxc_fb_pins), "FB");
}

static int pcm038_fb_exit(struct platform_device *pdev)
{
	mxc_gpio_release_multiple_pins(mxc_fb_pins, ARRAY_SIZE(mxc_fb_pins));

	return 0;
}

/*
 * Connected is a portrait Sharp-QVGA display
 * of type: LQ035Q7DH06
 */
static struct imx_fb_platform_data pcm038_fb_data = {
	.pixclock	= 188679, /* in ps (5.3MHz) */
	.xres		= 240,
	.yres		= 320,

	.bpp		= 16,
	.hsync_len	= 7,
	.left_margin	= 5,
	.right_margin	= 16,

	.vsync_len	= 1,
	.upper_margin	= 7,
	.lower_margin	= 9,
	.fixed_screen_cpu = 0,

	/*
	 * - HSYNC active high
	 * - VSYNC active high
	 * - clk notenabled while idle
	 * - clock not inverted
	 * - data not inverted
	 * - data enable low active
	 * - enable sharp mode
	 */
	.pcr		= 0xFA0080C0,
	.pwmr		= 0x00A903FF,
	.lscr1		= 0x00120300,
	.dmacr		= 0x00020010,

	.init = pcm038_fb_init,
	.exit = pcm038_fb_exit,
};

/*
 * system init for baseboard usage. Will be called by pcm038 init.
 *
@@ -28,4 +95,5 @@
 */
void __init pcm970_baseboard_init(void)
{
	mxc_register_device(&mxc_fb_device, &pcm038_fb_data);
}