summaryrefslogtreecommitdiff
path: root/packages/linux
diff options
context:
space:
mode:
authorPaul Sokolovsky <pmiscml@gmail.com>2008-03-08 23:50:24 +0000
committerPaul Sokolovsky <pmiscml@gmail.com>2008-03-08 23:50:24 +0000
commitf343018d05e28cf9fecd9347fcf6a62d72769ef0 (patch)
treeeeb5ce0d44c31679a88b42b98c767f19bd968f98 /packages/linux
parent17bf608c0fd9b147f403940b0f666b61d915afd5 (diff)
parentf2b040fcd522d318121c6a407de095089b80f884 (diff)
merge of '521a15d5242153bff521498efbf891cf1447b5fe'
and 'a37e2216457a4dbf8ab2b7ce0be1209c96b188c9'
Diffstat (limited to 'packages/linux')
-rw-r--r--packages/linux/linux-mainstone/.mtn2git_empty0
-rw-r--r--packages/linux/linux-mainstone/mainstone-keypad.patch7631
-rw-r--r--packages/linux/linux-mainstone/mainstone/.mtn2git_empty0
-rw-r--r--packages/linux/linux-mainstone/mainstone/defconfig1608
-rw-r--r--packages/linux/linux-mainstone_2.6.25-rc4.bb25
5 files changed, 9264 insertions, 0 deletions
diff --git a/packages/linux/linux-mainstone/.mtn2git_empty b/packages/linux/linux-mainstone/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/linux/linux-mainstone/.mtn2git_empty
diff --git a/packages/linux/linux-mainstone/mainstone-keypad.patch b/packages/linux/linux-mainstone/mainstone-keypad.patch
new file mode 100644
index 0000000000..cad6289260
--- /dev/null
+++ b/packages/linux/linux-mainstone/mainstone-keypad.patch
@@ -0,0 +1,7631 @@
+diff -NbBur linux-2.6.25-rc4-orig/arch/arm/mach-pxa/devices.c linux-2.6.25-rc4/arch/arm/mach-pxa/devices.c
+--- linux-2.6.25-rc4-orig/arch/arm/mach-pxa/devices.c 2008-03-08 18:25:54.000000000 +0100
++++ linux-2.6.25-rc4/arch/arm/mach-pxa/devices.c 2008-03-08 16:22:35.000000000 +0100
+@@ -396,6 +396,31 @@
+
+ #if defined(CONFIG_PXA27x) || defined(CONFIG_PXA3xx)
+
++static struct resource pxa27x_resource_keypad[] = {
++ [0] = {
++ .start = 0x41500000,
++ .end = 0x4150004c,
++ .flags = IORESOURCE_MEM,
++ },
++ [1] = {
++ .start = IRQ_KEYPAD,
++ .end = IRQ_KEYPAD,
++ .flags = IORESOURCE_IRQ,
++ },
++};
++
++struct platform_device pxa27x_device_keypad = {
++ .name = "pxa27x-keypad",
++ .id = -1,
++ .resource = pxa27x_resource_keypad,
++ .num_resources = ARRAY_SIZE(pxa27x_resource_keypad),
++};
++
++void __init pxa_set_keypad_info(struct pxa27x_keypad_platform_data *info)
++{
++ pxa_register_device(&pxa27x_device_keypad, info);
++}
++
+ static u64 pxa27x_ohci_dma_mask = DMA_BIT_MASK(32);
+
+ static struct resource pxa27x_resource_ohci[] = {
+diff -NbBur linux-2.6.25-rc4-orig/arch/arm/mach-pxa/devices.h linux-2.6.25-rc4/arch/arm/mach-pxa/devices.h
+--- linux-2.6.25-rc4-orig/arch/arm/mach-pxa/devices.h 2008-03-08 18:25:54.000000000 +0100
++++ linux-2.6.25-rc4/arch/arm/mach-pxa/devices.h 2008-03-08 16:22:35.000000000 +0100
+@@ -14,6 +14,7 @@
+
+ extern struct platform_device pxa27x_device_i2c_power;
+ extern struct platform_device pxa27x_device_ohci;
++extern struct platform_device pxa27x_device_keypad;
+
+ extern struct platform_device pxa25x_device_ssp;
+ extern struct platform_device pxa25x_device_nssp;
+diff -NbBur linux-2.6.25-rc4-orig/arch/arm/mach-pxa/mainstone.c linux-2.6.25-rc4/arch/arm/mach-pxa/mainstone.c
+--- linux-2.6.25-rc4-orig/arch/arm/mach-pxa/mainstone.c 2008-03-08 18:25:54.000000000 +0100
++++ linux-2.6.25-rc4/arch/arm/mach-pxa/mainstone.c 2008-03-08 16:11:42.000000000 +0100
+@@ -46,6 +46,7 @@
+ #include <asm/arch/mmc.h>
+ #include <asm/arch/irda.h>
+ #include <asm/arch/ohci.h>
++#include <asm/arch/pxa27x_keypad.h>
+
+ #include "generic.h"
+ #include "devices.h"
+@@ -460,6 +461,72 @@
+ .init = mainstone_ohci_init,
+ };
+
++#if defined(CONFIG_KEYBOARD_PXA27x) || defined(CONFIG_KEYBOARD_PXA27x_MODULES)
++static unsigned int mainstone_matrix_keys[] = {
++ KEY(0, 0, KEY_A), KEY(1, 0, KEY_B), KEY(2, 0, KEY_C),
++ KEY(3, 0, KEY_D), KEY(4, 0, KEY_E), KEY(5, 0, KEY_F),
++ KEY(0, 1, KEY_G), KEY(1, 1, KEY_H), KEY(2, 1, KEY_I),
++ KEY(3, 1, KEY_J), KEY(4, 1, KEY_K), KEY(5, 1, KEY_L),
++ KEY(0, 2, KEY_M), KEY(1, 2, KEY_N), KEY(2, 2, KEY_O),
++ KEY(3, 2, KEY_P), KEY(4, 2, KEY_Q), KEY(5, 2, KEY_R),
++ KEY(0, 3, KEY_S), KEY(1, 3, KEY_T), KEY(2, 3, KEY_U),
++ KEY(3, 3, KEY_V), KEY(4, 3, KEY_W), KEY(5, 3, KEY_X),
++ KEY(2, 4, KEY_Y), KEY(3, 4, KEY_Z),
++
++ KEY(0, 4, KEY_DOT), /* . */
++ KEY(1, 4, KEY_CLOSE), /* @ */
++ KEY(4, 4, KEY_SLASH),
++ KEY(5, 4, KEY_BACKSLASH),
++ KEY(0, 5, KEY_HOME),
++ KEY(1, 5, KEY_LEFTSHIFT),
++ KEY(2, 5, KEY_SPACE),
++ KEY(3, 5, KEY_SPACE),
++ KEY(4, 5, KEY_ENTER),
++ KEY(5, 5, KEY_BACKSPACE),
++
++ KEY(0, 6, KEY_UP),
++ KEY(1, 6, KEY_DOWN),
++ KEY(2, 6, KEY_LEFT),
++ KEY(3, 6, KEY_RIGHT),
++ KEY(4, 6, KEY_SELECT),
++};
++
++struct pxa27x_keypad_platform_data mainstone_keypad_info = {
++ .matrix_key_rows = 6,
++ .matrix_key_cols = 7,
++ .matrix_key_map = mainstone_matrix_keys,
++ .matrix_key_map_size = ARRAY_SIZE(mainstone_matrix_keys),
++
++ .enable_rotary0 = 1,
++ .rotary0_up_key = KEY_UP,
++ .rotary0_down_key = KEY_DOWN,
++
++ .debounce_interval = 30,
++};
++
++static void __init mainstone_init_keypad(void)
++{
++ pxa_gpio_mode(100 | GPIO_ALT_FN_1_IN); /* MKIN0 */
++ pxa_gpio_mode(101 | GPIO_ALT_FN_1_IN); /* MKIN1 */
++ pxa_gpio_mode(102 | GPIO_ALT_FN_1_IN); /* MKIN2 */
++ pxa_gpio_mode( 97 | GPIO_ALT_FN_3_IN); /* MKIN3 */
++ pxa_gpio_mode( 98 | GPIO_ALT_FN_3_IN); /* MKIN4 */
++ pxa_gpio_mode( 99 | GPIO_ALT_FN_3_IN); /* MKIN5 */
++ pxa_gpio_mode(103 | GPIO_ALT_FN_2_OUT); /* MKOUT0 */
++ pxa_gpio_mode(104 | GPIO_ALT_FN_2_OUT); /* MKOUT1 */
++ pxa_gpio_mode(105 | GPIO_ALT_FN_2_OUT); /* MKOUT2 */
++ pxa_gpio_mode(106 | GPIO_ALT_FN_2_OUT); /* MKOUT3 */
++ pxa_gpio_mode(107 | GPIO_ALT_FN_2_OUT); /* MKOUT4 */
++ pxa_gpio_mode(108 | GPIO_ALT_FN_2_OUT); /* MKOUT5 */
++ pxa_gpio_mode( 93 | GPIO_ALT_FN_1_IN); /* DKIN0 */
++ pxa_gpio_mode( 94 | GPIO_ALT_FN_1_IN); /* DKIN1 */
++
++ pxa_set_keypad_info(&mainstone_keypad_info);
++}
++#else
++static inline void mainstone_init_keypad(void) { }
++#endif
++
+ static void __init mainstone_init(void)
+ {
+ int SW7 = 0; /* FIXME: get from SCR (Mst doc section 3.2.1.1) */
+@@ -520,6 +587,8 @@
+ pxa_set_mci_info(&mainstone_mci_platform_data);
+ pxa_set_ficp_info(&mainstone_ficp_platform_data);
+ pxa_set_ohci_info(&mainstone_ohci_platform_data);
++
++ mainstone_init_keypad();
+ }
+
+
+diff -NbBur linux-2.6.25-rc4-orig/arch/arm/mach-pxa/pxa27x.c linux-2.6.25-rc4/arch/arm/mach-pxa/pxa27x.c
+--- linux-2.6.25-rc4-orig/arch/arm/mach-pxa/pxa27x.c 2008-03-08 18:25:54.000000000 +0100
++++ linux-2.6.25-rc4/arch/arm/mach-pxa/pxa27x.c 2008-03-08 16:22:35.000000000 +0100
+@@ -151,7 +151,7 @@
+
+ INIT_CKEN("USBCLK", USBHOST, 48000000, 0, &pxa27x_device_ohci.dev),
+ INIT_CKEN("I2CCLK", PWRI2C, 13000000, 0, &pxa27x_device_i2c_power.dev),
+- INIT_CKEN("KBDCLK", KEYPAD, 32768, 0, NULL),
++ INIT_CKEN("KBDCLK", KEYPAD, 32768, 0, &pxa27x_device_keypad.dev),
+
+ INIT_CKEN("SSPCLK", SSP1, 13000000, 0, &pxa27x_device_ssp1.dev),
+ INIT_CKEN("SSPCLK", SSP2, 13000000, 0, &pxa27x_device_ssp2.dev),
+diff -NbBur linux-2.6.25-rc4-orig/arch/arm/mach-pxa/pxa3xx.c linux-2.6.25-rc4/arch/arm/mach-pxa/pxa3xx.c
+--- linux-2.6.25-rc4-orig/arch/arm/mach-pxa/pxa3xx.c 2008-03-08 18:25:54.000000000 +0100
++++ linux-2.6.25-rc4/arch/arm/mach-pxa/pxa3xx.c 2008-03-08 16:22:35.000000000 +0100
+@@ -185,6 +185,7 @@
+ PXA3xx_CKEN("I2CCLK", I2C, 32842000, 0, &pxa_device_i2c.dev),
+ PXA3xx_CKEN("UDCCLK", UDC, 48000000, 5, &pxa_device_udc.dev),
+ PXA3xx_CKEN("USBCLK", USBH, 48000000, 0, &pxa27x_device_ohci.dev),
++ PXA3xx_CKEN("KBDCLK", KEYPAD, 32768, 0, &pxa27x_device_keypad.dev),
+
+ PXA3xx_CKEN("SSPCLK", SSP1, 13000000, 0, &pxa27x_device_ssp1.dev),
+ PXA3xx_CKEN("SSPCLK", SSP2, 13000000, 0, &pxa27x_device_ssp2.dev),
+diff -NbBur linux-2.6.25-rc4-orig/include/asm-arm/arch/akita.h linux-2.6.25-rc4/include/asm-arm/arch/akita.h
+--- linux-2.6.25-rc4-orig/include/asm-arm/arch/akita.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.25-rc4/include/asm-arm/arch/akita.h 2008-02-26 01:20:20.000000000 +0100
+@@ -0,0 +1,32 @@
++/*
++ * Hardware specific definitions for SL-C1000 (Akita)
++ *
++ * Copyright (c) 2005 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.
++ *
++ */
++
++/* Akita IO Expander GPIOs */
++
++#define AKITA_IOEXP_RESERVED_7 (1 << 7)
++#define AKITA_IOEXP_IR_ON (1 << 6)
++#define AKITA_IOEXP_AKIN_PULLUP (1 << 5)
++#define AKITA_IOEXP_BACKLIGHT_CONT (1 << 4)
++#define AKITA_IOEXP_BACKLIGHT_ON (1 << 3)
++#define AKITA_IOEXP_MIC_BIAS (1 << 2)
++#define AKITA_IOEXP_RESERVED_1 (1 << 1)
++#define AKITA_IOEXP_RESERVED_0 (1 << 0)
++
++/* Direction Bitfield 0=output 1=input */
++#define AKITA_IOEXP_IO_DIR 0
++/* Default Values */
++#define AKITA_IOEXP_IO_OUT (AKITA_IOEXP_IR_ON | AKITA_IOEXP_AKIN_PULLUP)
++
++extern struct platform_device akitaioexp_device;
++
++void akita_set_ioexp(struct device *dev, unsigned char bitmask);
++void akita_reset_ioexp(struct device *dev, unsigned char bitmask);
++
+diff -NbBur linux-2.6.25-rc4-orig/include/asm-arm/arch/audio.h linux-2.6.25-rc4/include/asm-arm/arch/audio.h
+--- linux-2.6.25-rc4-orig/include/asm-arm/arch/audio.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.25-rc4/include/asm-arm/arch/audio.h 2008-03-08 16:11:19.000000000 +0100
+@@ -0,0 +1,15 @@
++#ifndef __ASM_ARCH_AUDIO_H__
++#define __ASM_ARCH_AUDIO_H__
++
++#include <sound/core.h>
++#include <sound/pcm.h>
++
++typedef struct {
++ int (*startup)(struct snd_pcm_substream *, void *);
++ void (*shutdown)(struct snd_pcm_substream *, void *);
++ void (*suspend)(void *);
++ void (*resume)(void *);
++ void *priv;
++} pxa2xx_audio_ops_t;
++
++#endif
+diff -NbBur linux-2.6.25-rc4-orig/include/asm-arm/arch/bitfield.h linux-2.6.25-rc4/include/asm-arm/arch/bitfield.h
+--- linux-2.6.25-rc4-orig/include/asm-arm/arch/bitfield.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.25-rc4/include/asm-arm/arch/bitfield.h 2008-02-26 01:20:20.000000000 +0100
+@@ -0,0 +1,113 @@
++/*
++ * FILE bitfield.h
++ *
++ * Version 1.1
++ * Author Copyright (c) Marc A. Viredaz, 1998
++ * DEC Western Research Laboratory, Palo Alto, CA
++ * Date April 1998 (April 1997)
++ * System Advanced RISC Machine (ARM)
++ * Language C or ARM Assembly
++ * Purpose Definition of macros to operate on bit fields.
++ */
++
++
++
++#ifndef __BITFIELD_H
++#define __BITFIELD_H
++
++#ifndef __ASSEMBLY__
++#define UData(Data) ((unsigned long) (Data))
++#else
++#define UData(Data) (Data)
++#endif
++
++
++/*
++ * MACRO: Fld
++ *
++ * Purpose
++ * The macro "Fld" encodes a bit field, given its size and its shift value
++ * with respect to bit 0.
++ *
++ * Note
++ * A more intuitive way to encode bit fields would have been to use their
++ * mask. However, extracting size and shift value information from a bit
++ * field's mask is cumbersome and might break the assembler (255-character
++ * line-size limit).
++ *
++ * Input
++ * Size Size of the bit field, in number of bits.
++ * Shft Shift value of the bit field with respect to bit 0.
++ *
++ * Output
++ * Fld Encoded bit field.
++ */
++
++#define Fld(Size, Shft) (((Size) << 16) + (Shft))
++
++
++/*
++ * MACROS: FSize, FShft, FMsk, FAlnMsk, F1stBit
++ *
++ * Purpose
++ * The macros "FSize", "FShft", "FMsk", "FAlnMsk", and "F1stBit" return
++ * the size, shift value, mask, aligned mask, and first bit of a
++ * bit field.
++ *
++ * Input
++ * Field Encoded bit field (using the macro "Fld").
++ *
++ * Output
++ * FSize Size of the bit field, in number of bits.
++ * FShft Shift value of the bit field with respect to bit 0.
++ * FMsk Mask for the bit field.
++ * FAlnMsk Mask for the bit field, aligned on bit 0.
++ * F1stBit First bit of the bit field.
++ */
++
++#define FSize(Field) ((Field) >> 16)
++#define FShft(Field) ((Field) & 0x0000FFFF)
++#define FMsk(Field) (((UData (1) << FSize (Field)) - 1) << FShft (Field))
++#define FAlnMsk(Field) ((UData (1) << FSize (Field)) - 1)
++#define F1stBit(Field) (UData (1) << FShft (Field))
++
++
++/*
++ * MACRO: FInsrt
++ *
++ * Purpose
++ * The macro "FInsrt" inserts a value into a bit field by shifting the
++ * former appropriately.
++ *
++ * Input
++ * Value Bit-field value.
++ * Field Encoded bit field (using the macro "Fld").
++ *
++ * Output
++ * FInsrt Bit-field value positioned appropriately.
++ */
++
++#define FInsrt(Value, Field) \
++ (UData (Value) << FShft (Field))
++
++
++/*
++ * MACRO: FExtr
++ *
++ * Purpose
++ * The macro "FExtr" extracts the value of a bit field by masking and
++ * shifting it appropriately.
++ *
++ * Input
++ * Data Data containing the bit-field to be extracted.
++ * Field Encoded bit field (using the macro "Fld").
++ *
++ * Output
++ * FExtr Bit-field value.
++ */
++
++#define FExtr(Data, Field) \
++ ((UData (Data) >> FShft (Field)) & FAlnMsk (Field))
++
++
++#endif /* __BITFIELD_H */
+diff -NbBur linux-2.6.25-rc4-orig/include/asm-arm/arch/cm-x270.h linux-2.6.25-rc4/include/asm-arm/arch/cm-x270.h
+--- linux-2.6.25-rc4-orig/include/asm-arm/arch/cm-x270.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.25-rc4/include/asm-arm/arch/cm-x270.h 2008-02-26 01:20:20.000000000 +0100
+@@ -0,0 +1,50 @@
++/*
++ * linux/include/asm/arch-pxa/cm-x270.h
++ *
++ * Copyright Compulab Ltd., 2003, 2007
++ * Mike Rapoport <mike@compulab.co.il>
++ *
++ * 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.
++ */
++
++
++/* CM-x270 device physical addresses */
++#define CMX270_CS1_PHYS (PXA_CS1_PHYS)
++#define MARATHON_PHYS (PXA_CS2_PHYS)
++#define CMX270_IDE104_PHYS (PXA_CS3_PHYS)
++#define CMX270_IT8152_PHYS (PXA_CS4_PHYS)
++
++/* Statically mapped regions */
++#define CMX270_VIRT_BASE (0xe8000000)
++#define CMX270_IT8152_VIRT (CMX270_VIRT_BASE)
++#define CMX270_IDE104_VIRT (CMX270_IT8152_VIRT + SZ_64M)
++
++/* GPIO related definitions */
++#define GPIO_IT8152_IRQ (22)
++
++#define IRQ_GPIO_IT8152_IRQ IRQ_GPIO(GPIO_IT8152_IRQ)
++#define PME_IRQ IRQ_GPIO(0)
++#define CMX270_IDE_IRQ IRQ_GPIO(100)
++#define CMX270_GPIRQ1 IRQ_GPIO(101)
++#define CMX270_TOUCHIRQ IRQ_GPIO(96)
++#define CMX270_ETHIRQ IRQ_GPIO(10)
++#define CMX270_GFXIRQ IRQ_GPIO(95)
++#define CMX270_NANDIRQ IRQ_GPIO(89)
++#define CMX270_MMC_IRQ IRQ_GPIO(83)
++
++/* PCMCIA related definitions */
++#define PCC_DETECT(x) (GPLR(84 - (x)) & GPIO_bit(84 - (x)))
++#define PCC_READY(x) (GPLR(82 - (x)) & GPIO_bit(82 - (x)))
++
++#define PCMCIA_S0_CD_VALID IRQ_GPIO(84)
++#define PCMCIA_S0_CD_VALID_EDGE GPIO_BOTH_EDGES
++
++#define PCMCIA_S1_CD_VALID IRQ_GPIO(83)
++#define PCMCIA_S1_CD_VALID_EDGE GPIO_BOTH_EDGES
++
++#define PCMCIA_S0_RDYINT IRQ_GPIO(82)
++#define PCMCIA_S1_RDYINT IRQ_GPIO(81)
++
++#define PCMCIA_RESET_GPIO 53
+diff -NbBur linux-2.6.25-rc4-orig/include/asm-arm/arch/colibri.h linux-2.6.25-rc4/include/asm-arm/arch/colibri.h
+--- linux-2.6.25-rc4-orig/include/asm-arm/arch/colibri.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.25-rc4/include/asm-arm/arch/colibri.h 2008-03-08 16:11:19.000000000 +0100
+@@ -0,0 +1,19 @@
++#ifndef _COLIBRI_H_
++#define _COLIBRI_H_
++
++/* physical memory regions */
++#define COLIBRI_FLASH_PHYS (PXA_CS0_PHYS) /* Flash region */
++#define COLIBRI_ETH_PHYS (PXA_CS2_PHYS) /* Ethernet DM9000 region */
++#define COLIBRI_SDRAM_BASE 0xa0000000 /* SDRAM region */
++
++/* virtual memory regions */
++#define COLIBRI_DISK_VIRT 0xF0000000 /* Disk On Chip region */
++
++/* size of flash */
++#define COLIBRI_FLASH_SIZE 0x02000000 /* Flash size 32 MB */
++
++/* Ethernet Controller Davicom DM9000 */
++#define GPIO_DM9000 114
++#define COLIBRI_ETH_IRQ IRQ_GPIO(GPIO_DM9000)
++
++#endif /* _COLIBRI_H_ */
+diff -NbBur linux-2.6.25-rc4-orig/include/asm-arm/arch/corgi.h linux-2.6.25-rc4/include/asm-arm/arch/corgi.h
+--- linux-2.6.25-rc4-orig/include/asm-arm/arch/corgi.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.25-rc4/include/asm-arm/arch/corgi.h 2008-03-08 16:11:19.000000000 +0100
+@@ -0,0 +1,109 @@
++/*
++ * Hardware specific definitions for SL-C7xx series of PDAs
++ *
++ * Copyright (c) 2004-2005 Richard Purdie
++ *
++ * Based on Sharp's 2.4 kernel patches
++ *
++ * 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.
++ *
++ */
++#ifndef __ASM_ARCH_CORGI_H
++#define __ASM_ARCH_CORGI_H 1
++
++
++/*
++ * Corgi (Non Standard) GPIO Definitions
++ */
++#define CORGI_GPIO_KEY_INT (0) /* Keyboard Interrupt */
++#define CORGI_GPIO_AC_IN (1) /* Charger Detection */
++#define CORGI_GPIO_WAKEUP (3) /* System wakeup notification? */
++#define CORGI_GPIO_AK_INT (4) /* Headphone Jack Control Interrupt */
++#define CORGI_GPIO_TP_INT (5) /* Touch Panel Interrupt */
++#define CORGI_GPIO_nSD_WP (7) /* SD Write Protect? */
++#define CORGI_GPIO_nSD_DETECT (9) /* MMC/SD Card Detect */
++#define CORGI_GPIO_nSD_INT (10) /* SD Interrupt for SDIO? */
++#define CORGI_GPIO_MAIN_BAT_LOW (11) /* Main Battery Low Notification */
++#define CORGI_GPIO_BAT_COVER (11) /* Battery Cover Detect */
++#define CORGI_GPIO_LED_ORANGE (13) /* Orange LED Control */
++#define CORGI_GPIO_CF_CD (14) /* Compact Flash Card Detect */
++#define CORGI_GPIO_CHRG_FULL (16) /* Charging Complete Notification */
++#define CORGI_GPIO_CF_IRQ (17) /* Compact Flash Interrupt */
++#define CORGI_GPIO_LCDCON_CS (19) /* LCD Control Chip Select */
++#define CORGI_GPIO_MAX1111_CS (20) /* MAX1111 Chip Select */
++#define CORGI_GPIO_ADC_TEMP_ON (21) /* Select battery voltage or temperature */
++#define CORGI_GPIO_IR_ON (22) /* Enable IR Transciever */
++#define CORGI_GPIO_ADS7846_CS (24) /* ADS7846 Chip Select */
++#define CORGI_GPIO_SD_PWR (33) /* MMC/SD Power */
++#define CORGI_GPIO_CHRG_ON (38) /* Enable battery Charging */
++#define CORGI_GPIO_DISCHARGE_ON (42) /* Enable battery Discharge */
++#define CORGI_GPIO_CHRG_UKN (43) /* Unknown Charging (Bypass Control?) */
++#define CORGI_GPIO_HSYNC (44) /* LCD HSync Pulse */
++#define CORGI_GPIO_USB_PULLUP (45) /* USB show presence to host */
++
++
++/*
++ * Corgi Keyboard Definitions
++ */
++#define CORGI_KEY_STROBE_NUM (12)
++#define CORGI_KEY_SENSE_NUM (8)
++#define CORGI_GPIO_ALL_STROBE_BIT (0x00003ffc)
++#define CORGI_GPIO_HIGH_SENSE_BIT (0xfc000000)
++#define CORGI_GPIO_HIGH_SENSE_RSHIFT (26)
++#define CORGI_GPIO_LOW_SENSE_BIT (0x00000003)
++#define CORGI_GPIO_LOW_SENSE_LSHIFT (6)
++#define CORGI_GPIO_STROBE_BIT(a) GPIO_bit(66+(a))
++#define CORGI_GPIO_SENSE_BIT(a) GPIO_bit(58+(a))
++#define CORGI_GAFR_ALL_STROBE_BIT (0x0ffffff0)
++#define CORGI_GAFR_HIGH_SENSE_BIT (0xfff00000)
++#define CORGI_GAFR_LOW_SENSE_BIT (0x0000000f)
++#define CORGI_GPIO_KEY_SENSE(a) (58+(a))
++#define CORGI_GPIO_KEY_STROBE(a) (66+(a))
++
++
++/*
++ * Corgi Interrupts
++ */
++#define CORGI_IRQ_GPIO_KEY_INT IRQ_GPIO(0)
++#define CORGI_IRQ_GPIO_AC_IN IRQ_GPIO(1)
++#define CORGI_IRQ_GPIO_WAKEUP IRQ_GPIO(3)
++#define CORGI_IRQ_GPIO_AK_INT IRQ_GPIO(4)
++#define CORGI_IRQ_GPIO_TP_INT IRQ_GPIO(5)
++#define CORGI_IRQ_GPIO_nSD_DETECT IRQ_GPIO(9)
++#define CORGI_IRQ_GPIO_nSD_INT IRQ_GPIO(10)
++#define CORGI_IRQ_GPIO_MAIN_BAT_LOW IRQ_GPIO(11)
++#define CORGI_IRQ_GPIO_CF_CD IRQ_GPIO(14)
++#define CORGI_IRQ_GPIO_CHRG_FULL IRQ_GPIO(16) /* Battery fully charged */
++#define CORGI_IRQ_GPIO_CF_IRQ IRQ_GPIO(17)
++#define CORGI_IRQ_GPIO_KEY_SENSE(a) IRQ_GPIO(58+(a)) /* Keyboard Sense lines */
++
++
++/*
++ * Corgi SCOOP GPIOs and Config
++ */
++#define CORGI_SCP_LED_GREEN SCOOP_GPCR_PA11
++#define CORGI_SCP_SWA SCOOP_GPCR_PA12 /* Hinge Switch A */
++#define CORGI_SCP_SWB SCOOP_GPCR_PA13 /* Hinge Switch B */
++#define CORGI_SCP_MUTE_L SCOOP_GPCR_PA14
++#define CORGI_SCP_MUTE_R SCOOP_GPCR_PA15
++#define CORGI_SCP_AKIN_PULLUP SCOOP_GPCR_PA16
++#define CORGI_SCP_APM_ON SCOOP_GPCR_PA17
++#define CORGI_SCP_BACKLIGHT_CONT SCOOP_GPCR_PA18
++#define CORGI_SCP_MIC_BIAS SCOOP_GPCR_PA19
++
++#define CORGI_SCOOP_IO_DIR ( CORGI_SCP_LED_GREEN | CORGI_SCP_MUTE_L | CORGI_SCP_MUTE_R | \
++ CORGI_SCP_AKIN_PULLUP | CORGI_SCP_APM_ON | CORGI_SCP_BACKLIGHT_CONT | \
++ CORGI_SCP_MIC_BIAS )
++#define CORGI_SCOOP_IO_OUT ( CORGI_SCP_MUTE_L | CORGI_SCP_MUTE_R )
++
++
++/*
++ * Shared data structures
++ */
++extern struct platform_device corgiscoop_device;
++extern struct platform_device corgissp_device;
++
++#endif /* __ASM_ARCH_CORGI_H */
++
+diff -NbBur linux-2.6.25-rc4-orig/include/asm-arm/arch/debug-macro.S linux-2.6.25-rc4/include/asm-arm/arch/debug-macro.S
+--- linux-2.6.25-rc4-orig/include/asm-arm/arch/debug-macro.S 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.25-rc4/include/asm-arm/arch/debug-macro.S 2008-02-26 01:20:20.000000000 +0100
+@@ -0,0 +1,25 @@
++/* linux/include/asm-arm/arch-pxa/debug-macro.S
++ *
++ * Debugging macro include header
++ *
++ * Copyright (C) 1994-1999 Russell King
++ * Moved from linux/arch/arm/kernel/debug.S by Ben Dooks
++ *
++ * 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 "hardware.h"
++
++ .macro addruart,rx
++ mrc p15, 0, \rx, c1, c0
++ tst \rx, #1 @ MMU enabled?
++ moveq \rx, #0x40000000 @ physical
++ movne \rx, #io_p2v(0x40000000) @ virtual
++ orr \rx, \rx, #0x00100000
++ .endm
++
++#define UART_SHIFT 2
++#include <asm/hardware/debug-8250.S>
+diff -NbBur linux-2.6.25-rc4-orig/include/asm-arm/arch/dma.h linux-2.6.25-rc4/include/asm-arm/arch/dma.h
+--- linux-2.6.25-rc4-orig/include/asm-arm/arch/dma.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.25-rc4/include/asm-arm/arch/dma.h 2008-02-26 01:20:20.000000000 +0100
+@@ -0,0 +1,50 @@
++/*
++ * linux/include/asm-arm/arch-pxa/dma.h
++ *
++ * Author: Nicolas Pitre
++ * Created: Jun 15, 2001
++ * Copyright: MontaVista Software, Inc.
++ *
++ * 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.
++ */
++#ifndef __ASM_ARCH_DMA_H
++#define __ASM_ARCH_DMA_H
++
++/*
++ * Descriptor structure for PXA's DMA engine
++ * Note: this structure must always be aligned to a 16-byte boundary.
++ */
++
++typedef struct pxa_dma_desc {
++ volatile u32 ddadr; /* Points to the next descriptor + flags */
++ volatile u32 dsadr; /* DSADR value for the current transfer */
++ volatile u32 dtadr; /* DTADR value for the current transfer */
++ volatile u32 dcmd; /* DCMD value for the current transfer */
++} pxa_dma_desc;
++
++typedef enum {
++ DMA_PRIO_HIGH = 0,
++ DMA_PRIO_MEDIUM = 1,
++ DMA_PRIO_LOW = 2
++} pxa_dma_prio;
++
++#if defined(CONFIG_MACH_ARMCORE) && defined(CONFIG_PCI)
++#define HAVE_ARCH_PCI_SET_DMA_MASK 1
++#endif
++
++/*
++ * DMA registration
++ */
++
++int __init pxa_init_dma(int num_ch);
++
++int pxa_request_dma (char *name,
++ pxa_dma_prio prio,
++ void (*irq_handler)(int, void *),
++ void *data);
++
++void pxa_free_dma (int dma_ch);
++
++#endif /* _ASM_ARCH_DMA_H */
+diff -NbBur linux-2.6.25-rc4-orig/include/asm-arm/arch/entry-macro.S linux-2.6.25-rc4/include/asm-arm/arch/entry-macro.S
+--- linux-2.6.25-rc4-orig/include/asm-arm/arch/entry-macro.S 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.25-rc4/include/asm-arm/arch/entry-macro.S 2008-03-08 16:11:19.000000000 +0100
+@@ -0,0 +1,57 @@
++/*
++ * include/asm-arm/arch-pxa/entry-macro.S
++ *
++ * Low-level IRQ helper macros for PXA-based platforms
++ *
++ * This file is licensed under the terms of the GNU General Public
++ * License version 2. This program is licensed "as is" without any
++ * warranty of any kind, whether express or implied.
++ */
++#include <asm/hardware.h>
++#include <asm/arch/irqs.h>
++
++ .macro disable_fiq
++ .endm
++
++ .macro get_irqnr_preamble, base, tmp
++ .endm
++
++ .macro arch_ret_to_user, tmp1, tmp2
++ .endm
++
++ .macro get_irqnr_and_base, irqnr, irqstat, base, tmp
++ mrc p15, 0, \tmp, c0, c0, 0 @ CPUID
++ mov \tmp, \tmp, lsr #13
++ and \tmp, \tmp, #0x7 @ Core G
++ cmp \tmp, #1
++ bhi 1004f
++
++ mov \base, #io_p2v(0x40000000) @ IIR Ctl = 0x40d00000
++ add \base, \base, #0x00d00000
++ ldr \irqstat, [\base, #0] @ ICIP
++ ldr \irqnr, [\base, #4] @ ICMR
++ b 1002f
++
++1004:
++ mrc p6, 0, \irqstat, c6, c0, 0 @ ICIP2
++ mrc p6, 0, \irqnr, c7, c0, 0 @ ICMR2
++ ands \irqnr, \irqstat, \irqnr
++ beq 1003f
++ rsb \irqstat, \irqnr, #0
++ and \irqstat, \irqstat, \irqnr
++ clz \irqnr, \irqstat
++ rsb \irqnr, \irqnr, #31
++ add \irqnr, \irqnr, #32
++ b 1001f
++1003:
++ mrc p6, 0, \irqstat, c0, c0, 0 @ ICIP
++ mrc p6, 0, \irqnr, c1, c0, 0 @ ICMR
++1002:
++ ands \irqnr, \irqstat, \irqnr
++ beq 1001f
++ rsb \irqstat, \irqnr, #0
++ and \irqstat, \irqstat, \irqnr
++ clz \irqnr, \irqstat
++ rsb \irqnr, \irqnr, #31
++1001:
++ .endm
+diff -NbBur linux-2.6.25-rc4-orig/include/asm-arm/arch/gpio.h linux-2.6.25-rc4/include/asm-arm/arch/gpio.h
+--- linux-2.6.25-rc4-orig/include/asm-arm/arch/gpio.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.25-rc4/include/asm-arm/arch/gpio.h 2008-03-08 16:11:19.000000000 +0100
+@@ -0,0 +1,65 @@
++/*
++ * linux/include/asm-arm/arch-pxa/gpio.h
++ *
++ * PXA GPIO wrappers for arch-neutral GPIO calls
++ *
++ * Written by Philipp Zabel <philipp.zabel@gmail.com>
++ *
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation; either version 2 of the License, or
++ * (at your option) any later version.
++ *
++ * This program is distributed in the hope that it will be useful,
++ * but WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
++ * GNU General Public License for more details.
++ *
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
++ *
++ */
++
++#ifndef __ASM_ARCH_PXA_GPIO_H
++#define __ASM_ARCH_PXA_GPIO_H
++
++#include <asm/arch/pxa-regs.h>
++#include <asm/irq.h>
++#include <asm/hardware.h>
++
++#include <asm-generic/gpio.h>
++
++
++/* NOTE: some PXAs have fewer on-chip GPIOs (like PXA255, with 85).
++ * Those cases currently cause holes in the GPIO number space.
++ */
++#define NR_BUILTIN_GPIO 128
++
++static inline int gpio_get_value(unsigned gpio)
++{
++ if (__builtin_constant_p(gpio) && (gpio < NR_BUILTIN_GPIO))
++ return GPLR(gpio) & GPIO_bit(gpio);
++ else
++ return __gpio_get_value(gpio);
++}
++
++static inline void gpio_set_value(unsigned gpio, int value)
++{
++ if (__builtin_constant_p(gpio) && (gpio < NR_BUILTIN_GPIO)) {
++ if (value)
++ GPSR(gpio) = GPIO_bit(gpio);
++ else
++ GPCR(gpio) = GPIO_bit(gpio);
++ } else {
++ __gpio_set_value(gpio, value);
++ }
++}
++
++#define gpio_cansleep __gpio_cansleep
++
++#define gpio_to_irq(gpio) IRQ_GPIO(gpio)
++#define irq_to_gpio(irq) IRQ_TO_GPIO(irq)
++
++
++#endif
+diff -NbBur linux-2.6.25-rc4-orig/include/asm-arm/arch/hardware.h linux-2.6.25-rc4/include/asm-arm/arch/hardware.h
+--- linux-2.6.25-rc4-orig/include/asm-arm/arch/hardware.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.25-rc4/include/asm-arm/arch/hardware.h 2008-02-26 01:20:20.000000000 +0100
+@@ -0,0 +1,216 @@
++/*
++ * linux/include/asm-arm/arch-pxa/hardware.h
++ *
++ * Author: Nicolas Pitre
++ * Created: Jun 15, 2001
++ * Copyright: MontaVista Software Inc.
++ *
++ * 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.
++ */
++
++#ifndef __ASM_ARCH_HARDWARE_H
++#define __ASM_ARCH_HARDWARE_H
++
++/*
++ * We requires absolute addresses.
++ */
++#define PCIO_BASE 0
++
++/*
++ * Workarounds for at least 2 errata so far require this.
++ * The mapping is set in mach-pxa/generic.c.
++ */
++#define UNCACHED_PHYS_0 0xff000000
++#define UNCACHED_ADDR UNCACHED_PHYS_0
++
++/*
++ * Intel PXA2xx internal register mapping:
++ *
++ * 0x40000000 - 0x41ffffff <--> 0xf2000000 - 0xf3ffffff
++ * 0x44000000 - 0x45ffffff <--> 0xf4000000 - 0xf5ffffff
++ * 0x48000000 - 0x49ffffff <--> 0xf6000000 - 0xf7ffffff
++ * 0x4c000000 - 0x4dffffff <--> 0xf8000000 - 0xf9ffffff
++ * 0x50000000 - 0x51ffffff <--> 0xfa000000 - 0xfbffffff
++ * 0x54000000 - 0x55ffffff <--> 0xfc000000 - 0xfdffffff
++ * 0x58000000 - 0x59ffffff <--> 0xfe000000 - 0xffffffff
++ *
++ * Note that not all PXA2xx chips implement all those addresses, and the
++ * kernel only maps the minimum needed range of this mapping.
++ */
++#define io_p2v(x) (0xf2000000 + ((x) & 0x01ffffff) + (((x) & 0x1c000000) >> 1))
++#define io_v2p(x) (0x3c000000 + ((x) & 0x01ffffff) + (((x) & 0x0e000000) << 1))
++
++#ifndef __ASSEMBLY__
++
++# define __REG(x) (*((volatile u32 *)io_p2v(x)))
++
++/* With indexed regs we don't want to feed the index through io_p2v()
++ especially if it is a variable, otherwise horrible code will result. */
++# define __REG2(x,y) \
++ (*(volatile u32 *)((u32)&__REG(x) + (y)))
++
++# define __PREG(x) (io_v2p((u32)&(x)))
++
++#else
++
++# define __REG(x) io_p2v(x)
++# define __PREG(x) io_v2p(x)
++
++#endif
++
++#ifndef __ASSEMBLY__
++
++#ifdef CONFIG_PXA25x
++#define __cpu_is_pxa21x(id) \
++ ({ \
++ unsigned int _id = (id) >> 4 & 0xf3f; \
++ _id == 0x212; \
++ })
++
++#define __cpu_is_pxa25x(id) \
++ ({ \
++ unsigned int _id = (id) >> 4 & 0xfff; \
++ _id == 0x2d0 || _id == 0x290; \
++ })
++#else
++#define __cpu_is_pxa21x(id) (0)
++#define __cpu_is_pxa25x(id) (0)
++#endif
++
++#ifdef CONFIG_PXA27x
++#define __cpu_is_pxa27x(id) \
++ ({ \
++ unsigned int _id = (id) >> 4 & 0xfff; \
++ _id == 0x411; \
++ })
++#else
++#define __cpu_is_pxa27x(id) (0)
++#endif
++
++#ifdef CONFIG_CPU_PXA300
++#define __cpu_is_pxa300(id) \
++ ({ \
++ unsigned int _id = (id) >> 4 & 0xfff; \
++ _id == 0x688; \
++ })
++#else
++#define __cpu_is_pxa300(id) (0)
++#endif
++
++#ifdef CONFIG_CPU_PXA310
++#define __cpu_is_pxa310(id) \
++ ({ \
++ unsigned int _id = (id) >> 4 & 0xfff; \
++ _id == 0x689; \
++ })
++#else
++#define __cpu_is_pxa310(id) (0)
++#endif
++
++#ifdef CONFIG_CPU_PXA320
++#define __cpu_is_pxa320(id) \
++ ({ \
++ unsigned int _id = (id) >> 4 & 0xfff; \
++ _id == 0x603 || _id == 0x682; \
++ })
++#else
++#define __cpu_is_pxa320(id) (0)
++#endif
++
++#define cpu_is_pxa21x() \
++ ({ \
++ __cpu_is_pxa21x(read_cpuid_id()); \
++ })
++
++#define cpu_is_pxa25x() \
++ ({ \
++ __cpu_is_pxa25x(read_cpuid_id()); \
++ })
++
++#define cpu_is_pxa27x() \
++ ({ \
++ __cpu_is_pxa27x(read_cpuid_id()); \
++ })
++
++#define cpu_is_pxa300() \
++ ({ \
++ __cpu_is_pxa300(read_cpuid_id()); \
++ })
++
++#define cpu_is_pxa310() \
++ ({ \
++ __cpu_is_pxa310(read_cpuid_id()); \
++ })
++
++#define cpu_is_pxa320() \
++ ({ \
++ __cpu_is_pxa320(read_cpuid_id()); \
++ })
++
++/*
++ * CPUID Core Generation Bit
++ * <= 0x2 for pxa21x/pxa25x/pxa26x/pxa27x
++ * == 0x3 for pxa300/pxa310/pxa320
++ */
++#define __cpu_is_pxa2xx(id) \
++ ({ \
++ unsigned int _id = (id) >> 13 & 0x7; \
++ _id <= 0x2; \
++ })
++
++#define __cpu_is_pxa3xx(id) \
++ ({ \
++ unsigned int _id = (id) >> 13 & 0x7; \
++ _id == 0x3; \
++ })
++
++#define cpu_is_pxa2xx() \
++ ({ \
++ __cpu_is_pxa2xx(read_cpuid_id()); \
++ })
++
++#define cpu_is_pxa3xx() \
++ ({ \
++ __cpu_is_pxa3xx(read_cpuid_id()); \
++ })
++
++/*
++ * Handy routine to set GPIO alternate functions
++ */
++extern int pxa_gpio_mode( int gpio_mode );
++
++/*
++ * Return GPIO level, nonzero means high, zero is low
++ */
++extern int pxa_gpio_get_value(unsigned gpio);
++
++/*
++ * Set output GPIO level
++ */
++extern void pxa_gpio_set_value(unsigned gpio, int value);
++
++/*
++ * Routine to enable or disable CKEN
++ */
++static inline void __deprecated pxa_set_cken(int clock, int enable)
++{
++ extern void __pxa_set_cken(int clock, int enable);
++ __pxa_set_cken(clock, enable);
++}
++
++/*
++ * return current memory and LCD clock frequency in units of 10kHz
++ */
++extern unsigned int get_memclk_frequency_10khz(void);
++
++#endif
++
++#if defined(CONFIG_MACH_ARMCORE) && defined(CONFIG_PCI)
++#define PCIBIOS_MIN_IO 0
++#define PCIBIOS_MIN_MEM 0
++#define pcibios_assign_all_busses() 1
++#endif
++
++#endif /* _ASM_ARCH_HARDWARE_H */
+diff -NbBur linux-2.6.25-rc4-orig/include/asm-arm/arch/i2c.h linux-2.6.25-rc4/include/asm-arm/arch/i2c.h
+--- linux-2.6.25-rc4-orig/include/asm-arm/arch/i2c.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.25-rc4/include/asm-arm/arch/i2c.h 2008-03-08 16:11:19.000000000 +0100
+@@ -0,0 +1,77 @@
++/*
++ * i2c_pxa.h
++ *
++ * Copyright (C) 2002 Intrinsyc Software Inc.
++ *
++ * 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.
++ *
++ */
++#ifndef _I2C_PXA_H_
++#define _I2C_PXA_H_
++
++#if 0
++#define DEF_TIMEOUT 3
++#else
++/* need a longer timeout if we're dealing with the fact we may well be
++ * looking at a multi-master environment
++*/
++#define DEF_TIMEOUT 32
++#endif
++
++#define BUS_ERROR (-EREMOTEIO)
++#define XFER_NAKED (-ECONNREFUSED)
++#define I2C_RETRY (-2000) /* an error has occurred retry transmit */
++
++/* ICR initialize bit values
++*
++* 15. FM 0 (100 Khz operation)
++* 14. UR 0 (No unit reset)
++* 13. SADIE 0 (Disables the unit from interrupting on slave addresses
++* matching its slave address)
++* 12. ALDIE