summaryrefslogtreecommitdiff
path: root/packages/linux
diff options
context:
space:
mode:
authorFrans Meulenbroeks <fransmeulenbroeks@yahoo.com>2006-06-07 20:06:48 +0000
committerOpenEmbedded Project <openembedded-devel@lists.openembedded.org>2006-06-07 20:06:48 +0000
commit9c685878a4f054562e8a2bddcf195ae44aac3484 (patch)
tree1caf03e286a952e88006bc1f3891820184f22d07 /packages/linux
parent82281183231cf5d72da214e42e7340bfcd900e13 (diff)
parent759e5b0223f56d360fdd1e2eda81aac574089dda (diff)
merge of 0fbcc5da7abe05787c6a591e53e9072cb3b115d5
and 99f9fc9ea4f05af6472ec5a42c5a6516440654e6
Diffstat (limited to 'packages/linux')
-rw-r--r--packages/linux/linux-ezx/a780-leds-r0.patch185
-rw-r--r--packages/linux/linux-ezx/defconfig-a78042
-rw-r--r--packages/linux/linux-ezx/defconfig-e68039
-rw-r--r--packages/linux/linux-ezx/e680-leds-r1.patch374
-rw-r--r--packages/linux/linux-ezx/ezx-backlight-r0.patch212
-rw-r--r--packages/linux/linux-ezx/led_ezx-r0.patch174
-rw-r--r--packages/linux/linux-ezx_2.6.16.13.bb18
-rw-r--r--packages/linux/logicpd-pxa270-2.6.17-rc5/.mtn2git_empty0
-rw-r--r--packages/linux/logicpd-pxa270-2.6.17-rc5/linux-2.6.17-rc5.patch2183
-rw-r--r--packages/linux/logicpd-pxa270_2.6.17-rc5.bb33
10 files changed, 3052 insertions, 208 deletions
diff --git a/packages/linux/linux-ezx/a780-leds-r0.patch b/packages/linux/linux-ezx/a780-leds-r0.patch
new file mode 100644
index 0000000000..31fdfc635b
--- /dev/null
+++ b/packages/linux/linux-ezx/a780-leds-r0.patch
@@ -0,0 +1,185 @@
+
+#
+# Patch managed by http://www.mn-logistik.de/unsupported/pxa250/patcher
+#
+
+--- linux-2.6.16/drivers/leds/Kconfig~a780-leds-r0.patch 2006-06-05 18:05:32.000000000 +0200
++++ linux-2.6.16/drivers/leds/Kconfig 2006-06-05 18:05:32.000000000 +0200
+@@ -66,6 +66,13 @@
+ This options enables support for the LEDs on the
+ Motorola E680(i) GSM Phone.
+
++config LEDS_A780
++ tristate "LED Support for the Motorola A780 GSM Phone"
++ depends LEDS_CLASS && PXA_EZX_A780
++ help
++ This option enables support for the LEDs on the
++ Motorola A780 GSM Phone.
++
+ config LEDS_TRIGGER_TIMER
+ tristate "LED Timer Trigger"
+ depends LEDS_TRIGGERS
+--- linux-2.6.16/drivers/leds/Makefile~a780-leds-r0.patch 2006-06-05 18:05:32.000000000 +0200
++++ linux-2.6.16/drivers/leds/Makefile 2006-06-05 18:05:32.000000000 +0200
+@@ -11,6 +11,7 @@
+ obj-$(CONFIG_LEDS_IXP4XX) += leds-ixp4xx-gpio.o
+ obj-$(CONFIG_LEDS_TOSA) += leds-tosa.o
+ obj-$(CONFIG_LEDS_E680) += leds-e680.o
++obj-$(CONFIG_LEDS_A780) += leds-a780.o
+
+ # LED Triggers
+ obj-$(CONFIG_LEDS_TRIGGER_TIMER) += ledtrig-timer.o
+--- linux-2.6.16/arch/arm/mach-pxa/ezx.c~a780-leds-r0.patch 2006-06-05 18:05:32.000000000 +0200
++++ linux-2.6.16/arch/arm/mach-pxa/ezx.c 2006-06-05 18:05:32.000000000 +0200
+@@ -367,6 +367,15 @@
+ };
+ #endif
+
++#ifdef CONFIG_PXA_EZX_A780
++/*
++ * A780 LEDs
++ */
++static struct platform_device a780led_device = {
++ .name = "a780-led",
++ .id = -1,
++};
++#endif
+
+ /* keyboard */
+
+@@ -780,6 +789,9 @@
+ #ifdef CONFIG_PXA_EZX_E680
+ &e680led_device,
+ #endif
++#ifdef CONFIG_PXA_EZX_A780
++ &a780led_device,
++#endif
+ };
+
+ static void __init
+--- /dev/null 2006-06-05 13:59:28.329930680 +0200
++++ linux-2.6.16/drivers/leds/leds-a780.c 2006-06-05 18:27:13.000000000 +0200
+@@ -0,0 +1,123 @@
++/*
++ * EZX Platform LED Driver for the Motorola A780 GSM Phone
++ *
++ * Copyright 2006 Vanille-Media
++ *
++ * Author: Michael Lauer <mickey@Vanille.de>
++ *
++ * Based on keylight.c by Motorola and leds-corgi.c by Richard Purdie
++ *
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License version 2 as
++ * published by the Free Software Foundation.
++ *
++ */
++
++#include <linux/config.h>
++#include <linux/kernel.h>
++#include <linux/platform_device.h>
++#include <linux/leds.h>
++#include <asm/arch/ezx-pcap.h>
++
++static void a780led_main_set(struct led_classdev *led_cdev, enum led_brightness value)
++{
++ if ( value > 31 ) value = 31;
++ printk( KERN_DEBUG "a780led_main_set: %d\n", value );
++ ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_PERIPH_BL_CTRL0, value & 0x01);
++ ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_PERIPH_BL_CTRL1, value & 0x02);
++ ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_PERIPH_BL_CTRL2, value & 0x04);
++ ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_PERIPH_BL_CTRL3, value & 0x08);
++ ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_PERIPH_BL_CTRL4, value & 0x10);
++}
++
++static void a780led_aux_set(struct led_classdev *led_cdev, enum led_brightness value)
++{
++ if ( value > 31 ) value = 31;
++ printk( KERN_DEBUG "a780led_aux_set: %d\n", value );
++ ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_PERIPH_BL2_CTRL0, value & 0x01);
++ ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_PERIPH_BL2_CTRL1, value & 0x02);
++ ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_PERIPH_BL2_CTRL2, value & 0x04);
++ ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_PERIPH_BL2_CTRL3, value & 0x08);
++ ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_PERIPH_BL2_CTRL4, value & 0x10);
++}
++
++static struct led_classdev a780_main_led = {
++ .name = "a780:main",
++ .default_trigger = "none",
++ .brightness_set = a780led_main_set,
++};
++
++static struct led_classdev a780_aux_led = {
++ .name = "a780:aux",
++ .default_trigger = "none",
++ .brightness_set = a780led_aux_set,
++};
++
++#ifdef CONFIG_PM
++static int a780led_suspend(struct platform_device *dev, pm_message_t state)
++{
++ led_classdev_suspend(&a780_main_led);
++ led_classdev_suspend(&a780_aux_led);
++ return 0;
++}
++
++static int a780led_resume(struct platform_device *dev)
++{
++ led_classdev_resume(&a780_main_led);
++ led_classdev_resume(&a780_aux_led);
++ return 0;
++}
++#endif
++
++static int a780led_probe(struct platform_device *pdev)
++{
++ int ret;
++
++ ret = led_classdev_register(&pdev->dev, &a780_main_led);
++ if (ret < 0)
++ return ret;
++
++ ret = led_classdev_register(&pdev->dev, &a780_aux_led);
++ if (ret < 0)
++ led_classdev_unregister(&a780_main_led);
++
++ return ret;
++}
++
++static int a780led_remove(struct platform_device *pdev)
++{
++ led_classdev_unregister(&a780_main_led);
++ led_classdev_unregister(&a780_aux_led);
++ return 0;
++}
++
++static struct platform_driver a780led_driver = {
++ .probe = a780led_probe,
++ .remove = a780led_remove,
++#ifdef CONFIG_PM
++ .suspend = a780led_suspend,
++ .resume = a780led_resume,
++#endif
++ .driver = {
++ .name = "a780-led",
++ },
++};
++
++static int __init a780led_init(void)
++{
++ return platform_driver_register(&a780led_driver);
++}
++
++static void __exit a780led_exit(void)
++{
++ a780led_main_set( &a780_main_led, 0 );
++ a780led_aux_set( &a780_aux_led, 0 );
++ platform_driver_unregister(&a780led_driver);
++}
++
++module_init(a780led_init);
++module_exit(a780led_exit);
++
++MODULE_AUTHOR("Michael Lauer <mickey@Vanille.de>");
++MODULE_DESCRIPTION("Motorola A780 LED driver");
++MODULE_LICENSE("GPL");
diff --git a/packages/linux/linux-ezx/defconfig-a780 b/packages/linux/linux-ezx/defconfig-a780
index bc94f511c9..550ba4a786 100644
--- a/packages/linux/linux-ezx/defconfig-a780
+++ b/packages/linux/linux-ezx/defconfig-a780
@@ -14,6 +14,7 @@ CONFIG_ARCH_MTD_XIP=y
#
CONFIG_EXPERIMENTAL=y
CONFIG_BROKEN_ON_SMP=y
+CONFIG_LOCK_KERNEL=y
CONFIG_INIT_ENV_ARG_LIMIT=32
#
@@ -152,8 +153,8 @@ CONFIG_XSCALE_PMU=y
#
# Kernel Features
#
-CONFIG_PREEMPT=y
-CONFIG_NO_IDLE_HZ=y
+# CONFIG_PREEMPT is not set
+# CONFIG_NO_IDLE_HZ is not set
# CONFIG_AEABI is not set
# CONFIG_ARCH_DISCONTIGMEM_ENABLE is not set
CONFIG_SELECT_MEMORY_MODEL=y
@@ -220,7 +221,10 @@ CONFIG_INET=y
# CONFIG_IP_MULTICAST is not set
# CONFIG_IP_ADVANCED_ROUTER is not set
CONFIG_IP_FIB_HASH=y
-# CONFIG_IP_PNP is not set
+CONFIG_IP_PNP=y
+# CONFIG_IP_PNP_DHCP is not set
+# CONFIG_IP_PNP_BOOTP is not set
+# CONFIG_IP_PNP_RARP is not set
# CONFIG_NET_IPIP is not set
# CONFIG_NET_IPGRE is not set
# CONFIG_ARPD is not set
@@ -847,6 +851,16 @@ CONFIG_SPI_BITBANG=m
#
#
+# LED devices
+#
+CONFIG_NEW_LEDS=y
+CONFIG_LEDS_CLASS=y
+CONFIG_LEDS_TRIGGERS=y
+# CONFIG_LEDS_E680 is not set
+CONFIG_LEDS_A780=m
+CONFIG_LEDS_TRIGGER_TIMER=y
+
+#
# Multimedia devices
#
# CONFIG_VIDEO_DEV is not set
@@ -898,8 +912,9 @@ CONFIG_LOGO_LINUX_MONO=y
CONFIG_LOGO_LINUX_VGA16=y
CONFIG_LOGO_LINUX_CLUT224=y
CONFIG_BACKLIGHT_LCD_SUPPORT=y
-CONFIG_BACKLIGHT_CLASS_DEVICE=m
+CONFIG_BACKLIGHT_CLASS_DEVICE=y
CONFIG_BACKLIGHT_DEVICE=y
+CONFIG_BACKLIGHT_EZX=m
CONFIG_LCD_CLASS_DEVICE=m
CONFIG_LCD_DEVICE=y
@@ -1120,7 +1135,7 @@ CONFIG_CONFIGFS_FS=m
# CONFIG_EFS_FS is not set
# CONFIG_JFFS_FS is not set
# CONFIG_JFFS2_FS is not set
-CONFIG_CRAMFS=y
+CONFIG_CRAMFS=m
# CONFIG_VXFS_FS is not set
# CONFIG_HPFS_FS is not set
# CONFIG_QNX4FS_FS is not set
@@ -1130,7 +1145,7 @@ CONFIG_CRAMFS=y
#
# Network File Systems
#
-CONFIG_NFS_FS=m
+CONFIG_NFS_FS=y
CONFIG_NFS_V3=y
# CONFIG_NFS_V3_ACL is not set
CONFIG_NFS_V4=y
@@ -1140,13 +1155,14 @@ CONFIG_NFSD_V3=y
# CONFIG_NFSD_V3_ACL is not set
# CONFIG_NFSD_V4 is not set
CONFIG_NFSD_TCP=y
-CONFIG_LOCKD=m
+CONFIG_ROOT_NFS=y
+CONFIG_LOCKD=y
CONFIG_LOCKD_V4=y
CONFIG_EXPORTFS=m
CONFIG_NFS_COMMON=y
-CONFIG_SUNRPC=m
-CONFIG_SUNRPC_GSS=m
-CONFIG_RPCSEC_GSS_KRB5=m
+CONFIG_SUNRPC=y
+CONFIG_SUNRPC_GSS=y
+CONFIG_RPCSEC_GSS_KRB5=y
# CONFIG_RPCSEC_GSS_SPKM3 is not set
# CONFIG_SMB_FS is not set
# CONFIG_CIFS is not set
@@ -1250,13 +1266,13 @@ CONFIG_CRYPTO=y
CONFIG_CRYPTO_HMAC=y
CONFIG_CRYPTO_NULL=m
CONFIG_CRYPTO_MD4=m
-CONFIG_CRYPTO_MD5=m
+CONFIG_CRYPTO_MD5=y
CONFIG_CRYPTO_SHA1=m
CONFIG_CRYPTO_SHA256=m
CONFIG_CRYPTO_SHA512=m
CONFIG_CRYPTO_WP512=m
CONFIG_CRYPTO_TGR192=m
-CONFIG_CRYPTO_DES=m
+CONFIG_CRYPTO_DES=y
CONFIG_CRYPTO_BLOWFISH=m
CONFIG_CRYPTO_TWOFISH=m
CONFIG_CRYPTO_SERPENT=m
@@ -1283,7 +1299,7 @@ CONFIG_CRC_CCITT=m
CONFIG_CRC16=m
CONFIG_CRC32=y
CONFIG_LIBCRC32C=m
-CONFIG_ZLIB_INFLATE=y
+CONFIG_ZLIB_INFLATE=m
CONFIG_ZLIB_DEFLATE=m
CONFIG_REED_SOLOMON=m
CONFIG_REED_SOLOMON_DEC16=y
diff --git a/packages/linux/linux-ezx/defconfig-e680 b/packages/linux/linux-ezx/defconfig-e680
index 9f57ea29f8..97d1602f20 100644
--- a/packages/linux/linux-ezx/defconfig-e680
+++ b/packages/linux/linux-ezx/defconfig-e680
@@ -1,7 +1,7 @@
#
# Automatically generated make config: don't edit
# Linux kernel version: 2.6.16.13
-# Fri Jun 2 15:01:31 2006
+# Thu May 18 19:40:25 2006
#
CONFIG_ARM=y
CONFIG_MMU=y
@@ -153,8 +153,8 @@ CONFIG_XSCALE_PMU=y
#
# Kernel Features
#
-CONFIG_PREEMPT=y
-CONFIG_NO_IDLE_HZ=y
+# CONFIG_PREEMPT is not set
+# CONFIG_NO_IDLE_HZ is not set
# CONFIG_AEABI is not set
# CONFIG_ARCH_DISCONTIGMEM_ENABLE is not set
CONFIG_SELECT_MEMORY_MODEL=y
@@ -172,7 +172,7 @@ CONFIG_ALIGNMENT_TRAP=y
#
CONFIG_ZBOOT_ROM_TEXT=0x0
CONFIG_ZBOOT_ROM_BSS=0x0
-CONFIG_CMDLINE="console=ttyS2,115200n8 console=tty1 noinitrd root=/dev/mmcblk0p1 rootfstype=ext3 rootdelay=5 ip=192.168.1.2:192.168.1.10:192.168.1.10:255.255.255.0:ezx:usb0:off debug"
+CONFIG_CMDLINE="mem=32M root=/dev/mmcblk0p1 rootfstype=ext3 rootdelay=1 ip=192.168.1.2:192.168.1.10:192.168.1.10:255.255.255.0:ezx:usb0:off console=ttyS2,115200n8 console=tty0"
# CONFIG_XIP_KERNEL is not set
#
@@ -221,7 +221,10 @@ CONFIG_INET=y
# CONFIG_IP_MULTICAST is not set
# CONFIG_IP_ADVANCED_ROUTER is not set
CONFIG_IP_FIB_HASH=y
-# CONFIG_IP_PNP is not set
+CONFIG_IP_PNP=y
+# CONFIG_IP_PNP_DHCP is not set
+# CONFIG_IP_PNP_BOOTP is not set
+# CONFIG_IP_PNP_RARP is not set
# CONFIG_NET_IPIP is not set
# CONFIG_NET_IPGRE is not set
# CONFIG_ARPD is not set
@@ -853,7 +856,8 @@ CONFIG_SPI_BITBANG=m
CONFIG_NEW_LEDS=y
CONFIG_LEDS_CLASS=y
CONFIG_LEDS_TRIGGERS=y
-CONFIG_LEDS_EZX=m
+CONFIG_LEDS_E680=m
+# CONFIG_LEDS_A780 is not set
CONFIG_LEDS_TRIGGER_TIMER=y
#
@@ -908,8 +912,9 @@ CONFIG_LOGO_LINUX_MONO=y
CONFIG_LOGO_LINUX_VGA16=y
CONFIG_LOGO_LINUX_CLUT224=y
CONFIG_BACKLIGHT_LCD_SUPPORT=y
-CONFIG_BACKLIGHT_CLASS_DEVICE=m
+CONFIG_BACKLIGHT_CLASS_DEVICE=y
CONFIG_BACKLIGHT_DEVICE=y
+CONFIG_BACKLIGHT_EZX=m
CONFIG_LCD_CLASS_DEVICE=m
CONFIG_LCD_DEVICE=y
@@ -1130,7 +1135,7 @@ CONFIG_CONFIGFS_FS=m
# CONFIG_EFS_FS is not set
# CONFIG_JFFS_FS is not set
# CONFIG_JFFS2_FS is not set
-CONFIG_CRAMFS=y
+CONFIG_CRAMFS=m
# CONFIG_VXFS_FS is not set
# CONFIG_HPFS_FS is not set
# CONFIG_QNX4FS_FS is not set
@@ -1140,7 +1145,7 @@ CONFIG_CRAMFS=y
#
# Network File Systems
#
-CONFIG_NFS_FS=m
+CONFIG_NFS_FS=y
CONFIG_NFS_V3=y
# CONFIG_NFS_V3_ACL is not set
CONFIG_NFS_V4=y
@@ -1150,13 +1155,14 @@ CONFIG_NFSD_V3=y
# CONFIG_NFSD_V3_ACL is not set
# CONFIG_NFSD_V4 is not set
CONFIG_NFSD_TCP=y
-CONFIG_LOCKD=m
+CONFIG_ROOT_NFS=y
+CONFIG_LOCKD=y
CONFIG_LOCKD_V4=y
CONFIG_EXPORTFS=m
CONFIG_NFS_COMMON=y
-CONFIG_SUNRPC=m
-CONFIG_SUNRPC_GSS=m
-CONFIG_RPCSEC_GSS_KRB5=m
+CONFIG_SUNRPC=y
+CONFIG_SUNRPC_GSS=y
+CONFIG_RPCSEC_GSS_KRB5=y
# CONFIG_RPCSEC_GSS_SPKM3 is not set
# CONFIG_SMB_FS is not set
# CONFIG_CIFS is not set
@@ -1230,7 +1236,6 @@ CONFIG_LOG_BUF_SHIFT=14
# CONFIG_DETECT_SOFTLOCKUP is not set
# CONFIG_SCHEDSTATS is not set
# CONFIG_DEBUG_SLAB is not set
-CONFIG_DEBUG_PREEMPT=y
# CONFIG_DEBUG_MUTEXES is not set
# CONFIG_DEBUG_SPINLOCK is not set
# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
@@ -1261,13 +1266,13 @@ CONFIG_CRYPTO=y
CONFIG_CRYPTO_HMAC=y
CONFIG_CRYPTO_NULL=m
CONFIG_CRYPTO_MD4=m
-CONFIG_CRYPTO_MD5=m
+CONFIG_CRYPTO_MD5=y
CONFIG_CRYPTO_SHA1=m
CONFIG_CRYPTO_SHA256=m
CONFIG_CRYPTO_SHA512=m
CONFIG_CRYPTO_WP512=m
CONFIG_CRYPTO_TGR192=m
-CONFIG_CRYPTO_DES=m
+CONFIG_CRYPTO_DES=y
CONFIG_CRYPTO_BLOWFISH=m
CONFIG_CRYPTO_TWOFISH=m
CONFIG_CRYPTO_SERPENT=m
@@ -1294,7 +1299,7 @@ CONFIG_CRC_CCITT=m
CONFIG_CRC16=m
CONFIG_CRC32=y
CONFIG_LIBCRC32C=m
-CONFIG_ZLIB_INFLATE=y
+CONFIG_ZLIB_INFLATE=m
CONFIG_ZLIB_DEFLATE=m
CONFIG_REED_SOLOMON=m
CONFIG_REED_SOLOMON_DEC16=y
diff --git a/packages/linux/linux-ezx/e680-leds-r1.patch b/packages/linux/linux-ezx/e680-leds-r1.patch
new file mode 100644
index 0000000000..abbab2937d
--- /dev/null
+++ b/packages/linux/linux-ezx/e680-leds-r1.patch
@@ -0,0 +1,374 @@
+
+#
+# Patch managed by http://www.mn-logistik.de/unsupported/pxa250/patcher
+#
+
+--- linux-2.6.16/arch/arm/mach-pxa/ezx.c~e680-leds-r0.patch 2006-06-06 17:14:06.000000000 +0200
++++ linux-2.6.16/arch/arm/mach-pxa/ezx.c 2006-06-06 17:23:14.000000000 +0200
+@@ -357,6 +357,17 @@
+ .num_resources = ARRAY_SIZE(ezx_backlight_resources),
+ };
+
++#ifdef CONFIG_PXA_EZX_E680
++/*
++ * E680 LEDs
++ */
++static struct platform_device e680led_device = {
++ .name = "e680-led",
++ .id = -1,
++};
++#endif
++
++
+ /* keyboard */
+
+ #if defined(CONFIG_PXA_EZX_V700)
+@@ -766,6 +777,9 @@
+
+ static struct platform_device *devices[] __initdata = {
+ &ezx_bp_device,
++#ifdef CONFIG_PXA_EZX_E680
++ &e680led_device,
++#endif
+ };
+
+ static void __init
+--- linux-2.6.16/drivers/leds/Kconfig~e680-leds-r0.patch 2006-06-06 17:14:05.000000000 +0200
++++ linux-2.6.16/drivers/leds/Kconfig 2006-06-06 17:23:14.000000000 +0200
+@@ -59,6 +59,13 @@
+ This option enables support for the LEDs on Sharp Zaurus
+ SL-6000 series.
+
++config LEDS_E680
++ tristate "LED Support for the Motorola E680(i) GSM Phone"
++ depends LEDS_CLASS && PXA_EZX_E680
++ help
++ This options enables support for the LEDs on the
++ Motorola E680(i) GSM Phone.
++
+ config LEDS_TRIGGER_TIMER
+ tristate "LED Timer Trigger"
+ depends LEDS_TRIGGERS
+--- linux-2.6.16/drivers/leds/Makefile~e680-leds-r0.patch 2006-06-06 17:14:05.000000000 +0200
++++ linux-2.6.16/drivers/leds/Makefile 2006-06-06 17:23:14.000000000 +0200
+@@ -10,7 +10,8 @@
+ obj-$(CONFIG_LEDS_SPITZ) += leds-spitz.o
+ obj-$(CONFIG_LEDS_IXP4XX) += leds-ixp4xx-gpio.o
+ obj-$(CONFIG_LEDS_TOSA) += leds-tosa.o
++obj-$(CONFIG_LEDS_E680) += leds-e680.o
+
+ # LED Triggers
+ obj-$(CONFIG_LEDS_TRIGGER_TIMER) += ledtrig-timer.o
+-obj-$(CONFIG_LEDS_TRIGGER_IDE_DISK) += ledtrig-ide-disk.o
+\ Kein Zeilenumbruch am Dateiende.
++obj-$(CONFIG_LEDS_TRIGGER_IDE_DISK) += ledtrig-ide-disk.o
+--- /dev/null 2006-06-06 16:58:36.577045136 +0200
++++ linux-2.6.16/drivers/leds/leds-e680.c 2006-06-06 17:55:46.000000000 +0200
+@@ -0,0 +1,307 @@
++/*
++ * EZX Platform LED Driver for the Motorola E680(i) GSM Phone
++ *
++ * Copyright 2006 Vanille-Media
++ *
++ * Author: Michael Lauer <mickey@Vanille.de>
++ *
++ * Based on the Motorola 2.4 leds-e680.c and leds-corgi.c by Richard Purdie
++ *
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License version 2 as
++ * published by the Free Software Foundation.
++ *
++ */
++
++#include <linux/config.h>
++#include <linux/delay.h>
++#include <linux/kernel.h>
++#include <linux/init.h>
++#include <linux/platform_device.h>
++#include <linux/leds.h>
++#include <asm/mach-types.h>
++#include <asm/arch/hardware.h>
++#include <asm/arch/pxa-regs.h>
++#include <asm/arch/ezx-pcap.h>
++
++//FIXME move defines to a common header file
++#define IND_CNTL_R_BUL 46
++#define IND_CNTL_G_BUL 47
++#define SSP_PCAP_LED_MASK 0x000fffe0
++#define SSP_PCAP_LED_SHIFT 5
++#define GPIO_TC_MM_EN 99
++
++static enum led_brightness old_red;
++static enum led_brightness old_green;
++static enum led_brightness old_blue;
++
++typedef struct {
++ unsigned char ind_GPIO_red; /*Indicator Red control GPIO 46: 0 active, 1 disactive*/
++ unsigned char ind_GPIO_green; /*Indicator Green control GPIO 47: 0 active, 1 disactive*/
++ unsigned char pcap_LEDR_en; /*pcap LEDR_EN bit value: 1 =Red LED(&Green) sink circuit enabled*/
++ unsigned char pcap_LEDG_en; /*pcap LEDG_EN bit value:1 =Green(->Blue)LED sink circuit enabled*/
++ unsigned char pcap_LEDR_CTRL; /* 4bits Sets the timing for the red(&Green) LED sink circuit*/
++ unsigned char pcap_LEDG_CTRL; /* 4bits Sets the timing for the GREEN (->Blue) LED sink circuit*/
++ unsigned char pcap_LEDR_I; /* 2 bits 00 3mA,01 4mA, 10 5mA, 11 9mA, sets the pulsed current level for LEDR*/
++ unsigned char pcap_LEDG_I; /* 2 bits 00 3mA,01 4mA, 10 5mA, 11 9mA, sets the pulsed current level for LEDG*/
++ unsigned char pcap_SKIP_on; /*1=The ON timing sequence defined by LEDx_CTRL is executed on every other cycle*/
++} PCAP2_LED_REGISTER_VALUE;
++
++const PCAP2_LED_REGISTER_VALUE led_register_value[]=
++{
++ /* on/off pulsepower timing intensity */
++ {0x1,0x1, 0x0,0x0, 0x0,0x0, 0x0,0x0,0x0}, /* OFF */
++ {0x0,0x1, 0x1,0x0, 0xc,0x0, 0x1,0x0,0x0}, /* RED */
++ {0x1,0x0, 0x1,0x0, 0xc,0x0, 0x1,0x0,0x0}, /* GREEN */
++ {0x0,0x0, 0x1,0x0, 0xc,0x0, 0x1,0x0,0x0}, /* ORANGE = RED + GREEN */
++ {0x1,0x1, 0x0,0x1, 0x0,0xc, 0x0,0x0,0x0}, /* BLUE */
++ {0x0,0x1, 0x1,0x1, 0xc,0xc, 0x1,0x0,0x0}, /* LIGHT_RED = RED + BLUE */
++ {0x1,0x0, 0x1,0x1, 0xc,0xc, 0x1,0x0,0x0}, /* LIGHT_GREEN = GREEN + BLUE */
++ {0x0,0x0, 0x1,0x1, 0xc,0xc, 0x1,0x0,0x0}, /* WHITE = RED + GREEN + BLUE */
++};
++
++static void e680led_led_set( enum led_brightness red, enum led_brightness green, enum led_brightness blue )
++{
++ printk( KERN_DEBUG "e680led_led_set: red=%d, green=%d, blue=%d", red, green, blue );
++ unsigned int tempValue = 0;
++ unsigned int value = 0;
++ unsigned int stateIndex = 0;
++ unsigned char gpio_red, gpio_green, ledr_en, ledg_en, ledr_ctrl, ledg_ctrl, ledr_i, ledg_i,skip;
++
++ stateIndex = ( ( blue << 2 ) | ( green << 1 ) | ( red ) ) & 0x7;
++ printk( KERN_DEBUG "LED stateIndex is %d", stateIndex );
++ gpio_red = led_register_value[stateIndex].ind_GPIO_red & 0x1;
++ gpio_green = led_register_value[stateIndex].ind_GPIO_green & 0x1;
++ ledr_en = led_register_value[stateIndex].pcap_LEDR_en & 0x1;
++ ledg_en = led_register_value[stateIndex].pcap_LEDG_en & 0x1;
++ ledr_ctrl = led_register_value[stateIndex].pcap_LEDR_CTRL & 0xf;
++ ledg_ctrl = led_register_value[stateIndex].pcap_LEDG_CTRL & 0xf;
++ ledr_i = led_register_value[stateIndex].pcap_LEDR_I & 0x3;
++ ledg_i = led_register_value[stateIndex].pcap_LEDG_I & 0x3;
++ skip = led_register_value[stateIndex].pcap_SKIP_on & 0x1;
++
++ /* disable LEDs */
++ if( ezx_pcap_read(SSP_PCAP_ADJ_PERIPH_REGISTER,&tempValue) != SSP_PCAP_SUCCESS )
++ {
++ printk( KERN_WARNING "LED PCAP Read Failed\n" );
++ return;
++ }
++ tempValue &= (~SSP_PCAP_LED_MASK);
++ if( ezx_pcap_write(SSP_PCAP_ADJ_PERIPH_REGISTER,tempValue) != SSP_PCAP_SUCCESS )
++ {
++ printk( KERN_WARNING "LED PCAP Write Failed (Clear Data)\n" );
++ return;
++ }
++
++ /* configure GPIOs as output */
++ pxa_gpio_mode(IND_CNTL_R_BUL | GPIO_OUT);
++ pxa_gpio_mode(IND_CNTL_G_BUL | GPIO_OUT);
++
++ //FIXME: Simplify this logic
++ if ( (gpio_green && gpio_red) )
++ {
++ /*Disable Red & Green signal*/
++ set_GPIO(IND_CNTL_R_BUL); /*IND_CNTL_R_BUL Low active*/
++ PGSR(IND_CNTL_R_BUL) = PGSR(IND_CNTL_R_BUL) | GPIO_bit(IND_CNTL_R_BUL);
++
++ clr_GPIO(IND_CNTL_G_BUL); /*IND_CNTL_G_BUL High active*/
++ PGSR(IND_CNTL_G_BUL) = PGSR(IND_CNTL_G_BUL) & (~GPIO_bit(IND_CNTL_G_BUL));
++
++ printk( KERN_DEBUG "LED GPIO Green & Red Disable\n");
++ } else if ( gpio_green && !gpio_red )
++ {
++ /*Green Disable, Red Enable*/
++ clr_GPIO(IND_CNTL_R_BUL);
++ PGSR(IND_CNTL_R_BUL) = PGSR(IND_CNTL_R_BUL) & (~GPIO_bit(IND_CNTL_R_BUL));
++
++ clr_GPIO(IND_CNTL_G_BUL);
++ PGSR(IND_CNTL_G_BUL) = PGSR(IND_CNTL_G_BUL) & (~GPIO_bit(IND_CNTL_G_BUL));
++
++ printk( KERN_DEBUG "LED GPIO Green Disable, Red Enable\n");
++ } else if (gpio_red && !gpio_green )
++ {
++ /*Red Disable, Green Enable*/
++ set_GPIO(IND_CNTL_R_BUL);
++ PGSR(IND_CNTL_R_BUL) = PGSR(IND_CNTL_R_BUL) | GPIO_bit(IND_CNTL_R_BUL);
++
++ set_GPIO(IND_CNTL_G_BUL);
++ PGSR(IND_CNTL_G_BUL) = PGSR(IND_CNTL_G_BUL) | GPIO_bit(IND_CNTL_G_BUL);
++ printk( KERN_DEBUG "LED GPIO Red Disable, Green Enable");
++ }else
++ {
++ /*Red & Green enable*/
++ clr_GPIO(IND_CNTL_R_BUL);
++ PGSR(IND_CNTL_R_BUL) = PGSR(IND_CNTL_R_BUL) & (~GPIO_bit(IND_CNTL_R_BUL));
++
++ set_GPIO(IND_CNTL_G_BUL);
++ PGSR(IND_CNTL_G_BUL) = PGSR(IND_CNTL_G_BUL) | GPIO_bit(IND_CNTL_G_BUL);
++ printk( KERN_DEBUG "LED GPIO Red & Green Enable\n");
++ }
++
++ /* Write PCAP LED Peripheral Control Register*/
++ value = ( ledr_en | (ledg_en <<1) | (ledr_ctrl <<2) | (ledg_ctrl <<6) |
++ (ledr_i << 10) | (ledg_i <<12) | (skip <<14) ) & 0x7fff;
++ tempValue |= (value <<SSP_PCAP_LED_SHIFT);
++
++ if ( ezx_pcap_write(SSP_PCAP_ADJ_PERIPH_REGISTER,tempValue) == SSP_PCAP_SUCCESS )
++ {
++ printk( KERN_DEBUG "LED PCAP Write Success (0x%x :0x%x)\n",tempValue,value);
++ old_red = red;
++ old_green = green;
++ old_blue = blue;
++ return;
++ } else {
++ printk( KERN_DEBUG "LED PCAP Write Failed (State Change)\n");
++ return;
++ }
++}
++
++static void e680led_red_set(struct led_classdev *led_cdev, enum led_brightness value)
++{
++ printk( KERN_DEBUG "e680led_red_set: %d\n", value );
++ e680led_led_set( 1 && value, old_green, old_blue );
++}
++
++static void e680led_green_set(struct led_classdev *led_cdev, enum led_brightness value)
++{
++ printk( KERN_DEBUG "e680led_green_set: %d\n", value );
++ e680led_led_set( old_red, 1 && value, old_blue );
++}
++
++static void e680led_blue_set(struct led_classdev *led_cdev, enum led_brightness value)
++{
++ printk( KERN_DEBUG "e680led_blue_set: %d\n", value );
++ e680led_led_set( old_red, old_green, 1 && value );
++}
++
++static void e680led_keypad_set(struct led_classdev *led_cdev, enum led_brightness value)
++{
++ /* this is not working yet, as there is something else missing */
++#if 0
++ printk( KERN_DEBUG "e680led_keypad_set: %d\n", value );
++
++ pxa_gpio_mode(GPIO_TC_MM_EN);
++ GPDR(GPIO_TC_MM_EN) |= GPIO_bit(GPIO_TC_MM_EN);
++ GPSR(GPIO_TC_MM_EN) = GPIO_bit(GPIO_TC_MM_EN);
++
++ udelay( 100 );
++
++ if ( value ) {
++ GPCR(GPIO_TC_MM_EN) = GPIO_bit(GPIO_TC_MM_EN);
++ PGSR3 &= ~GPIO_bit(GPIO_TC_MM_EN);
++ } else {
++ GPSR(GPIO_TC_MM_EN) = GPIO_bit(GPIO_TC_MM_EN);
++ PGSR3 |= GPIO_bit(GPIO_TC_MM_EN);
++ }
++#endif
++}
++
++static struct led_classdev e680_red_led = {
++ .name = "e680:red",
++ .default_trigger = "none",
++ .brightness_set = e680led_red_set,
++};
++
++static struct led_classdev e680_green_led = {
++ .name = "e680:green",
++ .default_trigger = "none",
++ .brightness_set = e680led_green_set,
++};
++
++static struct led_classdev e680_blue_led = {
++ .name = "e680:blue",
++ .default_trigger = "none",
++ .brightness_set = e680led_blue_set,
++};
++
++static struct led_classdev e680_keypad_led = {
++ .name = "e680:keypad",
++ .default_trigger = "none",
++ .brightness_set = e680led_keypad_set,
++};
++
++#ifdef CONFIG_PM
++static int e680led_suspend(struct platform_device *dev, pm_message_t state)
++{
++ led_classdev_suspend(&e680_red_led);
++ led_classdev_suspend(&e680_green_led);
++ led_classdev_suspend(&e680_blue_led);
++ led_classdev_suspend(&e680_keypad_led);
++ return 0;
++}
++
++static int e680led_resume(struct platform_device *dev)
++{
++ led_classdev_resume(&e680_red_led);
++ led_classdev_resume(&e680_green_led);
++ led_classdev_resume(&e680_blue_led);
++ led_classdev_resume(&e680_keypad_led);
++ return 0;
++}
++#endif
++
++static int e680led_probe(struct platform_device *pdev)
++{
++ int ret;
++
++ ret = led_classdev_register(&pdev->dev, &e680_red_led);
++ if (ret < 0)
++ return ret;
++
++ ret = led_classdev_register(&pdev->dev, &e680_green_led);
++ if (ret < 0)
++ led_classdev_unregister(&e680_red_led);
++
++ ret = led_classdev_register(&pdev->dev, &e680_blue_led);
++ if (ret < 0) {
++ led_classdev_unregister(&e680_red_led);
++ led_classdev_unregister(&e680_green_led);
++ }
++
++ ret = led_classdev_register(&pdev->dev, &e680_keypad_led);
++ if (ret < 0) {
++ led_classdev_unregister(&e680_red_led);
++ led_classdev_unregister(&e680_green_led);
++ led_classdev_unregister(&e680_blue_led);
++ }
++ return ret;
++}
++
++static int e680led_remove(struct platform_device *pdev)
++{
++ led_classdev_unregister(&e680_red_led);
++ led_classdev_unregister(&e680_green_led);
++ led_classdev_unregister(&e680_blue_led);
++ led_classdev_unregister(&e680_keypad_led);
++ return 0;
++}
++
++static struct platform_driver e680led_driver = {
++ .probe = e680led_probe,
++ .remove = e680led_remove,
++#ifdef CONFIG_PM
++ .suspend = e680led_suspend,
++ .resume = e680led_resume,
++#endif
++ .driver = {
++ .name = "e680-led",
++ },
++};
++
++static int __init e680led_init(void)
++{
++ return platform_driver_register(&e680led_driver);
++}
++
++static void __exit e680led_exit(void)
++{
++ e680led_led_set( 0, 0, 0 );
++ platform_driver_unregister(&e680led_driver);
++}
++
++module_init(e680led_init);
++module_exit(e680led_exit);
++
++MODULE_AUTHOR("Michael Lauer <mickey@Vanille.de>");
++MODULE_DESCRIPTION("Motorola E680 LED driver");
++MODULE_LICENSE("GPL");
diff --git a/packages/linux/linux-ezx/ezx-backlight-r0.patch b/packages/linux/linux-ezx/ezx-backlight-r0.patch
new file mode 100644
index 0000000000..db917300c2
--- /dev/null
+++ b/packages/linux/linux-ezx/ezx-backlight-r0.patch
@@ -0,0 +1,212 @@
+
+#
+# Patch managed by http://www.mn-logistik.de/unsupported/pxa250/patcher
+#
+
+--- linux-2.6.16/arch/arm/mach-pxa/ezx.c~ezx-backlight-r0.patch 2006-06-07 16:00:29.000000000 +0200
++++ linux-2.6.16/arch/arm/mach-pxa/ezx.c 2006-06-07 16:21:09.000000000 +0200
+@@ -344,17 +344,12 @@
+ .pxafb_lcd_power = &pxafb_lcd_power,
+ };
+
+-
+-/* backlight for lcd */
+-
+-static struct resource ezx_backlight_resources[] = {
+-};
+-
+-static struct platform_device ezx_backlight_device = {
+- .name = "ezx-lcd-backlight",
++/*
++ * EZX LCD Backlight
++ */
++static struct platform_device ezxbacklight_device = {
++ .name = "ezx-bl",
+ .id = -1,
+- .resource = ezx_backlight_resources,
+- .num_resources = ARRAY_SIZE(ezx_backlight_resources),
+ };
+
+ #ifdef CONFIG_PXA_EZX_E680
+@@ -786,6 +781,7 @@
+
+ static struct platform_device *devices[] __initdata = {
+ &ezx_bp_device,
++ &ezxbacklight_device,
+ #ifdef CONFIG_PXA_EZX_E680
+ &e680led_device,
+ #endif
+--- linux-2.6.16/drivers/video/backlight/Kconfig~ezx-backlight-r0.patch 2006-06-07 16:00:28.000000000 +0200
++++ linux-2.6.16/drivers/video/backlight/Kconfig 2006-06-07 16:00:30.000000000 +0200
+@@ -58,3 +58,12 @@
+ If you have a HP Jornada 680, say y to enable the
+ backlight driver.
+
++config BACKLIGHT_EZX
++ tristate "Motorola EXZ Backlight Driver (A780/E680/E680i)"
++ depends on BACKLIGHT_DEVICE && PXA_EZX
++ default y
++ help
++ If you have a Motorola A780 or E680(i), say y to enable the
++ backlight driver.
++
++
+--- linux-2.6.16/drivers/video/backlight/Makefile~ezx-backlight-r0.patch 2006-03-20 06:53:29.000000000 +0100
++++ linux-2.6.16/drivers/video/backlight/Makefile 2006-06-07 16:00:30.000000000 +0200
+@@ -5,3 +5,5 @@
+ obj-$(CONFIG_BACKLIGHT_CORGI) += corgi_bl.o
+ obj-$(CONFIG_BACKLIGHT_HP680) += hp680_bl.o
+ obj-$(CONFIG_SHARP_LOCOMO) += locomolcd.o
++obj-$(CONFIG_BACKLIGHT_EZX) += ezx_bl.o
++
+--- /dev/null 2006-06-07 15:54:31.503752232 +0200
++++ linux-2.6.16/drivers/video/backlight/ezx_bl.c 2006-06-07 16:51:14.000000000 +0200
+@@ -0,0 +1,148 @@
++/*
++ * Backlight Driver for Motorola A780 and E680(i) GSM Phones.
++ *
++ * Copyright 2006 Vanille Media
++ *
++ * Author: Michael Lauer <mickey@Vanille.de>
++ *
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License version 2 as
++ * published by the Free Software Foundation.
++ *
++ */
++
++#include <linux/module.h>
++#include <linux/kernel.h>
++#include <linux/init.h>
++#include <linux/platform_device.h>
++#include <linux/spinlock.h>
++#include <linux/fb.h>
++#include <linux/backlight.h>
++
++#include <asm/arch/pxa-regs.h>
++#include <asm/arch/ezx.h>
++
++#define EZX_MAX_INTENSITY 50
++#define EZX_DEFAULT_INTENSITY 25
++
++static spinlock_t bl_lock = SPIN_LOCK_UNLOCKED;
++static struct backlight_properties ezxbl_data;
++static struct backlight_device *ezx_backlight_device;
++static int current_intensity;
++
++static int ezx_send_intensity(struct backlight_device *bd)
++{
++ unsigned long flags;
++ int intensity = bd->props->brightness;
++
++ printk( KERN_DEBUG "ezx_set_intensity to %d", intensity );
++
++ if (bd->props->power != FB_BLANK_UNBLANK)
++ intensity = 0;
++ if (bd->props->fb_blank != FB_BLANK_UNBLANK)
++ intensity = 0;
++
++ spin_lock_irqsave(&bl_lock, flags);
++
++ PWM_CTRL0 = 2; /* pre-scaler */
++ PWM_PWDUTY0 = intensity; /* duty cycle */
++ PWM_PERVAL0 = 49; /* period */
++
++ if (intensity) {
++ //pxa_set_cken(CKEN0_PWM0, 1);
++ //FIXME: Set PWM0 GPIO as output
++ } else {
++ //pxa_set_cken(CKEN0_PWM0, 0);
++ //FIXME: Set PWM0 GPIO as input
++ }
++
++ spin_unlock_irqrestore(&bl_lock, flags);
++ current_intensity = intensity;
++ return 0;
++}
++
++static int ezx_get_intensity(struct backlight_device *bd)
++{
++ return current_intensity;
++}
++
++static int ezx_set_intensity(struct backlight_device *bd)
++{
++ return ezx_send_intensity(ezx_backlight_device);
++}
++
++#ifdef CONFIG_PM
++static int ezx_bl_suspend(struct platform_device *pdev, pm_message_t state)
++{
++ //set suspend flag
++ ezx_set_intensity(ezx_backlight_device);
++ return 0;
++}
++
++static int ezx_bl_resume(struct platform_device *pdev)
++{
++ // set resume flag
++ ezx_set_intensity(ezx_backlight_device);
++ return 0;
++}
++#else
++#define ezx_bl_suspend NULL
++#define ezx_bl_resume NULL
++#endif
++
++static struct backlight_properties ezx_bl_data = {
++ .owner = THIS_MODULE,
++ .get_brightness = ezx_get_intensity,
++ .max_brightness = EZX_MAX_INTENSITY,
++ .update_status = ezx_set_intensity,
++};
++
++static int __init ezx_bl_probe(struct platform_device *pdev)
++{
++ ezx_backlight_device = backlight_device_register ("ezx-bl",
++ NULL, &ezx_bl_data);
++ if (IS_ERR (ezx_backlight_device))
++ return PTR_ERR (ezx_backlight_device);
++
++ //ezx_bl_data.requested_brightness = EZX_DEFAULT_INTENSITY;
++ //ezx_bl_data.requested_power = FB_BLANK_UNBLANK;
++ //ezx_set_intensity(ezx_backlight_device, ezx_bl_data.requested_brightness);
++