diff options
| author | Jamie Lenehan <lenehan@twibble.org> | 2006-07-03 02:45:37 +0000 |
|---|---|---|
| committer | OpenEmbedded Project <openembedded-devel@lists.openembedded.org> | 2006-07-03 02:45:37 +0000 |
| commit | d25e4d60596edd332dbfd2fc63c5e22899ac3600 (patch) | |
| tree | 1d710911d64fa8f4e24bb4292bb23ba61d2dd3a4 | |
| parent | 085c69220f3ab2f01fb840407815e56523544c8f (diff) | |
| parent | b4bb893ec2ad5251d461916703576a8295b1d513 (diff) | |
merge of 4fa66e8ed3c592fe36065306271c6b2c559b7b76
and 7847e7c8b41faf980a8a08156c7c8a5bc616f814
38 files changed, 1985 insertions, 510 deletions
diff --git a/conf/distro/jlime-donkey.conf b/conf/distro/jlime-donkey.conf index a103ddaf7c..89a10705ca 100644 --- a/conf/distro/jlime-donkey.conf +++ b/conf/distro/jlime-donkey.conf @@ -78,7 +78,7 @@ BOOTSTRAP_EXTRA_DEPENDS += "pcmciautils ncurses nano wireless-tools console-too #<> #<>What Opie version should we use. #<> -OPIE_VERSION = "1.2.2" +OPIE_VERSION = "1.2.3" include conf/distro/preferred-opie-versions.inc #<> diff --git a/packages/opie-appearance/opie-appearance-1.2.1/.mtn2git_empty b/packages/linux/linux-jlime-arm-2.6.17/.mtn2git_empty index e69de29bb2..e69de29bb2 100644 --- a/packages/opie-appearance/opie-appearance-1.2.1/.mtn2git_empty +++ b/packages/linux/linux-jlime-arm-2.6.17/.mtn2git_empty diff --git a/packages/linux/linux-jlime-arm-2.6.17/AsmArm-ArchSa1100-Jornada720.patch b/packages/linux/linux-jlime-arm-2.6.17/AsmArm-ArchSa1100-Jornada720.patch new file mode 100644 index 0000000000..a1bc077242 --- /dev/null +++ b/packages/linux/linux-jlime-arm-2.6.17/AsmArm-ArchSa1100-Jornada720.patch @@ -0,0 +1,40 @@ +--- linux-2.6.17/include/asm-arm/arch-sa1100/jornada720.h_orig 2006-07-02 23:42:42.000000000 +0000 ++++ linux-2.6.17/include/asm-arm/arch-sa1100/jornada720.h 2006-07-02 23:50:32.000000000 +0000 +@@ -19,9 +19,37 @@ + #define GPIO_JORNADA720_KEYBOARD_IRQ IRQ_GPIO0 + #define GPIO_JORNADA720_MOUSE_IRQ IRQ_GPIO9 + ++/* Epson 1356 LCD controll parameters */ ++#define REGISTER_OFFSET ((unsigned char *) 0xf00000000) ++#define DISP_MEM_OFFSET ((unsigned char *) 0xf10000000) ++#define DISP_MEM_OFFSET_PHYS ((unsigned char *) 0x482000000) ++ ++#define MAX_BPP 16 ++#define MAX_XRES 640 ++#define MAX_YRES 240 ++#define MIN_XRES 64 ++#define MIN_YRES 64 ++ ++/* MCU COMMANDS */ ++#define MCU_GetBatteryData 0xc0 ++#define MCU_GetScanKeyCode 0x90 ++#define MCU_GetTouchSamples 0xa0 ++#define MCU_GetContrast 0xD0 ++#define MCU_SetContrast 0xD1 ++#define MCU_GetBrightness 0xD2 ++#define MCU_SetBrightness 0xD3 ++#define MCU_ContrastOff 0xD8 ++#define MCU_BrightnessOff 0xD9 ++#define MCU_PWMOFF 0xDF ++#define MCU_TxDummy 0x11 ++#define MCU_ErrorCode 0x00 ++ + #ifndef __ASSEMBLY__ + + void jornada720_mcu_init(void); ++int jornada720_mcu_byte(int arg_data); ++int jornada720_mcu_start(int arg_data); ++voide jornada720_mcu_end(void); + void jornada_contrast(int arg_contrast); + void jornada720_battery(void); + int jornada720_getkey(unsigned char *data, int size); diff --git a/packages/linux/linux-jlime-arm-2.6.17/Cpu-Sa1110-Jornada720.patch b/packages/linux/linux-jlime-arm-2.6.17/Cpu-Sa1110-Jornada720.patch new file mode 100644 index 0000000000..c957971629 --- /dev/null +++ b/packages/linux/linux-jlime-arm-2.6.17/Cpu-Sa1110-Jornada720.patch @@ -0,0 +1,32 @@ +--- linux-2.6.17/arch/arm/mach-sa1100/cpu-sa1110.c_orig 2006-07-02 20:44:56.000000000 +0000 ++++ linux-2.6.17/arch/arm/mach-sa1100/cpu-sa1110.c 2006-07-02 20:50:11.000000000 +0000 +@@ -70,6 +70,17 @@ + .cas_latency = 3, + }; + ++static struct sdram_params samsung_k4s281632b_1h __initdata = { ++ .rows = 12, ++ .tck = 10, ++ .trcd = 20, ++ .trp = 20, ++ .twr = 10, ++ .refresh = 64000, ++ .cas_latency = 3, ++ }; ++ ++ + static struct sdram_params samsung_k4s641632d_tc75 __initdata = { + .rows = 14, + .tck = 9, +@@ -349,6 +360,11 @@ + if (machine_is_h3100()) + sdram = &samsung_km416s4030ct; + ++ #if 0 ++ if (machine_is_jornada720()) ++ sdram = &samsung_k4s281632b_1h; ++ #endif ++ + if (sdram) { + printk(KERN_DEBUG "SDRAM: tck: %d trcd: %d trp: %d" + " twr: %d refresh: %d cas_latency: %d\n", diff --git a/packages/linux/linux-jlime-arm-2.6.17/Kconfig-Arch-Jornada720.patch b/packages/linux/linux-jlime-arm-2.6.17/Kconfig-Arch-Jornada720.patch new file mode 100644 index 0000000000..61784c4040 --- /dev/null +++ b/packages/linux/linux-jlime-arm-2.6.17/Kconfig-Arch-Jornada720.patch @@ -0,0 +1,11 @@ +--- linux-2.6.17/arch/arm/Kconfig_orig 2006-07-02 20:41:49.000000000 +0000 ++++ linux-2.6.17/arch/arm/Kconfig 2006-07-02 20:42:57.000000000 +0000 +@@ -669,7 +669,7 @@ + + config CPU_FREQ_SA1110 + bool +- depends on CPU_FREQ && (SA1100_ASSABET || SA1100_CERF || SA1100_PT_SYSTEM3) ++ depends on CPU_FREQ && (SA1100_ASSABET || SA1100_CERF || SA1100_PT_SYSTEM3 || SA1100_JORNADA720) + default y + + config CPU_FREQ_INTEGRATOR diff --git a/packages/linux/linux-jlime-arm-2.6.17/Kconfig-Keyboard-Jornada720.patch b/packages/linux/linux-jlime-arm-2.6.17/Kconfig-Keyboard-Jornada720.patch new file mode 100644 index 0000000000..a66aec2e98 --- /dev/null +++ b/packages/linux/linux-jlime-arm-2.6.17/Kconfig-Keyboard-Jornada720.patch @@ -0,0 +1,13 @@ +--- linux-2.6.17/drivers/input/keyboard/Kconfig_orig 2006-07-02 23:14:40.000000000 +0000 ++++ linux-2.6.17/drivers/input/keyboard/Kconfig 2006-07-02 23:16:12.000000000 +0000 +@@ -183,4 +183,10 @@ + This driver implements support for HIL-keyboards attached + to your machine, so normally you should say Y here. + ++config KEYBOARD_JORNADA720 ++ tristate "HP Jornada 720 Keyboard Support" ++ depends on SA110_JORNADA720 ++ default y ++ help ++ Say yes here if you want Jornada 720 keyboard support. + endif diff --git a/packages/linux/linux-jlime-arm-2.6.17/Kconfig-Touchscreen-Jornada720.patch b/packages/linux/linux-jlime-arm-2.6.17/Kconfig-Touchscreen-Jornada720.patch new file mode 100644 index 0000000000..9b7fac44d5 --- /dev/null +++ b/packages/linux/linux-jlime-arm-2.6.17/Kconfig-Touchscreen-Jornada720.patch @@ -0,0 +1,14 @@ +--- linux-2.6.17/drivers/input/touchscreen/Kconfig_orig 2006-07-02 23:31:00.000000000 +0000 ++++ linux-2.6.17/drivers/input/touchscreen/Kconfig 2006-07-02 23:32:53.000000000 +0000 +@@ -108,4 +108,11 @@ + To compile this driver as a module, choose M here: the + module will be called hp680_ts_input. + ++config TOUCHSCREEN_JORNADA720 ++ tristate "HP Jornada 720 touchscreen support" ++ depends on SA1100_JORNADA720 ++ help ++ Say Y here if you are using a HP Jornada 710/720/728 handheld ++ and want to user the touchscreen. ++ + endif diff --git a/packages/linux/linux-jlime-arm-2.6.17/Kconfig-Video-Jornada720.patch b/packages/linux/linux-jlime-arm-2.6.17/Kconfig-Video-Jornada720.patch new file mode 100644 index 0000000000..aafcb90ecc --- /dev/null +++ b/packages/linux/linux-jlime-arm-2.6.17/Kconfig-Video-Jornada720.patch @@ -0,0 +1,20 @@ +--- linux-2.6.17/drivers/video/Kconfig_orig 2006-07-02 23:34:29.000000000 +0000 ++++ linux-2.6.17/drivers/video/Kconfig 2006-07-02 23:38:36.000000000 +0000 +@@ -613,6 +613,17 @@ + framebuffer. Product specs at + <http://www.erd.epson.com/vdc/html/products.htm>. + ++config FB_EPSON1356 ++ bool "Epson 1356 framebuffer support" ++ depends on FB && ARM && SA1100_JORNADA720 ++ select FB_CFB_FILLRECT ++ select FB_CFB_COPYAREA ++ select FB_CFB_IMAGEBLIT ++ select FB_SOFT_CURSOR ++ help ++ Support for the 1356 framebuffer device on the HP Jornada ++ 710/720/728 hanheld pc. ++ + config FB_S1D13XXX + tristate "Epson S1D13XXX framebuffer support" + depends on FB diff --git a/packages/linux/linux-jlime-arm-2.6.17/Mach-Sa1100-Jornada720.patch b/packages/linux/linux-jlime-arm-2.6.17/Mach-Sa1100-Jornada720.patch new file mode 100644 index 0000000000..cbbb98f2bb --- /dev/null +++ b/packages/linux/linux-jlime-arm-2.6.17/Mach-Sa1100-Jornada720.patch @@ -0,0 +1,153 @@ +--- linux-2.6.17/arch/arm/mach-sa1100/jornada720.c_orig 2006-07-02 20:54:55.000000000 +0000 ++++ linux-2.6.17/arch/arm/mach-sa1100/jornada720.c 2006-07-02 23:12:58.000000000 +0000 +@@ -22,11 +22,139 @@ + #include <asm/mach/map.h> + #include <asm/mach/serial_sa1100.h> + ++#include <linux/lcd.h> ++#include <linux/backlight.h> ++#include <linux/fb.h> + #include "generic.h" + + + #define JORTUCR_VAL 0x20000400 + ++/* Jornada 720 MCU functions */ ++#define MCU_REVERSE(i) ((unsigned char)(((0x80 & i) >> 7) | ((0x40 & i) >> 5) \ ++ | ((0x20 & i) >> 3) | ((0x10 & i) >> 1) | ((0x08 & i) << 1) \ ++ | ((0x04 & i) << 3) | ((0x02 & i) << 5) | ((0x01 & i) << 7))) ++ ++void jornada720_init_ser(void) ++{ ++ int i; ++ ++ GPSR = GPIO_GPIO25; ++ Ser4SSCR0 = 0x0307; ++ Ser4MCCR0 = 0; ++ Ser4SSCR1 = 0x18; ++ Ser4SSCR0 = 0x0387; ++ while (Ser4SSSR & SSSR_RNE) ++ i = Ser4SSDR; ++} ++ ++int jornada720_mcu_byte(int arg_data) ++{ ++ int i; ++ ++ while ((Ser4SSSR & SSSR_TNF) == 0); ++ i = 0; ++ while ((GPLR & 0x400) && i++ < 400000); ++ /* wait for MCU */ ++ ++ if (i >= 400000) { ++ printk("jornada 720_mcu_byte: timed out\n"); ++ return -1; ++ } ++ Ser4SSDR = MCU_rEVERSE(arg_data) << 8; ++ udelay(100); ++ while ((Ser4SSSR & SSSR_RNE) == 0); ++ i = Ser4SSDR; ++ if (i > 0xff) ++ printk("jornada720 mcu_byte: read %x\n". i): ++ return MCU_REVERSE(i & 0xff) & 0xff; ++} ++ ++int jornada720_mcu_start(int arg_data) ++{ ++ int i; ++ ++ GPCR = GPIO_GPIO25; /* clear -> enable */ ++ udelay(100); ++ i = jornada720_mcu_byte(arg_data); ++ if (i != MCU_TxDummy) ++ { ++ printk("jornada720_mcu_start: sent %x got %x\n", arg_data, i); ++ for (i = 0; i < 256; i++) ++ if (jornada720_mcu_read() == -1) ++ break; ++ ++ jornada720_init_ser(); ++ return -1; ++ } ++ ++ return 0; ++} ++ ++ ++void jornada720_mcu_end(void) ++{ ++ udelay(100); ++ GPSR = GPIO_GPIO25; /* set */ ++} ++ ++void jornada720_mcu_init(void) ++{ ++ ++ int i; ++ ++ if (state) { ++ PPSR &= ~PPC_LDD1; ++ PPDR &= PPC_LDD1; ++ } ++ else { ++ PPSR |= PPC_LDD1; ++ } ++ return 0; ++} ++ ++static int jornada720_backlight_get_power(struct backlight_device *bd) ++{ ++ ++ return ~(PPSR&PPC_LDD1); ++} ++ ++static int jornada720_backlight_get_brightness(struct backlight_device *bd) ++{ ++ int brightness; ++ jornada720_mcu_start(MCU_GetBrightness); ++ brightness = jornada720_mcu_read(); ++ jornada720_mcu_end(); ++ return brightness; ++} ++ ++static int jornada720_backlight_set_brightness(struct backlight_device *bd) ++{ ++ int brightness = 255 - value; ++ jornada720_mcu_start(MCU_SetBrightness); ++ jornada720_mcu_byte(brightness); ++ jornada720_mcu_end(); ++ return 0; ++} ++ ++static struct backlight_properties jornada720_backlight_properties = { ++ .owner = THIS_MODULE, ++ .set_power = jornada720_backlight_set_power, ++ .get_power = jornada720_backlight_get_power, ++ .get_brightness = jornada720_backlight_get_brightness, ++ .set_brightness = jornada720_backlight_set_brightness, ++ .max_brightness = 255, ++} ++ ++static struct lcd_properties jornada 720_lcd_properties = { ++ .owner = THIS_MODULE, ++ .set_power = jornada720_lcd_set_power, ++ .get_power = jornada720_lcd_get_power, ++ .set_contrast = jornada720_lcd_set_contrast, ++ .get_contrast = jornada720_lcd_set_contrast, ++ .max_contrast = 255, ++} ++ + static struct resource sa1111_resources[] = { + [0] = { + .start = 0x40000000, +@@ -77,6 +205,10 @@ + PPDR |= PPC_LDD3 | PPC_LDD4; + + ret = platform_add_devices(devices, ARRAY_SIZE(devices)); ++ ++ jornada720_mcu_init(); ++ backlight_device_register("e1356fb", 0, &jornada720_backlight_properties); ++ ldc_device_register("e1356fb", 0, &jornada720_lcd_properties); + } + return ret; + } diff --git a/packages/linux/linux-jlime-arm-2.6.17/Makefile-Keyboard-Jornada720.patch b/packages/linux/linux-jlime-arm-2.6.17/Makefile-Keyboard-Jornada720.patch new file mode 100644 index 0000000000..b1e2ab10e7 --- /dev/null +++ b/packages/linux/linux-jlime-arm-2.6.17/Makefile-Keyboard-Jornada720.patch @@ -0,0 +1,8 @@ +--- linux-2.6.17/drivers/input/keyboard/Makefile_orig 2006-07-02 23:22:40.000000000 +0000 ++++ linux-2.6.17/drivers/input/keyboard/Makefile 2006-07-02 23:23:03.000000000 +0000 +@@ -15,4 +15,4 @@ + obj-$(CONFIG_KEYBOARD_SPITZ) += spitzkbd.o + obj-$(CONFIG_KEYBOARD_HIL) += hil_kbd.o + obj-$(CONFIG_KEYBOARD_HIL_OLD) += hilkbd.o +- ++obj-$(CONFIG_KEYBOARD_JORNADA720) += jornada720_kbd.o diff --git a/packages/linux/linux-jlime-arm-2.6.17/Makefile-Touchscreen-Jornada720.patch b/packages/linux/linux-jlime-arm-2.6.17/Makefile-Touchscreen-Jornada720.patch new file mode 100644 index 0000000000..deabd5cded --- /dev/null +++ b/packages/linux/linux-jlime-arm-2.6.17/Makefile-Touchscreen-Jornada720.patch @@ -0,0 +1,7 @@ +--- linux-2.6.17/drivers/input/touchscreen/Makefile_orig 2006-07-02 23:28:02.000000000 +0000 ++++ linux-2.6.17/drivers/input/touchscreen/Makefile 2006-07-02 23:29:42.000000000 +0000 +@@ -12,3 +12,4 @@ + obj-$(CONFIG_TOUCHSCREEN_MTOUCH) += mtouch.o + obj-$(CONFIG_TOUCHSCREEN_MK712) += mk712.o + obj-$(CONFIG_TOUCHSCREEN_HP600) += hp680_ts_input.o ++obj-$(CONFIG_TOUCHSCREEN_JORNADA720) += jornada720_ts.o diff --git a/packages/linux/linux-jlime-arm-2.6.17/Makefile-Video-Jornada720.patch b/packages/linux/linux-jlime-arm-2.6.17/Makefile-Video-Jornada720.patch new file mode 100644 index 0000000000..ae53cce9f3 --- /dev/null +++ b/packages/linux/linux-jlime-arm-2.6.17/Makefile-Video-Jornada720.patch @@ -0,0 +1,10 @@ +--- linux-2.6.17/drivers/video/Makefile_orig 2006-07-02 23:39:37.000000000 +0000 ++++ linux-2.6.17/drivers/video/Makefile 2006-07-02 23:40:15.000000000 +0000 +@@ -75,6 +75,7 @@ + obj-$(CONFIG_FB_SUN3) += sun3fb.o + obj-$(CONFIG_FB_HIT) += hitfb.o + obj-$(CONFIG_FB_EPSON1355) += epson1355fb.o ++obj-$(CONFIG_FB_EPSON1356) += epson1356fb.o + obj-$(CONFIG_FB_PVR2) += pvr2fb.o + obj-$(CONFIG_FB_VOODOO1) += sstfb.o + obj-$(CONFIG_FB_ARMCLCD) += amba-clcd.o diff --git a/packages/linux/linux-jlime-arm-2.6.17/Newfile-Epson1356fb.patch b/packages/linux/linux-jlime-arm-2.6.17/Newfile-Epson1356fb.patch new file mode 100644 index 0000000000..7516f06dc9 --- /dev/null +++ b/packages/linux/linux-jlime-arm-2.6.17/Newfile-Epson1356fb.patch @@ -0,0 +1,344 @@ +--- linux-2.6.17/drivers/video/epson1356fb.c_orig 2006-07-03 00:20:43.000000000 +0000 ++++ linux-2.6.17/drivers/video/epson1356fb.c 2006-07-03 00:16:37.000000000 +0000 +@@ -0,0 +1,341 @@ ++/* ++ * linux/drivers/video/epson1356fb.c -- Epson 1356 LCD Controller Frame Buffer Device ++ * ++ * Copyright (C) 2001 MIT ++ * ++ * Edited from sa1100fb.c ++ * Copyright (C) 1999 Eric A. Thomas ++ * Based on acornfb.c Copyright (C) Russell King. ++ * ++ * This file is subject to the terms and conditions of the GNU General Public ++ * License. See the file COPYING in the main directory of this archive ++ * for more details. ++ * ++ * 20050203: Ported to kernel 2.6. Very basic interface for the Jornada 720 (C) Alex Lange (chicken@handhelds.org) ++ * ++ */ ++ ++#include <linux/config.h> ++#include <linux/module.h> ++#include <linux/kernel.h> ++#include <linux/sched.h> ++#include <linux/errno.h> ++#include <linux/string.h> ++#include <linux/interrupt.h> ++#include <linux/slab.h> ++#include <linux/fb.h> ++#include <linux/delay.h> ++#include <linux/init.h> ++#include <linux/ioport.h> ++#include <linux/device.h> ++#include <linux/dma-mapping.h> ++ ++#include <asm/uaccess.h> ++#include <asm/arch/jornada720.h> ++ ++u32 pseudo_pal[16]; ++ ++struct fb_info fb_info; ++ ++static int e1356fb_setcolreg(unsigned regno, unsigned red, unsigned green, ++ unsigned blue, unsigned transp, ++ struct fb_info *fb_info) ++{ ++ int bpp, m = 0; ++ ++ bpp = fb_info->var.bits_per_pixel; ++ m = (bpp <= 8) ? (1 << bpp) : 256; ++ if (regno >= m) { ++ printk("regno %d out of range (max %d)\n", regno, m); ++ return -EINVAL; ++ } ++ switch (bpp) { ++ case 8: ++ break; ++ case 16: ++ /* RGB 565 */ ++ pseudo_pal[regno] = ((red & 0xF800) | ++ ((green & 0xFC00) >> 5) | ++ ((blue & 0xF800) >> 11)); ++ break; ++ } ++ ++ return 0; ++} ++ ++static int e1356fb_blank(int blank, struct fb_info *info) ++{ ++ switch (blank) { ++ case FB_BLANK_POWERDOWN: ++ case FB_BLANK_VSYNC_SUSPEND: ++ case FB_BLANK_HSYNC_SUSPEND: ++ case FB_BLANK_NORMAL: ++ PPSR &= ~PPC_LDD1; ++ PPDR |= PPC_LDD1; ++ break; ++ ++ case FB_BLANK_UNBLANK: ++ PPSR |= PPC_LDD1; ++ mdelay(100); ++ } ++ return 0; ++} ++ ++static struct fb_var_screeninfo e1356fb_screeninfo = { ++ .xres = 640, ++ .yres = 240, ++ .xres_virtual = 640, ++ .yres_virtual = 240, ++ .bits_per_pixel = 16, ++ .red.length = 5, ++ .green.length = 6, ++ .blue.length = 5, ++ .transp.length = 0, ++ .red.offset = 11, ++ .green.offset = 5, ++ .blue.offset = 0, ++ .transp.offset = 0, ++ .activate = FB_ACTIVATE_NOW, ++ .height = -1, ++ .width = -1, ++ .vmode = FB_VMODE_NONINTERLACED, ++ .accel_flags = 0, ++ .nonstd = 0, ++}; ++ ++static struct fb_ops e1356fb_ops = { ++ .owner = THIS_MODULE, ++ .fb_setcolreg = e1356fb_setcolreg, ++ .fb_fillrect = cfb_fillrect, ++ .fb_copyarea = cfb_copyarea, ++ .fb_imageblit = cfb_imageblit, ++ .fb_cursor = soft_cursor, ++ .fb_blank = e1356fb_blank, ++}; ++ ++static struct fb_fix_screeninfo e1356fb_fix = { ++ .id = "e1356fb", ++ .smem_len = (MAX_XRES * MAX_YRES * MAX_BPP)/8, ++ .smem_start = (unsigned long)DISP_MEM_OFFSET_PHYS, ++ .type = FB_TYPE_PACKED_PIXELS, ++ .visual = FB_VISUAL_TRUECOLOR, ++ .line_length = (640 * 16) / 8, ++ .accel = FB_ACCEL_NONE, ++ .type_aux = 0, ++ .ypanstep = 0, ++ .ywrapstep = 0, ++}; ++ ++unsigned char LUT8[256*3] = { ++ /* Primary and secondary colors */ ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0xA0, 0x00, 0xA0, 0x00, 0x00, 0xA0, 0xA0, ++ 0xA0, 0x00, 0x00, 0xA0, 0x00, 0xA0, 0xA0, 0xA0, 0x00, 0xA0, 0xA0, 0xA0, ++ 0x50, 0x50, 0x50, 0x00, 0x00, 0xF0, 0x00, 0xF0, 0x00, 0x00, 0xF0, 0xF0, ++ 0xF0, 0x00, 0x00, 0xF0, 0x00, 0xF0, 0xF0, 0xF0, 0x00, 0xF0, 0xF0, 0xF0 ++}; ++ ++static char lut_base[] = { ++ /*red green blue rinc ginc binc */ ++ 0x00, 0x00, 0x00, 0x10, 0x10, 0x10, /* Gray shades */ ++ 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, /* Black to red */ ++ 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, /* Black to green */ ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, /* Black to blue */ ++ 0x00, 0x00, 0xF0, 0x00, 0x10, 0x00, /* Blue to cyan (blue and green) */ ++ 0x00, 0xf0, 0xf0, 0x00, 0x00, -0x10, /* Cyan (blue and green) to green */ ++ 0x00, 0xf0, 0x00, 0x10, 0x00, 0x00, /* Green to yellow (red and green)*/ ++ 0xf0, 0xf0, 0x00, 0x00, -0x10, 0x00, /* Yellow (red and green) to red */ ++ 0xf0, 0x00, 0x00, 0x00, 0x00, 0x10, /* Red to magenta (blue and red) */ ++ 0xf0, 0x00, 0xf0, -0x10, 0x00, 0x00, /* Magenta (blue and red) to blue */ ++ 0x00, 0x00, 0x00, 0x10, 0x00, 0x10, /* Black to magenta (blue and red)*/ ++ 0x00, 0x00, 0x00, 0x00, 0x10, 0x10, /* Black to cyan (blue and green) */ ++ 0xf0, 0x00, 0x00, 0x00, 0x10, 0x10, /* Red to white */ ++ 0x00, 0xf0, 0x00, 0x10, 0x00, 0x10, /* Green to white */ ++ 0x00, 0x00, 0xf0, 0x10, 0x10, 0x00, /* Blue to white */ ++}; ++ ++void e1356fb_init_hardware(void) ++{ ++ unsigned char *pRegs = REGISTER_OFFSET; ++ unsigned char *pLUT = LUT8; ++ unsigned char *pseed = lut_base; ++ unsigned char plast[3]; ++ int i, j, rgb; ++ ++ /* Enable access to SED1356 by setting memory/register select bit to 0. */ ++ pRegs[0x001] = 0; ++ udelay(2); ++ /* Disable display outputs during initialization) */ ++ pRegs[0x1FC] = 0; ++ ++ /* Set the GPIOs to input. Should GPIO bits in register [004] get switched ++ then the GPIO outputs, according to register [008], are driven low. */ ++ pRegs[0x004] = 0; ++ pRegs[0x008] = 0; ++ ++ /* Program the LCD panel type and panel timing registers. ++ * The horizontal and vertical non-display times have been ++ * calculated for a 78 Hz frame rate. ++ * LCD PCLK ++ * FrameRate = ----------------------------- ++ * (HDP + HNDP) * (VDP/2 + VNDP) ++ * ++ * 20,000,000 ++ * = ---------------------------- = 78 Hz ++ * (640 + 256) * (480 / 2 + 45) ++ */ ++ ++ pRegs[0x10] = 0x1; /* Memory Clock Configuration Register */ ++ pRegs[0x14] = 0x11; /* LCD Pixel Clock Configuration Register */ ++ pRegs[0x18] = 0x1; /* CRT/TV Pixel Clock Configuration Register */ ++ pRegs[0x1c] = 0x1; /* MediaPlug Clock Configuration Register */ ++ pRegs[0x1e] = 0x1; /* CPU To Memory Wait State Select Register */ ++ pRegs[0x20] = 0; /* Memory Configuration Register */ ++ pRegs[0x21] = 0x45; /* DRAM Refresh Rate Register */ ++ pRegs[0x2a] = 0x1; /* DRAM Timings Control Register 0 */ ++ pRegs[0x2b] = 0x1; /* DRAM Timings Control Register 1 */ ++ pRegs[0x30] = 0x1c; /* Panel Type Register */ ++ pRegs[0x31] = 0; /* MOD Rate Register */ ++ pRegs[0x32] = 0x4f; /* LCD Horizontal Display Width Register */ ++ pRegs[0x34] = 0x7; /* LCD Horizontal Non-Display Period Register */ ++ pRegs[0x35] = 0x1; /* TFT FPLINE Start Position Register */ ++ pRegs[0x36] = 0xb; /* TFT FPLINE Pulse Width Register */ ++ pRegs[0x38] = 0xef; /* LCD Vertical Display Height Register 0 */ ++ pRegs[0x39] = 0; /* LCD Vertical Display Height Register 1 */ ++ pRegs[0x3a] = 0x13; /* LCD Vertical Non-Display Period Register */ ++ pRegs[0x3b] = 0xb; /* TFT FPFRAME Start Position Register */ ++ pRegs[0x3c] = 0x1; /* TFT FPFRAME Pulse Width Register */ ++ pRegs[0x40] = 0x5; /* LCD Display Mode Register */ ++ pRegs[0x41] = 0; /* LCD Miscellaneous Register */ ++ pRegs[0x42] = 0; /* LCD Display Start Address Register 0 */ ++ pRegs[0x43] = 0; /* LCD Display Start Address Register 1 */ ++ pRegs[0x44] = 0; /* LCD Display Start Address Register 2 */ ++ pRegs[0x46] = 0x80; /* LCD Memory Address Offset Register 0 */ ++ pRegs[0x47] = 0x2; /* LCD Memory Address Offset Register 1 */ ++ pRegs[0x48] = 0; /* LCD Pixel Panning Register */ ++ pRegs[0x4a] = 0; /* LCD Display FIFO High Threshold Control Register */ ++ pRegs[0x4b] = 0; /* LCD Display FIFO Low Threshold Control Register */ ++ pRegs[0x50] = 0x4f; /* CRT/TV Horizontal Display Width Register */ ++ pRegs[0x52] = 0x13; /* CRT/TV Horizontal Non-Display Period Register */ ++ pRegs[0x53] = 0x1; /* CRT/TV HRTC Start Position Register */ ++ pRegs[0x54] = 0xb; /* CRT/TV HRTC Pulse Width Register */ ++ pRegs[0x56] = 0xdf; /* CRT/TV Vertical Display Height Register 0 */ ++ pRegs[0x57] = 0x1; /* CRT/TV Vertical Display Height Register 1 */ ++ pRegs[0x58] = 0x2b; /* CRT/TV Vertical Non-Display Period Register */ ++ pRegs[0x59] = 0x9; /* CRT/TV VRTC Start Position Register */ ++ pRegs[0x5a] = 0x1; /* CRT/TV VRTC Pulse Width Register */ ++ pRegs[0x5b] = 0x10; /* TV Output Control Register */ ++ pRegs[0x60] = 0x3; /* CRT/TV Display Mode Register */ ++ pRegs[0x62] = 0; /* CRT/TV Display Start Address Register 0 */ ++ pRegs[0x63] = 0; /* CRT/TV Display Start Address Register 1 */ ++ pRegs[0x64] = 0; /* CRT/TV Display Start Address Register 2 */ ++ pRegs[0x66] = 0x40; /* CRT/TV Memory Address Offset Register 0 */ ++ pRegs[0x67] = 0x1; /* CRT/TV Memory Address Offset Register 1 */ ++ pRegs[0x68] = 0; /* CRT/TV Pixel Panning Register */ ++ pRegs[0x6a] = 0; /* CRT/TV Display FIFO High Threshold Control Register */ ++ pRegs[0x6b] = 0; /* CRT/TV Display FIFO Low Threshold Control Register */ ++ pRegs[0x70] = 0; /* LCD Ink/Cursor Control Register */ ++ pRegs[0x71] = 0x1; /* LCD Ink/Cursor Start Address Register */ ++ pRegs[0x72] = 0; /* LCD Cursor X Position Register 0 */ ++ pRegs[0x73] = 0; /* LCD Cursor X Position Register 1 */ ++ pRegs[0x74] = 0; /* LCD Cursor Y Position Register 0 */ ++ pRegs[0x75] = 0; /* LCD Cursor Y Position Register 1 */ ++ pRegs[0x76] = 0; /* LCD Ink/Cursor Blue Color 0 Register */ ++ pRegs[0x77] = 0; /* LCD Ink/Cursor Green Color 0 Register */ ++ pRegs[0x78] = 0; /* LCD Ink/Cursor Red Color 0 Register */ ++ pRegs[0x7a] = 0x1f; /* LCD Ink/Cursor Blue Color 1 Register */ ++ pRegs[0x7b] = 0x3f; /* LCD Ink/Cursor Green Color 1 Register */ ++ pRegs[0x7c] = 0x1f; /* LCD Ink/Cursor Red Color 1 Register */ ++ pRegs[0x7e] = 0; /* LCD Ink/Cursor FIFO Threshold Register */ ++ pRegs[0x80] = 0; /* CRT/TV Ink/Cursor Control Register */ ++ pRegs[0x81] = 0x1; /* CRT/TV Ink/Cursor Start Address Register */ ++ pRegs[0x82] = 0; /* CRT/TV Cursor X Position Register 0 */ ++ pRegs[0 |
