mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-19 10:14:23 +08:00
8661970875
An LCD controller driver for nuc900s. The Linux LOGO is just fine and the FB-Test application was ok, too. Signed-off-by: Wang Qiang <rurality.linux@gmail.com> Cc: Wang Zongshun <mcuos.com@gmail.com> Cc: Russell King <rmk@arm.linux.org.uk> Cc: Krzysztof Helt <krzysztof.h1@poczta.fm> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
92 lines
2.1 KiB
C
92 lines
2.1 KiB
C
/*
|
|
* linux/arch/arm/mach-w90x900/mach-nuc950evb.c
|
|
*
|
|
* Based on mach-s3c2410/mach-smdk2410.c by Jonas Dietsche
|
|
*
|
|
* Copyright (C) 2008 Nuvoton technology corporation.
|
|
*
|
|
* Wan ZongShun <mcuos.com@gmail.com>
|
|
*
|
|
* This program is free software; you can redistribute it and/or
|
|
* modify it under the terms of the GNU General Public License as
|
|
* published by the Free Software Foundation;version 2 of the License.
|
|
* history:
|
|
* Wang Qiang (rurality.linux@gmail.com) add LCD support
|
|
*
|
|
*/
|
|
|
|
#include <linux/platform_device.h>
|
|
#include <asm/mach/arch.h>
|
|
#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();
|
|
nuc950_init_clocks();
|
|
}
|
|
|
|
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")
|
|
/* Maintainer: Wan ZongShun */
|
|
.phys_io = W90X900_PA_UART,
|
|
.io_pg_offst = (((u32)W90X900_VA_UART) >> 18) & 0xfffc,
|
|
.boot_params = 0,
|
|
.map_io = nuc950evb_map_io,
|
|
.init_irq = nuc900_init_irq,
|
|
.init_machine = nuc950evb_init,
|
|
.timer = &nuc900_timer,
|
|
MACHINE_END
|