summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJamie Lenehan <lenehan@twibble.org>2006-07-03 02:45:37 +0000
committerOpenEmbedded Project <openembedded-devel@lists.openembedded.org>2006-07-03 02:45:37 +0000
commitd25e4d60596edd332dbfd2fc63c5e22899ac3600 (patch)
tree1d710911d64fa8f4e24bb4292bb23ba61d2dd3a4
parent085c69220f3ab2f01fb840407815e56523544c8f (diff)
parentb4bb893ec2ad5251d461916703576a8295b1d513 (diff)
merge of 4fa66e8ed3c592fe36065306271c6b2c559b7b76
and 7847e7c8b41faf980a8a08156c7c8a5bc616f814
-rw-r--r--conf/distro/jlime-donkey.conf2
-rw-r--r--packages/linux/linux-jlime-arm-2.6.17/.mtn2git_empty (renamed from packages/opie-appearance/opie-appearance-1.2.1/.mtn2git_empty)0
-rw-r--r--packages/linux/linux-jlime-arm-2.6.17/AsmArm-ArchSa1100-Jornada720.patch40
-rw-r--r--packages/linux/linux-jlime-arm-2.6.17/Cpu-Sa1110-Jornada720.patch32
-rw-r--r--packages/linux/linux-jlime-arm-2.6.17/Kconfig-Arch-Jornada720.patch11
-rw-r--r--packages/linux/linux-jlime-arm-2.6.17/Kconfig-Keyboard-Jornada720.patch13
-rw-r--r--packages/linux/linux-jlime-arm-2.6.17/Kconfig-Touchscreen-Jornada720.patch14
-rw-r--r--packages/linux/linux-jlime-arm-2.6.17/Kconfig-Video-Jornada720.patch20
-rw-r--r--packages/linux/linux-jlime-arm-2.6.17/Mach-Sa1100-Jornada720.patch153
-rw-r--r--packages/linux/linux-jlime-arm-2.6.17/Makefile-Keyboard-Jornada720.patch8
-rw-r--r--packages/linux/linux-jlime-arm-2.6.17/Makefile-Touchscreen-Jornada720.patch7
-rw-r--r--packages/linux/linux-jlime-arm-2.6.17/Makefile-Video-Jornada720.patch10
-rw-r--r--packages/linux/linux-jlime-arm-2.6.17/Newfile-Epson1356fb.patch344
-rw-r--r--packages/linux/linux-jlime-arm-2.6.17/Newfile-Jornada720_kbd.patch100
-rw-r--r--packages/linux/linux-jlime-arm-2.6.17/Newfile-Jornada720_ts.patch106
-rw-r--r--packages/linux/linux-jlime-arm-2.6.17/defconf_jlime1028
-rw-r--r--packages/linux/linux-jlime-arm_2.6.17.bb43
-rw-r--r--packages/linux/linux-jlime-sh3-2.6.16.20/defconfig_jlime41
-rw-r--r--packages/linux/linux-jlime-sh3-2.6.16.20/unexpected-int-fix.patch17
-rw-r--r--packages/linux/linux-jlime-sh3_2.6.16.20.bb3
-rw-r--r--packages/opie-appearance/opie-appearance-1.2.1/add-ui-settings.patch86
-rw-r--r--packages/opie-appearance/opie-appearance_1.2.2.bb3
-rw-r--r--packages/opie-backup/opie-backup-1.2.1/.mtn2git_empty0
-rw-r--r--packages/opie-backup/opie-backup-1.2.1/1492-bugfix.patch16
-rw-r--r--packages/opie-backup/opie-backup_1.2.2.bb3
-rw-r--r--packages/opie-console/opie-console-1.2.1/.mtn2git_empty0
-rw-r--r--packages/opie-console/opie-console-1.2.1/0117_opie-console-use-default-fixed.diff25
-rw-r--r--packages/opie-console/opie-console-1.2.1/1647-bugfix.patch40
-rw-r--r--packages/opie-console/opie-console-1.2.1/1686-bugfix.patch146
-rw-r--r--packages/opie-console/opie-console_1.2.2.bb5
-rw-r--r--packages/opie-packagemanager/opie-packagemanager-1.2.1/.mtn2git_empty0
-rw-r--r--packages/opie-packagemanager/opie-packagemanager-1.2.1/0114_opie-pm-recursive-verbose_wget.diff123
-rw-r--r--packages/opie-packagemanager/opie-packagemanager_1.2.2.bb3
-rw-r--r--packages/opie-pcmciaapplet/opie-pcmciaapplet-1.2.1/.mtn2git_empty0
-rw-r--r--packages/opie-pcmciaapplet/opie-pcmciaapplet-1.2.1/activate-as-default.patch42
-rw-r--r--packages/opie-pcmciaapplet/opie-pcmciaapplet_1.2.2.bb3
-rw-r--r--packages/qte/qte-mt-static_2.3.10.bb4
-rw-r--r--packages/qte/qte-mt-static_2.3.12.bb4
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