diff options
| author | Frans Meulenbroeks <fransmeulenbroeks@yahoo.com> | 2006-06-07 20:06:48 +0000 |
|---|---|---|
| committer | OpenEmbedded Project <openembedded-devel@lists.openembedded.org> | 2006-06-07 20:06:48 +0000 |
| commit | 9c685878a4f054562e8a2bddcf195ae44aac3484 (patch) | |
| tree | 1caf03e286a952e88006bc1f3891820184f22d07 /packages/linux | |
| parent | 82281183231cf5d72da214e42e7340bfcd900e13 (diff) | |
| parent | 759e5b0223f56d360fdd1e2eda81aac574089dda (diff) | |
merge of 0fbcc5da7abe05787c6a591e53e9072cb3b115d5
and 99f9fc9ea4f05af6472ec5a42c5a6516440654e6
Diffstat (limited to 'packages/linux')
| -rw-r--r-- | packages/linux/linux-ezx/a780-leds-r0.patch | 185 | ||||
| -rw-r--r-- | packages/linux/linux-ezx/defconfig-a780 | 42 | ||||
| -rw-r--r-- | packages/linux/linux-ezx/defconfig-e680 | 39 | ||||
| -rw-r--r-- | packages/linux/linux-ezx/e680-leds-r1.patch | 374 | ||||
| -rw-r--r-- | packages/linux/linux-ezx/ezx-backlight-r0.patch | 212 | ||||
| -rw-r--r-- | packages/linux/linux-ezx/led_ezx-r0.patch | 174 | ||||
| -rw-r--r-- | packages/linux/linux-ezx_2.6.16.13.bb | 18 | ||||
| -rw-r--r-- | packages/linux/logicpd-pxa270-2.6.17-rc5/.mtn2git_empty | 0 | ||||
| -rw-r--r-- | packages/linux/logicpd-pxa270-2.6.17-rc5/linux-2.6.17-rc5.patch | 2183 | ||||
| -rw-r--r-- | packages/linux/logicpd-pxa270_2.6.17-rc5.bb | 33 |
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); ++ |
