summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xpackages/linux/linux-ezx-2.6.21/a1200/defconfig1
-rw-r--r--packages/linux/linux-ezx-2.6.21/patches/a1200-eoc.patch82
-rwxr-xr-xpackages/linux/linux-ezx-2.6.21/patches/a1200-mci.patch6
-rw-r--r--packages/linux/linux-ezx-2.6.21/patches/a1200-pcap.patch36
-rwxr-xr-xpackages/linux/linux-ezx-2.6.21/patches/a1200-ts.patch10
-rw-r--r--packages/linux/linux-ezx-2.6.21/patches/a780-emu.patch6
-rwxr-xr-xpackages/linux/linux-ezx-2.6.21/patches/a780-flip.patch6
-rwxr-xr-xpackages/linux/linux-ezx-2.6.21/patches/a780-kbd.patch8
-rwxr-xr-xpackages/linux/linux-ezx-2.6.21/patches/a780-leds.patch36
-rwxr-xr-xpackages/linux/linux-ezx-2.6.21/patches/a780-mci.patch6
-rw-r--r--packages/linux/linux-ezx-2.6.21/patches/a780-pcap.patch54
-rwxr-xr-xpackages/linux/linux-ezx-2.6.21/patches/a780-ts.patch6
-rwxr-xr-xpackages/linux/linux-ezx-2.6.21/patches/a780-vibrator.patch83
-rw-r--r--packages/linux/linux-ezx-2.6.21/patches/asoc-fix-loopback.patch14
-rwxr-xr-xpackages/linux/linux-ezx-2.6.21/patches/asoc-pxa-ssp.patch14
-rw-r--r--packages/linux/linux-ezx-2.6.21/patches/e680-emu.patch6
-rwxr-xr-xpackages/linux/linux-ezx-2.6.21/patches/e680-kbd.patch8
-rwxr-xr-xpackages/linux/linux-ezx-2.6.21/patches/e680-leds.patch20
-rwxr-xr-xpackages/linux/linux-ezx-2.6.21/patches/e680-locksw.patch6
-rwxr-xr-xpackages/linux/linux-ezx-2.6.21/patches/e680-mci.patch6
-rw-r--r--packages/linux/linux-ezx-2.6.21/patches/e680-pcap.patch54
-rwxr-xr-xpackages/linux/linux-ezx-2.6.21/patches/e680-ts.patch6
-rw-r--r--packages/linux/linux-ezx-2.6.21/patches/ezx-asoc.patch1053
-rwxr-xr-xpackages/linux/linux-ezx-2.6.21/patches/ezx-bp.patch33
-rwxr-xr-xpackages/linux/linux-ezx-2.6.21/patches/ezx-emu.patch78
-rw-r--r--packages/linux/linux-ezx-2.6.21/patches/ezx-eoc.patch342
-rwxr-xr-xpackages/linux/linux-ezx-2.6.21/patches/ezx-mtd-map.patch24
-rwxr-xr-xpackages/linux/linux-ezx-2.6.21/patches/ezx-pcap.patch1218
-rw-r--r--packages/linux/linux-ezx-2.6.21/patches/i2c-core-fix-a1200.patch15
-rwxr-xr-xpackages/linux/linux-ezx-2.6.21/patches/pcap-ts.patch143
-rw-r--r--packages/linux/linux-ezx-2.6.21/patches/pxa27x-udc-fix-a1200.patch35
-rw-r--r--packages/linux/linux-ezx_2.6.21.bb7
32 files changed, 1796 insertions, 1626 deletions
diff --git a/packages/linux/linux-ezx-2.6.21/a1200/defconfig b/packages/linux/linux-ezx-2.6.21/a1200/defconfig
index 5a089bc1bb..ea7475ced2 100755
--- a/packages/linux/linux-ezx-2.6.21/a1200/defconfig
+++ b/packages/linux/linux-ezx-2.6.21/a1200/defconfig
@@ -152,6 +152,7 @@ CONFIG_PXA_EZX_A1200=y
# CONFIG_PXA_EZX_E6 is not set
CONFIG_EZX_BP=y
CONFIG_EZX_PCAP=y
+CONFIG_EZX_EOC=y
CONFIG_EZX_EMU=y
CONFIG_EZX_EMU_USB=y
# CONFIG_EZX_EMU_UART is not set
diff --git a/packages/linux/linux-ezx-2.6.21/patches/a1200-eoc.patch b/packages/linux/linux-ezx-2.6.21/patches/a1200-eoc.patch
new file mode 100644
index 0000000000..577aa66303
--- /dev/null
+++ b/packages/linux/linux-ezx-2.6.21/patches/a1200-eoc.patch
@@ -0,0 +1,82 @@
+Index: linux-2.6.21/arch/arm/mach-pxa/ezx-a1200.c
+===================================================================
+--- linux-2.6.21.orig/arch/arm/mach-pxa/ezx-a1200.c 2007-09-07 22:15:52.000000000 -0300
++++ linux-2.6.21/arch/arm/mach-pxa/ezx-a1200.c 2007-09-09 13:29:56.000000000 -0300
+@@ -25,6 +25,7 @@
+ #include <asm/arch/mmc.h>
+
+ #include "generic.h"
++#include "ezx-eoc.h"
+
+ extern void ezx_lcd_power(int, struct fb_var_screeninfo *);
+ extern void ezx_backlight_power(int);
+@@ -227,11 +228,69 @@
+ .resource = pcap_ts_resources,
+ };
+
++
++/* EOC */
++static const unsigned int tab_init_eoc_reg[][2] =
++{
++ {POWER_IC_REG_EOC_INT_MASK, 0x00000FEF},
++ {POWER_IC_REG_EOC_POWER_CONTROL_0, 0x00000C00},
++ {POWER_IC_REG_EOC_POWER_CONTROL_1, 0x0000000C},
++ {POWER_IC_REG_EOC_CONN_CONTROL, 0x00021044},
++};
++
++static void dump_eoc_registers(void)
++{
++ int i, val = 0;
++
++ printk("========DUMP EOC=========\n");
++ for (i = 0; i < POWER_IC_REG_EOC_NUM; i++) {
++ eoc_reg_read(i, &val);
++ printk("eoc_registers[%d] = 0x%08X\n", i, val);
++ }
++ printk("========END DUMP=========\n");
++}
++
++/*
++ * FIXME: The same about the PCAP driver applies here.
++ * This is the initial state only.
++ * Which bits does the change to USB/UART/AUDIO mode?
++ * I think that this is causing the crash on pxa27x-udc
++ * you are setting the 'port connected' bit, and thats why
++ * you are getting interrupts early.
++ * --WM
++ */
++
++static int __init a1200_eoc_init(void)
++{
++ int i;
++
++ for (i = 0; i < sizeof(tab_init_eoc_reg)/sizeof(unsigned int)/2; i++)
++ {
++ eoc_reg_write(tab_init_eoc_reg[i][0], tab_init_eoc_reg[i][1]);
++ }
++ dump_eoc_registers();
++ return 0;
++}
++
++static struct ezx_eoc_platform_data a1200_eoc_platform_data = {
++ .init = a1200_eoc_init,
++};
++
++struct platform_device a1200_eoc_device = {
++ .name = "ezx-eoc",
++ .id = -1,
++ .dev = {
++ .platform_data = &a1200_eoc_platform_data,
++ },
++};
++
+ static struct platform_device *devices[] __initdata = {
+ &a1200_pcap_device,
+ &pcap_ts_device,
++ &a1200_eoc_device,
+ };
+
++
+ static void __init a1200_init(void)
+ {
+ set_pxa_fb_info(&a1200_fb_info);
diff --git a/packages/linux/linux-ezx-2.6.21/patches/a1200-mci.patch b/packages/linux/linux-ezx-2.6.21/patches/a1200-mci.patch
index 0bd7581965..042254b115 100755
--- a/packages/linux/linux-ezx-2.6.21/patches/a1200-mci.patch
+++ b/packages/linux/linux-ezx-2.6.21/patches/a1200-mci.patch
@@ -1,7 +1,7 @@
Index: linux-2.6.21/arch/arm/mach-pxa/ezx-a1200.c
===================================================================
---- linux-2.6.21.orig/arch/arm/mach-pxa/ezx-a1200.c 2007-06-28 22:48:05.000000000 -0300
-+++ linux-2.6.21/arch/arm/mach-pxa/ezx-a1200.c 2007-06-28 22:53:19.000000000 -0300
+--- linux-2.6.21.orig/arch/arm/mach-pxa/ezx-a1200.c 2007-09-07 11:51:55.000000000 -0300
++++ linux-2.6.21/arch/arm/mach-pxa/ezx-a1200.c 2007-09-07 11:54:52.000000000 -0300
@@ -13,6 +13,8 @@
#include <linux/init.h>
#include <linux/platform_device.h>
@@ -114,7 +114,7 @@ Index: linux-2.6.21/arch/arm/mach-pxa/ezx-a1200.c
static struct pxafb_mode_info mode_a1200 = {
.pixclock = 192308,
.xres = 240,
-@@ -88,6 +180,7 @@
+@@ -118,6 +210,7 @@
static void __init a1200_init(void)
{
set_pxa_fb_info(&a1200_fb_info);
diff --git a/packages/linux/linux-ezx-2.6.21/patches/a1200-pcap.patch b/packages/linux/linux-ezx-2.6.21/patches/a1200-pcap.patch
index 9bc17555cd..8aa1e46d73 100644
--- a/packages/linux/linux-ezx-2.6.21/patches/a1200-pcap.patch
+++ b/packages/linux/linux-ezx-2.6.21/patches/a1200-pcap.patch
@@ -1,7 +1,7 @@
Index: linux-2.6.21/arch/arm/mach-pxa/ezx-a1200.c
===================================================================
---- linux-2.6.21.orig/arch/arm/mach-pxa/ezx-a1200.c 2007-06-28 22:44:12.000000000 -0300
-+++ linux-2.6.21/arch/arm/mach-pxa/ezx-a1200.c 2007-06-28 22:45:56.000000000 -0300
+--- linux-2.6.21.orig/arch/arm/mach-pxa/ezx-a1200.c 2007-09-07 11:32:32.000000000 -0300
++++ linux-2.6.21/arch/arm/mach-pxa/ezx-a1200.c 2007-09-07 11:51:55.000000000 -0300
@@ -19,6 +19,7 @@
#include <asm/arch/pxa-regs.h>
#include <asm/arch/pxafb.h>
@@ -10,13 +10,43 @@ Index: linux-2.6.21/arch/arm/mach-pxa/ezx-a1200.c
#include "generic.h"
-@@ -48,7 +49,40 @@
+@@ -48,7 +49,70 @@
.pxafb_lcd_power = &ezx_lcd_power,
};
+/* PCAP */
+static int __init a1200_pcap_init(void)
+{
++ /*
++ * FIXME: this is the PCAP INITIAL STATE.
++ * most of these writes should NOT be done here
++ * * voltage regulators, voltage enablers should be set by the
++ * driver which uses the connected hardware. Otherwise you
++ * drain power unnecessarily.
++ * * interrupt related registers should be set by the irq functions
++ * only. I think that the INT_SEL register selects on which irq
++ * pin the (ap/bp) the irq goes. This should go on ezx-pcap.c, but
++ * only if it actually makes any difference.
++ * * Only power state automatic changes should be done here.
++ * (*LOWPWR, *STBY, LOWPWR*)
++ * * I removed some writes which i consider extremelly wrong. And
++ * which i think will not break anything (they were overwritten
++ * later anyway).
++ *
++ * --WM
++ */
++ ezx_pcap_write(PCAP_REG_INT_SEL, 0x0); /* wrong */
++ ezx_pcap_write(PCAP_REG_SWCTRL, 0x2ee6); /* partially wrong */
++ ezx_pcap_write(PCAP_REG_VREG1, 0x15778e3); /* wrong */
++ ezx_pcap_write(PCAP_REG_VREG2, 0x810234); /* partially wrong */
++ ezx_pcap_write(PCAP_REG_AUXVREG, 0x1024bec); /* wrong */
++ ezx_pcap_write(PCAP_REG_PWR, 0x94108); /* partially wrong */
++ ezx_pcap_write(PCAP_REG_AUXVREG_MASK, 0x214d48); /* wrong */
++ ezx_pcap_write(PCAP_REG_BUSCTRL, 0x2a0); /* wrong */
++ ezx_pcap_write(PCAP_REG_LOWPWR, 0x1d9610c);
++ ezx_pcap_write(PCAP_REG_PERIPH, 0x0); /* wrong */
++ ezx_pcap_write(PCAP_REG_GP, 0x107); /* probably unnecessary */
++
+ return 0;
+}
+
diff --git a/packages/linux/linux-ezx-2.6.21/patches/a1200-ts.patch b/packages/linux/linux-ezx-2.6.21/patches/a1200-ts.patch
index bcac76d16c..a8c8f2ee29 100755
--- a/packages/linux/linux-ezx-2.6.21/patches/a1200-ts.patch
+++ b/packages/linux/linux-ezx-2.6.21/patches/a1200-ts.patch
@@ -1,16 +1,16 @@
Index: linux-2.6.21/arch/arm/mach-pxa/ezx-a1200.c
===================================================================
---- linux-2.6.21.orig/arch/arm/mach-pxa/ezx-a1200.c 2007-06-28 22:54:35.000000000 -0300
-+++ linux-2.6.21/arch/arm/mach-pxa/ezx-a1200.c 2007-06-28 22:55:00.000000000 -0300
-@@ -173,8 +173,33 @@
+--- linux-2.6.21.orig/arch/arm/mach-pxa/ezx-a1200.c 2007-09-07 11:54:52.000000000 -0300
++++ linux-2.6.21/arch/arm/mach-pxa/ezx-a1200.c 2007-09-07 11:55:10.000000000 -0300
+@@ -203,8 +203,33 @@
},
};
+/* PCAP_TS */
+struct resource pcap_ts_resources[] = {
+ [0] = {
-+ .start = EZX_IRQ_ADCDONE2,
-+ .end = EZX_IRQ_ADCDONE2,
++ .start = EZX_IRQ_ADCDONE,
++ .end = EZX_IRQ_ADCDONE,
+ .flags = IORESOURCE_IRQ,
+ },
+ [1] = {
diff --git a/packages/linux/linux-ezx-2.6.21/patches/a780-emu.patch b/packages/linux/linux-ezx-2.6.21/patches/a780-emu.patch
index 1477ce48ea..f6121c6e7f 100644
--- a/packages/linux/linux-ezx-2.6.21/patches/a780-emu.patch
+++ b/packages/linux/linux-ezx-2.6.21/patches/a780-emu.patch
@@ -1,8 +1,8 @@
Index: linux-2.6.21/arch/arm/mach-pxa/ezx-a780.c
===================================================================
---- linux-2.6.21.orig/arch/arm/mach-pxa/ezx-a780.c 2007-08-01 19:46:15.000000000 -0300
-+++ linux-2.6.21/arch/arm/mach-pxa/ezx-a780.c 2007-08-01 19:52:09.000000000 -0300
-@@ -219,8 +219,33 @@
+--- linux-2.6.21.orig/arch/arm/mach-pxa/ezx-a780.c 2007-08-31 23:02:13.000000000 -0300
++++ linux-2.6.21/arch/arm/mach-pxa/ezx-a780.c 2007-08-31 23:03:16.000000000 -0300
+@@ -211,8 +211,33 @@
},
};
diff --git a/packages/linux/linux-ezx-2.6.21/patches/a780-flip.patch b/packages/linux/linux-ezx-2.6.21/patches/a780-flip.patch
index 4c61a35ec2..88f15041db 100755
--- a/packages/linux/linux-ezx-2.6.21/patches/a780-flip.patch
+++ b/packages/linux/linux-ezx-2.6.21/patches/a780-flip.patch
@@ -1,7 +1,7 @@
Index: linux-2.6.21/arch/arm/mach-pxa/ezx-a780.c
===================================================================
---- linux-2.6.21.orig/arch/arm/mach-pxa/ezx-a780.c 2007-08-01 19:58:07.000000000 -0300
-+++ linux-2.6.21/arch/arm/mach-pxa/ezx-a780.c 2007-08-01 20:02:00.000000000 -0300
+--- linux-2.6.21.orig/arch/arm/mach-pxa/ezx-a780.c 2007-08-31 23:58:17.000000000 -0300
++++ linux-2.6.21/arch/arm/mach-pxa/ezx-a780.c 2007-08-31 23:59:03.000000000 -0300
@@ -17,6 +17,7 @@
#include <linux/mmc/host.h>
#include <linux/irq.h>
@@ -10,7 +10,7 @@ Index: linux-2.6.21/arch/arm/mach-pxa/ezx-a780.c
#include <asm/mach-types.h>
#include <asm/mach/arch.h>
-@@ -319,10 +320,33 @@
+@@ -311,10 +312,33 @@
.resource = pcap_ts_resources,
};
diff --git a/packages/linux/linux-ezx-2.6.21/patches/a780-kbd.patch b/packages/linux/linux-ezx-2.6.21/patches/a780-kbd.patch
index 9f26b3dd94..d7d114cfed 100755
--- a/packages/linux/linux-ezx-2.6.21/patches/a780-kbd.patch
+++ b/packages/linux/linux-ezx-2.6.21/patches/a780-kbd.patch
@@ -1,7 +1,7 @@
Index: linux-2.6.21/arch/arm/mach-pxa/ezx-a780.c
===================================================================
---- linux-2.6.21.orig/arch/arm/mach-pxa/ezx-a780.c 2007-08-01 19:52:09.000000000 -0300
-+++ linux-2.6.21/arch/arm/mach-pxa/ezx-a780.c 2007-08-01 19:56:13.000000000 -0300
+--- linux-2.6.21.orig/arch/arm/mach-pxa/ezx-a780.c 2007-08-31 23:03:16.000000000 -0300
++++ linux-2.6.21/arch/arm/mach-pxa/ezx-a780.c 2007-08-31 23:05:18.000000000 -0300
@@ -16,6 +16,7 @@
#include <linux/fb.h>
#include <linux/mmc/host.h>
@@ -24,7 +24,7 @@ Index: linux-2.6.21/arch/arm/mach-pxa/ezx-a780.c
#ifdef CONFIG_EZX_PCAP
extern int ezx_pcap_mmcsd_power(int);
-@@ -243,6 +246,55 @@
+@@ -235,6 +238,55 @@
.resource = a780_emu_resources,
};
@@ -80,7 +80,7 @@ Index: linux-2.6.21/arch/arm/mach-pxa/ezx-a780.c
static struct platform_device *devices[] __initdata = {
&a780_pcap_device,
&a780_emu_device,
-@@ -263,6 +315,7 @@
+@@ -255,6 +307,7 @@
set_pxa_fb_info(&a780_fb_info);
pxa_set_mci_info(&a780_mci_platform_data);
diff --git a/packages/linux/linux-ezx-2.6.21/patches/a780-leds.patch b/packages/linux/linux-ezx-2.6.21/patches/a780-leds.patch
index ff7a0b3dab..e8336d8855 100755
--- a/packages/linux/linux-ezx-2.6.21/patches/a780-leds.patch
+++ b/packages/linux/linux-ezx-2.6.21/patches/a780-leds.patch
@@ -5,8 +5,8 @@
Index: linux-2.6.21/drivers/leds/Kconfig
===================================================================
---- linux-2.6.21.orig/drivers/leds/Kconfig 2007-08-01 19:38:44.000000000 -0300
-+++ linux-2.6.21/drivers/leds/Kconfig 2007-08-01 20:03:29.000000000 -0300
+--- linux-2.6.21.orig/drivers/leds/Kconfig 2007-08-31 22:27:41.000000000 -0300
++++ linux-2.6.21/drivers/leds/Kconfig 2007-08-31 23:59:27.000000000 -0300
@@ -104,6 +104,13 @@
These triggers allow kernel events to drive the LEDs and can
be configured via sysfs. If unsure, say Y.
@@ -23,8 +23,8 @@ Index: linux-2.6.21/drivers/leds/Kconfig
depends on LEDS_TRIGGERS
Index: linux-2.6.21/drivers/leds/Makefile
===================================================================
---- linux-2.6.21.orig/drivers/leds/Makefile 2007-08-01 19:38:44.000000000 -0300
-+++ linux-2.6.21/drivers/leds/Makefile 2007-08-01 20:03:29.000000000 -0300
+--- linux-2.6.21.orig/drivers/leds/Makefile 2007-08-31 22:27:41.000000000 -0300
++++ linux-2.6.21/drivers/leds/Makefile 2007-08-31 23:59:27.000000000 -0300
@@ -16,6 +16,7 @@
obj-$(CONFIG_LEDS_WRAP) += leds-wrap.o
obj-$(CONFIG_LEDS_H1940) += leds-h1940.o
@@ -36,7 +36,7 @@ Index: linux-2.6.21/drivers/leds/Makefile
Index: linux-2.6.21/drivers/leds/leds-a780.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.21/drivers/leds/leds-a780.c 2007-08-01 20:03:29.000000000 -0300
++++ linux-2.6.21/drivers/leds/leds-a780.c 2007-08-31 23:59:27.000000000 -0300
@@ -0,0 +1,122 @@
+/*
+ * EZX Platform LED Driver for the Motorola A780 GSM Phone
@@ -62,22 +62,22 @@ Index: linux-2.6.21/drivers/leds/leds-a780.c
+{
+ 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);
++ ezx_pcap_bit_set(PCAP_BIT_PERIPH_BL_CTRL0, value & 0x01);
++ ezx_pcap_bit_set(PCAP_BIT_PERIPH_BL_CTRL1, value & 0x02);
++ ezx_pcap_bit_set(PCAP_BIT_PERIPH_BL_CTRL2, value & 0x04);
++ ezx_pcap_bit_set(PCAP_BIT_PERIPH_BL_CTRL3, value & 0x08);
++ ezx_pcap_bit_set(PCAP_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);
++ ezx_pcap_bit_set(PCAP_BIT_PERIPH_BL2_CTRL0, value & 0x01);
++ ezx_pcap_bit_set(PCAP_BIT_PERIPH_BL2_CTRL1, value & 0x02);
++ ezx_pcap_bit_set(PCAP_BIT_PERIPH_BL2_CTRL2, value & 0x04);
++ ezx_pcap_bit_set(PCAP_BIT_PERIPH_BL2_CTRL3, value & 0x08);
++ ezx_pcap_bit_set(PCAP_BIT_PERIPH_BL2_CTRL4, value & 0x10);
+}
+
+static struct led_classdev a780_main_led = {
@@ -162,9 +162,9 @@ Index: linux-2.6.21/drivers/leds/leds-a780.c
+MODULE_LICENSE("GPL");
Index: linux-2.6.21/arch/arm/mach-pxa/ezx-a780.c
===================================================================
---- linux-2.6.21.orig/arch/arm/mach-pxa/ezx-a780.c 2007-08-01 20:02:00.000000000 -0300
-+++ linux-2.6.21/arch/arm/mach-pxa/ezx-a780.c 2007-08-01 20:03:29.000000000 -0300
-@@ -341,12 +341,20 @@
+--- linux-2.6.21.orig/arch/arm/mach-pxa/ezx-a780.c 2007-08-31 23:59:03.000000000 -0300
++++ linux-2.6.21/arch/arm/mach-pxa/ezx-a780.c 2007-08-31 23:59:27.000000000 -0300
+@@ -333,12 +333,20 @@
},
};
diff --git a/packages/linux/linux-ezx-2.6.21/patches/a780-mci.patch b/packages/linux/linux-ezx-2.6.21/patches/a780-mci.patch
index 3cf1848502..1238c1cf71 100755
--- a/packages/linux/linux-ezx-2.6.21/patches/a780-mci.patch
+++ b/packages/linux/linux-ezx-2.6.21/patches/a780-mci.patch
@@ -1,7 +1,7 @@
Index: linux-2.6.21/arch/arm/mach-pxa/ezx-a780.c
===================================================================
---- linux-2.6.21.orig/arch/arm/mach-pxa/ezx-a780.c 2007-06-28 22:45:00.000000000 -0300
-+++ linux-2.6.21/arch/arm/mach-pxa/ezx-a780.c 2007-06-28 22:53:03.000000000 -0300
+--- linux-2.6.21.orig/arch/arm/mach-pxa/ezx-a780.c 2007-08-31 23:01:54.000000000 -0300
++++ linux-2.6.21/arch/arm/mach-pxa/ezx-a780.c 2007-08-31 23:02:13.000000000 -0300
@@ -14,6 +14,8 @@
#include <linux/init.h>
#include <linux/platform_device.h>
@@ -114,7 +114,7 @@ Index: linux-2.6.21/arch/arm/mach-pxa/ezx-a780.c
static struct pxafb_mode_info mode_a780 = {
.pixclock = 150000,
.xres = 240,
-@@ -145,6 +237,7 @@
+@@ -137,6 +229,7 @@
PSLR = 0x05800f00;
set_pxa_fb_info(&a780_fb_info);
diff --git a/packages/linux/linux-ezx-2.6.21/patches/a780-pcap.patch b/packages/linux/linux-ezx-2.6.21/patches/a780-pcap.patch
index 35417344e0..afb5d9c005 100644
--- a/packages/linux/linux-ezx-2.6.21/patches/a780-pcap.patch
+++ b/packages/linux/linux-ezx-2.6.21/patches/a780-pcap.patch
@@ -1,7 +1,7 @@
Index: linux-2.6.21/arch/arm/mach-pxa/ezx-a780.c
===================================================================
---- linux-2.6.21.orig/arch/arm/mach-pxa/ezx-a780.c 2007-06-28 22:44:12.000000000 -0300
-+++ linux-2.6.21/arch/arm/mach-pxa/ezx-a780.c 2007-06-28 22:45:00.000000000 -0300
+--- linux-2.6.21.orig/arch/arm/mach-pxa/ezx-a780.c 2007-08-31 22:33:03.000000000 -0300
++++ linux-2.6.21/arch/arm/mach-pxa/ezx-a780.c 2007-08-31 23:01:17.000000000 -0300
@@ -20,6 +20,7 @@
#include <asm/arch/pxa-regs.h>
#include <asm/arch/pxafb.h>
@@ -10,7 +10,7 @@ Index: linux-2.6.21/arch/arm/mach-pxa/ezx-a780.c
#include "generic.h"
-@@ -49,7 +50,85 @@
+@@ -49,7 +50,77 @@
.pxafb_lcd_power = &ezx_lcd_power,
};
@@ -18,49 +18,41 @@ Index: linux-2.6.21/arch/arm/mach-pxa/ezx-a780.c
+static int __init a780_pcap_init(void)
+{
+ /* initialize PCAP registers */
-+ ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_AUD_RX_AMPS_A1CTRL, 1);
-+// ezx_pcap_vibrator_level(PCAP_VIBRATOR_VOLTAGE_LEVEL3);
-+
+ /* set SW1 sleep to keep SW1 1.3v in sync mode */
-+ ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_LOWPWR_CTRL_SW1_MODE10, 0);
-+ ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_LOWPWR_CTRL_SW1_MODE11, 0);
++ ezx_pcap_bit_set(PCAP_BIT_LOWPWR_SW1_MODE10, 0);
++ ezx_pcap_bit_set(PCAP_BIT_LOWPWR_SW1_MODE11, 0);
+
+ /* SW1 active in sync mode */
-+ ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_LOWPWR_CTRL_SW1_MODE00, 1);
-+ ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_LOWPWR_CTRL_SW1_MODE01, 0);
++ ezx_pcap_bit_set(PCAP_BIT_LOWPWR_SW1_MODE00, 1);
++ ezx_pcap_bit_set(PCAP_BIT_LOWPWR_SW1_MODE01, 0);
+
+ /* at SW1 -core voltage to 1.30V */
-+ ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_LOWPWR_CTRL_SW10_DVS, 1);
-+ ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_LOWPWR_CTRL_SW11_DVS, 1);
-+ ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_LOWPWR_CTRL_SW12_DVS, 1);
-+ ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_LOWPWR_CTRL_SW13_DVS, 0);
++ ezx_pcap_bit_set(PCAP_BIT_LOWPWR_SW10_DVS, 1);
++ ezx_pcap_bit_set(PCAP_BIT_LOWPWR_SW11_DVS, 1);
++ ezx_pcap_bit_set(PCAP_BIT_LOWPWR_SW12_DVS, 1);
++ ezx_pcap_bit_set(PCAP_BIT_LOWPWR_SW13_DVS, 0);
+
+ /* when STANDY2 PIN ACTIVE (high) set V3-- sram V8 -- pll off */
-+ ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_VREG2_V3_STBY, 1);
-+ ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_VREG2_V3_LOWPWR, 0);
-+ ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_VREG2_V8_STBY, 1);
-+ ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_VREG2_V8_LOWPWR, 0);
++ ezx_pcap_bit_set(PCAP_BIT_VREG2_V3_STBY, 1);
++ ezx_pcap_bit_set(PCAP_BIT_VREG2_V3_LOWPWR, 0);
++ ezx_pcap_bit_set(PCAP_BIT_VREG2_V8_STBY, 1);
++ ezx_pcap_bit_set(PCAP_BIT_VREG2_V8_LOWPWR, 0);
+
+ /*
+ * when STANDY2 PIN ACTIVE (high) set V4-- lcd only for e680 V6 ---
+ * camera for e680
+ */
-+ ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_VREG2_V4_STBY, 1);
-+ ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_VREG2_V4_LOWPWR, 1);
-+ ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_VREG2_V6_STBY, 1);
-+ ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_VREG2_V6_LOWPWR, 0);
++ ezx_pcap_bit_set(PCAP_BIT_VREG2_V4_STBY, 1);
++ ezx_pcap_bit_set(PCAP_BIT_VREG2_V4_LOWPWR, 1);
++ ezx_pcap_bit_set(PCAP_BIT_VREG2_V6_STBY, 1);
++ ezx_pcap_bit_set(PCAP_BIT_VREG2_V6_LOWPWR, 0);
+
+ /* set Vc to low power mode when AP sleep */
-+// SSP_PCAP_bit_set( SSP_PCAP_ADJ_BIT_LOWPWR_CTRL_VC_STBY);
-+
-+ /* set VAUX2 to voltage 2.775V and low power mode when AP sleep */
-+ ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_AUX_VREG_VAUX2_1, 1);
-+ ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_AUX_VREG_VAUX2_0, 0);
-+ ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_LOWPWR_CTRL_VAUX2_STBY, 1);
-+ ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_LOWPWR_CTRL_VAUX2_LOWPWR, 1);
-+// ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_AUX_VREG_VAUX2_EN, 1);
++// SSP_PCAP_bit_set(PCAP_BIT_LOWPWR_CTRL_VC_STBY);
+
-+// PGSR(GPIO34_TXENB) |= GPIO_bit(GPIO34_TXENB);
++ /* set VAUX2 to low power mode when AP sleep */
++ ezx_pcap_bit_set(PCAP_BIT_LOWPWR_VAUX2_STBY, 1);
++ ezx_pcap_bit_set(PCAP_BIT_LOWPWR_VAUX2_LOWPWR, 1);
+
+ return 0;
+}
diff --git a/packages/linux/linux-ezx-2.6.21/patches/a780-ts.patch b/packages/linux/linux-ezx-2.6.21/patches/a780-ts.patch
index 7c455cfb3a..e7ca3c106a 100755
--- a/packages/linux/linux-ezx-2.6.21/patches/a780-ts.patch
+++ b/packages/linux/linux-ezx-2.6.21/patches/a780-ts.patch
@@ -1,8 +1,8 @@
Index: linux-2.6.21/arch/arm/mach-pxa/ezx-a780.c
===================================================================
---- linux-2.6.21.orig/arch/arm/mach-pxa/ezx-a780.c 2007-08-01 19:56:13.000000000 -0300
-+++ linux-2.6.21/arch/arm/mach-pxa/ezx-a780.c 2007-08-01 19:58:07.000000000 -0300
-@@ -295,9 +295,34 @@
+--- linux-2.6.21.orig/arch/arm/mach-pxa/ezx-a780.c 2007-08-31 23:05:18.000000000 -0300
++++ linux-2.6.21/arch/arm/mach-pxa/ezx-a780.c 2007-08-31 23:06:53.000000000 -0300
+@@ -287,9 +287,34 @@
},
};
diff --git a/packages/linux/linux-ezx-2.6.21/patches/a780-vibrator.patch b/packages/linux/linux-ezx-2.6.21/patches/a780-vibrator.patch
index 7436c40f5f..aa903feea7 100755
--- a/packages/linux/linux-ezx-2.6.21/patches/a780-vibrator.patch
+++ b/packages/linux/linux-ezx-2.6.21/patches/a780-vibrator.patch
@@ -1,74 +1,26 @@
Index: linux-2.6.21/drivers/leds/leds-a780.c
===================================================================
---- linux-2.6.21.orig/drivers/leds/leds-a780.c 2007-05-08 15:09:26.000000000 -0300
-+++ linux-2.6.21/drivers/leds/leds-a780.c 2007-05-08 15:19:26.000000000 -0300
-@@ -18,10 +18,13 @@
- #include <linux/leds.h>
- #include <asm/arch/ezx-pcap.h>
-
-+extern void ezx_pcap_vibrator_level(u_int32_t);
-+
- 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 );
-+#warning FIXME: use read/write operations
- 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);
-@@ -33,6 +36,7 @@
- {
- if ( value > 31 ) value = 31;
- printk( KERN_DEBUG "a780led_aux_set: %d\n", value );
-+#warning FIXME: use read/write operations
- 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);
-@@ -40,6 +44,43 @@
- ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_PERIPH_BL2_CTRL4, value & 0x10);
+--- linux-2.6.21.orig/drivers/leds/leds-a780.c 2007-09-01 00:15:03.000000000 -0300
++++ linux-2.6.21/drivers/leds/leds-a780.c 2007-09-01 00:23:39.000000000 -0300
+@@ -40,6 +40,17 @@
+ ezx_pcap_bit_set(PCAP_BIT_PERIPH_BL2_CTRL4, value & 0x10);
}
+static void a780vibrator_set(struct led_classdev *led_cdev, enum led_brightness value)
+{
-+ if ( value > 4 ) value = 4;
++ if (value > 4) value = 4;
+ printk( KERN_DEBUG "a780vibrator_set: %d\n", value );
-+
-+ switch(value)
-+ {
-+ case 0:
-+ /* turn off vibrator */
-+ ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_AUX_VREG_V_VIB_EN, 0);
-+ break;
-+
-+ case 1:
-+ ezx_pcap_vibrator_level(PCAP_VIBRATOR_VOLTAGE_LEVEL0);
-+ ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_AUX_VREG_V_VIB_EN, 1);
-+ break;
-+
-+ case 2:
-+ ezx_pcap_vibrator_level(PCAP_VIBRATOR_VOLTAGE_LEVEL1);
-+ ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_AUX_VREG_V_VIB_EN, 1);
-+ break;
-+
-+ case 3:
-+ ezx_pcap_vibrator_level(PCAP_VIBRATOR_VOLTAGE_LEVEL2);
-+ ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_AUX_VREG_V_VIB_EN, 1);
-+ break;
-+
-+ case 4:
-+ ezx_pcap_vibrator_level(PCAP_VIBRATOR_VOLTAGE_LEVEL3);
-+ ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_AUX_VREG_V_VIB_EN, 1);
-+ break;
-+
-+ default:
-+ break;
-+ }
++ ezx_pcap_vibrator_level(value-1);
++ if (value == 0)
++ ezx_pcap_bit_set(PCAP_BIT_AUXVREG_V_VIB_EN, 0);
++ else
++ ezx_pcap_bit_set(PCAP_BIT_AUXVREG_V_VIB_EN, 1);
+}
+
static struct led_classdev a780_main_led = {
.name = "a780:main",
.default_trigger = "none",
-@@ -52,11 +93,18 @@
+@@ -52,11 +63,18 @@
.brightness_set = a780led_aux_set,
};
@@ -87,7 +39,7 @@ Index: linux-2.6.21/drivers/leds/leds-a780.c
return 0;
}
-@@ -64,6 +112,7 @@
+@@ -64,6 +82,7 @@
{
led_classdev_resume(&a780_main_led);
led_classdev_resume(&a780_aux_led);
@@ -95,7 +47,7 @@ Index: linux-2.6.21/drivers/leds/leds-a780.c
return 0;
}
#endif
-@@ -77,8 +126,16 @@
+@@ -77,8 +96,16 @@
return ret;
ret = led_classdev_register(&pdev->dev, &a780_aux_led);
@@ -113,7 +65,7 @@ Index: linux-2.6.21/drivers/leds/leds-a780.c
return ret;
}
-@@ -87,6 +144,7 @@
+@@ -87,6 +114,7 @@
{
led_classdev_unregister(&a780_main_led);
led_classdev_unregister(&a780_aux_led);
@@ -121,19 +73,18 @@ Index: linux-2.6.21/drivers/leds/leds-a780.c
return 0;
}
-@@ -111,6 +169,8 @@
+@@ -111,6 +139,7 @@
{
a780led_main_set( &a780_main_led, 0 );
a780led_aux_set( &a780_aux_led, 0 );
+ a780vibrator_set( &a780_vibrator, 0 );
-+
platform_driver_unregister(&a780led_driver);
}
Index: linux-2.6.21/drivers/leds/Kconfig
===================================================================
---- linux-2.6.21.orig/drivers/leds/Kconfig 2007-05-08 15:09:26.000000000 -0300
-+++ linux-2.6.21/drivers/leds/Kconfig 2007-05-08 15:09:26.000000000 -0300
+--- linux-2.6.21.orig/drivers/leds/Kconfig 2007-09-01 00:15:03.000000000 -0300
++++ linux-2.6.21/drivers/leds/Kconfig 2007-09-01 00:15:08.000000000 -0300
@@ -105,11 +105,11 @@
be configured via sysfs. If unsure, say Y.
diff --git a/packages/linux/linux-ezx-2.6.21/patches/asoc-fix-loopback.patch b/packages/linux/linux-ezx-2.6.21/patches/asoc-fix-loopback.patch
new file mode 100644
index 0000000000..feea138984
--- /dev/null
+++ b/packages/linux/linux-ezx-2.6.21/patches/asoc-fix-loopback.patch
@@ -0,0 +1,14 @@
+Index: linux-2.6.21/sound/soc/pxa/pxa2xx-pcm.c
+===================================================================
+--- linux-2.6.21.orig/sound/soc/pxa/pxa2xx-pcm.c 2007-09-02 22:30:56.000000000 -0300
++++ linux-2.6.21/sound/soc/pxa/pxa2xx-pcm.c 2007-09-02 22:36:26.000000000 -0300
+@@ -153,7 +153,8 @@
+ static int pxa2xx_pcm_prepare(struct snd_pcm_substream *substream)
+ {
+ struct pxa2xx_runtime_data *prtd = substream->runtime->private_data;
+-
++ /* no dma if on loopback */
++ if (!prtd->params) return 0;
+ DCSR(prtd->dma_ch) &= ~DCSR_RUN;
+ DCSR(prtd->dma_ch) = 0;
+ DCMD(prtd->dma_ch) = 0;
diff --git a/packages/linux/linux-ezx-2.6.21/patches/asoc-pxa-ssp.patch b/packages/linux/linux-ezx-2.6.21/patches/asoc-pxa-ssp.patch
index 1fc8283ca2..dd5b71a512 100755
--- a/packages/linux/linux-ezx-2.6.21/patches/asoc-pxa-ssp.patch
+++ b/packages/linux/linux-ezx-2.6.21/patches/asoc-pxa-ssp.patch
@@ -1,7 +1,7 @@
Index: linux-2.6.21/sound/soc/pxa/pxa2xx-ssp.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.21/sound/soc/pxa/pxa2xx-ssp.c 2007-05-14 21:14:38.000000000 -0300
++++ linux-2.6.21/sound/soc/pxa/pxa2xx-ssp.c 2007-09-02 22:50:31