|
@@ -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[] = {
|