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

Commit 6a446b90 authored by wanzongshun's avatar wanzongshun Committed by Russell King
Browse files

ARM: 6231/1: re-organize the nuc900 lcd arch platform data setting



The patch re-organizes the nuc900 lcd arch platform data,
remove the lcd platform data setting from nuc950.c to dev.c

It can maximize the share codes between nuc900 series MCUs.

Signed-off-by: default avatarWan ZongShun <mcuos.com@gmail.com>
Signed-off-by: default avatarRussell King <rmk+kernel@arm.linux.org.uk>
parent cd5b8f87
Loading
Loading
Loading
Loading
+40 −15
Original line number Diff line number Diff line
@@ -36,6 +36,7 @@
#include <mach/nuc900_spi.h>
#include <mach/map.h>
#include <mach/fb.h>
#include <mach/regs-ldm.h>

#include "cpu.h"

@@ -382,7 +383,44 @@ struct platform_device nuc900_device_kpi = {
	.resource	= nuc900_kpi_resource,
};

#ifdef CONFIG_FB_NUC900
/* LCD controller*/

static struct nuc900fb_display __initdata nuc900_lcd_info[] = {
	/* Giantplus Technology GPM1040A0 320x240 Color TFT LCD */
	[0] = {
		.type		= LCM_DCCS_VA_SRC_RGB565,
		.width		= 320,
		.height		= 240,
		.xres		= 320,
		.yres		= 240,
		.bpp		= 16,
		.pixclock	= 200000,
		.left_margin	= 34,
		.right_margin   = 54,
		.hsync_len	= 10,
		.upper_margin	= 18,
		.lower_margin	= 4,
		.vsync_len	= 1,
		.dccs		= 0x8e00041a,
		.devctl		= 0x060800c0,
		.fbctrl		= 0x00a000a0,
		.scale		= 0x04000400,
	},
};

static struct nuc900fb_mach_info nuc900_fb_info __initdata = {
#if defined(CONFIG_GPM1040A0_320X240)
	.displays		= &nuc900_lcd_info[0],
#else
	.displays		= nuc900_lcd_info,
#endif
	.num_displays		= ARRAY_SIZE(nuc900_lcd_info),
	.default_display	= 0,
	.gpio_dir		= 0x00000004,
	.gpio_dir_mask		= 0xFFFFFFFD,
	.gpio_data		= 0x00000004,
	.gpio_data_mask		= 0xFFFFFFFD,
};

static struct resource nuc900_lcd_resource[] = {
	[0] = {
@@ -406,23 +444,10 @@ struct platform_device nuc900_device_lcd = {
	.dev              = {
		.dma_mask               = &nuc900_device_lcd_dmamask,
		.coherent_dma_mask      = -1,
		.platform_data = &nuc900_fb_info,
	}
};

void  nuc900_fb_set_platdata(struct nuc900fb_mach_info *pd)
{
	struct nuc900fb_mach_info *npd;

	npd = kmalloc(sizeof(*npd), GFP_KERNEL);
	if (npd) {
		memcpy(npd, pd, sizeof(*npd));
		nuc900_device_lcd.dev.platform_data = npd;
	} else {
		printk(KERN_ERR "no memory for LCD platform data\n");
	}
}
#endif

/* AUDIO controller*/
static u64 nuc900_device_audio_dmamask = -1;
static struct resource nuc900_ac97_resource[] = {
+0 −44
Original line number Diff line number Diff line
@@ -20,51 +20,10 @@
#include <asm/mach/map.h>
#include <asm/mach-types.h>
#include <mach/map.h>
#include <mach/regs-ldm.h>
#include <mach/fb.h>

#include "nuc950.h"

#ifdef CONFIG_FB_NUC900
/* LCD Controller */
static struct nuc900fb_display __initdata nuc950_lcd_info[] = {
	/* Giantplus Technology GPM1040A0 320x240 Color TFT LCD */
	[0] = {
		.type		= LCM_DCCS_VA_SRC_RGB565,
		.width 		= 320,
		.height		= 240,
		.xres		= 320,
		.yres		= 240,
		.bpp		= 16,
		.pixclock	= 200000,
		.left_margin	= 34,
		.right_margin   = 54,
		.hsync_len	= 10,
		.upper_margin	= 18,
		.lower_margin	= 4,
		.vsync_len	= 1,
		.dccs		= 0x8e00041a,
		.devctl		= 0x060800c0,
		.fbctrl		= 0x00a000a0,
		.scale		= 0x04000400,
	},
};

static struct nuc900fb_mach_info nuc950_fb_info __initdata = {
#if defined(CONFIG_GPM1040A0_320X240)
	.displays		= &nuc950_lcd_info[0],
#else
	.displays		= nuc950_lcd_info,
#endif
	.num_displays 		= ARRAY_SIZE(nuc950_lcd_info),
	.default_display	= 0,
	.gpio_dir		= 0x00000004,
	.gpio_dir_mask		= 0xFFFFFFFD,
	.gpio_data		= 0x00000004,
	.gpio_data_mask		= 0xFFFFFFFD,
};
#endif

static void __init nuc950evb_map_io(void)
{
	nuc950_map_io();
@@ -74,9 +33,6 @@ static void __init nuc950evb_map_io(void)
static void __init nuc950evb_init(void)
{
	nuc950_board_init();
#ifdef CONFIG_FB_NUC900
	nuc900_fb_set_platdata(&nuc950_fb_info);
#endif
}

MACHINE_START(W90P950EVB, "W90P950EVB")
+1 −0
Original line number Diff line number Diff line
@@ -26,6 +26,7 @@
static struct platform_device *nuc910_dev[] __initdata = {
	&nuc900_device_ts,
	&nuc900_device_rtc,
	&nuc900_device_lcd,
};

/* define specific CPU platform io map */
+0 −2
Original line number Diff line number Diff line
@@ -26,9 +26,7 @@
static struct platform_device *nuc950_dev[] __initdata = {
	&nuc900_device_kpi,
	&nuc900_device_fmi,
#ifdef CONFIG_FB_NUC900
	&nuc900_device_lcd,
#endif
};

/* define specific CPU platform io map */