r1004 - trunk/src/target/kernel/patches
laforge at sita.openmoko.org
laforge at sita.openmoko.org
Thu Feb 15 22:37:18 CET 2007
Author: laforge
Date: 2007-02-15 22:37:15 +0100 (Thu, 15 Feb 2007)
New Revision: 1004
Added:
trunk/src/target/kernel/patches/asoc-asm_hardware_h.patch
trunk/src/target/kernel/patches/asoc-platform-hw_init-pcm_emulation-fix.patch
trunk/src/target/kernel/patches/i2c-permit_invalid_addrs.patch
trunk/src/target/kernel/patches/pm-debug_less_verbose.patch
trunk/src/target/kernel/patches/s3c2410_touchscreen.patch
trunk/src/target/kernel/patches/s3c2410fb_2617_backport.patch
Removed:
trunk/src/target/kernel/patches/asoc-neo_backport.patch
trunk/src/target/kernel/patches/qt2410-touchscreen.patch
Modified:
trunk/src/target/kernel/patches/asoc.patch
trunk/src/target/kernel/patches/gta01-backlight.patch
trunk/src/target/kernel/patches/gta01-core.patch
trunk/src/target/kernel/patches/gta01-inputdevice.patch
trunk/src/target/kernel/patches/gta01-jbt6k74.patch
trunk/src/target/kernel/patches/gta01-no_nand_partitions.patch
trunk/src/target/kernel/patches/gta01-pcf50606.patch
trunk/src/target/kernel/patches/gta01-power_control.patch
trunk/src/target/kernel/patches/gta01-vbus_draw.patch
trunk/src/target/kernel/patches/qt2410-base.patch
trunk/src/target/kernel/patches/qt2410-s3c_mci-pdata.patch
trunk/src/target/kernel/patches/s3c2410_udc-vbus_draw_pdata.patch
trunk/src/target/kernel/patches/s3c2410_udc.patch
trunk/src/target/kernel/patches/s3c_mci.patch
trunk/src/target/kernel/patches/series
trunk/src/target/kernel/patches/udc-nomodule-misccr.patch
Log:
* merge our patchset into 2.6.20 mainline kernel (yay!)
* rename qt2410_touchscreen into s3c2410_touchscreen
* revert 2.6.17->2.6.20 changes to s3c2410_fb, since they're broken
* add PCM emulation bugfix to ASoC for s3c24xx
* make power management a bit less verbose if debug is enabled
* get rid of asoc-neo_backport, since we're now 2.6.20
Added: trunk/src/target/kernel/patches/asoc-asm_hardware_h.patch
===================================================================
--- trunk/src/target/kernel/patches/asoc-asm_hardware_h.patch 2007-02-15 21:31:15 UTC (rev 1003)
+++ trunk/src/target/kernel/patches/asoc-asm_hardware_h.patch 2007-02-15 21:37:15 UTC (rev 1004)
@@ -0,0 +1,17 @@
+Don't include <asm/arch/hardware.h>, but <asm/hardware.h>
+
+Signed-off-by: Harald Welte <laforge at openmko.org>
+
+Index: linux-2.6.20/sound/soc/s3c24xx/neo1973_wm8753.c
+===================================================================
+--- linux-2.6.20.orig/sound/soc/s3c24xx/neo1973_wm8753.c 2007-02-15 16:27:53.000000000 +0100
++++ linux-2.6.20/sound/soc/s3c24xx/neo1973_wm8753.c 2007-02-15 16:28:02.000000000 +0100
+@@ -33,7 +33,7 @@
+ #include <asm/arch/regs-iis.h>
+ #include <asm/arch/regs-clock.h>
+ #include <asm/arch/regs-gpio.h>
+-#include <asm/arch/hardware.h>
++#include <asm/hardware.h>
+ #include <asm/arch/audio.h>
+ #include <asm/io.h>
+ #include <asm/arch/spi-gpio.h>
Deleted: trunk/src/target/kernel/patches/asoc-neo_backport.patch
===================================================================
--- trunk/src/target/kernel/patches/asoc-neo_backport.patch 2007-02-15 21:31:15 UTC (rev 1003)
+++ trunk/src/target/kernel/patches/asoc-neo_backport.patch 2007-02-15 21:37:15 UTC (rev 1004)
@@ -1,156 +0,0 @@
-Index: linux-2.6.17.14/include/sound/soc.h
-===================================================================
---- linux-2.6.17.14.orig/include/sound/soc.h
-+++ linux-2.6.17.14/include/sound/soc.h
-@@ -359,7 +359,7 @@ struct snd_soc_codec {
- struct list_head dapm_paths;
- unsigned int dapm_state;
- unsigned int suspend_dapm_state;
-- struct delayed_work delayed_work;
-+ struct work_struct delayed_work;
-
- /* codec DAI's */
- struct snd_soc_codec_dai *dai;
-@@ -436,7 +436,7 @@ struct snd_soc_device {
- struct snd_soc_platform *platform;
- struct snd_soc_codec *codec;
- struct snd_soc_codec_device *codec_dev;
-- struct delayed_work delayed_work;
-+ struct work_struct delayed_work;
- void *codec_data;
- };
-
-Index: linux-2.6.17.14/sound/soc/codecs/wm8753.c
-===================================================================
---- linux-2.6.17.14.orig/sound/soc/codecs/wm8753.c
-+++ linux-2.6.17.14/sound/soc/codecs/wm8753.c
-@@ -1422,10 +1422,9 @@ static void wm8753_set_dai_mode(struct s
- wm8753_dai[1].codec = codec;
- }
-
--static void wm8753_work(struct work_struct *work)
-+static void wm8753_work(void *data)
- {
-- struct snd_soc_codec *codec =
-- container_of(work, struct snd_soc_codec, delayed_work.work);
-+ struct snd_soc_codec *codec = data;
- wm8753_dapm_event(codec, codec->dapm_state);
- }
-
-@@ -1669,7 +1668,7 @@ static int wm8753_probe(struct platform_
- INIT_LIST_HEAD(&codec->dapm_widgets);
- INIT_LIST_HEAD(&codec->dapm_paths);
- wm8753_socdev = socdev;
-- INIT_DELAYED_WORK(&codec->delayed_work, wm8753_work);
-+ INIT_WORK(&codec->delayed_work, wm8753_work, codec);
-
- #if defined (CONFIG_I2C) || defined (CONFIG_I2C_MODULE)
- if (setup->i2c_address) {
-Index: linux-2.6.17.14/sound/soc/soc-core.c
-===================================================================
---- linux-2.6.17.14.orig/sound/soc/soc-core.c
-+++ linux-2.6.17.14/sound/soc/soc-core.c
-@@ -64,7 +64,7 @@ MODULE_PARM_DESC(pmdown_time, "DAPM stre
- /*
- * This function forces any delayed work to be queued and run.
- */
--static int run_delayed_work(struct delayed_work *dwork)
-+static int run_delayed_work(struct work_struct *dwork)
- {
- int ret;
-
-@@ -267,10 +267,9 @@ out:
- * This is to ensure there are no pops or clicks in between any music tracks
- * due to DAPM power cycling.
- */
--static void close_delayed_work(struct work_struct *work)
-+static void close_delayed_work(void *data)
- {
-- struct snd_soc_device *socdev =
-- container_of(work, struct snd_soc_device, delayed_work.work);
-+ struct snd_soc_device *socdev = data;
- struct snd_soc_codec *codec = socdev->codec;
- struct snd_soc_codec_dai *codec_dai;
- int i;
-@@ -775,7 +774,7 @@ static int soc_probe(struct platform_dev
- }
-
- /* DAPM stream work */
-- INIT_DELAYED_WORK(&socdev->delayed_work, close_delayed_work);
-+ INIT_WORK(&socdev->delayed_work, close_delayed_work, socdev);
- return 0;
-
- platform_err:
-Index: linux-2.6.17.14/sound/soc/s3c24xx/s3c24xx-i2s.c
-===================================================================
---- linux-2.6.17.14.orig/sound/soc/s3c24xx/s3c24xx-i2s.c
-+++ linux-2.6.17.14/sound/soc/s3c24xx/s3c24xx-i2s.c
-@@ -60,13 +60,13 @@ static struct s3c2410_dma_client s3c24xx
-
- static struct s3c24xx_pcm_dma_params s3c24xx_i2s_pcm_stereo_out = {
- .client = &s3c24xx_dma_client_out,
-- .channel = DMACH_I2S_OUT,
-+ .channel = 2,
- .dma_addr = S3C2410_PA_IIS + S3C2410_IISFIFO
- };
-
- static struct s3c24xx_pcm_dma_params s3c24xx_i2s_pcm_stereo_in = {
- .client = &s3c24xx_dma_client_in,
-- .channel = DMACH_I2S_IN,
-+ .channel = 1,
- .dma_addr = S3C2410_PA_IIS + S3C2410_IISFIFO
- };
-
-Index: linux-2.6.17.14/sound/soc/s3c24xx/s3c24xx-pcm.c
-===================================================================
---- linux-2.6.17.14.orig/sound/soc/s3c24xx/s3c24xx-pcm.c
-+++ linux-2.6.17.14/sound/soc/s3c24xx/s3c24xx-pcm.c
-@@ -114,9 +114,9 @@ static void s3c24xx_pcm_enqueue(struct s
- prtd->dma_pos = pos;
- }
-
--static void s3c24xx_audio_buffdone(struct s3c2410_dma_chan *channel,
-+static void s3c24xx_audio_buffdone(s3c2410_dma_chan_t *channel,
- void *dev_id, int size,
-- enum s3c2410_dma_buffresult result)
-+ s3c2410_dma_buffresult_t result)
- {
- struct snd_pcm_substream *substream = dev_id;
- struct s3c24xx_runtime_data *prtd = substream->runtime->private_data;
-@@ -180,7 +180,8 @@ static int s3c24xx_pcm_hw_params(struct
- 2, S3C2410_DCON_SYNC_PCLK | S3C2410_DCON_HANDSHAKE);
- } else {
- s3c2410_dma_config(prtd->params->channel,
-- 2, S3C2410_DCON_HANDSHAKE | S3C2410_DCON_SYNC_PCLK);
-+ 2, S3C2410_DCON_HANDSHAKE | S3C2410_DCON_SYNC_PCLK |
-+ S3C2410_DCON_CH1_I2SSDI);
-
- s3c2410_dma_devconfig(prtd->params->channel,
- S3C2410_DMASRC_HW, 0x3,
-@@ -261,7 +262,7 @@ static int s3c24xx_pcm_trigger(struct sn
- case SNDRV_PCM_TRIGGER_PAUSE_RELEASE:
- prtd->state |= ST_RUNNING;
- s3c2410_dma_ctrl(prtd->params->channel, S3C2410_DMAOP_START);
-- s3c2410_dma_ctrl(prtd->params->channel, S3C2410_DMAOP_STARTED);
-+// s3c2410_dma_ctrl(prtd->params->channel, S3C2410_DMAOP_STARTED);
- break;
-
- case SNDRV_PCM_TRIGGER_STOP:
-Index: linux-2.6.17.14/drivers/i2c/i2c-core.c
-===================================================================
---- linux-2.6.17.14.orig/drivers/i2c/i2c-core.c
-+++ linux-2.6.17.14/drivers/i2c/i2c-core.c
-@@ -650,11 +650,11 @@ static int i2c_probe_address(struct i2c_
- int err;
-
- /* Make sure the address is valid */
-- if (addr < 0x03 || addr > 0x77) {
-+ /*if (addr < 0x03 || addr > 0x77) {
- dev_warn(&adapter->dev, "Invalid probe address 0x%02x\n",
- addr);
- return -EINVAL;
-- }
-+ }*/
-
- /* Skip if already in use */
- if (i2c_check_addr(adapter, addr))
Added: trunk/src/target/kernel/patches/asoc-platform-hw_init-pcm_emulation-fix.patch
===================================================================
--- trunk/src/target/kernel/patches/asoc-platform-hw_init-pcm_emulation-fix.patch 2007-02-15 21:31:15 UTC (rev 1003)
+++ trunk/src/target/kernel/patches/asoc-platform-hw_init-pcm_emulation-fix.patch 2007-02-15 21:37:15 UTC (rev 1004)
@@ -0,0 +1,45 @@
+Since the PCM emulation can call multiple times to hw_setup(), but we
+can only once allocate/request the DMA channel, we have to handle
+this gracefully.
+
+Signed-off-by: Harald Welte <laforge at openmoko.org>
+
+Index: linux-2.6.20/sound/soc/s3c24xx/s3c24xx-pcm.c
+===================================================================
+--- linux-2.6.20.orig/sound/soc/s3c24xx/s3c24xx-pcm.c 2007-02-15 21:50:25.000000000 +0100
++++ linux-2.6.20/sound/soc/s3c24xx/s3c24xx-pcm.c 2007-02-15 22:25:10.000000000 +0100
+@@ -155,18 +155,22 @@
+ if (!dma)
+ return 0;
+
+- /* prepare DMA */
+- prtd->params = dma;
+-
+- DBG("params %p, client %p, channel %d\n", prtd->params,
+- prtd->params->client, prtd->params->channel);
+-
+- ret = s3c2410_dma_request(prtd->params->channel,
+- prtd->params->client, NULL);
+-
+- if (ret) {
+- DBG(KERN_ERR "failed to get dma channel\n");
+- return ret;
++ /* this may get called several times by oss emulation
++ * with different params -HW */
++ if (prtd->params == NULL) {
++ /* prepare DMA */
++ prtd->params = dma;
++
++ DBG("params %p, client %p, channel %d\n", prtd->params,
++ prtd->params->client, prtd->params->channel);
++
++ ret = s3c2410_dma_request(prtd->params->channel,
++ prtd->params->client, NULL);
++
++ if (ret) {
++ DBG(KERN_ERR "failed to get dma channel\n");
++ return ret;
++ }
+ }
+
+ /* channel needs configuring for mem=>device, increment memory addr,
Modified: trunk/src/target/kernel/patches/asoc.patch
===================================================================
--- trunk/src/target/kernel/patches/asoc.patch 2007-02-15 21:31:15 UTC (rev 1003)
+++ trunk/src/target/kernel/patches/asoc.patch 2007-02-15 21:37:15 UTC (rev 1004)
@@ -1,8 +1,8 @@
-Index: linux-2.6.17.14-fic4.test/Documentation/sound/alsa/soc/DAI.txt
+Index: linux-2.6-asoc-pxa/Documentation/sound/alsa/soc/DAI.txt
===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.17.14-fic4.test/Documentation/sound/alsa/soc/DAI.txt 2007-02-06 15:55:20.000000000 +0100
-@@ -0,0 +1,117 @@
+--- /dev/null
++++ linux-2.6-asoc-pxa/Documentation/sound/alsa/soc/DAI.txt
+@@ -0,0 +1,56 @@
+ASoC currently supports the three main Digital Audio Interfaces (DAI) found on
+SoC controllers and portable audio CODECS today, namely AC97, I2S and PCM.
+
@@ -59,72 +59,11 @@
+ o Mode A - MSB is transmitted on falling edge of first BCLK after FRAME/SYNC.
+
+ o Mode B - MSB is transmitted on rising edge of FRAME/SYNC.
-+
-+
-+ASoC DAI Configuration
-+======================
-+
-+DAI configuration parameters, all listed in include/sound/soc.h
-+
-+ 1) hardware DAI formats
-+
-+#define SND_SOC_DAIFMT_I2S (1 << 0) /* I2S mode */
-+#define SND_SOC_DAIFMT_RIGHT_J (1 << 1) /* Right justified or LSB mode */
-+#define SND_SOC_DAIFMT_LEFT_J (1 << 2) /* Left Justified or MSB mode */
-+#define SND_SOC_DAIFMT_DSP_A (1 << 3) /* L data msb after FRM */
-+#define SND_SOC_DAIFMT_DSP_B (1 << 4) /* L data msb during FRM */
-+#define SND_SOC_DAIFMT_AC97 (1 << 5) /* AC97 */
-+
-+#define SND_SOC_DAIFMT_MSB SND_SOC_DAIFMT_LEFT_J
-+#define SND_SOC_DAIFMT_LSB SND_SOC_DAIFMT_RIGHT_J
-+
-+ 2) Clock gating
-+
-+#define SND_SOC_DAIFMT_CONT (0 << 4) /* continuous clock */
-+#define SND_SOC_DAIFMT_GATED (1 << 4) /* clock is gated when not Tx/Rx */
-+
-+ 3) hw DAI signal inversions
-+
-+#define SND_SOC_DAIFMT_NB_NF (1 << 8) /* normal bit clock + frame */
-+#define SND_SOC_DAIFMT_NB_IF (1 << 9) /* normal bclk + inv frm */
-+#define SND_SOC_DAIFMT_IB_NF (1 << 10) /* invert bclk + nor frm */
-+#define SND_SOC_DAIFMT_IB_IF (1 << 11) /* invert bclk + frm */
-+
-+ 4) hw clock masters
-+ This is wrt the codec, the inverse is true for the interface
-+ i.e. if the codec is clk and frm master then the interface is
-+ clk and frame slave.
-+
-+#define SND_SOC_DAIFMT_CBM_CFM (1 << 12) /* codec clk & frm master */
-+#define SND_SOC_DAIFMT_CBS_CFM (1 << 13) /* codec clk slave & frm master */
-+#define SND_SOC_DAIFMT_CBM_CFS (1 << 14) /* codec clk master & frame slave */
-+#define SND_SOC_DAIFMT_CBS_CFS (1 << 15) /* codec clk & frm slave */
-+
-+
-+ASoC DAI Operations
-+===================
-+
-+ /* codec DAI clocking configuration */
-+ int (*set_sysclk)(struct snd_soc_codec_dai *codec_dai,
-+ int clk_id, unsigned int freq, int dir);
-+ int (*set_pll)(struct snd_soc_codec_dai *codec_dai,
-+ int pll_id, unsigned int freq_in, unsigned int freq_out);
-+ int (*set_clkdiv)(struct snd_soc_codec_dai *codec_dai,
-+ int div_id, int div);
-+
-+ /* CPU DAI format configuration */
-+ int (*set_fmt)(struct snd_soc_codec_dai *codec_dai,
-+ unsigned int fmt);
-+ int (*set_tdm_slot)(struct snd_soc_codec_dai *codec_dai,
-+ unsigned int mask, int slots);
-+ int (*set_tristate)(struct snd_soc_codec_dai *, int tristate);
-+
-+
-Index: linux-2.6.17.14-fic4.test/Documentation/sound/alsa/soc/clocking.txt
+Index: linux-2.6-asoc-pxa/Documentation/sound/alsa/soc/clocking.txt
===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.17.14-fic4.test/Documentation/sound/alsa/soc/clocking.txt 2007-02-06 15:55:20.000000000 +0100
-@@ -0,0 +1,47 @@
+--- /dev/null
++++ linux-2.6-asoc-pxa/Documentation/sound/alsa/soc/clocking.txt
+@@ -0,0 +1,51 @@
+Audio Clocking
+==============
+
@@ -171,12 +110,16 @@
+it's best to configure BCLK to the lowest possible speed (depending on your
+rate, number of channels and wordsize) to save on power.
+
++It's also desireable to use the codec (if possible) to drive (or master) the
++audio clocks as it's usually gives more accurate sample rates than the CPU.
+
-Index: linux-2.6.17.14-fic4.test/Documentation/sound/alsa/soc/codec.txt
++
++
+Index: linux-2.6-asoc-pxa/Documentation/sound/alsa/soc/codec.txt
===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.17.14-fic4.test/Documentation/sound/alsa/soc/codec.txt 2007-02-06 15:55:20.000000000 +0100
-@@ -0,0 +1,196 @@
+--- /dev/null
++++ linux-2.6-asoc-pxa/Documentation/sound/alsa/soc/codec.txt
+@@ -0,0 +1,197 @@
+ASoC Codec Driver
+=================
+
@@ -185,21 +128,18 @@
+specific to the target platform or machine. All platform and machine specific
+code should be added to the platform and machine drivers respectively.
+
-+Each codec driver must provide the following features:-
++Each codec driver *must* provide the following features:-
+
-+ 1) Digital audio interface (DAI) description
-+ 2) Digital audio interface configuration
-+ 3) PCM's description
-+ 4) Codec control IO - using I2C, 3 Wire(SPI) or both API's
-+ 5) Mixers and audio controls
-+ 6) Sysclk configuration
-+ 7) Codec audio operations
++ 1) Codec DAI and PCM configuration
++ 2) Codec control IO - using I2C, 3 Wire(SPI) or both API's
++ 3) Mixers and audio controls
++ 4) Codec audio operations
+
+Optionally, codec drivers can also provide:-
+
-+ 8) DAPM description.
-+ 9) DAPM event handler.
-+10) DAC Digital mute control.
++ 5) DAPM description.
++ 6) DAPM event handler.
++ 7) DAC Digital mute control.
+
+It's probably best to use this guide in conjuction with the existing codec
+driver code in sound/soc/codecs/
@@ -207,44 +147,47 @@
+ASoC Codec driver breakdown
+===========================
+
-+1 - Digital Audio Interface (DAI) configuration
-+-----------------------------------------------
-+DAI configuration is handled by the codec_pcm_prepare function and is
-+responsible for configuring and starting the DAI on the codec. This can be
-+called multiple times and is atomic. It can access the runtime parameters.
++1 - Codec DAI and PCM configuration
++-----------------------------------
++Each codec driver must have a struct snd_soc_codec_dai to define it's DAI and
++PCM's capablities and operations. This struct is exported so that it can be
++registered with the core by your machine driver.
+
-+This usually consists of a large function with numerous switch statements to
-+set up each configuration option. These options are set by the core at runtime.
-+
-+
-+2 - Codec PCM's
-+---------------
-+Each codec must have it's PCM's defined. This defines the number of channels,
-+stream names, callbacks and codec name. It is also used to register the DAI
-+with the ASoC core. The PCM structure also associates the DAI capabilities with
-+the ALSA PCM.
-+
+e.g.
+
-+static struct snd_soc_pcm_codec wm8731_pcm_client = {
++struct snd_soc_codec_dai wm8731_dai = {
+ .name = "WM8731",
++ /* playback capabilities */
+ .playback = {
+ .stream_name = "Playback",
+ .channels_min = 1,
+ .channels_max = 2,
-+ },
++ .rates = WM8731_RATES,
++ .formats = WM8731_FORMATS,},
++ /* capture capabilities */
+ .capture = {
+ .stream_name = "Capture",
+ .channels_min = 1,
+ .channels_max = 2,
-+ },
++ .rates = WM8731_RATES,
++ .formats = WM8731_FORMATS,},
++ /* pcm operations - see section 4 below */
+ .ops = {
+ .prepare = wm8731_pcm_prepare,
++ .hw_params = wm8731_hw_params,
++ .shutdown = wm8731_shutdown,
+ },
++ /* DAI operations - see DAI.txt */
++ .dai_ops = {
++ .digital_mute = wm8731_mute,
++ .set_sysclk = wm8731_set_dai_sysclk,
++ .set_fmt = wm8731_set_dai_fmt,
++ }
+};
++EXPORT_SYMBOL_GPL(wm8731_dai);
+
+
-+3 - Codec control IO
++2 - Codec control IO
+--------------------
+The codec can ususally be controlled via an I2C or SPI style interface (AC97
+combines control with data in the DAI). The codec drivers will have to provide
@@ -269,7 +212,7 @@
+ hw_read_t hw_read;
+
+
-+4 - Mixers and audio controls
++3 - Mixers and audio controls
+-----------------------------
+All the codec mixers and audio controls can be defined using the convenience
+macros defined in soc.h.
@@ -307,24 +250,25 @@
+
+Defines a stereo enumerated control
+
-+5 - Codec Audio Operations
++
++4 - Codec Audio Operations
+--------------------------
+The codec driver also supports the following alsa operations:-
+
+/* SoC audio ops */
+struct snd_soc_ops {
-+ int (*startup)(snd_pcm_substream_t *);
-+ void (*shutdown)(snd_pcm_substream_t *);
-+ int (*hw_params)(snd_pcm_substream_t *, snd_pcm_hw_params_t *);
-+ int (*hw_free)(snd_pcm_substream_t *);
-+ int (*prepare)(snd_pcm_substream_t *);
++ int (*startup)(struct snd_pcm_substream *);
++ void (*shutdown)(struct snd_pcm_substream *);
++ int (*hw_params)(struct snd_pcm_substream *, struct snd_pcm_hw_params *);
++ int (*hw_free)(struct snd_pcm_substream *);
++ int (*prepare)(struct snd_pcm_substream *);
+};
+
+Please refer to the alsa driver PCM documentation for details.
+http://www.alsa-project.org/~iwai/writing-an-alsa-driver/c436.htm
+
+
-+6 - DAPM description.
++5 - DAPM description.
+---------------------
+The Dynamic Audio Power Management description describes the codec's power
+components, their relationships and registers to the ASoC core. Please read
@@ -333,7 +277,7 @@
+Please also see the examples in other codec drivers.
+
+
-+7 - DAPM event handler
++6 - DAPM event handler
+----------------------
+This function is a callback that handles codec domain PM calls and system
+domain PM calls (e.g. suspend and resume). It's used to put the codec to sleep
@@ -353,7 +297,7 @@
+ SNDRV_CTL_POWER_D3cold: /* Everything Off, without power */
+
+
-+8 - Codec DAC digital mute control.
++7 - Codec DAC digital mute control.
+------------------------------------
+Most codecs have a digital mute before the DAC's that can be used to minimise
+any system noise. The mute stops any digital data from entering the DAC.
@@ -373,10 +317,10 @@
+ wm8974_write(codec, WM8974_DAC, mute_reg);
+ return 0;
+}
-Index: linux-2.6.17.14-fic4.test/Documentation/sound/alsa/soc/dapm.txt
+Index: linux-2.6-asoc-pxa/Documentation/sound/alsa/soc/dapm.txt
===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.17.14-fic4.test/Documentation/sound/alsa/soc/dapm.txt 2007-02-06 15:55:20.000000000 +0100
+--- /dev/null
++++ linux-2.6-asoc-pxa/Documentation/sound/alsa/soc/dapm.txt
@@ -0,0 +1,297 @@
+Dynamic Audio Power Management for Portable Devices
+===================================================
@@ -675,10 +619,10 @@
+#define SND_SOC_DAPM_POST_PMD 0x8 /* after widget power down */
+#define SND_SOC_DAPM_PRE_REG 0x10 /* before audio path setup */
+#define SND_SOC_DAPM_POST_REG 0x20 /* after audio path setup */
-Index: linux-2.6.17.14-fic4.test/Documentation/sound/alsa/soc/machine.txt
+Index: linux-2.6-asoc-pxa/Documentation/sound/alsa/soc/machine.txt
===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.17.14-fic4.test/Documentation/sound/alsa/soc/machine.txt 2007-02-06 15:55:20.000000000 +0100
+--- /dev/null
++++ linux-2.6-asoc-pxa/Documentation/sound/alsa/soc/machine.txt
@@ -0,0 +1,113 @@
+ASoC Machine Driver
+===================
@@ -794,10 +738,10 @@
+
+Machine specific audio mixer controls can be added in the dai init function.
\ No newline at end of file
-Index: linux-2.6.17.14-fic4.test/Documentation/sound/alsa/soc/overview.txt
+Index: linux-2.6-asoc-pxa/Documentation/sound/alsa/soc/overview.txt
===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.17.14-fic4.test/Documentation/sound/alsa/soc/overview.txt 2007-02-06 15:55:20.000000000 +0100
+--- /dev/null
++++ linux-2.6-asoc-pxa/Documentation/sound/alsa/soc/overview.txt
@@ -0,0 +1,83 @@
+ALSA SoC Layer
+==============
@@ -883,10 +827,10 @@
+
+clocking.txt: ASoC clocking for best power performance.
\ No newline at end of file
-Index: linux-2.6.17.14-fic4.test/Documentation/sound/alsa/soc/platform.txt
+Index: linux-2.6-asoc-pxa/Documentation/sound/alsa/soc/platform.txt
===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.17.14-fic4.test/Documentation/sound/alsa/soc/platform.txt 2007-02-06 15:55:20.000000000 +0100
+--- /dev/null
++++ linux-2.6-asoc-pxa/Documentation/sound/alsa/soc/platform.txt
@@ -0,0 +1,58 @@
+ASoC Platform Driver
+====================
@@ -902,12 +846,12 @@
+
+/* SoC audio ops */
+struct snd_soc_ops {
-+ int (*startup)(snd_pcm_substream_t *);
-+ void (*shutdown)(snd_pcm_substream_t *);
-+ int (*hw_params)(snd_pcm_substream_t *, snd_pcm_hw_params_t *);
-+ int (*hw_free)(snd_pcm_substream_t *);
-+ int (*prepare)(snd_pcm_substream_t *);
-+ int (*trigger)(snd_pcm_substream_t *, int);
++ int (*startup)(struct snd_pcm_substream *);
++ void (*shutdown)(struct snd_pcm_substream *);
++ int (*hw_params)(struct snd_pcm_substream *, struct snd_pcm_hw_params *);
++ int (*hw_free)(struct snd_pcm_substream *);
++ int (*prepare)(struct snd_pcm_substream *);
++ int (*trigger)(struct snd_pcm_substream *, int);
+};
+
+The platform driver exports it's DMA functionailty via struct snd_soc_platform:-
@@ -921,11 +865,11 @@
+ int (*resume)(struct platform_device *pdev, struct snd_soc_cpu_dai *cpu_dai);
+
+ /* pcm creation and destruction */
-+ int (*pcm_new)(snd_card_t *, struct snd_soc_codec_dai *, snd_pcm_t *);
-+ void (*pcm_free)(snd_pcm_t *);
++ int (*pcm_new)(struct snd_card *, struct snd_soc_codec_dai *, struct snd_pcm *);
++ void (*pcm_free)(struct snd_pcm *);
+
+ /* platform stream ops */
-+ snd_pcm_ops_t *pcm_ops;
++ struct snd_pcm_ops *pcm_ops;
+};
+
+Please refer to the alsa driver documentation for details of audio DMA.
@@ -946,23 +890,23 @@
+ 5) Suspend and resume (optional)
+
+Please see codec.txt for a description of items 1 - 4.
-Index: linux-2.6.17.14-fic4.test/Documentation/sound/alsa/soc/pops_clicks.txt
+Index: linux-2.6-asoc-pxa/Documentation/sound/alsa/soc/pops_clicks.txt
===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.17.14-fic4.test/Documentation/sound/alsa/soc/pops_clicks.txt 2007-02-06 15:55:20.000000000 +0100
+--- /dev/null
++++ linux-2.6-asoc-pxa/Documentation/sound/alsa/soc/pops_clicks.txt
@@ -0,0 +1,52 @@
+Audio Pops and Clicks
+=====================
+
+Pops and clicks are unwanted audio artifacts caused by the powering up and down
-+of components within the audio subsystem. This is noticable on PC's when an audio
-+module is either loaded or unloaded (at module load time the sound card is
++of components within the audio subsystem. This is noticable on PC's when an
++audio module is either loaded or unloaded (at module load time the sound card is
+powered up and causes a popping noise on the speakers).
+
-+Pops and clicks can be more frequent on portable systems with DAPM. This is because
-+the components within the subsystem are being dynamically powered depending on
-+the audio usage and this can subsequently cause a small pop or click every time a
-+component power state is changed.
++Pops and clicks can be more frequent on portable systems with DAPM. This is
++because the components within the subsystem are being dynamically powered
++depending on the audio usage and this can subsequently cause a small pop or
++click every time a component power state is changed.
+
+
+Minimising Playback Pops and Clicks
@@ -1003,11 +947,11 @@
+amplitude too quickly. It can be minimised by enabling the zero cross setting
+for each volume control. The ZC forces the gain change to occur when the signal
+crosses the zero amplitude line.
-Index: linux-2.6.17.14-fic4.test/include/sound/ac97_codec.h
+Index: linux-2.6-asoc-pxa/include/sound/ac97_codec.h
===================================================================
---- linux-2.6.17.14-fic4.test.orig/include/sound/ac97_codec.h 2007-02-06 15:38:06.000000000 +0100
-+++ linux-2.6.17.14-fic4.test/include/sound/ac97_codec.h 2007-02-06 15:55:20.000000000 +0100
-@@ -407,6 +407,7 @@
+--- linux-2.6-asoc-pxa.orig/include/sound/ac97_codec.h
++++ linux-2.6-asoc-pxa/include/sound/ac97_codec.h
+@@ -425,6 +425,7 @@ struct snd_ac97_build_ops {
struct snd_ac97_bus_ops {
void (*reset) (struct snd_ac97 *ac97);
@@ -1015,10 +959,10 @@
void (*write) (struct snd_ac97 *ac97, unsigned short reg, unsigned short val);
unsigned short (*read) (struct snd_ac97 *ac97, unsigned short reg);
void (*wait) (struct snd_ac97 *ac97);
-Index: linux-2.6.17.14-fic4.test/include/sound/soc-dapm.h
+Index: linux-2.6-asoc-pxa/include/sound/soc-dapm.h
===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.17.14-fic4.test/include/sound/soc-dapm.h 2007-02-06 15:55:20.000000000 +0100
+--- /dev/null
++++ linux-2.6-asoc-pxa/include/sound/soc-dapm.h
@@ -0,0 +1,286 @@
+/*
+ * linux/sound/soc-dapm.h -- ALSA SoC Dynamic Audio Power Management
@@ -1306,10 +1250,10 @@
+};
+
+#endif
-Index: linux-2.6.17.14-fic4.test/include/sound/soc.h
+Index: linux-2.6-asoc-pxa/include/sound/soc.h
===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.17.14-fic4.test/include/sound/soc.h 2007-02-06 15:55:20.000000000 +0100
+--- /dev/null
++++ linux-2.6-asoc-pxa/include/sound/soc.h
@@ -0,0 +1,460 @@
+/*
+ * linux/sound/soc.h -- ALSA SoC Layer
@@ -1771,11 +1715,11 @@
+};
+
+#endif
-Index: linux-2.6.17.14-fic4.test/sound/Kconfig
+Index: linux-2.6-asoc-pxa/sound/Kconfig
===================================================================
---- linux-2.6.17.14-fic4.test.orig/sound/Kconfig 2007-02-06 15:38:06.000000000 +0100
-+++ linux-2.6.17.14-fic4.test/sound/Kconfig 2007-02-06 15:55:20.000000000 +0100
-@@ -74,6 +74,8 @@
+--- linux-2.6-asoc-pxa.orig/sound/Kconfig
++++ linux-2.6-asoc-pxa/sound/Kconfig
+@@ -76,6 +76,8 @@ source "sound/sparc/Kconfig"
source "sound/parisc/Kconfig"
@@ -1784,10 +1728,10 @@
endmenu
menu "Open Sound System"
-Index: linux-2.6.17.14-fic4.test/sound/soc/Kconfig
+Index: linux-2.6-asoc-pxa/sound/soc/Kconfig
===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.17.14-fic4.test/sound/soc/Kconfig 2007-02-06 15:55:20.000000000 +0100
+--- /dev/null
++++ linux-2.6-asoc-pxa/sound/soc/Kconfig
@@ -0,0 +1,37 @@
+#
+# SoC audio configuration
@@ -1826,19 +1770,19 @@
+endmenu
+
+endmenu
-Index: linux-2.6.17.14-fic4.test/sound/soc/Makefile
+Index: linux-2.6-asoc-pxa/sound/soc/Makefile
===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.17.14-fic4.test/sound/soc/Makefile 2007-02-06 15:55:20.000000000 +0100
+--- /dev/null
++++ linux-2.6-asoc-pxa/sound/soc/Makefile
@@ -0,0 +1,4 @@
+snd-soc-core-objs := soc-core.o soc-dapm.o
+
+obj-$(CONFIG_SND_SOC) += snd-soc-core.o
+obj-$(CONFIG_SND_SOC) += pxa/ at91/ imx/ s3c24xx/ codecs/
-Index: linux-2.6.17.14-fic4.test/sound/soc/codecs/Kconfig
+Index: linux-2.6-asoc-pxa/sound/soc/codecs/Kconfig
===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.17.14-fic4.test/sound/soc/codecs/Kconfig 2007-02-06 15:55:20.000000000 +0100
+--- /dev/null
++++ linux-2.6-asoc-pxa/sound/soc/codecs/Kconfig
@@ -0,0 +1,102 @@
+config SND_SOC_AC97_CODEC
+ tristate "SoC generic AC97 support"
@@ -1942,10 +1886,10 @@
+ depends SND_SOC
+ help
+ Say Y or M if you want to support the AK4535 codec.
-Index: linux-2.6.17.14-fic4.test/sound/soc/codecs/Makefile
+Index: linux-2.6-asoc-pxa/sound/soc/codecs/Makefile
===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.17.14-fic4.test/sound/soc/codecs/Makefile 2007-02-06 15:55:20.000000000 +0100
+--- /dev/null
++++ linux-2.6-asoc-pxa/sound/soc/codecs/Makefile
@@ -0,0 +1,35 @@
+snd-soc-ac97-objs := ac97.o
+snd-soc-wm8711-objs := wm8711.o
@@ -1982,10 +1926,10 @@
+obj-$(CONFIG_SND_SOC_AK4535) += snd-soc-ak4535.o
+obj-$(CONFIG_SND_SOC_WM9713) += snd-soc-wm9713.o
+obj-$(CONFIG_SND_SOC_WM9712) += snd-soc-wm9712.o
-Index: linux-2.6.17.14-fic4.test/sound/soc/codecs/ac97.c
+Index: linux-2.6-asoc-pxa/sound/soc/codecs/ac97.c
===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.17.14-fic4.test/sound/soc/codecs/ac97.c 2007-02-06 15:55:20.000000000 +0100
+--- /dev/null
++++ linux-2.6-asoc-pxa/sound/soc/codecs/ac97.c
@@ -0,0 +1,156 @@
+/*
+ * ac97.c -- ALSA Soc AC97 codec support
@@ -2143,10 +2087,10 @@
+MODULE_DESCRIPTION("Soc Generic AC97 driver");
+MODULE_AUTHOR("Liam Girdwood");
+MODULE_LICENSE("GPL");
-Index: linux-2.6.17.14-fic4.test/sound/soc/codecs/ac97.h
+Index: linux-2.6-asoc-pxa/sound/soc/codecs/ac97.h
===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.17.14-fic4.test/sound/soc/codecs/ac97.h 2007-02-06 15:55:20.000000000 +0100
+--- /dev/null
++++ linux-2.6-asoc-pxa/sound/soc/codecs/ac97.h
@@ -0,0 +1,18 @@
+/*
+ * linux/sound/codecs/ac97.h -- ALSA SoC Layer
@@ -2166,10 +2110,10 @@
+extern struct snd_soc_codec_device soc_codec_dev_ac97;
+
+#endif
-Index: linux-2.6.17.14-fic4.test/sound/soc/codecs/ak4535.c
+Index: linux-2.6-asoc-pxa/sound/soc/codecs/ak4535.c
===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.17.14-fic4.test/sound/soc/codecs/ak4535.c 2007-02-06 15:55:20.000000000 +0100
+--- /dev/null
++++ linux-2.6-asoc-pxa/sound/soc/codecs/ak4535.c
@@ -0,0 +1,697 @@
+/*
+ * ak4535.c -- AK4535 ALSA Soc Audio driver
@@ -2868,10 +2812,10 @@
+MODULE_DESCRIPTION("Soc AK4535 driver");
+MODULE_AUTHOR("Richard Purdie");
+MODULE_LICENSE("GPL");
-Index: linux-2.6.17.14-fic4.test/sound/soc/codecs/ak4535.h
+Index: linux-2.6-asoc-pxa/sound/soc/codecs/ak4535.h
===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.17.14-fic4.test/sound/soc/codecs/ak4535.h 2007-02-06 15:55:20.000000000 +0100
+--- /dev/null
++++ linux-2.6-asoc-pxa/sound/soc/codecs/ak4535.h
@@ -0,0 +1,46 @@
+/*
+ * ak4535.h -- AK4535 Soc Audio driver
@@ -2919,10 +2863,10 @@
+extern struct snd_soc_codec_device soc_codec_dev_ak4535;
+
+#endif
-Index: linux-2.6.17.14-fic4.test/sound/soc/codecs/uda1380.c
+Index: linux-2.6-asoc-pxa/sound/soc/codecs/uda1380.c
===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.17.14-fic4.test/sound/soc/codecs/uda1380.c 2007-02-06 15:55:20.000000000 +0100
+--- /dev/null
++++ linux-2.6-asoc-pxa/sound/soc/codecs/uda1380.c
@@ -0,0 +1,745 @@
+/*
+ * uda1380.c - Philips UDA1380 ALSA SoC audio driver
@@ -3669,10 +3613,10 @@
+MODULE_AUTHOR("Giorgio Padrin");
+MODULE_DESCRIPTION("Audio support for codec Philips UDA1380");
+MODULE_LICENSE("GPL");
-Index: linux-2.6.17.14-fic4.test/sound/soc/codecs/uda1380.h
+Index: linux-2.6-asoc-pxa/sound/soc/codecs/uda1380.h
===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.17.14-fic4.test/sound/soc/codecs/uda1380.h 2007-02-06 15:55:20.000000000 +0100
+--- /dev/null
++++ linux-2.6-asoc-pxa/sound/soc/codecs/uda1380.h
@@ -0,0 +1,89 @@
+/*
+ * Audio support for Philips UDA1380
@@ -3763,10 +3707,10 @@
+extern struct snd_soc_codec_device soc_codec_dev_uda1380;
+
+#endif /* _UDA1380_H */
-Index: linux-2.6.17.14-fic4.test/sound/soc/codecs/wm8731.c
+Index: linux-2.6-asoc-pxa/sound/soc/codecs/wm8731.c
===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.17.14-fic4.test/sound/soc/codecs/wm8731.c 2007-02-06 15:55:20.000000000 +0100
+--- /dev/null
++++ linux-2.6-asoc-pxa/sound/soc/codecs/wm8731.c
@@ -0,0 +1,763 @@
+/*
+ * wm8731.c -- WM8731 ALSA SoC Audio driver
@@ -4531,10 +4475,10 @@
+MODULE_DESCRIPTION("ASoC WM8731 driver");
+MODULE_AUTHOR("Richard Purdie");
+MODULE_LICENSE("GPL");
-Index: linux-2.6.17.14-fic4.test/sound/soc/codecs/wm8731.h
+Index: linux-2.6-asoc-pxa/sound/soc/codecs/wm8731.h
===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.17.14-fic4.test/sound/soc/codecs/wm8731.h 2007-02-06 15:55:20.000000000 +0100
+--- /dev/null
++++ linux-2.6-asoc-pxa/sound/soc/codecs/wm8731.h
@@ -0,0 +1,44 @@
+/*
+ * wm8731.h -- WM8731 Soc Audio driver
@@ -4580,10 +4524,10 @@
+extern struct snd_soc_codec_device soc_codec_dev_wm8731;
+
+#endif
-Index: linux-2.6.17.14-fic4.test/sound/soc/codecs/wm8750.c
+Index: linux-2.6-asoc-pxa/sound/soc/codecs/wm8750.c
===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.17.14-fic4.test/sound/soc/codecs/wm8750.c 2007-02-06 15:55:20.000000000 +0100
+--- /dev/null
++++ linux-2.6-asoc-pxa/sound/soc/codecs/wm8750.c
@@ -0,0 +1,1055 @@
+/*
+ * wm8750.c -- WM8750 ALSA SoC audio driver
@@ -5640,10 +5584,10 @@
+MODULE_DESCRIPTION("ASoC WM8750 driver");
+MODULE_AUTHOR("Liam Girdwood");
+MODULE_LICENSE("GPL");
-Index: linux-2.6.17.14-fic4.test/sound/soc/codecs/wm8750.h
+Index: linux-2.6-asoc-pxa/sound/soc/codecs/wm8750.h
===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.17.14-fic4.test/sound/soc/codecs/wm8750.h 2007-02-06 15:55:20.000000000 +0100
+--- /dev/null
++++ linux-2.6-asoc-pxa/sound/soc/codecs/wm8750.h
@@ -0,0 +1,67 @@
+/*
+ * Copyright 2005 Openedhand Ltd.
@@ -5712,11 +5656,11 @@
+extern struct snd_soc_codec_device soc_codec_dev_wm8750;
+
+#endif
-Index: linux-2.6.17.14-fic4.test/sound/soc/codecs/wm8753.c
+Index: linux-2.6-asoc-pxa/sound/soc/codecs/wm8753.c
===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.17.14-fic4.test/sound/soc/codecs/wm8753.c 2007-02-06 15:55:20.000000000 +0100
-@@ -0,0 +1,1738 @@
+--- /dev/null
++++ linux-2.6-asoc-pxa/sound/soc/codecs/wm8753.c
+@@ -0,0 +1,1782 @@
+/*
+ * wm8753.c -- WM8753 ALSA Soc Audio driver
+ *
@@ -6001,9 +5945,9 @@
+
+SOC_ENUM("Bass Boost", wm8753_enum[0]),
+SOC_ENUM("Bass Filter", wm8753_enum[1]),
-+SOC_SINGLE("Bass Volume", WM8753_BASS, 0, 7, 1),
++SOC_SINGLE("Bass Volume", WM8753_BASS, 0, 15, 1),
+
-+SOC_SINGLE("Treble Volume", WM8753_TREBLE, 0, 7, 0),
++SOC_SINGLE("Treble Volume", WM8753_TREBLE, 0, 15, 1),
+SOC_ENUM("Treble Cut-off", wm8753_enum[2]),
+
+SOC_DOUBLE("Sidetone Capture Volume", WM8753_RECMIX1, 0, 4, 7, 1),
@@ -6215,9 +6159,9 @@
+ &wm8753_line_right_controls),
+SND_SOC_DAPM_MUX("Line Mono Mux", SND_SOC_NOPM, 0, 0,
+ &wm8753_line_mono_controls),
-+SND_SOC_DAPM_MUX("Line Mixer", SND_SOC_NOPM, 0, 0,
++SND_SOC_DAPM_MUX("Line Mixer", WM8753_PWR2, 0, 0,
+ &wm8753_line_mux_mix_controls),
-+SND_SOC_DAPM_MUX("Rx Mixer", SND_SOC_NOPM, 0, 0,
++SND_SOC_DAPM_MUX("Rx Mixer", WM8753_PWR2, 1, 0,
+ &wm8753_rx_mux_mix_controls),
+SND_SOC_DAPM_PGA("Mic 1 Volume", WM8753_PWR2, 8, 0, NULL, 0),
+SND_SOC_DAPM_PGA("Mic 2 Volume", WM8753_PWR2, 7, 0, NULL, 0),
@@ -6683,7 +6627,7 @@
+ struct snd_soc_codec *codec = codec_dai->codec;
+ u16 voice, ioctl;
+
-+ voice = wm8753_read_reg_cache(codec, WM8753_PCM) & 0x010f;
++ voice = wm8753_read_reg_cache(codec, WM8753_PCM) & 0x011f;
+ ioctl = wm8753_read_reg_cache(codec, WM8753_IOCTL) & 0x015d;
+
+ /* set master/slave audio interface */
@@ -6700,18 +6644,40 @@
+ }
+
+ /* clock inversion */
-+ switch (fmt & SND_SOC_DAIFMT_INV_MASK) {
-+ case SND_SOC_DAIFMT_NB_NF:
++ switch (fmt & SND_SOC_DAIFMT_FORMAT_MASK) {
++ case SND_SOC_DAIFMT_DSP_A:
++ case SND_SOC_DAIFMT_DSP_B:
++ /* frame inversion not valid for DSP modes */
++ switch (fmt & SND_SOC_DAIFMT_INV_MASK) {
++ case SND_SOC_DAIFMT_NB_NF:
++ break;
++ case SND_SOC_DAIFMT_IB_NF:
++ voice |= 0x0080;
++ break;
++ default:
++ return -EINVAL;
++ }
+ break;
-+ case SND_SOC_DAIFMT_IB_IF:
-+ voice |= 0x0090;
++ case SND_SOC_DAIFMT_I2S:
++ case SND_SOC_DAIFMT_RIGHT_J:
++ case SND_SOC_DAIFMT_LEFT_J:
++ voice &= ~0x0010;
++ switch (fmt & SND_SOC_DAIFMT_INV_MASK) {
++ case SND_SOC_DAIFMT_NB_NF:
++ break;
++ case SND_SOC_DAIFMT_IB_IF:
++ voice |= 0x0090;
++ break;
++ case SND_SOC_DAIFMT_IB_NF:
++ voice |= 0x0080;
++ break;
++ case SND_SOC_DAIFMT_NB_IF:
++ voice |= 0x0010;
++ break;
++ default:
++ return -EINVAL;
++ }
+ break;
-+ case SND_SOC_DAIFMT_IB_NF:
-+ voice |= 0x0080;
-+ break;
-+ case SND_SOC_DAIFMT_NB_IF:
-+ voice |= 0x0010;
-+ break;
+ default:
+ return -EINVAL;
+ }
@@ -6788,7 +6754,7 @@
+ struct snd_soc_codec *codec = codec_dai->codec;
+ u16 ioctl, hifi;
+
-+ hifi = wm8753_read_reg_cache(codec, WM8753_HIFI) & 0x010f;
++ hifi = wm8753_read_reg_cache(codec, WM8753_HIFI) & 0x011f;
+ ioctl = wm8753_read_reg_cache(codec, WM8753_IOCTL) & 0x00ae;
+
+ /* set master/slave audio interface */
@@ -6805,18 +6771,40 @@
+ }
+
+ /* clock inversion */
-+ switch (fmt & SND_SOC_DAIFMT_INV_MASK) {
-+ case SND_SOC_DAIFMT_NB_NF:
++ switch (fmt & SND_SOC_DAIFMT_FORMAT_MASK) {
++ case SND_SOC_DAIFMT_DSP_A:
++ case SND_SOC_DAIFMT_DSP_B:
++ /* frame inversion not valid for DSP modes */
++ switch (fmt & SND_SOC_DAIFMT_INV_MASK) {
++ case SND_SOC_DAIFMT_NB_NF:
++ break;
++ case SND_SOC_DAIFMT_IB_NF:
++ hifi |= 0x0080;
++ break;
++ default:
++ return -EINVAL;
++ }
+ break;
-+ case SND_SOC_DAIFMT_IB_IF:
-+ hifi |= 0x0090;
++ case SND_SOC_DAIFMT_I2S:
++ case SND_SOC_DAIFMT_RIGHT_J:
++ case SND_SOC_DAIFMT_LEFT_J:
++ hifi &= ~0x0010;
++ switch (fmt & SND_SOC_DAIFMT_INV_MASK) {
++ case SND_SOC_DAIFMT_NB_NF:
++ break;
++ case SND_SOC_DAIFMT_IB_IF:
++ hifi |= 0x0090;
++ break;
++ case SND_SOC_DAIFMT_IB_NF:
++ hifi |= 0x0080;
++ break;
++ case SND_SOC_DAIFMT_NB_IF:
++ hifi |= 0x0010;
++ break;
++ default:
++ return -EINVAL;
++ }
+ break;
-+ case SND_SOC_DAIFMT_IB_NF:
-+ hifi |= 0x0080;
-+ break;
-+ case SND_SOC_DAIFMT_NB_IF:
-+ hifi |= 0x0010;
-+ break;
+ default:
+ return -EINVAL;
+ }
@@ -7455,10 +7443,10 @@
+MODULE_DESCRIPTION("ASoC WM8753 driver");
+MODULE_AUTHOR("Liam Girdwood");
+MODULE_LICENSE("GPL");
-Index: linux-2.6.17.14-fic4.test/sound/soc/codecs/wm8753.h
+Index: linux-2.6-asoc-pxa/sound/soc/codecs/wm8753.h
===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.17.14-fic4.test/sound/soc/codecs/wm8753.h 2007-02-06 15:55:20.000000000 +0100
+--- /dev/null
++++ linux-2.6-asoc-pxa/sound/soc/codecs/wm8753.h
@@ -0,0 +1,126 @@
+/*
+ * wm8753.h -- audio driver for WM8753
@@ -7586,10 +7574,10 @@
+extern struct snd_soc_codec_device soc_codec_dev_wm8753;
+
+#endif
-Index: linux-2.6.17.14-fic4.test/sound/soc/codecs/wm8772.c
+Index: linux-2.6-asoc-pxa/sound/soc/codecs/wm8772.c
===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.17.14-fic4.test/sound/soc/codecs/wm8772.c 2007-02-06 15:55:20.000000000 +0100
+--- /dev/null
++++ linux-2.6-asoc-pxa/sound/soc/codecs/wm8772.c
@@ -0,0 +1,603 @@
+/*
+ * wm8772.c -- WM8772 ALSA Soc Audio driver
@@ -8194,10 +8182,10 @@
+MODULE_DESCRIPTION("ASoC WM8772 driver");
+MODULE_AUTHOR("Liam Girdwood");
+MODULE_LICENSE("GPL");
-Index: linux-2.6.17.14-fic4.test/sound/soc/codecs/wm8772.h
+Index: linux-2.6-asoc-pxa/sound/soc/codecs/wm8772.h
===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.17.14-fic4.test/sound/soc/codecs/wm8772.h 2007-02-06 15:55:20.000000000 +0100
+--- /dev/null
++++ linux-2.6-asoc-pxa/sound/soc/codecs/wm8772.h
@@ -0,0 +1,46 @@
+/*
+ * wm8772.h -- audio driver for WM8772
@@ -8245,10 +8233,10 @@
+extern struct snd_soc_codec_device soc_codec_dev_wm8772;
+
+#endif
-Index: linux-2.6.17.14-fic4.test/sound/soc/codecs/wm8971.c
+Index: linux-2.6-asoc-pxa/sound/soc/codecs/wm8971.c
===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.17.14-fic4.test/sound/soc/codecs/wm8971.c 2007-02-06 15:55:20.000000000 +0100
+--- /dev/null
++++ linux-2.6-asoc-pxa/sound/soc/codecs/wm8971.c
@@ -0,0 +1,971 @@
+/*
+ * wm8971.c -- WM8971 ALSA SoC Audio driver
@@ -9221,10 +9209,10 @@
+MODULE_DESCRIPTION("ASoC WM8971 driver");
+MODULE_AUTHOR("Lab126");
+MODULE_LICENSE("GPL");
-Index: linux-2.6.17.14-fic4.test/sound/soc/codecs/wm8971.h
+Index: linux-2.6-asoc-pxa/sound/soc/codecs/wm8971.h
===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.17.14-fic4.test/sound/soc/codecs/wm8971.h 2007-02-06 15:55:20.000000000 +0100
+--- /dev/null
++++ linux-2.6-asoc-pxa/sound/soc/codecs/wm8971.h
@@ -0,0 +1,63 @@
+/*
+ * wm8971.h -- audio driver for WM8971
@@ -9289,10 +9277,10 @@
+extern struct snd_soc_codec_device soc_codec_dev_wm8971;
+
+#endif
-Index: linux-2.6.17.14-fic4.test/sound/soc/codecs/wm8974.c
+Index: linux-2.6-asoc-pxa/sound/soc/codecs/wm8974.c
===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.17.14-fic4.test/sound/soc/codecs/wm8974.c 2007-02-06 15:55:20.000000000 +0100
+--- /dev/null
++++ linux-2.6-asoc-pxa/sound/soc/codecs/wm8974.c
@@ -0,0 +1,873 @@
+/*
+ * wm8974.c -- WM8974 ALSA Soc Audio driver
@@ -10167,10 +10155,10 @@
+MODULE_DESCRIPTION("ASoC WM8974 driver");
+MODULE_AUTHOR("Liam Girdwood");
+MODULE_LICENSE("GPL");
-Index: linux-2.6.17.14-fic4.test/sound/soc/codecs/wm8974.h
+Index: linux-2.6-asoc-pxa/sound/soc/codecs/wm8974.h
===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.17.14-fic4.test/sound/soc/codecs/wm8974.h 2007-02-06 15:55:20.000000000 +0100
+--- /dev/null
++++ linux-2.6-asoc-pxa/sound/soc/codecs/wm8974.h
@@ -0,0 +1,104 @@
+/*
+ * wm8974.h -- WM8974 Soc Audio driver
@@ -10276,10 +10264,10 @@
+extern struct snd_soc_codec_device soc_codec_dev_wm8974;
+
+#endif
-Index: linux-2.6.17.14-fic4.test/sound/soc/codecs/wm9712.c
+Index: linux-2.6-asoc-pxa/sound/soc/codecs/wm9712.c
===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.17.14-fic4.test/sound/soc/codecs/wm9712.c 2007-02-06 15:55:20.000000000 +0100
+--- /dev/null
++++ linux-2.6-asoc-pxa/sound/soc/codecs/wm9712.c
@@ -0,0 +1,771 @@
+/*
+ * wm9712.c -- ALSA Soc WM9712 codec support
@@ -11052,10 +11040,10 @@
+MODULE_DESCRIPTION("ASoC WM9711/WM9712 driver");
+MODULE_AUTHOR("Liam Girdwood");
+MODULE_LICENSE("GPL");
-Index: linux-2.6.17.14-fic4.test/sound/soc/codecs/wm9712.h
+Index: linux-2.6-asoc-pxa/sound/soc/codecs/wm9712.h
===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.17.14-fic4.test/sound/soc/codecs/wm9712.h 2007-02-06 15:55:20.000000000 +0100
+--- /dev/null
++++ linux-2.6-asoc-pxa/sound/soc/codecs/wm9712.h
@@ -0,0 +1,14 @@
+/*
+ * wm9712.h -- WM9712 Soc Audio driver
@@ -11071,10 +11059,10 @@
+extern struct snd_soc_codec_device soc_codec_dev_wm9712;
+
+#endif
-Index: linux-2.6.17.14-fic4.test/sound/soc/codecs/wm9713.c
+Index: linux-2.6-asoc-pxa/sound/soc/codecs/wm9713.c
===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.17.14-fic4.test/sound/soc/codecs/wm9713.c 2007-02-06 15:55:20.000000000 +0100
+--- /dev/null
++++ linux-2.6-asoc-pxa/sound/soc/codecs/wm9713.c
@@ -0,0 +1,1220 @@
+/*
+ * wm9713.c -- ALSA Soc WM9713 codec support
@@ -12296,10 +12284,10 @@
+MODULE_DESCRIPTION("ASoC WM9713/WM9714 driver");
+MODULE_AUTHOR("Liam Girdwood");
+MODULE_LICENSE("GPL");
-Index: linux-2.6.17.14-fic4.test/sound/soc/codecs/wm9713.h
+Index: linux-2.6-asoc-pxa/sound/soc/codecs/wm9713.h
===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.17.14-fic4.test/sound/soc/codecs/wm9713.h 2007-02-06 15:55:20.000000000 +0100
+--- /dev/null
++++ linux-2.6-asoc-pxa/sound/soc/codecs/wm9713.h
@@ -0,0 +1,51 @@
+/*
+ * wm9713.h -- WM9713 Soc Audio driver
@@ -12352,10 +12340,10 @@
+int wm9713_reset(struct snd_soc_codec *codec, int try_warm);
+
+#endif
-Index: linux-2.6.17.14-fic4.test/sound/soc/pxa/Kconfig
+Index: linux-2.6-asoc-pxa/sound/soc/pxa/Kconfig
===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.17.14-fic4.test/sound/soc/pxa/Kconfig 2007-02-06 15:55:20.000000000 +0100
+--- /dev/null
++++ linux-2.6-asoc-pxa/sound/soc/pxa/Kconfig
@@ -0,0 +1,143 @@
+menu "SoC Audio for the Intel PXA2xx"
+
@@ -12500,10 +12488,10 @@
+ with the tlv320.
+
+endmenu
-Index: linux-2.6.17.14-fic4.test/sound/soc/pxa/Makefile
+Index: linux-2.6-asoc-pxa/sound/soc/pxa/Makefile
===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.17.14-fic4.test/sound/soc/pxa/Makefile 2007-02-06 15:55:20.000000000 +0100
+--- /dev/null
++++ linux-2.6-asoc-pxa/sound/soc/pxa/Makefile
@@ -0,0 +1,39 @@
+# PXA Platform Support
+snd-soc-pxa2xx-objs := pxa2xx-pcm.o
@@ -12544,10 +12532,10 @@
+obj-$(CONFIG_SND_PXA2xx_SOC_SPITZ) += snd-soc-spitz.o
+obj-$(CONFIG_SND_PXA2xx_SOC_MAGICIAN) += snd-soc-magician.o
+obj-$(CONFIG_SND_PXA2xx_SOC_AMESOM_TLV320) += snd-soc-amesom-tlv320.o
-Index: linux-2.6.17.14-fic4.test/sound/soc/pxa/corgi.c
+Index: linux-2.6-asoc-pxa/sound/soc/pxa/corgi.c
===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.17.14-fic4.test/sound/soc/pxa/corgi.c 2007-02-06 15:55:20.000000000 +0100
+--- /dev/null
++++ linux-2.6-asoc-pxa/sound/soc/pxa/corgi.c
@@ -0,0 +1,383 @@
+/*
+ * corgi.c -- SoC audio for Corgi
@@ -12932,10 +12920,10 @@
+MODULE_AUTHOR("Richard Purdie");
+MODULE_DESCRIPTION("ALSA SoC Corgi");
+MODULE_LICENSE("GPL");
-Index: linux-2.6.17.14-fic4.test/sound/soc/pxa/mainstone.c
+Index: linux-2.6-asoc-pxa/sound/soc/pxa/mainstone.c
===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.17.14-fic4.test/sound/soc/pxa/mainstone.c 2007-02-06 15:55:20.000000000 +0100
+--- /dev/null
++++ linux-2.6-asoc-pxa/sound/soc/pxa/mainstone.c
@@ -0,0 +1,127 @@
+/*
+ * mainstone.c -- SoC audio for Mainstone
@@ -13064,10 +13052,10 @@
+MODULE_AUTHOR("Liam Girdwood, liam.girdwood at wolfsonmicro.com, www.wolfsonmicro.com");
+MODULE_DESCRIPTION("ALSA SoC Mainstone");
+MODULE_LICENSE("GPL");
-Index: linux-2.6.17.14-fic4.test/sound/soc/pxa/mainstone_baseband.c
+Index: linux-2.6-asoc-pxa/sound/soc/pxa/mainstone_baseband.c
===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.17.14-fic4.test/sound/soc/pxa/mainstone_baseband.c 2007-02-06 15:55:20.000000000 +0100
+--- /dev/null
++++ linux-2.6-asoc-pxa/sound/soc/pxa/mainstone_baseband.c
@@ -0,0 +1,212 @@
+/*
+ * mainstone_baseband.c
@@ -13281,10 +13269,10 @@
+MODULE_AUTHOR("Liam Girdwood, liam.girdwood at wolfsonmicro.com, www.wolfsonmicro.com");
+MODULE_DESCRIPTION("Mainstone Example Baseband PCM Interface");
+MODULE_LICENSE("GPL");
-Index: linux-2.6.17.14-fic4.test/sound/soc/pxa/mainstone_bluetooth.c
+Index: linux-2.6-asoc-pxa/sound/soc/pxa/mainstone_bluetooth.c
===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.17.14-fic4.test/sound/soc/pxa/mainstone_bluetooth.c 2007-02-06 15:55:20.000000000 +0100
+--- /dev/null
++++ linux-2.6-asoc-pxa/sound/soc/pxa/mainstone_bluetooth.c
@@ -0,0 +1,371 @@
+/*
+ * mainstone_bluetooth.c
@@ -13657,10 +13645,10 @@
+MODULE_AUTHOR("Liam Girdwood, liam.girdwood at wolfsonmicro.com, www.wolfsonmicro.com");
+MODULE_DESCRIPTION("Mainstone Example Bluetooth PCM Interface");
+MODULE_LICENSE("GPL");
-Index: linux-2.6.17.14-fic4.test/sound/soc/pxa/mainstone_wm8731.c
+Index: linux-2.6-asoc-pxa/sound/soc/pxa/mainstone_wm8731.c
===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.17.14-fic4.test/sound/soc/pxa/mainstone_wm8731.c 2007-02-06 15:55:20.000000000 +0100
+--- /dev/null
++++ linux-2.6-asoc-pxa/sound/soc/pxa/mainstone_wm8731.c
@@ -0,0 +1,203 @@
+/*
+ * mainstone.c -- SoC audio for Mainstone
@@ -13865,10 +13853,10 @@
+MODULE_AUTHOR("Liam Girdwood, liam.girdwood at wolfsonmicro.com, www.wolfsonmicro.com");
+MODULE_DESCRIPTION("ALSA SoC WM8731 Mainstone");
+MODULE_LICENSE("GPL");
-Index: linux-2.6.17.14-fic4.test/sound/soc/pxa/mainstone_wm8753.c
+Index: linux-2.6-asoc-pxa/sound/soc/pxa/mainstone_wm8753.c
===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.17.14-fic4.test/sound/soc/pxa/mainstone_wm8753.c 2007-02-06 15:55:20.000000000 +0100
+--- /dev/null
++++ linux-2.6-asoc-pxa/sound/soc/pxa/mainstone_wm8753.c
@@ -0,0 +1,547 @@
+/*
+ * mainstone.c -- SoC audio for Mainstone
@@ -14417,10 +14405,10 @@
+MODULE_AUTHOR("Liam Girdwood, liam.girdwood at wolfsonmicro.com, www.wolfsonmicro.com");
+MODULE_DESCRIPTION("ALSA SoC WM8753 Mainstone");
+MODULE_LICENSE("GPL");
-Index: linux-2.6.17.14-fic4.test/sound/soc/pxa/mainstone_wm8974.c
+Index: linux-2.6-asoc-pxa/sound/soc/pxa/mainstone_wm8974.c
===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.17.14-fic4.test/sound/soc/pxa/mainstone_wm8974.c 2007-02-06 15:55:20.000000000 +0100
+--- /dev/null
++++ linux-2.6-asoc-pxa/sound/soc/pxa/mainstone_wm8974.c
@@ -0,0 +1,104 @@
+/*
+ * mainstone.c -- SoC audio for Mainstone
@@ -14526,10 +14514,10 @@
+MODULE_AUTHOR("Liam Girdwood, liam.girdwood at wolfsonmicro.com, www.wolfsonmicro.com");
+MODULE_DESCRIPTION("ALSA SoC Mainstone");
+MODULE_LICENSE("GPL");
-Index: linux-2.6.17.14-fic4.test/sound/soc/pxa/mainstone_wm9712.c
+Index: linux-2.6-asoc-pxa/sound/soc/pxa/mainstone_wm9712.c
===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.17.14-fic4.test/sound/soc/pxa/mainstone_wm9712.c 2007-02-06 15:55:20.000000000 +0100
+--- /dev/null
++++ linux-2.6-asoc-pxa/sound/soc/pxa/mainstone_wm9712.c
@@ -0,0 +1,172 @@
+/*
+ * mainstone.c -- SoC audio for Mainstone
@@ -14703,10 +14691,10 @@
+MODULE_AUTHOR("Liam Girdwood, liam.girdwood at wolfsonmicro.com, www.wolfsonmicro.com");
+MODULE_DESCRIPTION("ALSA SoC WM9712 Mainstone");
+MODULE_LICENSE("GPL");
-Index: linux-2.6.17.14-fic4.test/sound/soc/pxa/mainstone_wm9713.c
+Index: linux-2.6-asoc-pxa/sound/soc/pxa/mainstone_wm9713.c
===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.17.14-fic4.test/sound/soc/pxa/mainstone_wm9713.c 2007-02-06 15:55:20.000000000 +0100
+--- /dev/null
++++ linux-2.6-asoc-pxa/sound/soc/pxa/mainstone_wm9713.c
@@ -0,0 +1,318 @@
+/*
+ * mainstone.c -- SoC audio for Mainstone
@@ -15026,10 +15014,10 @@
+MODULE_AUTHOR("Liam Girdwood, liam.girdwood at wolfsonmicro.com, www.wolfsonmicro.com");
+MODULE_DESCRIPTION("ALSA SoC WM9713 Mainstone");
+MODULE_LICENSE("GPL");
-Index: linux-2.6.17.14-fic4.test/sound/soc/pxa/poodle.c
+Index: linux-2.6-asoc-pxa/sound/soc/pxa/poodle.c
===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.17.14-fic4.test/sound/soc/pxa/poodle.c 2007-02-06 15:55:20.000000000 +0100
+--- /dev/null
++++ linux-2.6-asoc-pxa/sound/soc/pxa/poodle.c
@@ -0,0 +1,352 @@
+/*
+ * poodle.c -- SoC audio for Poodle
@@ -15383,10 +15371,10 @@
+MODULE_AUTHOR("Richard Purdie");
+MODULE_DESCRIPTION("ALSA SoC Poodle");
+MODULE_LICENSE("GPL");
-Index: linux-2.6.17.14-fic4.test/sound/soc/pxa/pxa2xx-ac97.c
+Index: linux-2.6-asoc-pxa/sound/soc/pxa/pxa2xx-ac97.c
===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.17.14-fic4.test/sound/soc/pxa/pxa2xx-ac97.c 2007-02-06 15:55:20.000000000 +0100
+--- /dev/null
++++ linux-2.6-asoc-pxa/sound/soc/pxa/pxa2xx-ac97.c
@@ -0,0 +1,431 @@
+/*
+ * linux/sound/pxa2xx-ac97.c -- AC97 support for the Intel PXA2xx chip.
@@ -15819,10 +15807,10 @@
+MODULE_AUTHOR("Nicolas Pitre");
+MODULE_DESCRIPTION("AC97 driver for the Intel PXA2xx chip");
+MODULE_LICENSE("GPL");
-Index: linux-2.6.17.14-fic4.test/sound/soc/pxa/pxa2xx-i2s.c
+Index: linux-2.6-asoc-pxa/sound/soc/pxa/pxa2xx-i2s.c
===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.17.14-fic4.test/sound/soc/pxa/pxa2xx-i2s.c 2007-02-06 15:55:20.000000000 +0100
+--- /dev/null
++++ linux-2.6-asoc-pxa/sound/soc/pxa/pxa2xx-i2s.c
@@ -0,0 +1,318 @@
+/*
+ * pxa2xx-i2s.c -- ALSA Soc Audio Layer
@@ -16142,10 +16130,10 @@
+MODULE_AUTHOR("Liam Girdwood, liam.girdwood at wolfsonmicro.com, www.wolfsonmicro.com");
+MODULE_DESCRIPTION("pxa2xx I2S SoC Interface");
+MODULE_LICENSE("GPL");
-Index: linux-2.6.17.14-fic4.test/sound/soc/pxa/pxa2xx-pcm.c
+Index: linux-2.6-asoc-pxa/sound/soc/pxa/pxa2xx-pcm.c
===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.17.14-fic4.test/sound/soc/pxa/pxa2xx-pcm.c 2007-02-06 15:55:20.000000000 +0100
+--- /dev/null
++++ linux-2.6-asoc-pxa/sound/soc/pxa/pxa2xx-pcm.c
@@ -0,0 +1,372 @@
+/*
+ * linux/sound/arm/pxa2xx-pcm.c -- ALSA PCM interface for the Intel PXA2xx chip
@@ -16519,10 +16507,10 @@
+MODULE_AUTHOR("Nicolas Pitre");
+MODULE_DESCRIPTION("Intel PXA2xx PCM DMA module");
+MODULE_LICENSE("GPL");
-Index: linux-2.6.17.14-fic4.test/sound/soc/pxa/pxa2xx-pcm.h
+Index: linux-2.6-asoc-pxa/sound/soc/pxa/pxa2xx-pcm.h
===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.17.14-fic4.test/sound/soc/pxa/pxa2xx-pcm.h 2007-02-06 15:55:20.000000000 +0100
+--- /dev/null
++++ linux-2.6-asoc-pxa/sound/soc/pxa/pxa2xx-pcm.h
@@ -0,0 +1,34 @@
+/*
+ * linux/sound/arm/pxa2xx-pcm.h -- ALSA PCM interface for the Intel PXA2xx chip
@@ -16558,10 +16546,10 @@
+extern struct snd_soc_platform pxa2xx_soc_platform;
+
+#endif
-Index: linux-2.6.17.14-fic4.test/sound/soc/pxa/pxa2xx-ssp.c
+Index: linux-2.6-asoc-pxa/sound/soc/pxa/pxa2xx-ssp.c
===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.17.14-fic4.test/sound/soc/pxa/pxa2xx-ssp.c 2007-02-06 15:55:20.000000000 +0100
+--- /dev/null
++++ linux-2.6-asoc-pxa/sound/soc/pxa/pxa2xx-ssp.c
@@ -0,0 +1,666 @@
+/*
+ * pxa2xx-ssp.c -- ALSA Soc Audio Layer
@@ -17229,10 +17217,10 @@
+MODULE_AUTHOR("Liam Girdwood, liam.girdwood at wolfsonmicro.com, www.wolfsonmicro.com");
+MODULE_DESCRIPTION("pxa2xx SSP/PCM SoC Interface");
+MODULE_LICENSE("GPL");
-Index: linux-2.6.17.14-fic4.test/sound/soc/pxa/spitz.c
+Index: linux-2.6-asoc-pxa/sound/soc/pxa/spitz.c
===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.17.14-fic4.test/sound/soc/pxa/spitz.c 2007-02-06 15:55:20.000000000 +0100
+--- /dev/null
++++ linux-2.6-asoc-pxa/sound/soc/pxa/spitz.c
@@ -0,0 +1,394 @@
+/*
+ * spitz.c -- SoC audio for Sharp SL-Cxx00 models Spitz, Borzoi and Akita
@@ -17628,10 +17616,10 @@
+MODULE_AUTHOR("Richard Purdie");
+MODULE_DESCRIPTION("ALSA SoC Spitz");
+MODULE_LICENSE("GPL");
-Index: linux-2.6.17.14-fic4.test/sound/soc/pxa/tosa.c
+Index: linux-2.6-asoc-pxa/sound/soc/pxa/tosa.c
===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.17.14-fic4.test/sound/soc/pxa/tosa.c 2007-02-06 15:55:20.000000000 +0100
+--- /dev/null
++++ linux-2.6-asoc-pxa/sound/soc/pxa/tosa.c
@@ -0,0 +1,289 @@
+/*
+ * tosa.c -- SoC audio for Tosa
@@ -17922,10 +17910,10 @@
+MODULE_AUTHOR("Richard Purdie");
+MODULE_DESCRIPTION("ALSA SoC Tosa");
+MODULE_LICENSE("GPL");
-Index: linux-2.6.17.14-fic4.test/sound/soc/soc-dapm.c
+Index: linux-2.6-asoc-pxa/sound/soc/soc-dapm.c
===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.17.14-fic4.test/sound/soc/soc-dapm.c 2007-02-06 15:55:20.000000000 +0100
+--- /dev/null
++++ linux-2.6-asoc-pxa/sound/soc/soc-dapm.c
@@ -0,0 +1,1329 @@
+/*
+ * soc-dapm.c -- ALSA SoC Dynamic Audio Power Management
@@ -19256,10 +19244,10 @@
+MODULE_AUTHOR("Liam Girdwood, liam.girdwood at wolfsonmicro.com, www.wolfsonmicro.com");
+MODULE_DESCRIPTION("Dynamic Audio Power Management core for ALSA SoC");
+MODULE_LICENSE("GPL");
-Index: linux-2.6.17.14-fic4.test/sound/soc/soc-core.c
+Index: linux-2.6-asoc-pxa/sound/soc/soc-core.c
===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.17.14-fic4.test/sound/soc/soc-core.c 2007-02-06 15:55:20.000000000 +0100
+--- /dev/null
++++ linux-2.6-asoc-pxa/sound/soc/soc-core.c
@@ -0,0 +1,1587 @@
+/*
+ * soc-core.c -- ALSA SoC Audio Layer
@@ -20848,10 +20836,10 @@
+MODULE_AUTHOR("Liam Girdwood, liam.girdwood at wolfsonmicro.com, www.wolfsonmicro.com");
+MODULE_DESCRIPTION("ALSA SoC Core");
+MODULE_LICENSE("GPL");
-Index: linux-2.6.17.14-fic4.test/sound/soc/at91/Kconfig
+Index: linux-2.6-asoc-pxa/sound/soc/at91/Kconfig
===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.17.14-fic4.test/sound/soc/at91/Kconfig 2007-02-06 15:55:20.000000000 +0100
+--- /dev/null
++++ linux-2.6-asoc-pxa/sound/soc/at91/Kconfig
@@ -0,0 +1,32 @@
+menu "SoC Audio for the Atmel AT91"
+
@@ -20885,10 +20873,10 @@
+ and LRC signals on Endrelia boards.
+
+endmenu
-Index: linux-2.6.17.14-fic4.test/sound/soc/at91/Makefile
+Index: linux-2.6-asoc-pxa/sound/soc/at91/Makefile
===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.17.14-fic4.test/sound/soc/at91/Makefile 2007-02-06 15:55:20.000000000 +0100
+--- /dev/null
++++ linux-2.6-asoc-pxa/sound/soc/at91/Makefile
@@ -0,0 +1,11 @@
+# AT91 Platform Support
+snd-soc-at91-objs := at91-pcm.o
@@ -20901,10 +20889,10 @@
+snd-soc-eti-b1-wm8731-objs := eti_b1_wm8731.o
+
+obj-$(CONFIG_SND_AT91_SOC_ETI_B1_WM8731) += snd-soc-eti-b1-wm8731.o
-Index: linux-2.6.17.14-fic4.test/sound/soc/imx/imx-ssi.c
+Index: linux-2.6-asoc-pxa/sound/soc/imx/imx-ssi.c
===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.17.14-fic4.test/sound/soc/imx/imx-ssi.c 2007-02-06 15:55:20.000000000 +0100
+--- /dev/null
++++ linux-2.6-asoc-pxa/sound/soc/imx/imx-ssi.c
@@ -0,0 +1,591 @@
+/*
+ * imx-ssi.c -- SSI driver for Freescale IMX
@@ -21497,10 +21485,10 @@
+MODULE_AUTHOR("Liam Girdwood, liam.girdwood at wolfsonmicro.com, www.wolfsonmicro.com");
+MODULE_DESCRIPTION("i.MX ASoC I2S driver");
+MODULE_LICENSE("GPL");
-Index: linux-2.6.17.14-fic4.test/sound/soc/imx/Kconfig
+Index: linux-2.6-asoc-pxa/sound/soc/imx/Kconfig
===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.17.14-fic4.test/sound/soc/imx/Kconfig 2007-02-06 15:55:20.000000000 +0100
+--- /dev/null
++++ linux-2.6-asoc-pxa/sound/soc/imx/Kconfig
@@ -0,0 +1,31 @@
+menu "SoC Audio for the Freescale i.MX"
+
@@ -21533,10 +21521,10 @@
+ with the WM8753.
+
+endmenu
-Index: linux-2.6.17.14-fic4.test/sound/soc/imx/Makefile
+Index: linux-2.6-asoc-pxa/sound/soc/imx/Makefile
===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.17.14-fic4.test/sound/soc/imx/Makefile 2007-02-06 15:55:20.000000000 +0100
+--- /dev/null
++++ linux-2.6-asoc-pxa/sound/soc/imx/Makefile
@@ -0,0 +1,18 @@
+# i.MX Platform Support
+snd-soc-imx21-objs := imx21-pcm.o
@@ -21556,23 +21544,23 @@
+snd-soc-mx21ads-wm8731-objs := mx21ads_wm8731.o
+obj-$(CONFIG_SND_SOC_MX21ADS_WM8731) += snd-soc-mx21ads-wm8731.o
+
-Index: linux-2.6.17.14-fic4.test/sound/Makefile
+Index: linux-2.6-asoc-pxa/sound/Makefile
===================================================================
---- linux-2.6.17.14-fic4.test.orig/sound/Makefile 2007-02-06 15:38:07.000000000 +0100
-+++ linux-2.6.17.14-fic4.test/sound/Makefile 2007-02-06 15:55:34.000000000 +0100
-@@ -4,7 +4,7 @@
- obj-$(CONFIG_SOUND) += soundcore.o
+--- linux-2.6-asoc-pxa.orig/sound/Makefile
++++ linux-2.6-asoc-pxa/sound/Makefile
+@@ -5,7 +5,7 @@ obj-$(CONFIG_SOUND) += soundcore.o
+ obj-$(CONFIG_SOUND_PRIME) += sound_firmware.o
obj-$(CONFIG_SOUND_PRIME) += oss/
obj-$(CONFIG_DMASOUND) += oss/
-obj-$(CONFIG_SND) += core/ i2c/ drivers/ isa/ pci/ ppc/ arm/ synth/ usb/ sparc/ parisc/ pcmcia/ mips/
+obj-$(CONFIG_SND) += core/ i2c/ drivers/ isa/ pci/ ppc/ arm/ synth/ usb/ sparc/ parisc/ pcmcia/ mips/ soc/
+ obj-$(CONFIG_SND_AOA) += aoa/
- ifeq ($(CONFIG_SND),y)
- obj-y += last.o
-Index: linux-2.6.17.14-fic4.test/sound/soc/codecs/wm8711.c
+ # This one must be compilable even if sound is configured out
+Index: linux-2.6-asoc-pxa/sound/soc/codecs/wm8711.c
===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.17.14-fic4.test/sound/soc/codecs/wm8711.c 2007-02-06 15:55:20.000000000 +0100
+--- /dev/null
++++ linux-2.6-asoc-pxa/sound/soc/codecs/wm8711.c
@@ -0,0 +1,715 @@
+/*
+ * wm8711.c -- WM8711 ALSA SoC Audio driver
@@ -22289,10 +22277,10 @@
+MODULE_DESCRIPTION("ASoC WM8711 driver");
+MODULE_AUTHOR("Mike Arthur");
+MODULE_LICENSE("GPL");
-Index: linux-2.6.17.14-fic4.test/sound/soc/codecs/wm8711.h
+Index: linux-2.6-asoc-pxa/sound/soc/codecs/wm8711.h
===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.17.14-fic4.test/sound/soc/codecs/wm8711.h 2007-02-06 15:55:20.000000000 +0100
+--- /dev/null
++++ linux-2.6-asoc-pxa/sound/soc/codecs/wm8711.h
@@ -0,0 +1,42 @@
+/*
+ * wm8711.h -- WM8711 Soc Audio driver
@@ -22336,10 +22324,10 @@
+extern struct snd_soc_codec_device soc_codec_dev_wm8711;
+
+#endif
-Index: linux-2.6.17.14-fic4.test/sound/soc/codecs/wm8980.c
+Index: linux-2.6-asoc-pxa/sound/soc/codecs/wm8980.c
===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.17.14-fic4.test/sound/soc/codecs/wm8980.c 2007-02-06 15:55:20.000000000 +0100
+--- /dev/null
++++ linux-2.6-asoc-pxa/sound/soc/codecs/wm8980.c
@@ -0,0 +1,923 @@
+/*
+ * wm8980.c -- WM8980 ALSA Soc Audio driver
@@ -23264,10 +23252,10 @@
+MODULE_DESCRIPTION("ASoC WM8980 driver");
+MODULE_AUTHOR("Mike Arthur");
+MODULE_LICENSE("GPL");
-Index: linux-2.6.17.14-fic4.test/sound/soc/codecs/wm8980.h
+Index: linux-2.6-asoc-pxa/sound/soc/codecs/wm8980.h
===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.17.14-fic4.test/sound/soc/codecs/wm8980.h 2007-02-06 15:55:20.000000000 +0100
+--- /dev/null
++++ linux-2.6-asoc-pxa/sound/soc/codecs/wm8980.h
@@ -0,0 +1,116 @@
+/*
+ * wm8980.h -- WM8980 Soc Audio driver
@@ -23385,10 +23373,10 @@
+extern struct snd_soc_codec_device soc_codec_dev_wm8980;
+
+#endif
-Index: linux-2.6.17.14-fic4.test/sound/soc/at91/eti_b1_wm8731.c
+Index: linux-2.6-asoc-pxa/sound/soc/at91/eti_b1_wm8731.c
===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.17.14-fic4.test/sound/soc/at91/eti_b1_wm8731.c 2007-02-06 15:55:20.000000000 +0100
+--- /dev/null
++++ linux-2.6-asoc-pxa/sound/soc/at91/eti_b1_wm8731.c
@@ -0,0 +1,375 @@
+/*
+ * eti_b1_wm8731 -- SoC audio for AT91RM9200-based Endrelia ETI_B1 board.
@@ -23765,10 +23753,10 @@
+MODULE_AUTHOR("Frank Mandarino <fmandarino at endrelia.com>");
+MODULE_DESCRIPTION("ALSA SoC ETI-B1-WM8731");
+MODULE_LICENSE("GPL");
-Index: linux-2.6.17.14-fic4.test/sound/soc/codecs/wm8510.c
+Index: linux-2.6-asoc-pxa/sound/soc/codecs/wm8510.c
===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.17.14-fic4.test/sound/soc/codecs/wm8510.c 2007-02-06 15:55:20.000000000 +0100
+--- /dev/null
++++ linux-2.6-asoc-pxa/sound/soc/codecs/wm8510.c
@@ -0,0 +1,860 @@
+/*
+ * wm8510.c -- WM8510 ALSA Soc Audio driver
@@ -24630,10 +24618,10 @@
+MODULE_DESCRIPTION("ASoC WM8510 driver");
+MODULE_AUTHOR("Liam Girdwood");
+MODULE_LICENSE("GPL");
-Index: linux-2.6.17.14-fic4.test/sound/soc/codecs/wm8510.h
+Index: linux-2.6-asoc-pxa/sound/soc/codecs/wm8510.h
===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.17.14-fic4.test/sound/soc/codecs/wm8510.h 2007-02-06 15:55:20.000000000 +0100
+--- /dev/null
++++ linux-2.6-asoc-pxa/sound/soc/codecs/wm8510.h
@@ -0,0 +1,103 @@
+/*
+ * wm8510.h -- WM8510 Soc Audio driver
@@ -24738,10 +24726,10 @@
+extern struct snd_soc_codec_device soc_codec_dev_wm8510;
+
+#endif
-Index: linux-2.6.17.14-fic4.test/sound/soc/imx/imx-ac97.c
+Index: linux-2.6-asoc-pxa/sound/soc/imx/imx-ac97.c
===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.17.14-fic4.test/sound/soc/imx/imx-ac97.c 2007-02-06 15:55:20.000000000 +0100
+--- /dev/null
++++ linux-2.6-asoc-pxa/sound/soc/imx/imx-ac97.c
@@ -0,0 +1,222 @@
+/*
+ * imx-ssi.c -- SSI driver for Freescale IMX
@@ -24965,23 +24953,23 @@
+MODULE_AUTHOR("Liam Girdwood, liam.girdwood at wolfsonmicro.com, www.wolfsonmicro.com");
+MODULE_DESCRIPTION("i.MX ASoC AC97 driver");
+MODULE_LICENSE("GPL");
-Index: linux-2.6.17.14-fic4.test/include/linux/i2c-id.h
+Index: linux-2.6-asoc-pxa/include/linux/i2c-id.h
===================================================================
---- linux-2.6.17.14-fic4.test.orig/include/linux/i2c-id.h 2007-02-06 15:38:06.000000000 +0100
-+++ linux-2.6.17.14-fic4.test/include/linux/i2c-id.h 2007-02-06 15:56:03.000000000 +0100
-@@ -112,6 +112,8 @@
- #define I2C_DRIVERID_X1205 82 /* Xicor/Intersil X1205 RTC */
- #define I2C_DRIVERID_PCF8563 83 /* Philips PCF8563 RTC */
- #define I2C_DRIVERID_RS5C372 84 /* Ricoh RS5C372 RTC */
-+#define I2C_DRIVERID_WM8731 89 /* Wolfson WM8731 audio codec */
-+#define I2C_DRIVERID_WM8750 90 /* Wolfson WM8750 audio codec */
+--- linux-2.6-asoc-pxa.orig/include/linux/i2c-id.h
++++ linux-2.6-asoc-pxa/include/linux/i2c-id.h
+@@ -115,6 +115,8 @@
+ #define I2C_DRIVERID_KS0127 86 /* Samsung ks0127 video decoder */
+ #define I2C_DRIVERID_TLV320AIC23B 87 /* TI TLV320AIC23B audio codec */
+ #define I2C_DRIVERID_ISL1208 88 /* Intersil ISL1208 RTC */
++#define I2C_DRIVERID_WM8731 89 /* Wolfson WM8731 audio codec */
++#define I2C_DRIVERID_WM8750 90 /* Wolfson WM8750 audio codec */
#define I2C_DRIVERID_I2CDEV 900
#define I2C_DRIVERID_ARP 902 /* SMBus ARP Client */
-Index: linux-2.6.17.14-fic4.test/sound/soc/codecs/wm8976.c
+Index: linux-2.6-asoc-pxa/sound/soc/codecs/wm8976.c
===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.17.14-fic4.test/sound/soc/codecs/wm8976.c 2007-02-06 15:55:20.000000000 +0100
+--- /dev/null
++++ linux-2.6-asoc-pxa/sound/soc/codecs/wm8976.c
@@ -0,0 +1,885 @@
+/*
+ * wm8976.c -- WM8976 ALSA Soc Audio driver
@@ -25868,10 +25856,10 @@
+MODULE_DESCRIPTION("ASoC WM8976 driver");
+MODULE_AUTHOR("Graeme Gregory");
+MODULE_LICENSE("GPL");
-Index: linux-2.6.17.14-fic4.test/sound/soc/codecs/wm8976.h
+Index: linux-2.6-asoc-pxa/sound/soc/codecs/wm8976.h
===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.17.14-fic4.test/sound/soc/codecs/wm8976.h 2007-02-06 15:55:20.000000000 +0100
+--- /dev/null
++++ linux-2.6-asoc-pxa/sound/soc/codecs/wm8976.h
@@ -0,0 +1,112 @@
+/*
+ * wm8976.h -- WM8976 Soc Audio driver
@@ -25985,10 +25973,10 @@
+extern struct snd_soc_codec_device soc_codec_dev_wm8976;
+
+#endif
-Index: linux-2.6.17.14-fic4.test/sound/soc/imx/imx21-pcm.c
+Index: linux-2.6-asoc-pxa/sound/soc/imx/imx21-pcm.c
===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.17.14-fic4.test/sound/soc/imx/imx21-pcm.c 2007-02-06 15:55:20.000000000 +0100
+--- /dev/null
++++ linux-2.6-asoc-pxa/sound/soc/imx/imx21-pcm.c
@@ -0,0 +1,454 @@
+/*
+ * linux/sound/arm/mxc-pcm.c -- ALSA SoC interface for the Freescale i.MX CPU's
@@ -26444,10 +26432,10 @@
+MODULE_AUTHOR("Liam Girdwood");
+MODULE_DESCRIPTION("Freescale i.MX PCM DMA module");
+MODULE_LICENSE("GPL");
-Index: linux-2.6.17.14-fic4.test/sound/soc/imx/imx21-pcm.h
+Index: linux-2.6-asoc-pxa/sound/soc/imx/imx21-pcm.h
===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.17.14-fic4.test/sound/soc/imx/imx21-pcm.h 2007-02-06 15:55:20.000000000 +0100
+--- /dev/null
++++ linux-2.6-asoc-pxa/sound/soc/imx/imx21-pcm.h
@@ -0,0 +1,237 @@
+/*
+ * mxc-pcm.h :- ASoC platform header for Freescale i.MX
@@ -26686,10 +26674,10 @@
+
+
+#endif
-Index: linux-2.6.17.14-fic4.test/sound/soc/imx/imx31-pcm.c
+Index: linux-2.6-asoc-pxa/sound/soc/imx/imx31-pcm.c
===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.17.14-fic4.test/sound/soc/imx/imx31-pcm.c 2007-02-06 15:55:20.000000000 +0100
+--- /dev/null
++++ linux-2.6-asoc-pxa/sound/soc/imx/imx31-pcm.c
@@ -0,0 +1,417 @@
+/*
+ * linux/sound/arm/mxc-pcm.c -- ALSA SoC interface for the Freescale i.MX CPU's
@@ -27108,10 +27096,10 @@
+MODULE_AUTHOR("Liam Girdwood");
+MODULE_DESCRIPTION("Freescale i.MX31 PCM DMA module");
+MODULE_LICENSE("GPL");
-Index: linux-2.6.17.14-fic4.test/sound/soc/imx/imx31-pcm.h
+Index: linux-2.6-asoc-pxa/sound/soc/imx/imx31-pcm.h
===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.17.14-fic4.test/sound/soc/imx/imx31-pcm.h 2007-02-06 15:55:20.000000000 +0100
+--- /dev/null
++++ linux-2.6-asoc-pxa/sound/soc/imx/imx31-pcm.h
@@ -0,0 +1,241 @@
+/*
+ * mxc-pcm.h :- ASoC platform header for Freescale i.MX
@@ -27354,10 +27342,10 @@
+extern struct snd_ac97_bus_ops mxc_ac97_ops;
+
+#endif
-Index: linux-2.6.17.14-fic4.test/sound/soc/pxa/magician.c
+Index: linux-2.6-asoc-pxa/sound/soc/pxa/magician.c
===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.17.14-fic4.test/sound/soc/pxa/magician.c 2007-02-06 15:55:20.000000000 +0100
+--- /dev/null
++++ linux-2.6-asoc-pxa/sound/soc/pxa/magician.c
@@ -0,0 +1,563 @@
+/*
+ * SoC audio for HTC Magician
@@ -27922,10 +27910,10 @@
+MODULE_AUTHOR("Philipp Zabel");
+MODULE_DESCRIPTION("ALSA SoC Magician");
+MODULE_LICENSE("GPL");
-Index: linux-2.6.17.14-fic4.test/sound/soc/templates/template-ac97.c
+Index: linux-2.6-asoc-pxa/sound/soc/templates/template-ac97.c
===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.17.14-fic4.test/sound/soc/templates/template-ac97.c 2007-02-06 15:55:20.000000000 +0100
+--- /dev/null
++++ linux-2.6-asoc-pxa/sound/soc/templates/template-ac97.c
@@ -0,0 +1,270 @@
+/*
+ * ltemplate-ac97.c -- AC97 support for the xxx chip.
@@ -28197,10 +28185,10 @@
+};
+EXPORT_SYMBOL_GPL(template_ac97_dai);
+
-Index: linux-2.6.17.14-fic4.test/sound/soc/templates/template-codec.c
+Index: linux-2.6-asoc-pxa/sound/soc/templates/template-codec.c
===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.17.14-fic4.test/sound/soc/templates/template-codec.c 2007-02-06 15:55:20.000000000 +0100
+--- /dev/null
++++ linux-2.6-asoc-pxa/sound/soc/templates/template-codec.c
@@ -0,0 +1,784 @@
+/*
+ * template-codec.c -- Template Codec Audio driver
@@ -28986,10 +28974,10 @@
+
+EXPORT_SYMBOL_GPL(soc_codec_dev_template_codec);
+
-Index: linux-2.6.17.14-fic4.test/sound/soc/templates/template-i2s.c
+Index: linux-2.6-asoc-pxa/sound/soc/templates/template-i2s.c
===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.17.14-fic4.test/sound/soc/templates/template-i2s.c 2007-02-06 15:55:20.000000000 +0100
+--- /dev/null
++++ linux-2.6-asoc-pxa/sound/soc/templates/template-i2s.c
@@ -0,0 +1,223 @@
+/*
+ * This program is free software; you can redistribute it and/or modify it
@@ -29214,10 +29202,10 @@
+};
+
+EXPORT_SYMBOL_GPL(template_i2s_dai);
-Index: linux-2.6.17.14-fic4.test/sound/soc/templates/template-pcm.c
+Index: linux-2.6-asoc-pxa/sound/soc/templates/template-pcm.c
===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.17.14-fic4.test/sound/soc/templates/template-pcm.c 2007-02-06 15:55:20.000000000 +0100
+--- /dev/null
++++ linux-2.6-asoc-pxa/sound/soc/templates/template-pcm.c
@@ -0,0 +1,166 @@
+/*
+ * This program is free software; you can redistribute it and/or modify
@@ -29385,10 +29373,10 @@
+ .pcm_free = template_pcm_free_dma_buffers,
+};
+EXPORT_SYMBOL_GPL(template_soc_platform);
-Index: linux-2.6.17.14-fic4.test/sound/soc/templates/template-pcm.h
+Index: linux-2.6-asoc-pxa/sound/soc/templates/template-pcm.h
===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.17.14-fic4.test/sound/soc/templates/template-pcm.h 2007-02-06 15:55:20.000000000 +0100
+--- /dev/null
++++ linux-2.6-asoc-pxa/sound/soc/templates/template-pcm.h
@@ -0,0 +1,19 @@
+/*
+ * This program is free software; you can redistribute it and/or modify
@@ -29409,10 +29397,10 @@
+extern struct snd_ac97_bus_ops tempalte_ac97_ops;
+
+#endif
-Index: linux-2.6.17.14-fic4.test/sound/soc/templates/template-codec.h
+Index: linux-2.6-asoc-pxa/sound/soc/templates/template-codec.h
===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.17.14-fic4.test/sound/soc/templates/template-codec.h 2007-02-06 15:55:20.000000000 +0100
+--- /dev/null
++++ linux-2.6-asoc-pxa/sound/soc/templates/template-codec.h
@@ -0,0 +1,21 @@
+/*
+ * This program is free software; you can redistribute it and/or modify
@@ -29435,10 +29423,10 @@
+extern struct snd_soc_codec_device soc_codec_dev_template_codec;
+
+#endif
-Index: linux-2.6.17.14-fic4.test/sound/soc/templates/template-machine.c
+Index: linux-2.6-asoc-pxa/sound/soc/templates/template-machine.c
===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.17.14-fic4.test/sound/soc/templates/template-machine.c 2007-02-06 15:55:20.000000000 +0100
+--- /dev/null
++++ linux-2.6-asoc-pxa/sound/soc/templates/template-machine.c
@@ -0,0 +1,161 @@
+/*
+ * This program is free software; you can redistribute it and/or modify it
@@ -29601,10 +29589,10 @@
+module_init(template_init);
+module_exit(template_exit);
+
-Index: linux-2.6.17.14-fic4.test/sound/soc/at91/at91-i2s.c
+Index: linux-2.6-asoc-pxa/sound/soc/at91/at91-i2s.c
===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.17.14-fic4.test/sound/soc/at91/at91-i2s.c 2007-02-06 15:55:20.000000000 +0100
+--- /dev/null
++++ linux-2.6-asoc-pxa/sound/soc/at91/at91-i2s.c
@@ -0,0 +1,720 @@
+/*
+ * at91-i2s.c -- ALSA SoC I2S Audio Layer Platform driver
@@ -30326,10 +30314,10 @@
+MODULE_AUTHOR("Frank Mandarino, fmandarino at endrelia.com, www.endrelia.com");
+MODULE_DESCRIPTION("AT91 I2S ASoC Interface");
+MODULE_LICENSE("GPL");
-Index: linux-2.6.17.14-fic4.test/sound/soc/at91/at91-pcm.c
+Index: linux-2.6-asoc-pxa/sound/soc/at91/at91-pcm.c
===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.17.14-fic4.test/sound/soc/at91/at91-pcm.c 2007-02-06 15:55:20.000000000 +0100
+--- /dev/null
++++ linux-2.6-asoc-pxa/sound/soc/at91/at91-pcm.c
@@ -0,0 +1,432 @@
+/*
+ * at91-pcm.c -- ALSA PCM interface for the Atmel AT91 SoC
@@ -30763,10 +30751,10 @@
+MODULE_AUTHOR("Frank Mandarino <fmandarino at endrelia.com>");
+MODULE_DESCRIPTION("Atmel AT91 PCM module");
+MODULE_LICENSE("GPL");
-Index: linux-2.6.17.14-fic4.test/sound/soc/at91/at91-pcm.h
+Index: linux-2.6-asoc-pxa/sound/soc/at91/at91-pcm.h
===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.17.14-fic4.test/sound/soc/at91/at91-pcm.h 2007-02-06 15:55:20.000000000 +0100
+--- /dev/null
++++ linux-2.6-asoc-pxa/sound/soc/at91/at91-pcm.h
@@ -0,0 +1,72 @@
+/*
+ * at91-pcm.h - ALSA PCM interface for the Atmel AT91 SoC
@@ -30840,10 +30828,10 @@
+#define at91_ssc_write(a,v) __raw_writel((v),(a))
+
+#endif /* _AT91_PCM_H */
-Index: linux-2.6.17.14-fic4.test/sound/soc/pxa/pxa2xx-ssp.h
+Index: linux-2.6-asoc-pxa/sound/soc/pxa/pxa2xx-ssp.h
===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.17.14-fic4.test/sound/soc/pxa/pxa2xx-ssp.h 2007-02-06 15:55:20.000000000 +0100
+--- /dev/null
++++ linux-2.6-asoc-pxa/sound/soc/pxa/pxa2xx-ssp.h
@@ -0,0 +1,43 @@
+/*
+ * linux/sound/arm/pxa2xx-ssp.h
@@ -30888,10 +30876,10 @@
+extern struct snd_soc_cpu_dai pxa_ssp_dai[3];
+
+#endif
-Index: linux-2.6.17.14-fic4.test/sound/soc/pxa/pxa2xx-ac97.h
+Index: linux-2.6-asoc-pxa/sound/soc/pxa/pxa2xx-ac97.h
===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.17.14-fic4.test/sound/soc/pxa/pxa2xx-ac97.h 2007-02-06 15:55:20.000000000 +0100
+--- /dev/null
++++ linux-2.6-asoc-pxa/sound/soc/pxa/pxa2xx-ac97.h
@@ -0,0 +1,22 @@
+/*
+ * linux/sound/arm/pxa2xx-ac97.h
@@ -30915,10 +30903,10 @@
+extern struct snd_ac97_bus_ops pxa2xx_ac97_ops;
+
+#endif
-Index: linux-2.6.17.14-fic4.test/sound/soc/pxa/pxa2xx-i2s.h
+Index: linux-2.6-asoc-pxa/sound/soc/pxa/pxa2xx-i2s.h
===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.17.14-fic4.test/sound/soc/pxa/pxa2xx-i2s.h 2007-02-06 15:55:20.000000000 +0100
+--- /dev/null
++++ linux-2.6-asoc-pxa/sound/soc/pxa/pxa2xx-i2s.h
@@ -0,0 +1,20 @@
+/*
+ * linux/sound/arm/pxa2xx-i2s.h
@@ -30940,10 +30928,10 @@
+extern struct snd_soc_cpu_dai pxa_i2s_dai;
+
+#endif
-Index: linux-2.6.17.14-fic4.test/sound/soc/s3c24xx/Kconfig
+Index: linux-2.6-asoc-pxa/sound/soc/s3c24xx/Kconfig
===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.17.14-fic4.test/sound/soc/s3c24xx/Kconfig 2007-02-06 15:55:20.000000000 +0100
+--- /dev/null
++++ linux-2.6-asoc-pxa/sound/soc/s3c24xx/Kconfig
@@ -0,0 +1,31 @@
+menu "SoC Audio for the Samsung S3C24XX"
+
@@ -30976,10 +30964,10 @@
+ with the WM8753.
+endmenu
+
-Index: linux-2.6.17.14-fic4.test/sound/soc/s3c24xx/Makefile
+Index: linux-2.6-asoc-pxa/sound/soc/s3c24xx/Makefile
===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.17.14-fic4.test/sound/soc/s3c24xx/Makefile 2007-02-06 15:55:20.000000000 +0100
+--- /dev/null
++++ linux-2.6-asoc-pxa/sound/soc/s3c24xx/Makefile
@@ -0,0 +1,13 @@
+# S3c24XX Platform Support
+snd-soc-s3c24xx-objs := s3c24xx-pcm.o
@@ -30994,10 +30982,10 @@
+
+obj-$(CONFIG_SND_S3C24XX_SOC_SMDK2440) += snd-soc-smdk2440.o
+obj-$(CONFIG_SND_S3C24XX_SOC_NEO1973_WM8753) += snd-soc-neo1973-wm8753.o
-Index: linux-2.6.17.14-fic4.test/sound/soc/s3c24xx/s3c24xx-i2s.c
+Index: linux-2.6-asoc-pxa/sound/soc/s3c24xx/s3c24xx-i2s.c
===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.17.14-fic4.test/sound/soc/s3c24xx/s3c24xx-i2s.c 2007-02-06 15:55:20.000000000 +0100
+--- /dev/null
++++ linux-2.6-asoc-pxa/sound/soc/s3c24xx/s3c24xx-i2s.c
@@ -0,0 +1,439 @@
+/*
+ * s3c24xx-i2s.c -- ALSA Soc Audio Layer
@@ -31174,7 +31162,7 @@
+static int s3c24xx_snd_lrsync(void)
+{
+ u32 iiscon;
-+ long timeout = jiffies + msecs_to_jiffies(5);
++ unsigned long timeout = jiffies + msecs_to_jiffies(5);
+
+ DBG("Entered %s\n", __FUNCTION__);
+
@@ -31438,10 +31426,10 @@
+MODULE_AUTHOR("Ben Dooks, <ben at simtec.co.uk>");
+MODULE_DESCRIPTION("s3c24xx I2S SoC Interface");
+MODULE_LICENSE("GPL");
-Index: linux-2.6.17.14-fic4.test/sound/soc/s3c24xx/s3c24xx-i2s.h
+Index: linux-2.6-asoc-pxa/sound/soc/s3c24xx/s3c24xx-i2s.h
===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.17.14-fic4.test/sound/soc/s3c24xx/s3c24xx-i2s.h 2007-02-06 15:55:20.000000000 +0100
+--- /dev/null
++++ linux-2.6-asoc-pxa/sound/soc/s3c24xx/s3c24xx-i2s.h
@@ -0,0 +1,35 @@
+/*
+ * s3c24xx-i2s.c -- ALSA Soc Audio Layer
@@ -31478,11 +31466,11 @@
+u32 s3c24xx_i2s_get_clockrate(void);
+
+#endif /*S3C24XXI2S_H_*/
-Index: linux-2.6.17.14-fic4.test/sound/soc/s3c24xx/s3c24xx-pcm.c
+Index: linux-2.6-asoc-pxa/sound/soc/s3c24xx/s3c24xx-pcm.c
===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.17.14-fic4.test/sound/soc/s3c24xx/s3c24xx-pcm.c 2007-02-06 15:55:20.000000000 +0100
-@@ -0,0 +1,467 @@
+--- /dev/null
++++ linux-2.6-asoc-pxa/sound/soc/s3c24xx/s3c24xx-pcm.c
+@@ -0,0 +1,462 @@
+/*
+ * s3c24xx-pcm.c -- ALSA Soc Audio Layer
+ *
@@ -31531,14 +31519,14 @@
+#endif
+
+static const struct snd_pcm_hardware s3c24xx_pcm_hardware = {
-+ .info = SNDRV_PCM_INFO_INTERLEAVED |
-+ SNDRV_PCM_INFO_BLOCK_TRANSFER |
-+ SNDRV_PCM_INFO_MMAP |
-+ SNDRV_PCM_INFO_MMAP_VALID,
-+ .formats = SNDRV_PCM_FMTBIT_S16_LE |
-+ SNDRV_PCM_FMTBIT_U16_LE |
-+ SNDRV_PCM_FMTBIT_U8 |
-+ SNDRV_PCM_FMTBIT_S8,
++ .info = SNDRV_PCM_INFO_INTERLEAVED |
++ SNDRV_PCM_INFO_BLOCK_TRANSFER |
++ SNDRV_PCM_INFO_MMAP |
++ SNDRV_PCM_INFO_MMAP_VALID,
++ .formats = SNDRV_PCM_FMTBIT_S16_LE |
++ SNDRV_PCM_FMTBIT_U16_LE |
++ SNDRV_PCM_FMTBIT_U8 |
++ SNDRV_PCM_FMTBIT_S8,
+ .channels_min = 2,
+ .channels_max = 2,
+ .buffer_bytes_max = 128*1024,
@@ -31546,19 +31534,19 @@
+ .period_bytes_max = PAGE_SIZE*2,
+ .periods_min = 2,
+ .periods_max = 128,
-+ .fifo_size = 32,
++ .fifo_size = 32,
+};
+
+struct s3c24xx_runtime_data {
-+ spinlock_t lock;
-+ int state;
-+ unsigned int dma_loaded;
-+ unsigned int dma_limit;
-+ unsigned int dma_period;
-+ dma_addr_t dma_start;
-+ dma_addr_t dma_pos;
-+ dma_addr_t dma_end;
-+ struct s3c24xx_pcm_dma_params *params;
++ spinlock_t lock;
++ int state;
++ unsigned int dma_loaded;
++ unsigned int dma_limit;
++ unsigned int dma_period;
++ dma_addr_t dma_start;
++ dma_addr_t dma_pos;
++ dma_addr_t dma_end;
++ struct s3c24xx_pcm_dma_params *params;
+};
+
+/* s3c24xx_pcm_enqueue
@@ -31574,7 +31562,7 @@
+
+ DBG("Entered %s\n", __FUNCTION__);
+
-+ while ( prtd->dma_loaded < prtd->dma_limit) {
++ while (prtd->dma_loaded < prtd->dma_limit) {
+ unsigned long len = prtd->dma_period;
+
+ DBG("dma_loaded: %d\n",prtd->dma_loaded);
@@ -31680,12 +31668,12 @@
+ runtime->dma_bytes = totbytes;
+
+ spin_lock_irq(&prtd->lock);
-+ prtd->dma_loaded = 0;
-+ prtd->dma_limit = runtime->hw.periods_min;
-+ prtd->dma_period = params_period_bytes(params);
-+ prtd->dma_start = runtime->dma_addr;
-+ prtd->dma_pos = prtd->dma_start;
-+ prtd->dma_end = prtd->dma_start + totbytes;
++ prtd->dma_loaded = 0;
++ prtd->dma_limit = runtime->hw.periods_min;
++ prtd->dma_period = params_period_bytes(params);
++ prtd->dma_start = runtime->dma_addr;
++ prtd->dma_pos = prtd->dma_start;
++ prtd->dma_end = prtd->dma_start + totbytes;
+ spin_unlock_irq(&prtd->lock);
+
+ return 0;
@@ -31700,7 +31688,7 @@
+ /* TODO - do we need to ensure DMA flushed */
+ snd_pcm_set_runtime_buffer(substream, NULL);
+
-+ if(prtd->params) {
++ if (prtd->params) {
+ s3c2410_dma_free(prtd->params->channel, prtd->params->client);
+ prtd->params = NULL;
+ }
@@ -31798,7 +31786,7 @@
+ res = 0;
+ }
+
-+ return bytes_to_frames(substream->runtime, res);;
++ return bytes_to_frames(substream->runtime, res);
+}
+
+static int s3c24xx_pcm_open(struct snd_pcm_substream *substream)
@@ -31813,16 +31801,11 @@
+ snd_soc_set_runtime_hwparams(substream, &s3c24xx_pcm_hardware);
+
+ prtd = kzalloc(sizeof(struct s3c24xx_runtime_data), GFP_KERNEL);
-+ if(prtd == NULL) {
-+ ret = -ENOMEM;
-+ goto out;
-+ }
++ if (prtd == NULL)
++ return -ENOMEM;
+
+ runtime->private_data = prtd;
+ return 0;
-+
-+out:
-+ return ret;
+}
+
+static int s3c24xx_pcm_close(struct snd_pcm_substream *substream)
@@ -31832,7 +31815,7 @@
+
+ DBG("Entered %s\n", __FUNCTION__);
+
-+ if(prtd)
++ if (prtd)
+ kfree(prtd);
+ else
+ DBG("s3c24xx_pcm_close called with prtd == NULL\n");
@@ -31950,11 +31933,11 @@
+MODULE_AUTHOR("Ben Dooks, <ben at simtec.co.uk>");
+MODULE_DESCRIPTION("Samsung S3C24XX PCM DMA module");
+MODULE_LICENSE("GPL");
-Index: linux-2.6.17.14-fic4.test/sound/soc/s3c24xx/s3c24xx-pcm.h
+Index: linux-2.6-asoc-pxa/sound/soc/s3c24xx/s3c24xx-pcm.h
===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.17.14-fic4.test/sound/soc/s3c24xx/s3c24xx-pcm.h 2007-02-06 15:55:20.000000000 +0100
-@@ -0,0 +1,33 @@
+--- /dev/null
++++ linux-2.6-asoc-pxa/sound/soc/s3c24xx/s3c24xx-pcm.h
+@@ -0,0 +1,32 @@
+/*
+ * s3c24xx-pcm.h --
+ *
@@ -31963,7 +31946,6 @@
+ * Free Software Foundation; either version 2 of the License, or (at your
+ * option) any later version.
+ *
-+ *
+ * ALSA PCM interface for the Samsung S3C24xx CPU
+ */
+
@@ -31988,10 +31970,10 @@
+extern struct snd_ac97_bus_ops s3c24xx_ac97_ops;
+
+#endif
-Index: linux-2.6.17.14-fic4.test/sound/soc/s3c24xx/smdk2440.c
+Index: linux-2.6-asoc-pxa/sound/soc/s3c24xx/smdk2440.c
===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.17.14-fic4.test/sound/soc/s3c24xx/smdk2440.c 2007-02-06 15:55:20.000000000 +0100
+--- /dev/null
++++ linux-2.6-asoc-pxa/sound/soc/s3c24xx/smdk2440.c
@@ -0,0 +1,320 @@
+/*
+ * smdk2440.c -- ALSA Soc Audio Layer
@@ -32313,10 +32295,10 @@
+MODULE_AUTHOR("Ben Dooks, <ben at simtec.co.uk>");
+MODULE_DESCRIPTION("ALSA SoC SMDK2440");
+MODULE_LICENSE("GPL");
-Index: linux-2.6.17.14-fic4.test/sound/soc/codecs/wm8956.c
+Index: linux-2.6-asoc-pxa/sound/soc/codecs/wm8956.c
===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.17.14-fic4.test/sound/soc/codecs/wm8956.c 2007-02-06 15:55:20.000000000 +0100
+--- /dev/null
++++ linux-2.6-asoc-pxa/sound/soc/codecs/wm8956.c
@@ -0,0 +1,724 @@
+/*
+ * wm8956.c -- WM8956 ALSA SoC Audio driver
@@ -33042,10 +33024,10 @@
+MODULE_DESCRIPTION("ASoC WM8956 driver");
+MODULE_AUTHOR("Liam Girdwood");
+MODULE_LICENSE("GPL");
-Index: linux-2.6.17.14-fic4.test/sound/soc/codecs/wm8956.h
+Index: linux-2.6-asoc-pxa/sound/soc/codecs/wm8956.h
===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.17.14-fic4.test/sound/soc/codecs/wm8956.h 2007-02-06 15:55:20.000000000 +0100
+--- /dev/null
++++ linux-2.6-asoc-pxa/sound/soc/codecs/wm8956.h
@@ -0,0 +1,116 @@
+/*
+ * wm8956.h -- WM8956 Soc Audio driver
@@ -33163,10 +33145,10 @@
+extern struct snd_soc_codec_device soc_codec_dev_wm8956;
+
+#endif
-Index: linux-2.6.17.14-fic4.test/sound/soc/codecs/wm8960.c
+Index: linux-2.6-asoc-pxa/sound/soc/codecs/wm8960.c
===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.17.14-fic4.test/sound/soc/codecs/wm8960.c 2007-02-06 15:55:20.000000000 +0100
+--- /dev/null
++++ linux-2.6-asoc-pxa/sound/soc/codecs/wm8960.c
@@ -0,0 +1,766 @@
+/*
+ * wm8960.c -- WM8960 ALSA SoC Audio driver
@@ -33934,10 +33916,10 @@
+MODULE_DESCRIPTION("ASoC WM8960 driver");
+MODULE_AUTHOR("Liam Girdwood");
+MODULE_LICENSE("GPL");
-Index: linux-2.6.17.14-fic4.test/sound/soc/codecs/wm8960.h
+Index: linux-2.6-asoc-pxa/sound/soc/codecs/wm8960.h
===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.17.14-fic4.test/sound/soc/codecs/wm8960.h 2007-02-06 15:55:20.000000000 +0100
+--- /dev/null
++++ linux-2.6-asoc-pxa/sound/soc/codecs/wm8960.h
@@ -0,0 +1,121 @@
+/*
+ * wm8960.h -- WM8960 Soc Audio driver
@@ -34060,10 +34042,10 @@
+extern struct snd_soc_codec_device soc_codec_dev_wm8960;
+
+#endif
-Index: linux-2.6.17.14-fic4.test/sound/soc/s3c24xx/smdk2440_wm8956.c
+Index: linux-2.6-asoc-pxa/sound/soc/s3c24xx/smdk2440_wm8956.c
===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.17.14-fic4.test/sound/soc/s3c24xx/smdk2440_wm8956.c 2007-02-06 15:55:20.000000000 +0100
+--- /dev/null
++++ linux-2.6-asoc-pxa/sound/soc/s3c24xx/smdk2440_wm8956.c
@@ -0,0 +1,335 @@
+/*
+ * smdk2440.c -- ALSA Soc Audio Layer
@@ -34400,10 +34382,10 @@
+MODULE_AUTHOR("Ben Dooks, <ben at simtec.co.uk>");
+MODULE_DESCRIPTION("ALSA SoC SMDK2440");
+MODULE_LICENSE("GPL");
-Index: linux-2.6.17.14-fic4.test/sound/soc/imx/imx-ssi.h
+Index: linux-2.6-asoc-pxa/sound/soc/imx/imx-ssi.h
===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.17.14-fic4.test/sound/soc/imx/imx-ssi.h 2007-02-06 15:55:20.000000000 +0100
+--- /dev/null
++++ linux-2.6-asoc-pxa/sound/soc/imx/imx-ssi.h
@@ -0,0 +1,28 @@
+/*
+ * This program is free software; you can redistribute it and/or modify
@@ -34433,10 +34415,10 @@
+extern struct snd_soc_cpu_dai imx_ssi_pcm_dai[2];
+
+#endif
-Index: linux-2.6.17.14-fic4.test/sound/soc/at91/at91-i2s.h
+Index: linux-2.6-asoc-pxa/sound/soc/at91/at91-i2s.h
===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.17.14-fic4.test/sound/soc/at91/at91-i2s.h 2007-02-06 15:55:20.000000000 +0100
+--- /dev/null
++++ linux-2.6-asoc-pxa/sound/soc/at91/at91-i2s.h
@@ -0,0 +1,27 @@
+/*
+ * at91-i2s.h - ALSA I2S interface for the Atmel AT91 SoC
@@ -34465,10 +34447,10 @@
+
+#endif /* _AT91_I2S_H */
+
-Index: linux-2.6.17.14-fic4.test/sound/soc/imx/mx31ads_wm8753.c
+Index: linux-2.6-asoc-pxa/sound/soc/imx/mx31ads_wm8753.c
===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.17.14-fic4.test/sound/soc/imx/mx31ads_wm8753.c 2007-02-06 15:55:20.000000000 +0100
+--- /dev/null
++++ linux-2.6-asoc-pxa/sound/soc/imx/mx31ads_wm8753.c
@@ -0,0 +1,400 @@
+/*
+ * mx31ads_wm8753.c -- SoC audio for mx31ads
@@ -34870,10 +34852,10 @@
+MODULE_AUTHOR("Liam Girdwood, liam.girdwood at wolfsonmicro.com, www.wolfsonmicro.com");
+MODULE_DESCRIPTION("ALSA SoC WM8753 mx31ads");
+MODULE_LICENSE("GPL");
-Index: linux-2.6.17.14-fic4.test/sound/soc/s3c24xx/lm4857.h
+Index: linux-2.6-asoc-pxa/sound/soc/s3c24xx/lm4857.h
===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.17.14-fic4.test/sound/soc/s3c24xx/lm4857.h 2007-02-06 15:55:20.000000000 +0100
+--- /dev/null
++++ linux-2.6-asoc-pxa/sound/soc/s3c24xx/lm4857.h
@@ -0,0 +1,15 @@
+#ifndef LM4857_H_
+#define LM4857_H_
@@ -34890,10 +34872,10 @@
+#define LM4857_EPGAIN 4
+
+#endif /*LM4857_H_*/
-Index: linux-2.6.17.14-fic4.test/sound/soc/codecs/tlv320.c
+Index: linux-2.6-asoc-pxa/sound/soc/codecs/tlv320.c
===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.17.14-fic4.test/sound/soc/codecs/tlv320.c 2007-02-06 15:55:20.000000000 +0100
+--- /dev/null
++++ linux-2.6-asoc-pxa/sound/soc/codecs/tlv320.c
@@ -0,0 +1,609 @@
+/*
+ * tlv320.c -- TLV 320 ALSA Soc Audio driver
@@ -35504,10 +35486,10 @@
+MODULE_DESCRIPTION("ASoC TLV320 driver");
+MODULE_AUTHOR("Nicola Perrino");
+MODULE_LICENSE("GPL");
-Index: linux-2.6.17.14-fic4.test/sound/soc/codecs/tlv320.h
+Index: linux-2.6-asoc-pxa/sound/soc/codecs/tlv320.h
===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.17.14-fic4.test/sound/soc/codecs/tlv320.h 2007-02-06 15:55:20.000000000 +0100
+--- /dev/null
++++ linux-2.6-asoc-pxa/sound/soc/codecs/tlv320.h
@@ -0,0 +1,111 @@
+/*
+ * tlv320.h -- TLV 320 ALSA Soc Audio driver
@@ -35620,10 +35602,10 @@
+extern struct snd_soc_codec_device soc_codec_dev_tlv320;
+
+#endif
-Index: linux-2.6.17.14-fic4.test/sound/soc/pxa/amesom_tlv320.c
+Index: linux-2.6-asoc-pxa/sound/soc/pxa/amesom_tlv320.c
===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.17.14-fic4.test/sound/soc/pxa/amesom_tlv320.c 2007-02-06 15:55:20.000000000 +0100
+--- /dev/null
++++ linux-2.6-asoc-pxa/sound/soc/pxa/amesom_tlv320.c
@@ -0,0 +1,211 @@
+/*
+ * amesom_tlv320.c -- SoC audio for Amesom
@@ -35836,10 +35818,10 @@
+MODULE_AUTHOR("Nicola Perrino");
+MODULE_DESCRIPTION("ALSA SoC TLV320 Amesom");
+MODULE_LICENSE("GPL");
-Index: linux-2.6.17.14-fic4.test/sound/soc/s3c24xx/neo1973_wm8753.c
+Index: linux-2.6-asoc-pxa/sound/soc/s3c24xx/neo1973_wm8753.c
===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.17.14-fic4.test/sound/soc/s3c24xx/neo1973_wm8753.c 2007-02-06 15:55:20.000000000 +0100
+--- /dev/null
++++ linux-2.6-asoc-pxa/sound/soc/s3c24xx/neo1973_wm8753.c
@@ -0,0 +1,686 @@
+/*
+ * neo1973_wm8753.c -- SoC audio for Neo1973
Modified: trunk/src/target/kernel/patches/gta01-backlight.patch
===================================================================
--- trunk/src/target/kernel/patches/gta01-backlight.patch 2007-02-15 21:31:15 UTC (rev 1003)
+++ trunk/src/target/kernel/patches/gta01-backlight.patch 2007-02-15 21:37:15 UTC (rev 1004)
@@ -1,12 +1,12 @@
This is a backlight driver for FIC's Neo1973 Phone (codename GTA01)
-Index: linux-2.6.17.14-fic4.test/drivers/video/backlight/Kconfig
+Index: linux-2.6.20/drivers/video/backlight/Kconfig
===================================================================
---- linux-2.6.17.14-fic4.test.orig/drivers/video/backlight/Kconfig 2007-01-24 14:06:21.000000000 +0100
-+++ linux-2.6.17.14-fic4.test/drivers/video/backlight/Kconfig 2007-01-24 14:07:01.000000000 +0100
-@@ -50,6 +50,14 @@
- If you have a Sharp Zaurus SL-C7xx, SL-Cxx00 or SL-6000x say y to enable the
- backlight driver.
+--- linux-2.6.20.orig/drivers/video/backlight/Kconfig 2007-02-15 16:26:53.000000000 +0100
++++ linux-2.6.20/drivers/video/backlight/Kconfig 2007-02-15 16:28:11.000000000 +0100
+@@ -58,6 +58,14 @@
+ If you have a Sharp Zaurus SL-5500 (Collie) or SL-5600 (Poodle) say y to
+ enable the LCD/backlight driver.
+config BACKLIGHT_GTA01
+ tristate "FIC GTA01 Backlight Driver"
@@ -19,22 +19,22 @@
config BACKLIGHT_HP680
tristate "HP Jornada 680 Backlight Driver"
depends on BACKLIGHT_DEVICE && SH_HP6XX
-Index: linux-2.6.17.14-fic4.test/drivers/video/backlight/Makefile
+Index: linux-2.6.20/drivers/video/backlight/Makefile
===================================================================
---- linux-2.6.17.14-fic4.test.orig/drivers/video/backlight/Makefile 2007-01-24 14:06:21.000000000 +0100
-+++ linux-2.6.17.14-fic4.test/drivers/video/backlight/Makefile 2007-01-24 14:07:01.000000000 +0100
+--- linux-2.6.20.orig/drivers/video/backlight/Makefile 2007-02-15 16:26:53.000000000 +0100
++++ linux-2.6.20/drivers/video/backlight/Makefile 2007-02-15 16:28:11.000000000 +0100
@@ -3,5 +3,6 @@
obj-$(CONFIG_LCD_CLASS_DEVICE) += lcd.o
obj-$(CONFIG_BACKLIGHT_CLASS_DEVICE) += backlight.o
obj-$(CONFIG_BACKLIGHT_CORGI) += corgi_bl.o
+obj-$(CONFIG_BACKLIGHT_GTA01) += gta01_bl.o
obj-$(CONFIG_BACKLIGHT_HP680) += hp680_bl.o
- obj-$(CONFIG_SHARP_LOCOMO) += locomolcd.o
-Index: linux-2.6.17.14-fic4.test/drivers/video/backlight/gta01_bl.c
+ obj-$(CONFIG_BACKLIGHT_LOCOMO) += locomolcd.o
+Index: linux-2.6.20/drivers/video/backlight/gta01_bl.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.17.14-fic4.test/drivers/video/backlight/gta01_bl.c 2007-01-24 14:07:43.000000000 +0100
-@@ -0,0 +1,275 @@
++++ linux-2.6.20/drivers/video/backlight/gta01_bl.c 2007-02-15 17:02:00.000000000 +0100
+@@ -0,0 +1,276 @@
+/*
+ * Backlight Driver for FIC GTA01 (Neo1973) GSM Phone
+ *
@@ -248,7 +248,8 @@
+ if (!machinfo->limit_mask)
+ machinfo->limit_mask = -1;
+
-+ gta01_backlight_device = backlight_device_register("gta01-bl", NULL,
++ gta01_backlight_device = backlight_device_register("gta01-bl",
++ &pdev->dev, NULL,
+ >a01bl_prop);
+ if (IS_ERR(gta01_backlight_device))
+ return PTR_ERR(gta01_backlight_device);
Modified: trunk/src/target/kernel/patches/gta01-core.patch
===================================================================
--- trunk/src/target/kernel/patches/gta01-core.patch 2007-02-15 21:31:15 UTC (rev 1003)
+++ trunk/src/target/kernel/patches/gta01-core.patch 2007-02-15 21:37:15 UTC (rev 1004)
@@ -1,11 +1,11 @@
This patch adds support for the FIC GTA01 machine type to the ARM port of
the linux kernel.
-Index: linux-2.6.17.14-fic4.test/arch/arm/mach-s3c2410/Kconfig
+Index: linux-2.6.20/arch/arm/mach-s3c2410/Kconfig
===================================================================
---- linux-2.6.17.14-fic4.test.orig/arch/arm/mach-s3c2410/Kconfig 2007-02-07 20:39:12.000000000 +0100
-+++ linux-2.6.17.14-fic4.test/arch/arm/mach-s3c2410/Kconfig 2007-02-07 20:39:12.000000000 +0100
-@@ -69,6 +69,13 @@
+--- linux-2.6.20.orig/arch/arm/mach-s3c2410/Kconfig 2007-02-15 17:08:30.000000000 +0100
++++ linux-2.6.20/arch/arm/mach-s3c2410/Kconfig 2007-02-15 17:08:32.000000000 +0100
+@@ -86,6 +86,13 @@
help
Say Y here if you are using the Armzone QT2410
@@ -19,23 +19,22 @@
config ARCH_S3C2440
bool "SMDK2440"
select CPU_S3C2440
-Index: linux-2.6.17.14-fic4.test/arch/arm/mach-s3c2410/Makefile
+Index: linux-2.6.20/arch/arm/mach-s3c2410/Makefile
===================================================================
---- linux-2.6.17.14-fic4.test.orig/arch/arm/mach-s3c2410/Makefile 2007-02-07 20:39:12.000000000 +0100
-+++ linux-2.6.17.14-fic4.test/arch/arm/mach-s3c2410/Makefile 2007-02-07 20:39:12.000000000 +0100
-@@ -44,6 +44,7 @@
- obj-$(CONFIG_MACH_N30) += mach-n30.o
- obj-$(CONFIG_ARCH_SMDK2410) += mach-smdk2410.o
+--- linux-2.6.20.orig/arch/arm/mach-s3c2410/Makefile 2007-02-15 17:08:30.000000000 +0100
++++ linux-2.6.20/arch/arm/mach-s3c2410/Makefile 2007-02-15 17:08:32.000000000 +0100
+@@ -89,5 +89,6 @@
+ obj-$(CONFIG_MACH_NEXCODER_2440) += mach-nexcoder.o
+ obj-$(CONFIG_MACH_VSTMS) += mach-vstms.o
obj-$(CONFIG_MACH_QT2410) += mach-qt2410.o
+obj-$(CONFIG_MACH_GTA01) += mach-gta01.o
- obj-$(CONFIG_ARCH_S3C2440) += mach-smdk2440.o
- obj-$(CONFIG_MACH_VR1000) += mach-vr1000.o usb-simtec.o
- obj-$(CONFIG_MACH_RX3715) += mach-rx3715.o
-Index: linux-2.6.17.14-fic4.test/arch/arm/mach-s3c2410/mach-gta01.c
+
+ obj-$(CONFIG_MACH_SMDK) += common-smdk.o
+Index: linux-2.6.20/arch/arm/mach-s3c2410/mach-gta01.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.17.14-fic4.test/arch/arm/mach-s3c2410/mach-gta01.c 2007-02-07 20:42:17.000000000 +0100
-@@ -0,0 +1,508 @@
++++ linux-2.6.20/arch/arm/mach-s3c2410/mach-gta01.c 2007-02-15 17:08:46.000000000 +0100
+@@ -0,0 +1,507 @@
+/*
+ * linux/arch/arm/mach-s3c2410/mach-gta01.c
+ *
@@ -69,6 +68,7 @@
+#include <linux/timer.h>
+#include <linux/init.h>
+#include <linux/platform_device.h>
++#include <linux/serial_core.h>
+#include <linux/spi/spi.h>
+#include <linux/spi/spi_bitbang.h>
+#include <linux/mmc/protocol.h>
@@ -106,8 +106,6 @@
+#include "pm.h"
+
+static struct map_desc gta01_iodesc[] __initdata = {
-+ IODESC_ENT(SDI),
-+ IODESC_ENT(IIS),
+ { 0xe0000000, __phys_to_pfn(S3C2410_CS3+0x01000000), SZ_1M, MT_DEVICE }
+};
+
@@ -544,19 +542,10 @@
+MACHINE_END
+
+
-Index: linux-2.6.17.14-fic4.test/arch/arm/tools/mach-types
+Index: linux-2.6.20/include/asm-arm/arch-s3c2410/gta01.h
===================================================================
---- linux-2.6.17.14-fic4.test.orig/arch/arm/tools/mach-types 2007-02-07 20:39:12.000000000 +0100
-+++ linux-2.6.17.14-fic4.test/arch/arm/tools/mach-types 2007-02-07 20:39:12.000000000 +0100
-@@ -1041,3 +1041,4 @@
- ixp465 MACH_IXP465 IXP465 1028
- balloon3 MACH_BALLOON3 BALLOON3 1029
- qt2410 MACH_QT2410 QT2410 1108
-+gta01 MACH_GTA01 GTA01 1182
-Index: linux-2.6.17.14-fic4.test/include/asm-arm/arch-s3c2410/gta01.h
-===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.17.14-fic4.test/include/asm-arm/arch-s3c2410/gta01.h 2007-02-07 20:39:12.000000000 +0100
++++ linux-2.6.20/include/asm-arm/arch-s3c2410/gta01.h 2007-02-15 17:08:32.000000000 +0100
@@ -0,0 +1,60 @@
+#ifndef _GTA01_H
+#define _GTA01_H
Modified: trunk/src/target/kernel/patches/gta01-inputdevice.patch
===================================================================
--- trunk/src/target/kernel/patches/gta01-inputdevice.patch 2007-02-15 21:31:15 UTC (rev 1003)
+++ trunk/src/target/kernel/patches/gta01-inputdevice.patch 2007-02-15 21:37:15 UTC (rev 1004)
@@ -1,12 +1,12 @@
This provides support for the GTA01 keyboard
-Index: linux-2.6.17.14-fic4.test/drivers/input/keyboard/Kconfig
+Index: linux-2.6.20/drivers/input/keyboard/Kconfig
===================================================================
---- linux-2.6.17.14-fic4.test.orig/drivers/input/keyboard/Kconfig 2007-01-08 21:34:30.000000000 +0100
-+++ linux-2.6.17.14-fic4.test/drivers/input/keyboard/Kconfig 2007-01-08 22:51:40.000000000 +0100
-@@ -183,4 +183,16 @@
- This driver implements support for HIL-keyboards attached
- to your machine, so normally you should say Y here.
+--- linux-2.6.20.orig/drivers/input/keyboard/Kconfig 2007-02-15 16:15:18.000000000 +0100
++++ linux-2.6.20/drivers/input/keyboard/Kconfig 2007-02-15 16:18:52.000000000 +0100
+@@ -214,4 +214,16 @@
+ To compile this driver as a module, choose M here: the
+ module will be called aaed2000_kbd.
+config KEYBOARD_GTA01
+ tristate "GTA01 buttons"
@@ -21,23 +21,23 @@
+
+
endif
-Index: linux-2.6.17.14-fic4.test/drivers/input/keyboard/Makefile
+Index: linux-2.6.20/drivers/input/keyboard/Makefile
===================================================================
---- linux-2.6.17.14-fic4.test.orig/drivers/input/keyboard/Makefile 2007-01-08 21:34:30.000000000 +0100
-+++ linux-2.6.17.14-fic4.test/drivers/input/keyboard/Makefile 2007-01-08 22:51:40.000000000 +0100
-@@ -12,6 +12,7 @@
- obj-$(CONFIG_KEYBOARD_LOCOMO) += locomokbd.o
+--- linux-2.6.20.orig/drivers/input/keyboard/Makefile 2007-02-15 16:15:18.000000000 +0100
++++ linux-2.6.20/drivers/input/keyboard/Makefile 2007-02-15 16:18:52.000000000 +0100
+@@ -13,6 +13,7 @@
obj-$(CONFIG_KEYBOARD_NEWTON) += newtonkbd.o
+ obj-$(CONFIG_KEYBOARD_STOWAWAY) += stowaway.o
obj-$(CONFIG_KEYBOARD_CORGI) += corgikbd.o
+obj-$(CONFIG_KEYBOARD_GTA01) += gta01kbd.o
obj-$(CONFIG_KEYBOARD_SPITZ) += spitzkbd.o
obj-$(CONFIG_KEYBOARD_HIL) += hil_kbd.o
obj-$(CONFIG_KEYBOARD_HIL_OLD) += hilkbd.o
-Index: linux-2.6.17.14-fic4.test/drivers/input/keyboard/gta01kbd.c
+Index: linux-2.6.20/drivers/input/keyboard/gta01kbd.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.17.14-fic4.test/drivers/input/keyboard/gta01kbd.c 2007-01-08 22:52:23.000000000 +0100
-@@ -0,0 +1,452 @@
++++ linux-2.6.20/drivers/input/keyboard/gta01kbd.c 2007-02-15 16:20:10.000000000 +0100
+@@ -0,0 +1,214 @@
+/*
+ * Keyboard driver for FIC GTA01 (Neo1973) GSM phone
+ *
@@ -60,7 +60,7 @@
+#include <linux/module.h>
+#include <linux/slab.h>
+
-+#include <asm/arch/hardware.h>
++#include <asm/hardware.h>
+#include <asm/arch/gta01.h>
+
+struct gta01kbd {
@@ -69,246 +69,8 @@
+ unsigned long suspend_jiffies;
+};
+
-+#if 0
-+#include <asm/arch/corgi.h>
-+#include <asm/arch/hardware.h>
-+#include <asm/arch/pxa-regs.h>
-+#include <asm/hardware/scoop.h>
-+
-+#define KB_ROWS 8
-+#define KB_COLS 12
-+#define KB_ROWMASK(r) (1 << (r))
-+#define SCANCODE(r,c) ( ((r)<<4) + (c) + 1 )
-+/* zero code, 124 scancodes */
-+#define NR_SCANCODES ( SCANCODE(KB_ROWS-1,KB_COLS-1) +1 +1 )
-+
-+#define SCAN_INTERVAL (50) /* ms */
-+#define HINGE_SCAN_INTERVAL (250) /* ms */
-+
-+#define CORGI_KEY_CALENDER KEY_F1
-+#define CORGI_KEY_ADDRESS KEY_F2
-+#define CORGI_KEY_FN KEY_F3
-+#define CORGI_KEY_CANCEL KEY_F4
-+#define CORGI_KEY_OFF KEY_SUSPEND
-+#define CORGI_KEY_EXOK KEY_F5
-+#define CORGI_KEY_EXCANCEL KEY_F6
-+#define CORGI_KEY_EXJOGDOWN KEY_F7
-+#define CORGI_KEY_EXJOGUP KEY_F8
-+#define CORGI_KEY_JAP1 KEY_LEFTCTRL
-+#define CORGI_KEY_JAP2 KEY_LEFTALT
-+#define CORGI_KEY_MAIL KEY_F10
-+#define CORGI_KEY_OK KEY_F11
-+#define CORGI_KEY_MENU KEY_F12
-+
-+static unsigned char corgikbd_keycode[NR_SCANCODES] = {
-+ 0, /* 0 */
-+ 0, KEY_1, KEY_3, KEY_5, KEY_6, KEY_7, KEY_9, KEY_0, KEY_BACKSPACE, 0, 0, 0, 0, 0, 0, 0, /* 1-16 */
-+ 0, KEY_2, KEY_4, KEY_R, KEY_Y, KEY_8, KEY_I, KEY_O, KEY_P, 0, 0, 0, 0, 0, 0, 0, /* 17-32 */
-+ KEY_TAB, KEY_Q, KEY_E, KEY_T, KEY_G, KEY_U, KEY_J, KEY_K, 0, 0, 0, 0, 0, 0, 0, 0, /* 33-48 */
-+ CORGI_KEY_CALENDER, KEY_W, KEY_S, KEY_F, KEY_V, KEY_H, KEY_M, KEY_L, 0, KEY_RIGHTSHIFT, 0, 0, 0, 0, 0, 0, /* 49-64 */
-+ CORGI_KEY_ADDRESS, KEY_A, KEY_D, KEY_C, KEY_B, KEY_N, KEY_DOT, 0, KEY_ENTER, 0, KEY_LEFTSHIFT, 0, 0, 0, 0, 0, /* 65-80 */
-+ CORGI_KEY_MAIL, KEY_Z, KEY_X, KEY_MINUS, KEY_SPACE, KEY_COMMA, 0, KEY_UP, 0, 0, 0, CORGI_KEY_FN, 0, 0, 0, 0, /* 81-96 */
-+ KEY_SYSRQ, CORGI_KEY_JAP1, CORGI_KEY_JAP2, CORGI_KEY_CANCEL, CORGI_KEY_OK, CORGI_KEY_MENU, KEY_LEFT, KEY_DOWN, KEY_RIGHT, 0, 0, 0, 0, 0, 0, 0, /* 97-112 */
-+ CORGI_KEY_OFF, CORGI_KEY_EXOK, CORGI_KEY_EXCANCEL, CORGI_KEY_EXJOGDOWN, CORGI_KEY_EXJOGUP, 0, 0, 0, 0, 0, 0, 0, /* 113-124 */
-+};
-+
-+
-+struct corgikbd {
-+ unsigned char keycode[ARRAY_SIZE(corgikbd_keycode)];
-+ struct input_dev *input;
-+
-+ spinlock_t lock;
-+ struct timer_list timer;
-+ struct timer_list htimer;
-+
-+ unsigned int suspended;
-+ unsigned long suspend_jiffies;
-+};
-+
-+#define KB_DISCHARGE_DELAY 10
-+#define KB_ACTIVATE_DELAY 10
-+
-+/* Helper functions for reading the keyboard matrix
-+ * Note: We should really be using pxa_gpio_mode to alter GPDR but it
-+ * requires a function call per GPIO bit which is excessive
-+ * when we need to access 12 bits at once multiple times.
-+ * These functions must be called within local_irq_save()/local_irq_restore()
-+ * or similar.
-+ */
-+static inline void corgikbd_discharge_all(void)
++static irqreturn_t gta01kbd_interrupt(int irq, void *dev_id)
+{
-+ /* STROBE All HiZ */
-+ GPCR2 = CORGI_GPIO_ALL_STROBE_BIT;
-+ GPDR2 &= ~CORGI_GPIO_ALL_STROBE_BIT;
-+}
-+
-+static inline void corgikbd_activate_all(void)
-+{
-+ /* STROBE ALL -> High */
-+ GPSR2 = CORGI_GPIO_ALL_STROBE_BIT;
-+ GPDR2 |= CORGI_GPIO_ALL_STROBE_BIT;
-+
-+ udelay(KB_DISCHARGE_DELAY);
-+
-+ /* Clear any interrupts we may have triggered when altering the GPIO lines */
-+ GEDR1 = CORGI_GPIO_HIGH_SENSE_BIT;
-+ GEDR2 = CORGI_GPIO_LOW_SENSE_BIT;
-+}
-+
-+static inline void corgikbd_activate_col(int col)
-+{
-+ /* STROBE col -> High, not col -> HiZ */
-+ GPSR2 = CORGI_GPIO_STROBE_BIT(col);
-+ GPDR2 = (GPDR2 & ~CORGI_GPIO_ALL_STROBE_BIT) | CORGI_GPIO_STROBE_BIT(col);
-+}
-+
-+static inline void corgikbd_reset_col(int col)
-+{
-+ /* STROBE col -> Low */
-+ GPCR2 = CORGI_GPIO_STROBE_BIT(col);
-+ /* STROBE col -> out, not col -> HiZ */
-+ GPDR2 = (GPDR2 & ~CORGI_GPIO_ALL_STROBE_BIT) | CORGI_GPIO_STROBE_BIT(col);
-+}
-+
-+#define GET_ROWS_STATUS(c) (((GPLR1 & CORGI_GPIO_HIGH_SENSE_BIT) >> CORGI_GPIO_HIGH_SENSE_RSHIFT) | ((GPLR2 & CORGI_GPIO_LOW_SENSE_BIT) << CORGI_GPIO_LOW_SENSE_LSHIFT))
-+
-+/*
-+ * The corgi keyboard only generates interrupts when a key is pressed.
-+ * When a key is pressed, we enable a timer which then scans the
-+ * keyboard to detect when the key is released.
-+ */
-+
-+/* Scan the hardware keyboard and push any changes up through the input layer */
-+static void corgikbd_scankeyboard(struct corgikbd *corgikbd_data, struct pt_regs *regs)
-+{
-+ unsigned int row, col, rowd;
-+ unsigned long flags;
-+ unsigned int num_pressed;
-+
-+ if (corgikbd_data->suspended)
-+ return;
-+
-+ spin_lock_irqsave(&corgikbd_data->lock, flags);
-+
-+ if (regs)
-+ input_regs(corgikbd_data->input, regs);
-+
-+ num_pressed = 0;
-+ for (col = 0; col < KB_COLS; col++) {
-+ /*
-+ * Discharge the output driver capacitatance
-+ * in the keyboard matrix. (Yes it is significant..)
-+ */
-+
-+ corgikbd_discharge_all();
-+ udelay(KB_DISCHARGE_DELAY);
-+
-+ corgikbd_activate_col(col);
-+ udelay(KB_ACTIVATE_DELAY);
-+
-+ rowd = GET_ROWS_STATUS(col);
-+ for (row = 0; row < KB_ROWS; row++) {
-+ unsigned int scancode, pressed;
-+
-+ scancode = SCANCODE(row, col);
-+ pressed = rowd & KB_ROWMASK(row);
-+
-+ input_report_key(corgikbd_data->input, corgikbd_data->keycode[scancode], pressed);
-+
-+ if (pressed)
-+ num_pressed++;
-+
-+ if (pressed && (corgikbd_data->keycode[scancode] == CORGI_KEY_OFF)
-+ && time_after(jiffies, corgikbd_data->suspend_jiffies + HZ)) {
-+ input_event(corgikbd_data->input, EV_PWR, CORGI_KEY_OFF, 1);
-+ corgikbd_data->suspend_jiffies=jiffies;
-+ }
-+ }
-+ corgikbd_reset_col(col);
-+ }
-+
-+ corgikbd_activate_all();
-+
-+ input_sync(corgikbd_data->input);
-+
-+ /* if any keys are pressed, enable the timer */
-+ if (num_pressed)
-+ mod_timer(&corgikbd_data->timer, jiffies + msecs_to_jiffies(SCAN_INTERVAL));
-+
-+ spin_unlock_irqrestore(&corgikbd_data->lock, flags);
-+}
-+
-+/*
-+ * corgi keyboard interrupt handler.
-+ */
-+static irqreturn_t corgikbd_interrupt(int irq, void *dev_id, struct pt_regs *regs)
-+{
-+ struct corgikbd *corgikbd_data = dev_id;
-+
-+ if (!timer_pending(&corgikbd_data->timer)) {
-+ /** wait chattering delay **/
-+ udelay(20);
-+ corgikbd_scankeyboard(corgikbd_data, regs);
-+ }
-+
-+ return IRQ_HANDLED;
-+}
-+
-+/*
-+ * corgi timer checking for released keys
-+ */
-+static void corgikbd_timer_callback(unsigned long data)
-+{
-+ struct corgikbd *corgikbd_data = (struct corgikbd *) data;
-+ corgikbd_scankeyboard(corgikbd_data, NULL);
-+}
-+
-+/*
-+ * The hinge switches generate no interrupt so they need to be
-+ * monitored by a timer.
-+ *
-+ * We debounce the switches and pass them to the input system.
-+ *
-+ * gprr == 0x00 - Keyboard with Landscape Screen
-+ * 0x08 - No Keyboard with Portrait Screen
-+ * 0x0c - Keyboard and Screen Closed
-+ */
-+
-+#define READ_GPIO_BIT(x) (GPLR(x) & GPIO_bit(x))
-+#define HINGE_STABLE_COUNT 2
-+static int sharpsl_hinge_state;
-+static int hinge_count;
-+
-+static void corgikbd_hinge_timer(unsigned long data)
-+{
-+ struct corgikbd *corgikbd_data = (struct corgikbd *) data;
-+ unsigned long gprr;
-+ unsigned long flags;
-+
-+ gprr = read_scoop_reg(&corgiscoop_device.dev, SCOOP_GPRR) & (CORGI_SCP_SWA | CORGI_SCP_SWB);
-+ gprr |= (READ_GPIO_BIT(CORGI_GPIO_AK_INT) != 0);
-+ if (gprr != sharpsl_hinge_state) {
-+ hinge_count = 0;
-+ sharpsl_hinge_state = gprr;
-+ } else if (hinge_count < HINGE_STABLE_COUNT) {
-+ hinge_count++;
-+ if (hinge_count >= HINGE_STABLE_COUNT) {
-+ spin_lock_irqsave(&corgikbd_data->lock, flags);
-+
-+ input_report_switch(corgikbd_data->input, SW_LID, ((sharpsl_hinge_state & CORGI_SCP_SWA) != 0));
-+ input_report_switch(corgikbd_data->input, SW_TABLET_MODE, ((sharpsl_hinge_state & CORGI_SCP_SWB) != 0));
-+ input_report_switch(corgikbd_data->input, SW_HEADPHONE_INSERT, (READ_GPIO_BIT(CORGI_GPIO_AK_INT) != 0));
-+ input_sync(corgikbd_data->input);
-+
-+ spin_unlock_irqrestore(&corgikbd_data->lock, flags);
-+ }
-+ }
-+ mod_timer(&corgikbd_data->htimer, jiffies + msecs_to_jiffies(HINGE_SCAN_INTERVAL));
-+}
-+#endif
-+
-+static irqreturn_t gta01kbd_interrupt(int irq, void *dev_id, struct pt_regs *regs)
-+{
+ struct gta01kbd *gta01kbd_data = dev_id;
+
+ /* FIXME: use GPIO from platform_dev resources */
Modified: trunk/src/target/kernel/patches/gta01-jbt6k74.patch
===================================================================
--- trunk/src/target/kernel/patches/gta01-jbt6k74.patch 2007-02-15 21:31:15 UTC (rev 1003)
+++ trunk/src/target/kernel/patches/gta01-jbt6k74.patch 2007-02-15 21:37:15 UTC (rev 1004)
@@ -1,10 +1,10 @@
This driver adds support for LCM initialization of the JBT6K74 LCM
as found on the FIC GTA01 hardware
-Index: linux-2.6.17.14-fic4.test/drivers/spi/Kconfig
+Index: linux-2.6.20/drivers/spi/Kconfig
===================================================================
---- linux-2.6.17.14-fic4.test.orig/drivers/spi/Kconfig 2007-01-10 01:10:12.000000000 +0100
-+++ linux-2.6.17.14-fic4.test/drivers/spi/Kconfig 2007-01-10 01:10:59.000000000 +0100
+--- linux-2.6.20.orig/drivers/spi/Kconfig 2007-02-15 16:26:53.000000000 +0100
++++ linux-2.6.20/drivers/spi/Kconfig 2007-02-15 16:28:11.000000000 +0100
@@ -129,5 +129,9 @@
# (slave support would go here)
@@ -15,21 +15,21 @@
+
endmenu # "SPI support"
-Index: linux-2.6.17.14-fic4.test/drivers/spi/Makefile
+Index: linux-2.6.20/drivers/spi/Makefile
===================================================================
---- linux-2.6.17.14-fic4.test.orig/drivers/spi/Makefile 2007-01-10 01:10:12.000000000 +0100
-+++ linux-2.6.17.14-fic4.test/drivers/spi/Makefile 2007-01-10 01:10:59.000000000 +0100
+--- linux-2.6.20.orig/drivers/spi/Makefile 2007-02-15 16:26:53.000000000 +0100
++++ linux-2.6.20/drivers/spi/Makefile 2007-02-15 16:28:11.000000000 +0100
@@ -26,4 +26,5 @@
# ... add above this line ...
# SPI slave drivers (protocol for that link)
+obj-$(CONFIG_SPI_SLAVE_JBT6K74) += jbt6k74.o
# ... add above this line ...
-Index: linux-2.6.17.14-fic4.test/drivers/spi/jbt6k74.c
+Index: linux-2.6.20/drivers/spi/jbt6k74.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.17.14-fic4.test/drivers/spi/jbt6k74.c 2007-01-15 02:41:26.000000000 +0100
-@@ -0,0 +1,534 @@
++++ linux-2.6.20/drivers/spi/jbt6k74.c 2007-02-15 16:49:58.000000000 +0100
+@@ -0,0 +1,533 @@
+/* Linux kernel driver for the tpo JBT6K74-AS LCM ASIC
+ *
+ * Copyright (C) 2006-2007 by OpenMoko, Inc.
@@ -54,7 +54,6 @@
+ */
+#include <linux/kernel.h>
+#include <linux/types.h>
-+#include <linux/config.h>
+#include <linux/module.h>
+#include <linux/device.h>
+#include <linux/platform_device.h>
Modified: trunk/src/target/kernel/patches/gta01-no_nand_partitions.patch
===================================================================
--- trunk/src/target/kernel/patches/gta01-no_nand_partitions.patch 2007-02-15 21:31:15 UTC (rev 1003)
+++ trunk/src/target/kernel/patches/gta01-no_nand_partitions.patch 2007-02-15 21:37:15 UTC (rev 1004)
@@ -1,8 +1,8 @@
-Index: linux-2.6.17.14-fic4.test/arch/arm/mach-s3c2410/mach-gta01.c
+Index: linux-2.6.20/arch/arm/mach-s3c2410/mach-gta01.c
===================================================================
---- linux-2.6.17.14-fic4.test.orig/arch/arm/mach-s3c2410/mach-gta01.c 2007-02-10 23:31:12.000000000 +0100
-+++ linux-2.6.17.14-fic4.test/arch/arm/mach-s3c2410/mach-gta01.c 2007-02-11 01:39:24.000000000 +0100
-@@ -188,40 +188,10 @@
+--- linux-2.6.20.orig/arch/arm/mach-s3c2410/mach-gta01.c 2007-02-15 16:28:11.000000000 +0100
++++ linux-2.6.20/arch/arm/mach-s3c2410/mach-gta01.c 2007-02-15 16:28:11.000000000 +0100
+@@ -186,40 +186,10 @@
.devices_count = ARRAY_SIZE(gta01_devices)
};
@@ -44,11 +44,11 @@
},
};
-Index: linux-2.6.17.14-fic4.test/drivers/mtd/nand/s3c2410.c
+Index: linux-2.6.20/drivers/mtd/nand/s3c2410.c
===================================================================
---- linux-2.6.17.14-fic4.test.orig/drivers/mtd/nand/s3c2410.c 2007-02-11 00:22:02.000000000 +0100
-+++ linux-2.6.17.14-fic4.test/drivers/mtd/nand/s3c2410.c 2007-02-11 03:45:28.000000000 +0100
-@@ -480,19 +480,31 @@
+--- linux-2.6.20.orig/drivers/mtd/nand/s3c2410.c 2007-02-15 16:28:11.000000000 +0100
++++ linux-2.6.20/drivers/mtd/nand/s3c2410.c 2007-02-15 16:28:11.000000000 +0100
+@@ -471,17 +471,31 @@
}
#ifdef CONFIG_MTD_PARTITIONS
@@ -64,9 +64,7 @@
return add_mtd_device(&mtd->mtd);
- if (set->nr_partitions > 0 && set->partitions != NULL) {
-- return add_mtd_partitions(&mtd->mtd,
-- set->partitions,
-- set->nr_partitions);
+- return add_mtd_partitions(&mtd->mtd, set->partitions, set->nr_partitions);
+ if (set->nr_partitions == 0) {
+ mtd->mtd.name = set->name;
+ nr_part = parse_mtd_partitions(&mtd->mtd, part_probes,
Modified: trunk/src/target/kernel/patches/gta01-pcf50606.patch
===================================================================
--- trunk/src/target/kernel/patches/gta01-pcf50606.patch 2007-02-15 21:31:15 UTC (rev 1003)
+++ trunk/src/target/kernel/patches/gta01-pcf50606.patch 2007-02-15 21:37:15 UTC (rev 1004)
@@ -1,10 +1,10 @@
This is the PCF50606 power management unit driver for FIC GTA01
-Index: linux-2.6.17.14-fic4.test/drivers/i2c/chips/pcf50606.c
+Index: linux-2.6.20/drivers/i2c/chips/pcf50606.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.17.14-fic4.test/drivers/i2c/chips/pcf50606.c 2007-02-11 04:00:50.000000000 +0100
-@@ -0,0 +1,1495 @@
++++ linux-2.6.20/drivers/i2c/chips/pcf50606.c 2007-02-15 16:25:44.000000000 +0100
+@@ -0,0 +1,1497 @@
+/* Philips PCF50606 Power Management Unit (PMU) driver
+ *
+ * (C) 2006 by OpenMoko, Inc.
@@ -40,6 +40,7 @@
+#include <linux/i2c.h>
+#include <linux/types.h>
+#include <linux/interrupt.h>
++#include <linux/irq.h>
+#include <linux/workqueue.h>
+#include <linux/rtc.h>
+#include <linux/bcd.h>
@@ -526,9 +527,10 @@
+}
+EXPORT_SYMBOL(pcf50606_gpo0_get);
+
-+static void pcf50606_work(void *data)
++static void pcf50606_work(struct work_struct *work)
+{
-+ struct pcf50606_data *pcf = data;
++ struct pcf50606_data *pcf =
++ container_of(work, struct pcf50606_data, work);
+ u_int8_t int1, int2, int3;
+
+ pcf->working = 1;
@@ -699,12 +701,12 @@
+}
+
+
-+static irqreturn_t pcf50606_irq(int irq, void *_pcf, struct pt_regs *regs)
++static irqreturn_t pcf50606_irq(int irq, void *_pcf)
+{
+ struct pcf50606_data *pcf = _pcf;
+
-+ DEBUGP("entering(irq=%u, pcf=%p, regs=%p): scheduling work\n",
-+ irq, _pcf, regs);
++ DEBUGP("entering(irq=%u, pcf=%p): scheduling work\n",
++ irq, _pcf);
+ pcf50606_schedule_work(pcf);
+
+ return IRQ_HANDLED;
@@ -1337,7 +1339,7 @@
+ return -ENOMEM;
+
+ mutex_init(&data->lock);
-+ INIT_WORK(&data->work, pcf50606_work, data);
++ INIT_WORK(&data->work, pcf50606_work);
+ data->working = 0;
+ data->onkey_seconds = -1;
+ new_client = &data->client;
@@ -1500,10 +1502,10 @@
+
+module_init(pcf50606_init);
+module_exit(pcf50606_exit);
-Index: linux-2.6.17.14-fic4.test/drivers/i2c/chips/pcf50606.h
+Index: linux-2.6.20/drivers/i2c/chips/pcf50606.h
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.17.14-fic4.test/drivers/i2c/chips/pcf50606.h 2007-02-10 11:51:17.000000000 +0100
++++ linux-2.6.20/drivers/i2c/chips/pcf50606.h 2007-02-15 16:23:09.000000000 +0100
@@ -0,0 +1,259 @@
+#ifndef _PCF50606_H
+#define _PCF50606_H
@@ -1764,10 +1766,10 @@
+
+#endif /* _PCF50606_H */
+
-Index: linux-2.6.17.14-fic4.test/drivers/i2c/chips/Kconfig
+Index: linux-2.6.20/drivers/i2c/chips/Kconfig
===================================================================
---- linux-2.6.17.14-fic4.test.orig/drivers/i2c/chips/Kconfig 2007-02-10 11:51:15.000000000 +0100
-+++ linux-2.6.17.14-fic4.test/drivers/i2c/chips/Kconfig 2007-02-10 11:51:17.000000000 +0100
+--- linux-2.6.20.orig/drivers/i2c/chips/Kconfig 2007-02-15 16:20:52.000000000 +0100
++++ linux-2.6.20/drivers/i2c/chips/Kconfig 2007-02-15 16:23:09.000000000 +0100
@@ -36,6 +36,17 @@
This driver can also be built as a module. If so, the module
will be called eeprom.
@@ -1786,10 +1788,10 @@
config SENSORS_PCF8574
tristate "Philips PCF8574 and PCF8574A"
depends on I2C && EXPERIMENTAL
-Index: linux-2.6.17.14-fic4.test/drivers/i2c/chips/Makefile
+Index: linux-2.6.20/drivers/i2c/chips/Makefile
===================================================================
---- linux-2.6.17.14-fic4.test.orig/drivers/i2c/chips/Makefile 2007-02-10 11:51:15.000000000 +0100
-+++ linux-2.6.17.14-fic4.test/drivers/i2c/chips/Makefile 2007-02-10 11:51:17.000000000 +0100
+--- linux-2.6.20.orig/drivers/i2c/chips/Makefile 2007-02-15 16:20:52.000000000 +0100
++++ linux-2.6.20/drivers/i2c/chips/Makefile 2007-02-15 16:23:09.000000000 +0100
@@ -8,6 +8,7 @@
obj-$(CONFIG_SENSORS_MAX6875) += max6875.o
obj-$(CONFIG_SENSORS_M41T00) += m41t00.o
@@ -1798,22 +1800,22 @@
obj-$(CONFIG_SENSORS_PCF8574) += pcf8574.o
obj-$(CONFIG_SENSORS_PCF8591) += pcf8591.o
obj-$(CONFIG_ISP1301_OMAP) += isp1301_omap.o
-Index: linux-2.6.17.14-fic4.test/include/linux/i2c-id.h
+Index: linux-2.6.20/include/linux/i2c-id.h
===================================================================
---- linux-2.6.17.14-fic4.test.orig/include/linux/i2c-id.h 2007-02-10 11:51:15.000000000 +0100
-+++ linux-2.6.17.14-fic4.test/include/linux/i2c-id.h 2007-02-10 11:51:17.000000000 +0100
-@@ -157,6 +157,7 @@
- #define I2C_DRIVERID_ASB100 1043
+--- linux-2.6.20.orig/include/linux/i2c-id.h 2007-02-15 16:20:52.000000000 +0100
++++ linux-2.6.20/include/linux/i2c-id.h 2007-02-15 16:23:09.000000000 +0100
+@@ -159,6 +159,7 @@
#define I2C_DRIVERID_FSCHER 1046
#define I2C_DRIVERID_W83L785TS 1047
-+#define I2C_DRIVERID_PCF50606 1048
+ #define I2C_DRIVERID_OV7670 1048 /* Omnivision 7670 camera */
++#define I2C_DRIVERID_PCF50606 1049
/*
* ---- Adapter types ----------------------------------------------------
-Index: linux-2.6.17.14-fic4.test/include/linux/pcf50606.h
+Index: linux-2.6.20/include/linux/pcf50606.h
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.17.14-fic4.test/include/linux/pcf50606.h 2007-02-10 11:51:17.000000000 +0100
++++ linux-2.6.20/include/linux/pcf50606.h 2007-02-15 16:23:09.000000000 +0100
@@ -0,0 +1,55 @@
+#ifndef _LINUX_PCF50606_H
+#define _LINUX_PCF50606_H
Modified: trunk/src/target/kernel/patches/gta01-power_control.patch
===================================================================
--- trunk/src/target/kernel/patches/gta01-power_control.patch 2007-02-15 21:31:15 UTC (rev 1003)
+++ trunk/src/target/kernel/patches/gta01-power_control.patch 2007-02-15 21:37:15 UTC (rev 1004)
@@ -1,17 +1,17 @@
-Index: linux-2.6.17.14-fic4.test/arch/arm/common/Makefile
+Index: linux-2.6.20/arch/arm/common/Makefile
===================================================================
---- linux-2.6.17.14-fic4.test.orig/arch/arm/common/Makefile 2007-02-07 20:41:35.000000000 +0100
-+++ linux-2.6.17.14-fic4.test/arch/arm/common/Makefile 2007-02-07 20:42:24.000000000 +0100
-@@ -16,3 +16,5 @@
- obj-$(CONFIG_SHARPSL_PM) += sharpsl_pm.o
+--- linux-2.6.20.orig/arch/arm/common/Makefile 2007-02-04 19:44:54.000000000 +0100
++++ linux-2.6.20/arch/arm/common/Makefile 2007-02-15 15:05:53.000000000 +0100
+@@ -17,3 +17,5 @@
obj-$(CONFIG_SHARP_SCOOP) += scoop.o
obj-$(CONFIG_ARCH_IXP2000) += uengine.o
+ obj-$(CONFIG_ARCH_IXP23XX) += uengine.o
+#obj-$(CONFIG_MACH_GTA01) += gta01_pm_gsm.o gta01_pm_gps.o gta01_pm_bt.o
+obj-m += gta01_pm_gsm.o gta01_pm_gps.o gta01_pm_bt.o
-Index: linux-2.6.17.14-fic4.test/arch/arm/common/gta01_pm_gps.c
+Index: linux-2.6.20/arch/arm/common/gta01_pm_gps.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.17.14-fic4.test/arch/arm/common/gta01_pm_gps.c 2007-02-07 20:42:24.000000000 +0100
++++ linux-2.6.20/arch/arm/common/gta01_pm_gps.c 2007-02-15 15:17:52.000000000 +0100
@@ -0,0 +1,542 @@
+/*
+ * GPS Power Management code for the FIC Neo1973 GSM Phone
@@ -34,8 +34,8 @@
+
+#include <linux/pcf50606.h>
+
++#include <asm/hardware.h>
+#include <asm/arch/gta01.h>
-+#include <asm/arch/hardware.h>
+
+/* This is the 2.8V supply for the RTC crystal, the mail clock crystal and
+ * the input to VDD_RF */
@@ -555,10 +555,10 @@
+MODULE_LICENSE("GPL");
+MODULE_AUTHOR("Harald Welte <laforge at openmoko.org>");
+MODULE_DESCRIPTION("FIC GTA01 (Neo1973) GPS Power Management");
-Index: linux-2.6.17.14-fic4.test/arch/arm/common/gta01_pm_gsm.c
+Index: linux-2.6.20/arch/arm/common/gta01_pm_gsm.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.17.14-fic4.test/arch/arm/common/gta01_pm_gsm.c 2007-02-07 21:51:56.000000000 +0100
++++ linux-2.6.20/arch/arm/common/gta01_pm_gsm.c 2007-02-15 15:16:48.000000000 +0100
@@ -0,0 +1,164 @@
+/*
+ * GSM Management code for the FIC Neo1973 GSM Phone
@@ -578,8 +578,8 @@
+#include <linux/kernel.h>
+#include <linux/platform_device.h>
+
++#include <asm/hardware.h>
+#include <asm/arch/gta01.h>
-+#include <asm/arch/hardware.h>
+
+struct gta01pm_priv {
+ int gpio_ngsm_en;
@@ -724,10 +724,10 @@
+MODULE_LICENSE("GPL");
+MODULE_AUTHOR("Harald Welte <laforge at openmoko.org>");
+MODULE_DESCRIPTION("FIC GTA01 (Neo1973) GSM Management");
-Index: linux-2.6.17.14-fic4.test/arch/arm/common/gta01_pm_bt.c
+Index: linux-2.6.20/arch/arm/common/gta01_pm_bt.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.17.14-fic4.test/arch/arm/common/gta01_pm_bt.c 2007-02-07 20:42:24.000000000 +0100
++++ linux-2.6.20/arch/arm/common/gta01_pm_bt.c 2007-02-15 15:17:38.000000000 +0100
@@ -0,0 +1,133 @@
+/*
+ * Bluetooth PM code for the FIC Neo1973 GSM Phone
@@ -749,8 +749,8 @@
+
+#include <linux/pcf50606.h>
+
++#include <asm/hardware.h>
+#include <asm/arch/gta01.h>
-+#include <asm/arch/hardware.h>
+
+#define DRVMSG "FIC GTA01 (Neo1973) Bluetooth Power Management"
+
Modified: trunk/src/target/kernel/patches/gta01-vbus_draw.patch
===================================================================
--- trunk/src/target/kernel/patches/gta01-vbus_draw.patch 2007-02-15 21:31:15 UTC (rev 1003)
+++ trunk/src/target/kernel/patches/gta01-vbus_draw.patch 2007-02-15 21:37:15 UTC (rev 1004)
@@ -1,7 +1,7 @@
-Index: linux-2.6.17.14-fic4.test/arch/arm/mach-s3c2410/mach-gta01.c
+Index: linux-2.6.20/arch/arm/mach-s3c2410/mach-gta01.c
===================================================================
---- linux-2.6.17.14-fic4.test.orig/arch/arm/mach-s3c2410/mach-gta01.c 2007-01-24 15:07:40.000000000 +0100
-+++ linux-2.6.17.14-fic4.test/arch/arm/mach-s3c2410/mach-gta01.c 2007-01-24 15:18:50.000000000 +0100
+--- linux-2.6.20.orig/arch/arm/mach-s3c2410/mach-gta01.c 2007-02-15 15:42:57.000000000 +0100
++++ linux-2.6.20/arch/arm/mach-s3c2410/mach-gta01.c 2007-02-15 16:03:56.000000000 +0100
@@ -30,6 +30,7 @@
#include <linux/list.h>
#include <linux/timer.h>
@@ -19,23 +19,22 @@
#include <asm/mach/arch.h>
#include <asm/mach/map.h>
#include <asm/mach/irq.h>
-@@ -298,8 +301,38 @@
+@@ -297,8 +300,37 @@
}
}
+/* use a work queue, since I2C API inherently schedules
+ * and we get called in hardirq context from UDC driver */
+
-+static void __gta01_udc_vbus_draw(void *v_ma);
-+static int gta01_udc_vbus_draw_ma;
-+static DECLARE_WORK(gta01_udc_vbus_work, __gta01_udc_vbus_draw,
-+ >a01_udc_vbus_draw_ma);
++struct vbus_draw {
++ struct work_struct work;
++ int ma;
++};
++static struct vbus_draw gta01_udc_vbus_drawer;
+
-+static void __gta01_udc_vbus_draw(void *v_ma)
++static void __gta01_udc_vbus_draw(struct work_struct *work)
+{
-+ unsigned int ma = *((unsigned int *) v_ma);
-+
-+ if (ma >= 500) {
++ if (gta01_udc_vbus_drawer.ma >= 500) {
+ /* enable fast charge */
+ printk(KERN_DEBUG "udc: enabling fast charge\n");
+ pcf50606_charge_fast(pcf50606_global, 1);
@@ -48,8 +47,8 @@
+
+static void gta01_udc_vbus_draw(unsigned int ma)
+{
-+ gta01_udc_vbus_draw_ma = ma;
-+ schedule_work(>a01_udc_vbus_work);
++ gta01_udc_vbus_drawer.ma = ma;
++ schedule_work(>a01_udc_vbus_drawer.work);
+}
+
static struct s3c2410_udc_mach_info gta01_udc_cfg = {
@@ -58,3 +57,11 @@
};
static struct s3c2410_ts_mach_info gta01_ts_cfg = {
+@@ -464,6 +496,7 @@
+
+ s3c24xx_fb_set_platdata(>a01_lcd_cfg);
+
++ INIT_WORK(>a01_udc_vbus_drawer.work, __gta01_udc_vbus_draw);
+ s3c24xx_udc_set_platdata(>a01_udc_cfg);
+ set_s3c2410ts_info(>a01_ts_cfg);
+
Added: trunk/src/target/kernel/patches/i2c-permit_invalid_addrs.patch
===================================================================
--- trunk/src/target/kernel/patches/i2c-permit_invalid_addrs.patch 2007-02-15 21:31:15 UTC (rev 1003)
+++ trunk/src/target/kernel/patches/i2c-permit_invalid_addrs.patch 2007-02-15 21:37:15 UTC (rev 1004)
@@ -0,0 +1,23 @@
+We need this stupid workaround since our amplifier chip uses a 'reserved' I2C
+address
+
+Signed-off-by: Harald Welte <laforge at openmoko.org>
+
+Index: linux-2.6.20/drivers/i2c/i2c-core.c
+===================================================================
+--- linux-2.6.20.orig/drivers/i2c/i2c-core.c 2007-02-15 20:30:14.000000000 +0100
++++ linux-2.6.20/drivers/i2c/i2c-core.c 2007-02-15 20:30:22.000000000 +0100
+@@ -701,11 +701,11 @@
+ int err;
+
+ /* Make sure the address is valid */
+- if (addr < 0x03 || addr > 0x77) {
++ /*if (addr < 0x03 || addr > 0x77) {
+ dev_warn(&adapter->dev, "Invalid probe address 0x%02x\n",
+ addr);
+ return -EINVAL;
+- }
++ }*/
+
+ /* Skip if already in use */
+ if (i2c_check_addr(adapter, addr))
Added: trunk/src/target/kernel/patches/pm-debug_less_verbose.patch
===================================================================
--- trunk/src/target/kernel/patches/pm-debug_less_verbose.patch 2007-02-15 21:31:15 UTC (rev 1003)
+++ trunk/src/target/kernel/patches/pm-debug_less_verbose.patch 2007-02-15 21:37:15 UTC (rev 1004)
@@ -0,0 +1,15 @@
+Index: linux-2.6.20/drivers/base/power/main.c
+===================================================================
+--- linux-2.6.20.orig/drivers/base/power/main.c 2007-02-15 19:56:34.000000000 +0100
++++ linux-2.6.20/drivers/base/power/main.c 2007-02-15 19:56:43.000000000 +0100
+@@ -53,8 +53,8 @@
+ {
+ int error;
+
+- pr_debug("PM: Adding info for %s:%s\n",
+- dev->bus ? dev->bus->name : "No Bus", dev->kobj.name);
++ //pr_debug("PM: Adding info for %s:%s\n",
++ // dev->bus ? dev->bus->name : "No Bus", dev->kobj.name);
+ down(&dpm_list_sem);
+ list_add_tail(&dev->power.entry, &dpm_active);
+ device_pm_set_parent(dev, dev->parent);
Modified: trunk/src/target/kernel/patches/qt2410-base.patch
===================================================================
--- trunk/src/target/kernel/patches/qt2410-base.patch 2007-02-15 21:31:15 UTC (rev 1003)
+++ trunk/src/target/kernel/patches/qt2410-base.patch 2007-02-15 21:37:15 UTC (rev 1004)
@@ -1,8 +1,8 @@
-Index: linux-2.6.17.14-fic4.test/arch/arm/mach-s3c2410/Kconfig
+Index: linux-2.6.20/arch/arm/mach-s3c2410/Kconfig
===================================================================
---- linux-2.6.17.14-fic4.test.orig/arch/arm/mach-s3c2410/Kconfig 2007-01-24 12:14:53.000000000 +0100
-+++ linux-2.6.17.14-fic4.test/arch/arm/mach-s3c2410/Kconfig 2007-01-24 12:17:13.000000000 +0100
-@@ -63,6 +63,12 @@
+--- linux-2.6.20.orig/arch/arm/mach-s3c2410/Kconfig 2007-02-15 16:26:54.000000000 +0100
++++ linux-2.6.20/arch/arm/mach-s3c2410/Kconfig 2007-02-15 17:05:08.000000000 +0100
+@@ -80,6 +80,12 @@
Say Y here if you are using the SMDK2410 or the derived module A9M2410
<http://www.fsforth.de>
@@ -15,50 +15,24 @@
config ARCH_S3C2440
bool "SMDK2440"
select CPU_S3C2440
-Index: linux-2.6.17.14-fic4.test/arch/arm/mach-s3c2410/Makefile
+Index: linux-2.6.20/arch/arm/mach-s3c2410/Makefile
===================================================================
---- linux-2.6.17.14-fic4.test.orig/arch/arm/mach-s3c2410/Makefile 2007-01-24 12:14:53.000000000 +0100
-+++ linux-2.6.17.14-fic4.test/arch/arm/mach-s3c2410/Makefile 2007-01-24 12:17:13.000000000 +0100
-@@ -43,10 +43,11 @@
- obj-$(CONFIG_ARCH_H1940) += mach-h1940.o
- obj-$(CONFIG_MACH_N30) += mach-n30.o
- obj-$(CONFIG_ARCH_SMDK2410) += mach-smdk2410.o
-+obj-$(CONFIG_MACH_QT2410) += mach-qt2410.o
- obj-$(CONFIG_ARCH_S3C2440) += mach-smdk2440.o
- obj-$(CONFIG_MACH_VR1000) += mach-vr1000.o usb-simtec.o
- obj-$(CONFIG_MACH_RX3715) += mach-rx3715.o
+--- linux-2.6.20.orig/arch/arm/mach-s3c2410/Makefile 2007-02-15 16:26:54.000000000 +0100
++++ linux-2.6.20/arch/arm/mach-s3c2410/Makefile 2007-02-15 17:05:08.000000000 +0100
+@@ -88,5 +88,6 @@
obj-$(CONFIG_MACH_OTOM) += mach-otom.o
obj-$(CONFIG_MACH_NEXCODER_2440) += mach-nexcoder.o
+ obj-$(CONFIG_MACH_VSTMS) += mach-vstms.o
++obj-$(CONFIG_MACH_QT2410) += mach-qt2410.o
-obj-$(CONFIG_MACH_SMDK) += common-smdk.o
\ No newline at end of file
+obj-$(CONFIG_MACH_SMDK) += common-smdk.o
-Index: linux-2.6.17.14-fic4.test/arch/arm/tools/mach-types
+Index: linux-2.6.20/arch/arm/mach-s3c2410/mach-qt2410.c
===================================================================
---- linux-2.6.17.14-fic4.test.orig/arch/arm/tools/mach-types 2007-01-24 12:14:53.000000000 +0100
-+++ linux-2.6.17.14-fic4.test/arch/arm/tools/mach-types 2007-01-24 12:17:13.000000000 +0100
-@@ -1040,3 +1040,4 @@
- ai2410 MACH_AI2410 AI2410 1027
- ixp465 MACH_IXP465 IXP465 1028
- balloon3 MACH_BALLOON3 BALLOON3 1029
-+qt2410 MACH_QT2410 QT2410 1108
-Index: linux-2.6.17.14-fic4.test/include/asm-arm/arch-s3c2410/map.h
-===================================================================
---- linux-2.6.17.14-fic4.test.orig/include/asm-arm/arch-s3c2410/map.h 2007-01-24 12:14:53.000000000 +0100
-+++ linux-2.6.17.14-fic4.test/include/asm-arm/arch-s3c2410/map.h 2007-01-24 12:17:13.000000000 +0100
-@@ -225,6 +225,7 @@
- #define S3C24XX_PA_RTC S3C2410_PA_RTC
- #define S3C24XX_PA_ADC S3C2410_PA_ADC
- #define S3C24XX_PA_SPI S3C2410_PA_SPI
-+#define S3C24XX_PA_SDI S3C2410_PA_SDI
- #endif
-
- #endif /* __ASM_ARCH_MAP_H */
-Index: linux-2.6.17.14-fic4.test/arch/arm/mach-s3c2410/mach-qt2410.c
-===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.17.14-fic4.test/arch/arm/mach-s3c2410/mach-qt2410.c 2007-01-24 12:17:22.000000000 +0100
-@@ -0,0 +1,377 @@
++++ linux-2.6.20/arch/arm/mach-s3c2410/mach-qt2410.c 2007-02-15 17:07:34.000000000 +0100
+@@ -0,0 +1,385 @@
+/*
+ *
+ * linux/arch/arm/mach-s3c2410/mach-qt2410.c
@@ -91,6 +65,7 @@
+#include <linux/timer.h>
+#include <linux/init.h>
+#include <linux/platform_device.h>
++#include <linux/serial_core.h>
+#include <linux/spi/spi.h>
+#include <linux/spi/spi_bitbang.h>
+
@@ -113,6 +88,7 @@
+#include <asm/arch/fb.h>
+#include <asm/arch/nand.h>
+#include <asm/arch/udc.h>
++#include <asm/arch/ts.h>
+#include <asm/arch/spi.h>
+#include <asm/arch/spi-gpio.h>
+
@@ -122,8 +98,6 @@
+#include "pm.h"
+
+static struct map_desc qt2410_iodesc[] __initdata = {
-+ IODESC_ENT(SDI),
-+ IODESC_ENT(IIS),
+ { 0xe0000000, __phys_to_pfn(S3C2410_CS3+0x01000000), SZ_1M, MT_DEVICE }
+};
+
@@ -247,6 +221,7 @@
+ &s3c_device_sdi,
+ &s3c_device_usbgadget,
+ &s3c_device_nand,
++ &s3c_device_ts,
+ &cs89x0_device,
+};
+
@@ -391,6 +366,12 @@
+ .udc_command = qt2410_udc_pullup,
+};
+
++static struct s3c2410_ts_mach_info qt2410_ts_cfg = {
++ .delay = 10000,
++ .presc = 49,
++ .oversampling_shift = 2,
++};
++
+static void __init qt2410_map_io(void)
+{
+ s3c24xx_init_io(qt2410_iodesc, ARRAY_SIZE(qt2410_iodesc));
@@ -416,6 +397,7 @@
+ s3c_device_nand.dev.platform_data = &qt2410_nand_info;
+ s3c24xx_fb_set_platdata(&qt2410_lcd_cfg);
+ s3c24xx_udc_set_platdata(&qt2410_udc_cfg);
++ set_s3c2410ts_info(&qt2410_ts_cfg);
+
+ s3c2410_gpio_cfgpin(S3C2410_GPB5, S3C2410_GPIO_OUTPUT);
+ spi_register_board_info(qt2410_spi_board_info,
@@ -425,7 +407,7 @@
+ s3c2410_pm_init();
+}
+
-+MACHINE_START(QT2410, "QT2410")
++MACHINE_START(QT2410, "QT2410")
+ .phys_io = S3C2410_PA_UART,
+ .io_pg_offst = (((u32)S3C24XX_VA_UART) >> 18) & 0xfffc,
+ .boot_params = S3C2410_SDRAM_PA + 0x100,
Modified: trunk/src/target/kernel/patches/qt2410-s3c_mci-pdata.patch
===================================================================
--- trunk/src/target/kernel/patches/qt2410-s3c_mci-pdata.patch 2007-02-15 21:31:15 UTC (rev 1003)
+++ trunk/src/target/kernel/patches/qt2410-s3c_mci-pdata.patch 2007-02-15 21:37:15 UTC (rev 1004)
@@ -1,27 +1,27 @@
This patch adds platform data to support the SD/MMC slot of the Armzone
S3C2410 development board.
-Index: linux-2.6.17.14-fic4.test/arch/arm/mach-s3c2410/mach-qt2410.c
+Index: linux-2.6.20/arch/arm/mach-s3c2410/mach-qt2410.c
===================================================================
---- linux-2.6.17.14-fic4.test.orig/arch/arm/mach-s3c2410/mach-qt2410.c 2007-01-24 12:18:07.000000000 +0100
-+++ linux-2.6.17.14-fic4.test/arch/arm/mach-s3c2410/mach-qt2410.c 2007-01-24 12:18:09.000000000 +0100
-@@ -30,6 +30,7 @@
- #include <linux/timer.h>
+--- linux-2.6.20.orig/arch/arm/mach-s3c2410/mach-qt2410.c 2007-02-15 17:07:38.000000000 +0100
++++ linux-2.6.20/arch/arm/mach-s3c2410/mach-qt2410.c 2007-02-15 17:08:16.000000000 +0100
+@@ -31,6 +31,7 @@
#include <linux/init.h>
#include <linux/platform_device.h>
+ #include <linux/serial_core.h>
+#include <linux/mmc/protocol.h>
#include <linux/spi/spi.h>
#include <linux/spi/spi_bitbang.h>
-@@ -54,6 +55,7 @@
- #include <asm/arch/udc.h>
+@@ -56,6 +57,7 @@
+ #include <asm/arch/ts.h>
#include <asm/arch/spi.h>
#include <asm/arch/spi-gpio.h>
+#include <asm/arch/mci.h>
#include "devs.h"
#include "cpu.h"
-@@ -468,6 +470,13 @@
+@@ -475,6 +477,13 @@
__setup("tft=", tft_setup);
@@ -35,7 +35,7 @@
static void __init qt2410_map_io(void)
{
s3c24xx_init_io(qt2410_iodesc, ARRAY_SIZE(qt2410_iodesc));
-@@ -491,6 +500,7 @@
+@@ -498,6 +507,7 @@
s3c2410_gpio_setpin(S3C2410_GPF7, 1);
s3c_device_nand.dev.platform_data = &qt2410_nand_info;
Deleted: trunk/src/target/kernel/patches/qt2410-touchscreen.patch
===================================================================
--- trunk/src/target/kernel/patches/qt2410-touchscreen.patch 2007-02-15 21:31:15 UTC (rev 1003)
+++ trunk/src/target/kernel/patches/qt2410-touchscreen.patch 2007-02-15 21:37:15 UTC (rev 1004)
@@ -1,530 +0,0 @@
-Index: linux-2.6.17.14-fic4.test/arch/arm/mach-s3c2410/devs.c
-===================================================================
---- linux-2.6.17.14-fic4.test.orig/arch/arm/mach-s3c2410/devs.c 2007-01-24 12:17:45.000000000 +0100
-+++ linux-2.6.17.14-fic4.test/arch/arm/mach-s3c2410/devs.c 2007-01-24 12:18:11.000000000 +0100
-@@ -37,6 +37,7 @@
-
- #include <asm/arch/regs-serial.h>
- #include <asm/arch/udc.h>
-+#include <asm/arch/ts.h>
-
- #include "devs.h"
-
-@@ -137,6 +138,23 @@
-
- EXPORT_SYMBOL(s3c_device_nand);
-
-+/* Touchscreen */
-+struct platform_device s3c_device_ts = {
-+ .name = "s3c2410-ts",
-+ .id = -1,
-+};
-+
-+EXPORT_SYMBOL(s3c_device_ts);
-+
-+static struct s3c2410_ts_mach_info s3c2410ts_info;
-+
-+void __init set_s3c2410ts_info(struct s3c2410_ts_mach_info *hard_s3c2410ts_info)
-+{
-+ memcpy(&s3c2410ts_info,hard_s3c2410ts_info,sizeof(struct s3c2410_ts_mach_info));
-+ s3c_device_ts.dev.platform_data = &s3c2410ts_info;
-+}
-+EXPORT_SYMBOL(set_s3c2410ts_info);
-+
- /* USB Device (Gadget)*/
-
- static struct resource s3c_usbgadget_resource[] = {
-Index: linux-2.6.17.14-fic4.test/arch/arm/mach-s3c2410/devs.h
-===================================================================
---- linux-2.6.17.14-fic4.test.orig/arch/arm/mach-s3c2410/devs.h 2007-01-24 12:17:39.000000000 +0100
-+++ linux-2.6.17.14-fic4.test/arch/arm/mach-s3c2410/devs.h 2007-01-24 12:18:11.000000000 +0100
-@@ -39,6 +39,7 @@
- extern struct platform_device s3c_device_timer3;
-
- extern struct platform_device s3c_device_usbgadget;
-+extern struct platform_device s3c_device_ts;
-
- /* s3c2440 specific devices */
-
-Index: linux-2.6.17.14-fic4.test/drivers/input/touchscreen/Kconfig
-===================================================================
---- linux-2.6.17.14-fic4.test.orig/drivers/input/touchscreen/Kconfig 2007-01-24 12:17:39.000000000 +0100
-+++ linux-2.6.17.14-fic4.test/drivers/input/touchscreen/Kconfig 2007-01-24 12:18:11.000000000 +0100
-@@ -49,6 +49,24 @@
- To compile this driver as a module, choose M here: the
- module will be called corgi_ts.
-
-+config TOUCHSCREEN_S3C2410
-+ tristate "Samsung S3C2410 touchscreen input driver"
-+ depends on ARCH_S3C2410 && INPUT && INPUT_TOUCHSCREEN
-+ select SERIO
-+ help
-+ Say Y here if you have the s3c2410 touchscreen.
-+
-+ If unsure, say N.
-+
-+ To compile this driver as a module, choose M here: the
-+ module will be called s3c2410_ts.
-+
-+config TOUCHSCREEN_S3C2410_DEBUG
-+ boolean "Samsung S3C2410 touchscreen debug messages"
-+ depends on TOUCHSCREEN_S3C2410
-+ help
-+ Select this if you want debug messages
-+
- config TOUCHSCREEN_GUNZE
- tristate "Gunze AHL-51S touchscreen"
- select SERIO
-Index: linux-2.6.17.14-fic4.test/drivers/input/touchscreen/Makefile
-===================================================================
---- linux-2.6.17.14-fic4.test.orig/drivers/input/touchscreen/Makefile 2007-01-24 12:17:39.000000000 +0100
-+++ linux-2.6.17.14-fic4.test/drivers/input/touchscreen/Makefile 2007-01-24 12:18:11.000000000 +0100
-@@ -12,3 +12,5 @@
- obj-$(CONFIG_TOUCHSCREEN_MTOUCH) += mtouch.o
- obj-$(CONFIG_TOUCHSCREEN_MK712) += mk712.o
- obj-$(CONFIG_TOUCHSCREEN_HP600) += hp680_ts_input.o
-+obj-$(CONFIG_TOUCHSCREEN_S3C2410) += s3c2410_ts.o
-+
-Index: linux-2.6.17.14-fic4.test/drivers/input/touchscreen/s3c2410_ts.c
-===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.17.14-fic4.test/drivers/input/touchscreen/s3c2410_ts.c 2007-01-24 12:18:11.000000000 +0100
-@@ -0,0 +1,351 @@
-+/*
-+ * 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
-+ *
-+ * Copyright (c) 2004 Arnaud Patard <arnaud.patard at rtp-net.org>
-+ * iPAQ H1940 touchscreen support
-+ *
-+ * ChangeLog
-+ *
-+ * 2004-09-05: Herbert Pötzl <herbert at 13thfloor.at>
-+ * - added clock (de-)allocation code
-+ *
-+ * 2005-03-06: Arnaud Patard <arnaud.patard at rtp-net.org>
-+ * - h1940_ -> s3c2410 (this driver is now also used on the n30
-+ * machines :P)
-+ * - Debug messages are now enabled with the config option
-+ * TOUCHSCREEN_S3C2410_DEBUG
-+ * - Changed the way the value are read
-+ * - Input subsystem should now work
-+ * - Use ioremap and readl/writel
-+ *
-+ * 2005-03-23: Arnaud Patard <arnaud.patard at rtp-net.org>
-+ * - Make use of some undocumented features of the touchscreen
-+ * controller
-+ *
-+ */
-+
-+#include <linux/config.h>
-+#include <linux/errno.h>
-+#include <linux/kernel.h>
-+#include <linux/module.h>
-+#include <linux/slab.h>
-+#include <linux/input.h>
-+#include <linux/init.h>
-+#include <linux/serio.h>
-+#include <linux/delay.h>
-+#include <linux/platform_device.h>
-+#include <linux/clk.h>
-+#include <asm/io.h>
-+#include <asm/irq.h>
-+
-+#include <asm/arch/regs-adc.h>
-+#include <asm/arch/regs-gpio.h>
-+#include <asm/arch/ts.h>
-+
-+/* For ts.dev.id.version */
-+#define S3C2410TSVERSION 0x0101
-+
-+#define WAIT4INT(x) (((x)<<8) | \
-+ S3C2410_ADCTSC_YM_SEN | S3C2410_ADCTSC_YP_SEN | S3C2410_ADCTSC_XP_SEN | \
-+ S3C2410_ADCTSC_XY_PST(3))
-+
-+#define AUTOPST (S3C2410_ADCTSC_YM_SEN | S3C2410_ADCTSC_YP_SEN | S3C2410_ADCTSC_XP_SEN | \
-+ S3C2410_ADCTSC_AUTO_PST | S3C2410_ADCTSC_XY_PST(0))
-+
-+#define DEBUG_LVL KERN_DEBUG
-+
-+MODULE_AUTHOR("Arnaud Patard <arnaud.patard at rtp-net.org>");
-+MODULE_DESCRIPTION("s3c2410 touchscreen driver");
-+MODULE_LICENSE("GPL");
-+
-+/*
-+ * Definitions & global arrays.
-+ */
-+
-+
-+static char *s3c2410ts_name = "s3c2410 TouchScreen";
-+
-+/*
-+ * Per-touchscreen data.
-+ */
-+
-+struct s3c2410ts {
-+ struct input_dev *dev;
-+ long xp;
-+ long yp;
-+ int count;
-+ int shift;
-+};
-+
-+static struct s3c2410ts ts;
-+static void __iomem *base_addr;
-+
-+static inline void s3c2410_ts_connect(void)
-+{
-+ s3c2410_gpio_cfgpin(S3C2410_GPG12, S3C2410_GPG12_XMON);
-+ s3c2410_gpio_cfgpin(S3C2410_GPG13, S3C2410_GPG13_nXPON);
-+ s3c2410_gpio_cfgpin(S3C2410_GPG14, S3C2410_GPG14_YMON);
-+ s3c2410_gpio_cfgpin(S3C2410_GPG15, S3C2410_GPG15_nYPON);
-+}
-+
-+static void touch_timer_fire(unsigned long data)
-+{
-+ unsigned long data0;
-+ unsigned long data1;
-+ int updown;
-+
-+ data0 = readl(base_addr+S3C2410_ADCDAT0);
-+ data1 = readl(base_addr+S3C2410_ADCDAT1);
-+
-+ updown = (!(data0 & S3C2410_ADCDAT0_UPDOWN)) && (!(data1 & S3C2410_ADCDAT0_UPDOWN));
-+
-+ if (updown) {
-+ if (ts.count != 0) {
-+ ts.xp >>= ts.shift;
-+ ts.yp >>= ts.shift;
-+
-+#ifdef CONFIG_TOUCHSCREEN_S3C2410_DEBUG
-+ {
-+ struct timeval tv;
-+ do_gettimeofday(&tv);
-+ printk(DEBUG_LVL "T: %06d, X: %03ld, Y: %03ld\n", (int)tv.tv_usec, ts.xp, ts.yp);
-+ }
-+#endif
-+
-+ input_report_abs(ts.dev, ABS_X, ts.xp);
-+ input_report_abs(ts.dev, ABS_Y, ts.yp);
-+
-+ input_report_key(ts.dev, BTN_TOUCH, 1);
-+ input_report_abs(ts.dev, ABS_PRESSURE, 1);
-+ input_sync(ts.dev);
-+ }
-+
-+ ts.xp = 0;
-+ ts.yp = 0;
-+ ts.count = 0;
-+
-+ writel(S3C2410_ADCTSC_PULL_UP_DISABLE | AUTOPST, base_addr+S3C2410_ADCTSC);
-+ writel(readl(base_addr+S3C2410_ADCCON) | S3C2410_ADCCON_ENABLE_START, base_addr+S3C2410_ADCCON);
-+ } else {
-+ ts.count = 0;
-+
-+ input_report_key(ts.dev, BTN_TOUCH, 0);
-+ input_report_abs(ts.dev, ABS_PRESSURE, 0);
-+ input_sync(ts.dev);
-+
-+ writel(WAIT4INT(0), base_addr+S3C2410_ADCTSC);
-+ }
-+}
-+
-+static struct timer_list touch_timer =
-+ TIMER_INITIALIZER(touch_timer_fire, 0, 0);
-+
-+static irqreturn_t stylus_updown(int irq, void *dev_id, struct pt_regs *regs)
-+{
-+ unsigned long data0;
-+ unsigned long data1;
-+ int updown;
-+
-+ data0 = readl(base_addr+S3C2410_ADCDAT0);
-+ data1 = readl(base_addr+S3C2410_ADCDAT1);
-+
-+ updown = (!(data0 & S3C2410_ADCDAT0_UPDOWN)) && (!(data1 & S3C2410_ADCDAT0_UPDOWN));
-+
-+ /* TODO we should never get an interrupt with updown set while
-+ * the timer is running, but maybe we ought to verify that the
-+ * timer isn't running anyways. */
-+
-+ if (updown)
-+ touch_timer_fire(0);
-+
-+ return IRQ_HANDLED;
-+}
-+
-+
-+static irqreturn_t stylus_action(int irq, void *dev_id, struct pt_regs *regs)
-+{
-+ unsigned long data0;
-+ unsigned long data1;
-+
-+ data0 = readl(base_addr+S3C2410_ADCDAT0);
-+ data1 = readl(base_addr+S3C2410_ADCDAT1);
-+
-+ ts.xp += data0 & S3C2410_ADCDAT0_XPDATA_MASK;
-+ ts.yp += data1 & S3C2410_ADCDAT1_YPDATA_MASK;
-+ ts.count++;
-+
-+ if (ts.count < (1<<ts.shift)) {
-+ writel(S3C2410_ADCTSC_PULL_UP_DISABLE | AUTOPST, base_addr+S3C2410_ADCTSC);
-+ writel(readl(base_addr+S3C2410_ADCCON) | S3C2410_ADCCON_ENABLE_START, base_addr+S3C2410_ADCCON);
-+ } else {
-+ mod_timer(&touch_timer, jiffies+1);
-+ writel(WAIT4INT(1), base_addr+S3C2410_ADCTSC);
-+ }
-+
-+ return IRQ_HANDLED;
-+}
-+
-+static struct clk *adc_clock;
-+
-+/*
-+ * The functions for inserting/removing us as a module.
-+ */
-+
-+static int __init s3c2410ts_probe(struct platform_device *pdev)
-+{
-+ struct s3c2410_ts_mach_info *info;
-+ struct input_dev *input_dev;
-+
-+ info = ( struct s3c2410_ts_mach_info *)pdev->dev.platform_data;
-+
-+ if (!info)
-+ {
-+ printk(KERN_ERR "Hm... too bad : no platform data for ts\n");
-+ return -EINVAL;
-+ }
-+
-+#ifdef CONFIG_TOUCHSCREEN_S3C2410_DEBUG
-+ printk(DEBUG_LVL "Entering s3c2410ts_init\n");
-+#endif
-+
-+ adc_clock = clk_get(NULL, "adc");
-+ if (!adc_clock) {
-+ printk(KERN_ERR "failed to get adc clock source\n");
-+ return -ENOENT;
-+ }
-+ clk_enable(adc_clock);
-+
-+#ifdef CONFIG_TOUCHSCREEN_S3C2410_DEBUG
-+ printk(DEBUG_LVL "got and enabled clock\n");
-+#endif
-+
-+ base_addr=ioremap(S3C2410_PA_ADC,0x20);
-+ if (base_addr == NULL) {
-+ printk(KERN_ERR "Failed to remap register block\n");
-+ return -ENOMEM;
-+ }
-+
-+
-+ /* Configure GPIOs */
-+ s3c2410_ts_connect();
-+
-+ if ((info->presc&0xff) > 0)
-+ writel(S3C2410_ADCCON_PRSCEN | S3C2410_ADCCON_PRSCVL(info->presc&0xFF),\
-+ base_addr+S3C2410_ADCCON);
-+ else
-+ writel(0,base_addr+S3C2410_ADCCON);
-+
-+
-+ /* Initialise registers */
-+ if ((info->delay&0xffff) > 0)
-+ writel(info->delay & 0xffff, base_addr+S3C2410_ADCDLY);
-+
-+ writel(WAIT4INT(0), base_addr+S3C2410_ADCTSC);
-+
-+ /* Initialise input stuff */
-+ memset(&ts, 0, sizeof(struct s3c2410ts));
-+ input_dev = input_allocate_device();
-+
-+ if (!input_dev) {
-+ printk(KERN_ERR "Unable to allocate the input device !!\n");
-+ return -ENOMEM;
-+ }
-+
-+ ts.dev = input_dev;
-+ ts.dev->evbit[0] = BIT(EV_SYN) | BIT(EV_KEY) | BIT(EV_ABS);
-+ ts.dev->keybit[LONG(BTN_TOUCH)] = BIT(BTN_TOUCH);
-+ input_set_abs_params(ts.dev, ABS_X, 0, 0x3FF, 0, 0);
-+ input_set_abs_params(ts.dev, ABS_Y, 0, 0x3FF, 0, 0);
-+ input_set_abs_params(ts.dev, ABS_PRESSURE, 0, 1, 0, 0);
-+
-+ ts.dev->private = &ts;
-+ ts.dev->name = s3c2410ts_name;
-+ ts.dev->id.bustype = BUS_RS232;
-+ ts.dev->id.vendor = 0xDEAD;
-+ ts.dev->id.product = 0xBEEF;
-+ ts.dev->id.version = S3C2410TSVERSION;
-+
-+ ts.shift = info->oversampling_shift;
-+
-+ /* Get irqs */
-+ if (request_irq(IRQ_ADC, stylus_action, SA_SAMPLE_RANDOM,
-+ "s3c2410_action", ts.dev)) {
-+ printk(KERN_ERR "s3c2410_ts.c: Could not allocate ts IRQ_ADC !\n");
-+ iounmap(base_addr);
-+ return -EIO;
-+ }
-+ if (request_irq(IRQ_TC, stylus_updown, SA_SAMPLE_RANDOM,
-+ "s3c2410_action", ts.dev)) {
-+ printk(KERN_ERR "s3c2410_ts.c: Could not allocate ts IRQ_TC !\n");
-+ iounmap(base_addr);
-+ return -EIO;
-+ }
-+
-+ printk(KERN_INFO "%s successfully loaded\n", s3c2410ts_name);
-+
-+ /* All went ok, so register to the input system */
-+ input_register_device(ts.dev);
-+
-+ return 0;
-+}
-+
-+static int s3c2410ts_remove(struct platform_device *pdev)
-+{
-+ disable_irq(IRQ_ADC);
-+ disable_irq(IRQ_TC);
-+ free_irq(IRQ_TC,ts.dev);
-+ free_irq(IRQ_ADC,ts.dev);
-+
-+ if (adc_clock) {
-+ clk_disable(adc_clock);
-+ clk_put(adc_clock);
-+ adc_clock = NULL;
-+ }
-+
-+ input_unregister_device(ts.dev);
-+ iounmap(base_addr);
-+
-+ return 0;
-+}
-+
-+static struct platform_driver s3c2410ts_driver = {
-+ .driver = {
-+ .name = "s3c2410-ts",
-+ .owner = THIS_MODULE,
-+ },
-+ .probe = s3c2410ts_probe,
-+ .remove = s3c2410ts_remove,
-+};
-+
-+
-+static int __init s3c2410ts_init(void)
-+{
-+ return platform_driver_register(&s3c2410ts_driver);
-+}
-+
-+static void __exit s3c2410ts_exit(void)
-+{
-+ platform_driver_unregister(&s3c2410ts_driver);
-+}
-+
-+module_init(s3c2410ts_init);
-+module_exit(s3c2410ts_exit);
-+
-+/*
-+ Local variables:
-+ compile-command: "make ARCH=arm CROSS_COMPILE=/usr/local/arm/3.3.2/bin/arm-linux- -k -C ../../.."
-+ c-basic-offset: 8
-+ End:
-+*/
-Index: linux-2.6.17.14-fic4.test/include/asm-arm/arch-s3c2410/regs-adc.h
-===================================================================
---- linux-2.6.17.14-fic4.test.orig/include/asm-arm/arch-s3c2410/regs-adc.h 2007-01-24 12:17:39.000000000 +0100
-+++ linux-2.6.17.14-fic4.test/include/asm-arm/arch-s3c2410/regs-adc.h 2007-01-24 12:18:11.000000000 +0100
-@@ -44,7 +44,7 @@
- #define S3C2410_ADCTSC_XP_SEN (1<<4)
- #define S3C2410_ADCTSC_PULL_UP_DISABLE (1<<3)
- #define S3C2410_ADCTSC_AUTO_PST (1<<2)
--#define S3C2410_ADCTSC_XY_PST (0x3<<0)
-+#define S3C2410_ADCTSC_XY_PST(x) (((x)&0x3)<<0)
-
- /* ADCDAT0 Bits */
- #define S3C2410_ADCDAT0_UPDOWN (1<<15)
-Index: linux-2.6.17.14-fic4.test/include/asm-arm/arch-s3c2410/ts.h
-===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.17.14-fic4.test/include/asm-arm/arch-s3c2410/ts.h 2007-01-24 12:18:11.000000000 +0100
-@@ -0,0 +1,28 @@
-+/* linux/include/asm/arch-s3c2410/ts.h
-+ *
-+ * Copyright (c) 2005 Arnaud Patard <arnaud.patard at rtp-net.org>
-+ *
-+ *
-+ * 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.
-+ *
-+ *
-+ * Changelog:
-+ * 24-Mar-2005 RTP Created file
-+ * 03-Aug-2005 RTP Renamed to ts.h
-+ */
-+
-+#ifndef __ASM_ARM_TS_H
-+#define __ASM_ARM_TS_H
-+
-+struct s3c2410_ts_mach_info {
-+ int delay;
-+ int presc;
-+ int oversampling_shift;
-+};
-+
-+void __init set_s3c2410ts_info(struct s3c2410_ts_mach_info *hard_s3c2410ts_info);
-+
-+#endif /* __ASM_ARM_TS_H */
-+
-Index: linux-2.6.17.14-fic4.test/arch/arm/mach-s3c2410/mach-qt2410.c
-===================================================================
---- linux-2.6.17.14-fic4.test.orig/arch/arm/mach-s3c2410/mach-qt2410.c 2007-01-24 12:18:09.000000000 +0100
-+++ linux-2.6.17.14-fic4.test/arch/arm/mach-s3c2410/mach-qt2410.c 2007-01-24 12:18:11.000000000 +0100
-@@ -53,6 +53,7 @@
- #include <asm/arch/fb.h>
- #include <asm/arch/nand.h>
- #include <asm/arch/udc.h>
-+#include <asm/arch/ts.h>
- #include <asm/arch/spi.h>
- #include <asm/arch/spi-gpio.h>
- #include <asm/arch/mci.h>
-@@ -315,6 +316,7 @@
- &s3c_device_sdi,
- &s3c_device_usbgadget,
- &s3c_device_nand,
-+ &s3c_device_ts,
- &cs89x0_device,
- };
-
-@@ -477,6 +479,12 @@
- .ocr_avail = MMC_VDD_32_33,
- };
-
-+static struct s3c2410_ts_mach_info qt2410_ts_cfg = {
-+ .delay = 10000,
-+ .presc = 49,
-+ .oversampling_shift = 2,
-+};
-+
- static void __init qt2410_map_io(void)
- {
- s3c24xx_init_io(qt2410_iodesc, ARRAY_SIZE(qt2410_iodesc));
-@@ -516,6 +524,7 @@
- }
-
- s3c24xx_udc_set_platdata(&qt2410_udc_cfg);
-+ set_s3c2410ts_info(&qt2410_ts_cfg);
-
- s3c2410_gpio_cfgpin(S3C2410_GPB5, S3C2410_GPIO_OUTPUT);
- spi_register_board_info(qt2410_spi_board_info,
Added: trunk/src/target/kernel/patches/s3c2410_touchscreen.patch
===================================================================
--- trunk/src/target/kernel/patches/s3c2410_touchscreen.patch 2007-02-15 21:31:15 UTC (rev 1003)
+++ trunk/src/target/kernel/patches/s3c2410_touchscreen.patch 2007-02-15 21:37:15 UTC (rev 1004)
@@ -0,0 +1,580 @@
+diff --git a/arch/arm/mach-s3c2410/devs.c b/arch/arm/mach-s3c2410/devs.c
+index e55a6a9..9a2a67b 100644
+--- a/arch/arm/mach-s3c2410/devs.c
++++ b/arch/arm/mach-s3c2410/devs.c
+@@ -29,6 +29,7 @@ #include <asm/irq.h>
+
+ #include <asm/arch/regs-serial.h>
+ #include <asm/arch/udc.h>
++#include <asm/arch/ts.h>
+
+ #include "devs.h"
+ #include "cpu.h"
+@@ -205,6 +206,23 @@ struct platform_device s3c_device_nand =
+
+ EXPORT_SYMBOL(s3c_device_nand);
+
++/* Touchscreen */
++struct platform_device s3c_device_ts = {
++ .name = "s3c2410-ts",
++ .id = -1,
++};
++
++EXPORT_SYMBOL(s3c_device_ts);
++
++static struct s3c2410_ts_mach_info s3c2410ts_info;
++
++void __init set_s3c2410ts_info(struct s3c2410_ts_mach_info *hard_s3c2410ts_info)
++{
++ memcpy(&s3c2410ts_info,hard_s3c2410ts_info,sizeof(struct s3c2410_ts_mach_info));
++ s3c_device_ts.dev.platform_data = &s3c2410ts_info;
++}
++EXPORT_SYMBOL(set_s3c2410ts_info);
++
+ /* USB Device (Gadget)*/
+
+ static struct resource s3c_usbgadget_resource[] = {
+diff --git a/arch/arm/mach-s3c2410/devs.h b/arch/arm/mach-s3c2410/devs.h
+index 14fb0ba..0fc63cf 100644
+--- a/arch/arm/mach-s3c2410/devs.h
++++ b/arch/arm/mach-s3c2410/devs.h
+@@ -41,6 +41,7 @@ extern struct platform_device s3c_device
+ extern struct platform_device s3c_device_timer3;
+
+ extern struct platform_device s3c_device_usbgadget;
++extern struct platform_device s3c_device_ts;
+
+ /* s3c2440 specific devices */
+
+diff --git a/arch/arm/mach-s3c2410/mach-h1940.c b/arch/arm/mach-s3c2410/mach-h1940.c
+index f539535..f65b7ce 100644
+--- a/arch/arm/mach-s3c2410/mach-h1940.c
++++ b/arch/arm/mach-s3c2410/mach-h1940.c
+@@ -39,6 +39,7 @@ #include <asm/arch/h1940.h>
+ #include <asm/arch/h1940-latch.h>
+ #include <asm/arch/fb.h>
+ #include <asm/arch/udc.h>
++#include <asm/arch/ts.h>
+
+ #include <linux/serial_core.h>
+
+@@ -132,6 +133,11 @@ static struct s3c2410_udc_mach_info h194
+ };
+
+
++static struct s3c2410_ts_mach_info h1940_ts_cfg __initdata = {
++ .delay = 10000,
++ .presc = 49,
++ .oversampling_shift = 2,
++};
+
+ /**
+ * Set lcd on or off
+@@ -183,6 +189,7 @@ static struct platform_device *h1940_dev
+ &s3c_device_i2c,
+ &s3c_device_iis,
+ &s3c_device_usbgadget,
++ &s3c_device_ts,
+ };
+
+ static struct s3c24xx_board h1940_board __initdata = {
+@@ -213,6 +220,7 @@ static void __init h1940_init(void)
+ u32 tmp;
+
+ s3c24xx_fb_set_platdata(&h1940_lcdcfg);
++ set_s3c2410ts_info(&h1940_ts_cfg);
+ s3c24xx_udc_set_platdata(&h1940_udc_cfg);
+
+ /* Turn off suspend on both USB ports, and switch the
+diff --git a/drivers/input/touchscreen/Kconfig b/drivers/input/touchscreen/Kconfig
+index 6b46c9b..91f5f4f 100644
+--- a/drivers/input/touchscreen/Kconfig
++++ b/drivers/input/touchscreen/Kconfig
+@@ -49,6 +49,24 @@ config TOUCHSCREEN_CORGI
+ To compile this driver as a module, choose M here: the
+ module will be called corgi_ts.
+
++config TOUCHSCREEN_S3C2410
++ tristate "Samsung S3C2410 touchscreen input driver"
++ depends on ARCH_S3C2410 && INPUT && INPUT_TOUCHSCREEN
++ select SERIO
++ help
++ Say Y here if you have the s3c2410 touchscreen.
++
++ If unsure, say N.
++
++ To compile this driver as a module, choose M here: the
++ module will be called s3c2410_ts.
++
++config TOUCHSCREEN_S3C2410_DEBUG
++ boolean "Samsung S3C2410 touchscreen debug messages"
++ depends on TOUCHSCREEN_S3C2410
++ help
++ Select this if you want debug messages
++
+ config TOUCHSCREEN_GUNZE
+ tristate "Gunze AHL-51S touchscreen"
+ select SERIO
+diff --git a/drivers/input/touchscreen/Makefile b/drivers/input/touchscreen/Makefile
+index 30e6e22..8cbaac5 100644
+--- a/drivers/input/touchscreen/Makefile
++++ b/drivers/input/touchscreen/Makefile
+@@ -16,3 +16,4 @@ obj-$(CONFIG_TOUCHSCREEN_PENMOUNT) += pe
+ obj-$(CONFIG_TOUCHSCREEN_TOUCHRIGHT) += touchright.o
+ obj-$(CONFIG_TOUCHSCREEN_TOUCHWIN) += touchwin.o
+ obj-$(CONFIG_TOUCHSCREEN_UCB1400) += ucb1400_ts.o
++obj-$(CONFIG_TOUCHSCREEN_S3C2410) += s3c2410_ts.o
+diff --git a/drivers/input/touchscreen/s3c2410_ts.c b/drivers/input/touchscreen/s3c2410_ts.c
+new file mode 100644
+index 0000000..0dea2ef
+--- /dev/null
++++ b/drivers/input/touchscreen/s3c2410_ts.c
+@@ -0,0 +1,401 @@
++/*
++ * 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
++ *
++ * Copyright (c) 2004 Arnaud Patard <arnaud.patard at rtp-net.org>
++ * iPAQ H1940 touchscreen support
++ *
++ * ChangeLog
++ *
++ * 2004-09-05: Herbert Pötzl <herbert at 13thfloor.at>
++ * - added clock (de-)allocation code
++ *
++ * 2005-03-06: Arnaud Patard <arnaud.patard at rtp-net.org>
++ * - h1940_ -> s3c2410 (this driver is now also used on the n30
++ * machines :P)
++ * - Debug messages are now enabled with the config option
++ * TOUCHSCREEN_S3C2410_DEBUG
++ * - Changed the way the value are read
++ * - Input subsystem should now work
++ * - Use ioremap and readl/writel
++ *
++ * 2005-03-23: Arnaud Patard <arnaud.patard at rtp-net.org>
++ * - Make use of some undocumented features of the touchscreen
++ * controller
++ *
++ */
++
++#include <linux/errno.h>
++#include <linux/kernel.h>
++#include <linux/module.h>
++#include <linux/slab.h>
++#include <linux/input.h>
++#include <linux/init.h>
++#include <linux/serio.h>
++#include <linux/delay.h>
++#include <linux/platform_device.h>
++#include <linux/clk.h>
++#include <asm/io.h>
++#include <asm/irq.h>
++
++#include <asm/arch/regs-adc.h>
++#include <asm/arch/regs-gpio.h>
++#include <asm/arch/ts.h>
++
++/* For ts.dev.id.version */
++#define S3C2410TSVERSION 0x0101
++
++#define TSC_SLEEP (S3C2410_ADCTSC_PULL_UP_DISABLE | S3C2410_ADCTSC_XY_PST(0))
++
++#define WAIT4INT(x) (((x)<<8) | \
++ S3C2410_ADCTSC_YM_SEN | S3C2410_ADCTSC_YP_SEN | S3C2410_ADCTSC_XP_SEN | \
++ S3C2410_ADCTSC_XY_PST(3))
++
++#define AUTOPST (S3C2410_ADCTSC_YM_SEN | S3C2410_ADCTSC_YP_SEN | S3C2410_ADCTSC_XP_SEN | \
++ S3C2410_ADCTSC_AUTO_PST | S3C2410_ADCTSC_XY_PST(0))
++
++#define DEBUG_LVL KERN_DEBUG
++
++MODULE_AUTHOR("Arnaud Patard <arnaud.patard at rtp-net.org>");
++MODULE_DESCRIPTION("s3c2410 touchscreen driver");
++MODULE_LICENSE("GPL");
++
++/*
++ * Definitions & global arrays.
++ */
++
++
++static char *s3c2410ts_name = "s3c2410 TouchScreen";
++
++/*
++ * Per-touchscreen data.
++ */
++
++struct s3c2410ts {
++ struct input_dev *dev;
++ long xp;
++ long yp;
++ int count;
++ int shift;
++};
++
++static struct s3c2410ts ts;
++static void __iomem *base_addr;
++
++static inline void s3c2410_ts_connect(void)
++{
++ s3c2410_gpio_cfgpin(S3C2410_GPG12, S3C2410_GPG12_XMON);
++ s3c2410_gpio_cfgpin(S3C2410_GPG13, S3C2410_GPG13_nXPON);
++ s3c2410_gpio_cfgpin(S3C2410_GPG14, S3C2410_GPG14_YMON);
++ s3c2410_gpio_cfgpin(S3C2410_GPG15, S3C2410_GPG15_nYPON);
++}
++
++static void touch_timer_fire(unsigned long data)
++{
++ unsigned long data0;
++ unsigned long data1;
++ int updown;
++
++ data0 = readl(base_addr+S3C2410_ADCDAT0);
++ data1 = readl(base_addr+S3C2410_ADCDAT1);
++
++ updown = (!(data0 & S3C2410_ADCDAT0_UPDOWN)) && (!(data1 & S3C2410_ADCDAT0_UPDOWN));
++
++ if (updown) {
++ if (ts.count != 0) {
++ ts.xp >>= ts.shift;
++ ts.yp >>= ts.shift;
++
++#ifdef CONFIG_TOUCHSCREEN_S3C2410_DEBUG
++ {
++ struct timeval tv;
++ do_gettimeofday(&tv);
++ printk(DEBUG_LVL "T: %06d, X: %03ld, Y: %03ld\n", (int)tv.tv_usec, ts.xp, ts.yp);
++ }
++#endif
++
++ input_report_abs(ts.dev, ABS_X, ts.xp);
++ input_report_abs(ts.dev, ABS_Y, ts.yp);
++
++ input_report_key(ts.dev, BTN_TOUCH, 1);
++ input_report_abs(ts.dev, ABS_PRESSURE, 1);
++ input_sync(ts.dev);
++ }
++
++ ts.xp = 0;
++ ts.yp = 0;
++ ts.count = 0;
++
++ writel(S3C2410_ADCTSC_PULL_UP_DISABLE | AUTOPST, base_addr+S3C2410_ADCTSC);
++ writel(readl(base_addr+S3C2410_ADCCON) | S3C2410_ADCCON_ENABLE_START, base_addr+S3C2410_ADCCON);
++ } else {
++ ts.count = 0;
++
++ input_report_key(ts.dev, BTN_TOUCH, 0);
++ input_report_abs(ts.dev, ABS_PRESSURE, 0);
++ input_sync(ts.dev);
++
++ writel(WAIT4INT(0), base_addr+S3C2410_ADCTSC);
++ }
++}
++
++static struct timer_list touch_timer =
++ TIMER_INITIALIZER(touch_timer_fire, 0, 0);
++
++static irqreturn_t stylus_updown(int irq, void *dev_id)
++{
++ unsigned long data0;
++ unsigned long data1;
++ int updown;
++
++ data0 = readl(base_addr+S3C2410_ADCDAT0);
++ data1 = readl(base_addr+S3C2410_ADCDAT1);
++
++ updown = (!(data0 & S3C2410_ADCDAT0_UPDOWN)) && (!(data1 & S3C2410_ADCDAT0_UPDOWN));
++
++ /* TODO we should never get an interrupt with updown set while
++ * the timer is running, but maybe we ought to verify that the
++ * timer isn't running anyways. */
++
++ if (updown)
++ touch_timer_fire(0);
++
++ return IRQ_HANDLED;
++}
++
++
++static irqreturn_t stylus_action(int irq, void *dev_id)
++{
++ unsigned long data0;
++ unsigned long data1;
++
++ data0 = readl(base_addr+S3C2410_ADCDAT0);
++ data1 = readl(base_addr+S3C2410_ADCDAT1);
++
++ ts.xp += data0 & S3C2410_ADCDAT0_XPDATA_MASK;
++ ts.yp += data1 & S3C2410_ADCDAT1_YPDATA_MASK;
++ ts.count++;
++
++ if (ts.count < (1<<ts.shift)) {
++ writel(S3C2410_ADCTSC_PULL_UP_DISABLE | AUTOPST, base_addr+S3C2410_ADCTSC);
++ writel(readl(base_addr+S3C2410_ADCCON) | S3C2410_ADCCON_ENABLE_START, base_addr+S3C2410_ADCCON);
++ } else {
++ mod_timer(&touch_timer, jiffies+1);
++ writel(WAIT4INT(1), base_addr+S3C2410_ADCTSC);
++ }
++
++ return IRQ_HANDLED;
++}
++
++static struct clk *adc_clock;
++
++/*
++ * The functions for inserting/removing us as a module.
++ */
++
++static int __init s3c2410ts_probe(struct platform_device *pdev)
++{
++ struct s3c2410_ts_mach_info *info;
++ struct input_dev *input_dev;
++
++ info = ( struct s3c2410_ts_mach_info *)pdev->dev.platform_data;
++
++ if (!info)
++ {
++ printk(KERN_ERR "Hm... too bad : no platform data for ts\n");
++ return -EINVAL;
++ }
++
++#ifdef CONFIG_TOUCHSCREEN_S3C2410_DEBUG
++ printk(DEBUG_LVL "Entering s3c2410ts_init\n");
++#endif
++
++ adc_clock = clk_get(NULL, "adc");
++ if (!adc_clock) {
++ printk(KERN_ERR "failed to get adc clock source\n");
++ return -ENOENT;
++ }
++ clk_enable(adc_clock);
++
++#ifdef CONFIG_TOUCHSCREEN_S3C2410_DEBUG
++ printk(DEBUG_LVL "got and enabled clock\n");
++#endif
++
++ base_addr=ioremap(S3C2410_PA_ADC,0x20);
++ if (base_addr == NULL) {
++ printk(KERN_ERR "Failed to remap register block\n");
++ return -ENOMEM;
++ }
++
++
++ /* Configure GPIOs */
++ s3c2410_ts_connect();
++
++ if ((info->presc&0xff) > 0)
++ writel(S3C2410_ADCCON_PRSCEN | S3C2410_ADCCON_PRSCVL(info->presc&0xFF),\
++ base_addr+S3C2410_ADCCON);
++ else
++ writel(0,base_addr+S3C2410_ADCCON);
++
++
++ /* Initialise registers */
++ if ((info->delay&0xffff) > 0)
++ writel(info->delay & 0xffff, base_addr+S3C2410_ADCDLY);
++
++ writel(WAIT4INT(0), base_addr+S3C2410_ADCTSC);
++
++ /* Initialise input stuff */
++ memset(&ts, 0, sizeof(struct s3c2410ts));
++ input_dev = input_allocate_device();
++
++ if (!input_dev) {
++ printk(KERN_ERR "Unable to allocate the input device !!\n");
++ return -ENOMEM;
++ }
++
++ ts.dev = input_dev;
++ ts.dev->evbit[0] = BIT(EV_SYN) | BIT(EV_KEY) | BIT(EV_ABS);
++ ts.dev->keybit[LONG(BTN_TOUCH)] = BIT(BTN_TOUCH);
++ input_set_abs_params(ts.dev, ABS_X, 0, 0x3FF, 0, 0);
++ input_set_abs_params(ts.dev, ABS_Y, 0, 0x3FF, 0, 0);
++ input_set_abs_params(ts.dev, ABS_PRESSURE, 0, 1, 0, 0);
++
++ ts.dev->private = &ts;
++ ts.dev->name = s3c2410ts_name;
++ ts.dev->id.bustype = BUS_RS232;
++ ts.dev->id.vendor = 0xDEAD;
++ ts.dev->id.product = 0xBEEF;
++ ts.dev->id.version = S3C2410TSVERSION;
++
++ ts.shift = info->oversampling_shift;
++
++ /* Get irqs */
++ if (request_irq(IRQ_ADC, stylus_action, IRQF_SAMPLE_RANDOM,
++ "s3c2410_action", ts.dev)) {
++ printk(KERN_ERR "s3c2410_ts.c: Could not allocate ts IRQ_ADC !\n");
++ iounmap(base_addr);
++ return -EIO;
++ }
++ if (request_irq(IRQ_TC, stylus_updown, IRQF_SAMPLE_RANDOM,
++ "s3c2410_action", ts.dev)) {
++ printk(KERN_ERR "s3c2410_ts.c: Could not allocate ts IRQ_TC !\n");
++ iounmap(base_addr);
++ return -EIO;
++ }
++
++ printk(KERN_INFO "%s successfully loaded\n", s3c2410ts_name);
++
++ /* All went ok, so register to the input system */
++ input_register_device(ts.dev);
++
++ return 0;
++}
++
++static int s3c2410ts_remove(struct platform_device *pdev)
++{
++ disable_irq(IRQ_ADC);
++ disable_irq(IRQ_TC);
++ free_irq(IRQ_TC,ts.dev);
++ free_irq(IRQ_ADC,ts.dev);
++
++ if (adc_clock) {
++ clk_disable(adc_clock);
++ clk_put(adc_clock);
++ adc_clock = NULL;
++ }
++
++ input_unregister_device(ts.dev);
++ iounmap(base_addr);
++
++ return 0;
++}
++
++#ifdef CONFIG_PM
++static int s3c2410ts_suspend(struct platform_device *pdev, pm_message_t state)
++{
++ writel(TSC_SLEEP, base_addr+S3C2410_ADCTSC);
++ writel(readl(base_addr+S3C2410_ADCCON) | S3C2410_ADCCON_STDBM,
++ base_addr+S3C2410_ADCCON);
++
++ disable_irq(IRQ_ADC);
++ disable_irq(IRQ_TC);
++
++ clk_disable(adc_clock);
++
++ return 0;
++}
++
++static int s3c2410ts_resume(struct platform_device *pdev)
++{
++ struct s3c2410_ts_mach_info *info =
++ ( struct s3c2410_ts_mach_info *)pdev->dev.platform_data;
++
++ clk_enable(adc_clock);
++ msleep(1);
++
++ enable_irq(IRQ_ADC);
++ enable_irq(IRQ_TC);
++
++ if ((info->presc&0xff) > 0)
++ writel(S3C2410_ADCCON_PRSCEN | S3C2410_ADCCON_PRSCVL(info->presc&0xFF),\
++ base_addr+S3C2410_ADCCON);
++ else
++ writel(0,base_addr+S3C2410_ADCCON);
++
++ /* Initialise registers */
++ if ((info->delay&0xffff) > 0)
++ writel(info->delay & 0xffff, base_addr+S3C2410_ADCDLY);
++
++ writel(WAIT4INT(0), base_addr+S3C2410_ADCTSC);
++
++ return 0;
++}
++
++#else
++#define s3c2410ts_suspend NULL
++#define s3c2410ts_resume NULL
++#endif
++
++static struct platform_driver s3c2410ts_driver = {
++ .driver = {
++ .name = "s3c2410-ts",
++ .owner = THIS_MODULE,
++ },
++ .probe = s3c2410ts_probe,
++ .remove = s3c2410ts_remove,
++ .suspend = s3c2410ts_suspend,
++ .resume = s3c2410ts_resume,
++
++};
++
++
++static int __init s3c2410ts_init(void)
++{
++ return platform_driver_register(&s3c2410ts_driver);
++}
++
++static void __exit s3c2410ts_exit(void)
++{
++ platform_driver_unregister(&s3c2410ts_driver);
++}
++
++module_init(s3c2410ts_init);
++module_exit(s3c2410ts_exit);
++
++/*
++ Local variables:
++ compile-command: "make ARCH=arm CROSS_COMPILE=/usr/local/arm/3.3.2/bin/arm-linux- -k -C ../../.."
++ c-basic-offset: 8
++ End:
++*/
+diff --git a/include/asm-arm/arch-s3c2410/regs-adc.h b/include/asm-arm/arch-s3c2410/regs-adc.h
+index 3196a28..c7f2319 100644
+--- a/include/asm-arm/arch-s3c2410/regs-adc.h
++++ b/include/asm-arm/arch-s3c2410/regs-adc.h
+@@ -41,7 +41,7 @@ #define S3C2410_ADCTSC_XM_SEN (1<<5)
+ #define S3C2410_ADCTSC_XP_SEN (1<<4)
+ #define S3C2410_ADCTSC_PULL_UP_DISABLE (1<<3)
+ #define S3C2410_ADCTSC_AUTO_PST (1<<2)
+-#define S3C2410_ADCTSC_XY_PST (0x3<<0)
++#define S3C2410_ADCTSC_XY_PST(x) (((x)&0x3)<<0)
+
+ /* ADCDAT0 Bits */
+ #define S3C2410_ADCDAT0_UPDOWN (1<<15)
+diff --git a/include/asm-arm/arch-s3c2410/ts.h b/include/asm-arm/arch-s3c2410/ts.h
+new file mode 100644
+index 0000000..8566f25
+--- /dev/null
++++ b/include/asm-arm/arch-s3c2410/ts.h
+@@ -0,0 +1,28 @@
++/* linux/include/asm/arch-s3c2410/ts.h
++ *
++ * Copyright (c) 2005 Arnaud Patard <arnaud.patard at rtp-net.org>
++ *
++ *
++ * 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.
++ *
++ *
++ * Changelog:
++ * 24-Mar-2005 RTP Created file
++ * 03-Aug-2005 RTP Renamed to ts.h
++ */
++
++#ifndef __ASM_ARM_TS_H
++#define __ASM_ARM_TS_H
++
++struct s3c2410_ts_mach_info {
++ int delay;
++ int presc;
++ int oversampling_shift;
++};
++
++void __init set_s3c2410ts_info(struct s3c2410_ts_mach_info *hard_s3c2410ts_info);
++
++#endif /* __ASM_ARM_TS_H */
++
Modified: trunk/src/target/kernel/patches/s3c2410_udc-vbus_draw_pdata.patch
===================================================================
--- trunk/src/target/kernel/patches/s3c2410_udc-vbus_draw_pdata.patch 2007-02-15 21:31:15 UTC (rev 1003)
+++ trunk/src/target/kernel/patches/s3c2410_udc-vbus_draw_pdata.patch 2007-02-15 21:37:15 UTC (rev 1004)
@@ -2,12 +2,12 @@
which gets called when the amount of power we can draw from Vbus
has changed.
-Index: linux-2.6.17.14-fic4.test/drivers/usb/gadget/s3c2410_udc.c
+Index: linux-2.6.20/drivers/usb/gadget/s3c2410_udc.c
===================================================================
---- linux-2.6.17.14-fic4.test.orig/drivers/usb/gadget/s3c2410_udc.c 2007-01-21 13:12:03.000000000 +0100
-+++ linux-2.6.17.14-fic4.test/drivers/usb/gadget/s3c2410_udc.c 2007-01-21 13:29:44.000000000 +0100
-@@ -1370,11 +1370,22 @@
- return 0;
+--- linux-2.6.20.orig/drivers/usb/gadget/s3c2410_udc.c 2007-02-15 14:55:45.000000000 +0100
++++ linux-2.6.20/drivers/usb/gadget/s3c2410_udc.c 2007-02-15 15:00:11.000000000 +0100
+@@ -1404,12 +1404,23 @@
+ return IRQ_HANDLED;
}
+static void s3c2410_vbus_draw(struct usb_gadget *_gadget, int ma)
@@ -25,14 +25,15 @@
.wakeup = s3c2410_wakeup,
.set_selfpowered = s3c2410_set_selfpowered,
.pullup = s3c2410_pullup,
+ .vbus_session = s3c2410_udc_vbus_session,
+ .vbus_draw = s3c2410_vbus_draw,
};
-
-Index: linux-2.6.17.14-fic4.test/include/asm-arm/arch-s3c2410/udc.h
+ /*------------------------- gadget driver handling---------------------------*/
+Index: linux-2.6.20/include/asm-arm/arch-s3c2410/udc.h
===================================================================
---- linux-2.6.17.14-fic4.test.orig/include/asm-arm/arch-s3c2410/udc.h 2007-01-21 13:06:57.000000000 +0100
-+++ linux-2.6.17.14-fic4.test/include/asm-arm/arch-s3c2410/udc.h 2007-01-21 13:12:03.000000000 +0100
+--- linux-2.6.20.orig/include/asm-arm/arch-s3c2410/udc.h 2007-02-15 14:54:49.000000000 +0100
++++ linux-2.6.20/include/asm-arm/arch-s3c2410/udc.h 2007-02-15 15:00:50.000000000 +0100
@@ -12,6 +12,7 @@
* 14-Mar-2005 RTP Created file
* 02-Aug-2005 RTP File rename
@@ -45,7 +46,7 @@
struct s3c2410_udc_mach_info {
void (*udc_command)(enum s3c2410_udc_cmd_e);
-+ void (*vbus_draw)(unsigned int ma);
++ void (*vbus_draw)(unsigned int ma);
+ unsigned int vbus_pin;
+ unsigned char vbus_pin_inverted;
};
-
- extern void __init s3c24xx_udc_set_platdata(struct s3c2410_udc_mach_info *);
Modified: trunk/src/target/kernel/patches/s3c2410_udc.patch
===================================================================
--- trunk/src/target/kernel/patches/s3c2410_udc.patch 2007-02-15 21:31:15 UTC (rev 1003)
+++ trunk/src/target/kernel/patches/s3c2410_udc.patch 2007-02-15 21:37:15 UTC (rev 1004)
@@ -1,19 +1,17 @@
-This is a driver for the S3C2410 usb device controller
-
-Index: linux-2.6.17.14-fic4.test/arch/arm/mach-s3c2410/devs.c
+Index: linux-2.6.20/arch/arm/mach-s3c2410/devs.c
===================================================================
---- linux-2.6.17.14-fic4.test.orig/arch/arm/mach-s3c2410/devs.c 2006-12-11 21:44:29.000000000 +0100
-+++ linux-2.6.17.14-fic4.test/arch/arm/mach-s3c2410/devs.c 2006-12-11 21:44:31.000000000 +0100
-@@ -36,6 +36,7 @@
+--- linux-2.6.20.orig/arch/arm/mach-s3c2410/devs.c 2007-02-04 19:44:54.000000000 +0100
++++ linux-2.6.20/arch/arm/mach-s3c2410/devs.c 2007-02-15 14:54:49.000000000 +0100
+@@ -29,6 +29,7 @@
#include <asm/irq.h>
#include <asm/arch/regs-serial.h>
+#include <asm/arch/udc.h>
#include "devs.h"
+ #include "cpu.h"
+@@ -230,6 +231,20 @@
-@@ -161,6 +162,20 @@
-
EXPORT_SYMBOL(s3c_device_usbgadget);
+void __init s3c24xx_udc_set_platdata(struct s3c2410_udc_mach_info *pd)
@@ -33,30 +31,120 @@
/* Watchdog */
static struct resource s3c_wdt_resource[] = {
-Index: linux-2.6.17.14-fic4.test/arch/arm/mach-s3c2410/s3c2410.c
+Index: linux-2.6.20/arch/arm/mach-s3c2410/mach-h1940.c
===================================================================
---- linux-2.6.17.14-fic4.test.orig/arch/arm/mach-s3c2410/s3c2410.c 2006-12-11 21:44:29.000000000 +0100
-+++ linux-2.6.17.14-fic4.test/arch/arm/mach-s3c2410/s3c2410.c 2006-12-11 21:44:31.000000000 +0100
-@@ -48,6 +48,7 @@
+--- linux-2.6.20.orig/arch/arm/mach-s3c2410/mach-h1940.c 2007-02-04 19:44:54.000000000 +0100
++++ linux-2.6.20/arch/arm/mach-s3c2410/mach-h1940.c 2007-02-15 14:54:49.000000000 +0100
+@@ -33,10 +33,13 @@
+ #include <asm/arch/regs-serial.h>
+ #include <asm/arch/regs-lcd.h>
++#include <asm/arch/regs-gpio.h>
++#include <asm/arch/regs-clock.h>
+
+ #include <asm/arch/h1940.h>
+ #include <asm/arch/h1940-latch.h>
+ #include <asm/arch/fb.h>
++#include <asm/arch/udc.h>
+
+ #include "clock.h"
+ #include "devs.h"
+@@ -102,6 +105,32 @@
+
+ EXPORT_SYMBOL_GPL(h1940_latch_control);
+
++static void h1940_udc_pullup(enum s3c2410_udc_cmd_e cmd)
++{
++ printk(KERN_DEBUG "udc: pullup(%d)\n",cmd);
++
++ switch (cmd)
++ {
++ case S3C2410_UDC_P_ENABLE :
++ h1940_latch_control(0, H1940_LATCH_USB_DP);
++ break;
++ case S3C2410_UDC_P_DISABLE :
++ h1940_latch_control(H1940_LATCH_USB_DP, 0);
++ break;
++ case S3C2410_UDC_P_RESET :
++ break;
++ default:
++ break;
++ }
++}
++
++static struct s3c2410_udc_mach_info h1940_udc_cfg __initdata = {
++ .udc_command = h1940_udc_pullup,
++ .vbus_pin = S3C2410_GPG5,
++ .vbus_pin_inverted = 1,
++};
++
++
+
+ /**
+ * Set lcd on or off
+@@ -152,6 +181,7 @@
+ &s3c_device_wdt,
+ &s3c_device_i2c,
+ &s3c_device_iis,
++ &s3c_device_usbgadget,
+ };
+
+ static struct s3c24xx_board h1940_board __initdata = {
+@@ -179,7 +209,23 @@
+
+ static void __init h1940_init(void)
+ {
++ u32 tmp;
++
+ s3c24xx_fb_set_platdata(&h1940_lcdcfg);
++ s3c24xx_udc_set_platdata(&h1940_udc_cfg);
++
++ /* Turn off suspend on both USB ports, and switch the
++ * selectable USB port to USB device mode. */
++
++ s3c2410_modify_misccr(S3C2410_MISCCR_USBHOST |
++ S3C2410_MISCCR_USBSUSPND0 |
++ S3C2410_MISCCR_USBSUSPND1, 0x0);
++
++ tmp = (
++ 0x78 << S3C2410_PLLCON_MDIVSHIFT)
++ | (0x02 << S3C2410_PLLCON_PDIVSHIFT)
++ | (0x03 << S3C2410_PLLCON_SDIVSHIFT);
++ writel(tmp, S3C2410_UPLLCON);
+ }
+
+ MACHINE_START(H1940, "IPAQ-H1940")
+@@ -189,6 +235,6 @@
+ .boot_params = S3C2410_SDRAM_PA + 0x100,
+ .map_io = h1940_map_io,
+ .init_irq = h1940_init_irq,
+- .init_machine = h1940_init,
++ .init_machine = h1940_init,
+ .timer = &s3c24xx_timer,
+ MACHINE_END
+Index: linux-2.6.20/arch/arm/mach-s3c2410/s3c2410.c
+===================================================================
+--- linux-2.6.20.orig/arch/arm/mach-s3c2410/s3c2410.c 2007-02-04 19:44:54.000000000 +0100
++++ linux-2.6.20/arch/arm/mach-s3c2410/s3c2410.c 2007-02-15 14:55:33.000000000 +0100
+@@ -39,6 +39,7 @@
+ /* Initial IO mappings */
+
static struct map_desc s3c2410_iodesc[] __initdata = {
- IODESC_ENT(USBHOST),
+ IODESC_ENT(USBDEV),
IODESC_ENT(CLKPWR),
IODESC_ENT(LCD),
IODESC_ENT(TIMER),
-Index: linux-2.6.17.14-fic4.test/drivers/usb/gadget/Kconfig
+Index: linux-2.6.20/drivers/usb/gadget/Kconfig
===================================================================
---- linux-2.6.17.14-fic4.test.orig/drivers/usb/gadget/Kconfig 2006-12-11 21:44:29.000000000 +0100
-+++ linux-2.6.17.14-fic4.test/drivers/usb/gadget/Kconfig 2006-12-11 21:44:31.000000000 +0100
-@@ -187,6 +187,27 @@
+--- linux-2.6.20.orig/drivers/usb/gadget/Kconfig 2007-02-04 19:44:54.000000000 +0100
++++ linux-2.6.20/drivers/usb/gadget/Kconfig 2007-02-15 14:54:49.000000000 +0100
+@@ -187,6 +187,25 @@
Select this only if your OMAP board has a Mini-AB connector.
+config USB_GADGET_S3C2410
-+ boolean "S3C2410 USB Device Controller"
++ boolean "S3C2410"
+ depends on ARCH_S3C2410
-+ select USB_GADGET_SELECTED
+ help
+ Samsung's S3C2410 is an ARM-4 processor with an integrated
+ full speed USB 1.1 device controller.
@@ -67,20 +155,19 @@
+ tristate
+ depends on USB_GADGET_S3C2410
+ default USB_GADGET
++ select USB_GADGET_SELECTED
+
+config USB_S3C2410_DEBUG
+ boolean "S3C2410 udc debug messages"
+ depends on USB_GADGET_S3C2410
-+ help
-+ foo
+
config USB_GADGET_AT91
boolean "AT91 USB Device Port"
- depends on ARCH_AT91RM9200
-Index: linux-2.6.17.14-fic4.test/drivers/usb/gadget/Makefile
+ depends on ARCH_AT91
+Index: linux-2.6.20/drivers/usb/gadget/Makefile
===================================================================
---- linux-2.6.17.14-fic4.test.orig/drivers/usb/gadget/Makefile 2006-12-11 21:44:29.000000000 +0100
-+++ linux-2.6.17.14-fic4.test/drivers/usb/gadget/Makefile 2006-12-11 21:44:31.000000000 +0100
+--- linux-2.6.20.orig/drivers/usb/gadget/Makefile 2007-02-04 19:44:54.000000000 +0100
++++ linux-2.6.20/drivers/usb/gadget/Makefile 2007-02-15 14:54:49.000000000 +0100
@@ -7,6 +7,7 @@
obj-$(CONFIG_USB_GOKU) += goku_udc.o
obj-$(CONFIG_USB_OMAP) += omap_udc.o
@@ -89,11 +176,11 @@
obj-$(CONFIG_USB_AT91) += at91_udc.o
#
-Index: linux-2.6.17.14-fic4.test/drivers/usb/gadget/s3c2410_udc.c
+Index: linux-2.6.20/drivers/usb/gadget/s3c2410_udc.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.17.14-fic4.test/drivers/usb/gadget/s3c2410_udc.c 2006-12-11 21:44:31.000000000 +0100
-@@ -0,0 +1,1800 @@
++++ linux-2.6.20/drivers/usb/gadget/s3c2410_udc.c 2007-02-15 14:54:49.000000000 +0100
+@@ -0,0 +1,1897 @@
+/*
+ * linux/drivers/usb/gadget/s3c2410_udc.c
+ * Samsung on-chip full speed USB device controllers
@@ -115,7 +202,6 @@
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ */
-+#include <linux/config.h>
+#include <linux/module.h>
+#include <linux/kernel.h>
+#include <linux/delay.h>
@@ -888,7 +974,7 @@
+ * s3c2410_udc_irq - interrupt handler
+ */
+static irqreturn_t
-+s3c2410_udc_irq(int irq, void *_dev, struct pt_regs *r)
++s3c2410_udc_irq(int irq, void *_dev)
+{
+ struct s3c2410_udc *dev = _dev;
+ int usb_status;
@@ -1440,14 +1526,10 @@
+static void udc_disable(struct s3c2410_udc *dev);
+static void udc_enable(struct s3c2410_udc *dev);
+
-+static int s3c2410_pullup (struct usb_gadget *_gadget, int is_on)
++static int pull_up (struct s3c2410_udc *udc, int is_on)
+{
-+ struct s3c2410_udc *udc;
-+
-+ dprintk(DEBUG_NORMAL, "s3c2410_pullup()\n");
++ dprintk(DEBUG_NORMAL, "pull_up()\n");
+
-+ udc = container_of (_gadget, struct s3c2410_udc, gadget);
-+
+ if (udc_info && udc_info->udc_command) {
+ if (is_on)
+ udc_enable(udc);
@@ -1466,14 +1548,53 @@
+ return 0;
+}
+
++static int s3c2410_udc_vbus_session(struct usb_gadget *_gadget, int is_active)
++{
++ struct s3c2410_udc *udc;
++
++ dprintk(DEBUG_NORMAL, "s3c2410_udc_vbus_session()\n");
++ udc = container_of (_gadget, struct s3c2410_udc, gadget);
++
++ udc->vbus = (is_active != 0);
++ pull_up(udc, is_active);
++ return 0;
++}
++
++static int s3c2410_pullup (struct usb_gadget *_gadget, int is_on)
++{
++ struct s3c2410_udc *udc;
++
++ dprintk(DEBUG_NORMAL, "s3c2410_pullup()\n");
++ udc = container_of (_gadget, struct s3c2410_udc, gadget);
++ is_on = !!is_on;
++ pull_up(udc, is_on);
++ return 0;
++}
++
++static irqreturn_t s3c2410_udc_vbus_irq(int irq, void *_dev)
++{
++ struct s3c2410_udc *dev = _dev;
++ unsigned int value;
++
++ dprintk(DEBUG_NORMAL, "s3c2410_udc_vbus_irq()\n");
++ value = s3c2410_gpio_getpin(udc_info->vbus_pin);
++ if (udc_info->vbus_pin_inverted)
++ value = !value;
++
++ if (value != dev->vbus)
++ s3c2410_udc_vbus_session(&dev->gadget, value);
++
++ return IRQ_HANDLED;
++}
++
+static const struct usb_gadget_ops s3c2410_ops = {
+ .get_frame = s3c2410_g_get_frame,
+ .wakeup = s3c2410_wakeup,
+ .set_selfpowered = s3c2410_set_selfpowered,
+ .pullup = s3c2410_pullup,
++ .vbus_session = s3c2410_udc_vbus_session,
+};
+
-+
+/*------------------------- gadget driver handling---------------------------*/
+/*
+ * udc_disable
@@ -1588,9 +1709,18 @@
+ return -ENODEV;
+ if (udc->driver)
+ return -EBUSY;
-+ if (!driver->bind || !driver->unbind || !driver->setup
-+ || driver->speed == USB_SPEED_UNKNOWN)
++ if (!driver->bind || !driver->setup
++ || driver->speed != USB_SPEED_FULL) {
++ printk(KERN_ERR "Invalid driver : bind %p setup %p speed %d\n",
++ driver->bind, driver->setup, driver->speed);
+ return -EINVAL;
++ }
++#if defined(MODULE)
++ if (!driver->unbind) {
++ printk(KERN_ERR "Invalid driver : no unbind method\n");
++ return -EINVAL;
++ }
++#endif
+
+ /* Hook the driver */
+ udc->driver = driver;
@@ -1634,12 +1764,12 @@
+ if (driver->disconnect)
+ driver->disconnect(&udc->gadget);
+
-+ driver->unbind (&udc->gadget);
++ if (driver->unbind)
++ driver->unbind (&udc->gadget);
++
+ device_del(&udc->gadget.dev);
+ udc->driver = NULL;
+
-+ device_release_driver (&udc->gadget.dev);
-+
+ /* Disable udc */
+ udc_disable(udc);
+
@@ -1728,6 +1858,7 @@
+{
+ struct s3c2410_udc *udc = &memory;
+ int retval;
++ unsigned int irq;
+
+ dprintk(DEBUG_NORMAL,"s3c2410_udc_probe\n");
+
@@ -1786,7 +1917,7 @@
+
+ /* irq setup after old hardware state is cleaned up */
+ retval = request_irq(IRQ_USBD, s3c2410_udc_irq,
-+ SA_INTERRUPT, gadget_name, udc);
++ IRQF_DISABLED, gadget_name, udc);
+
+ if (retval != 0) {
+ printk(KERN_ERR "%s: can't get irq %i, err %d\n",
@@ -1794,14 +1925,35 @@
+ retval = -EBUSY;
+ goto err_map;
+ }
++
+ dprintk(DEBUG_VERBOSE, "%s: got irq %i\n", gadget_name, IRQ_USBD);
+
++ if (udc_info && udc_info->vbus_pin > 0) {
++ irq = s3c2410_gpio_getirq(udc_info->vbus_pin);
++ retval = request_irq(irq, s3c2410_udc_vbus_irq,
++ IRQF_DISABLED | IRQF_TRIGGER_RISING | IRQF_TRIGGER_FALLING,
++ gadget_name, udc);
++
++ if (retval != 0) {
++ printk(KERN_ERR "%s: can't get vbus irq %i, err %d\n",
++ gadget_name, irq, retval);
++ retval = -EBUSY;
++ goto err_int;
++ }
++
++ dprintk(DEBUG_VERBOSE, "%s: got irq %i\n", gadget_name, irq);
++ }
++ else {
++ udc->vbus = 1;
++ }
++
+#ifdef ENABLE_SYSFS
+ /* create device files */
+ device_create_file(&pdev->dev, &dev_attr_regs);
+#endif
+ return 0;
-+
++err_int:
++ free_irq(IRQ_USBD, udc);
+err_map:
+ iounmap(base_addr);
+err_mem:
@@ -1816,20 +1968,22 @@
+static int s3c2410_udc_remove(struct platform_device *pdev)
+{
+ struct s3c2410_udc *udc = platform_get_drvdata(pdev);
++ unsigned int irq;
+
+ dprintk(DEBUG_NORMAL, "s3c2410_udc_remove\n");
+ usb_gadget_unregister_driver(udc->driver);
+
-+ if (udc->got_irq) {
-+ free_irq(IRQ_USBD, udc);
-+ udc->got_irq = 0;
++ if (udc_info && udc_info->vbus_pin > 0) {
++ irq = s3c2410_gpio_getirq(udc_info->vbus_pin);
++ free_irq(irq, udc);
+ }
+
++ free_irq(IRQ_USBD, udc);
++
+ iounmap(base_addr);
+ release_mem_region(rsrc_start, rsrc_len);
+
+ platform_set_drvdata(pdev, NULL);
-+ kfree(udc);
+
+ if (!IS_ERR(udc_clock) && udc_clock != NULL) {
+ clk_disable(udc_clock);
@@ -1846,6 +2000,32 @@
+ return 0;
+}
+
++#ifdef CONFIG_PM
++static int s3c2410_udc_suspend(struct platform_device *pdev, pm_message_t message)
++{
++ struct s3c2410_udc *udc = platform_get_drvdata(pdev);
++
++ if (udc_info && udc_info->udc_command)
++ udc_info->udc_command(S3C2410_UDC_P_DISABLE);
++
++ return 0;
++}
++
++static int s3c2410_udc_resume(struct platform_device *pdev)
++{
++ struct s3c2410_udc *udc = platform_get_drvdata(pdev);
++
++ if (udc_info && udc_info->udc_command)
++ udc_info->udc_command(S3C2410_UDC_P_ENABLE);
++
++ return 0;
++}
++#else
++#define s3c2410_udc_suspend NULL
++#define s3c2410_udc_resume NULL
++#endif
++
++
+static struct platform_driver udc_driver_2410 = {
+ .driver = {
+ .name = "s3c2410-usbgadget",
@@ -1853,6 +2033,8 @@
+ },
+ .probe = s3c2410_udc_probe,
+ .remove = s3c2410_udc_remove,
++ .suspend = s3c2410_udc_suspend,
++ .resume = s3c2410_udc_resume,
+};
+
+static struct platform_driver udc_driver_2440 = {
@@ -1862,6 +2044,8 @@
+ },
+ .probe = s3c2410_udc_probe,
+ .remove = s3c2410_udc_remove,
++ .suspend = s3c2410_udc_suspend,
++ .resume = s3c2410_udc_resume,
+};
+
+static int __init udc_init(void)
@@ -1894,11 +2078,11 @@
+MODULE_DESCRIPTION(DRIVER_DESC);
+MODULE_VERSION(DRIVER_VERSION);
+MODULE_LICENSE("GPL");
-Index: linux-2.6.17.14-fic4.test/drivers/usb/gadget/s3c2410_udc.h
+Index: linux-2.6.20/drivers/usb/gadget/s3c2410_udc.h
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.17.14-fic4.test/drivers/usb/gadget/s3c2410_udc.h 2006-12-11 21:44:31.000000000 +0100
-@@ -0,0 +1,187 @@
++++ linux-2.6.20/drivers/usb/gadget/s3c2410_udc.h 2007-02-15 14:54:49.000000000 +0100
+@@ -0,0 +1,188 @@
+#ifndef _S3C2410_UDC_H
+#define _S3C2410_UDC_H
+
@@ -1979,6 +2163,7 @@
+ unsigned req_std : 1;
+ unsigned req_config : 1;
+ unsigned req_pending : 1;
++ u8 vbus;
+};
+
+/****************** MACROS ******************/
@@ -2086,36 +2271,11 @@
+#endif
+
+
-Index: linux-2.6.17.14-fic4.test/include/asm-arm/arch-s3c2410/regs-udc.h
+Index: linux-2.6.20/include/asm-arm/arch-s3c2410/udc.h
===================================================================
---- linux-2.6.17.14-fic4.test.orig/include/asm-arm/arch-s3c2410/regs-udc.h 2006-12-11 21:44:29.000000000 +0100
-+++ linux-2.6.17.14-fic4.test/include/asm-arm/arch-s3c2410/regs-udc.h 2006-12-11 21:44:31.000000000 +0100
-@@ -17,8 +17,7 @@
- #ifndef __ASM_ARCH_REGS_UDC_H
- #define __ASM_ARCH_REGS_UDC_H
-
--
--#define S3C2410_USBDREG(x) ((x) + S3C24XX_VA_USBDEV)
-+#define S3C2410_USBDREG(x) (x)
-
- #define S3C2410_UDC_FUNC_ADDR_REG S3C2410_USBDREG(0x0140)
- #define S3C2410_UDC_PWR_REG S3C2410_USBDREG(0x0144)
-@@ -142,8 +141,8 @@
- #define S3C2410_UDC_OCSR2_ISO (1<<6) // R/W
- #define S3C2410_UDC_OCSR2_DMAIEN (1<<5) // R/W
-
--#define S3C2410_UDC_SETIX(x) \
-- __raw_writel(S3C2410_UDC_INDEX_ ## x, S3C2410_UDC_INDEX_REG);
-+#define S3C2410_UDC_SETIX(base,x) \
-+ writel(S3C2410_UDC_INDEX_ ## x, base+S3C2410_UDC_INDEX_REG);
-
-
- #define S3C2410_UDC_EP0_CSR_OPKRDY (1<<0)
-Index: linux-2.6.17.14-fic4.test/include/asm-arm/arch-s3c2410/udc.h
-===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.17.14-fic4.test/include/asm-arm/arch-s3c2410/udc.h 2006-12-11 21:44:31.000000000 +0100
-@@ -0,0 +1,32 @@
++++ linux-2.6.20/include/asm-arm/arch-s3c2410/udc.h 2007-02-15 14:54:49.000000000 +0100
+@@ -0,0 +1,34 @@
+/* linux/include/asm/arch-s3c2410/udc.h
+ *
+ * Copyright (c) 2005 Arnaud Patard <arnaud.patard at rtp-net.org>
@@ -2143,6 +2303,8 @@
+
+struct s3c2410_udc_mach_info {
+ void (*udc_command)(enum s3c2410_udc_cmd_e);
++ unsigned int vbus_pin;
++ unsigned char vbus_pin_inverted;
+};
+
+extern void __init s3c24xx_udc_set_platdata(struct s3c2410_udc_mach_info *);
Added: trunk/src/target/kernel/patches/s3c2410fb_2617_backport.patch
===================================================================
--- trunk/src/target/kernel/patches/s3c2410fb_2617_backport.patch 2007-02-15 21:31:15 UTC (rev 1003)
+++ trunk/src/target/kernel/patches/s3c2410fb_2617_backport.patch 2007-02-15 21:37:15 UTC (rev 1004)
@@ -0,0 +1,340 @@
+Backport / Revert changes between 2.6.17.14 and 2.6.20 in s3c2410_fb.c,
+since somehow the kernel refuses to boot.
+
+TODO: find out why and only fix the actual bug
+
+Signed-off-by: Harald Welte <laforge at openmoko.org>
+
+Index: linux-2.6.20/drivers/video/s3c2410fb.c
+===================================================================
+--- linux-2.6.20.orig/drivers/video/s3c2410fb.c 2007-02-15 19:23:34.000000000 +0100
++++ linux-2.6.20/drivers/video/s3c2410fb.c 2007-02-15 19:24:57.000000000 +0100
+@@ -76,6 +76,7 @@
+ #include <linux/errno.h>
+ #include <linux/string.h>
+ #include <linux/mm.h>
++#include <linux/tty.h>
+ #include <linux/slab.h>
+ #include <linux/delay.h>
+ #include <linux/fb.h>
+@@ -131,7 +132,7 @@
+ saddr2 += (var->xres * var->yres * var->bits_per_pixel)/8;
+ saddr2>>= 1;
+
+- saddr3 = S3C2410_OFFSIZE(0) | S3C2410_PAGEWIDTH((var->xres * var->bits_per_pixel / 16) & 0x3ff);
++ saddr3 = S3C2410_OFFSIZE(0) | S3C2410_PAGEWIDTH(var->xres);
+
+ dprintk("LCDSADDR1 = 0x%08lx\n", saddr1);
+ dprintk("LCDSADDR2 = 0x%08lx\n", saddr2);
+@@ -199,86 +200,28 @@
+ var->bits_per_pixel = fbi->mach_info->bpp.min;
+
+ /* set r/g/b positions */
+- switch (var->bits_per_pixel) {
+- case 1:
+- case 2:
+- case 4:
+- var->red.offset = 0;
+- var->red.length = var->bits_per_pixel;
+- var->green = var->red;
+- var->blue = var->red;
+- var->transp.offset = 0;
+- var->transp.length = 0;
+- break;
+- case 8:
+- if ( fbi->mach_info->type != S3C2410_LCDCON1_TFT ) {
+- /* 8 bpp 332 */
+- var->red.length = 3;
+- var->red.offset = 5;
+- var->green.length = 3;
+- var->green.offset = 2;
+- var->blue.length = 2;
+- var->blue.offset = 0;
+- var->transp.length = 0;
+- } else {
+- var->red.offset = 0;
+- var->red.length = var->bits_per_pixel;
+- var->green = var->red;
+- var->blue = var->red;
+- var->transp.offset = 0;
+- var->transp.length = 0;
+- }
+- break;
+- case 12:
+- /* 12 bpp 444 */
+- var->red.length = 4;
+- var->red.offset = 8;
+- var->green.length = 4;
+- var->green.offset = 4;
+- var->blue.length = 4;
+- var->blue.offset = 0;
+- var->transp.length = 0;
+- break;
+-
+- default:
+- case 16:
+- if (fbi->regs.lcdcon5 & S3C2410_LCDCON5_FRM565 ) {
+- /* 16 bpp, 565 format */
+- var->red.offset = 11;
+- var->green.offset = 5;
+- var->blue.offset = 0;
+- var->red.length = 5;
+- var->green.length = 6;
+- var->blue.length = 5;
+- var->transp.length = 0;
+- } else {
+- /* 16 bpp, 5551 format */
+- var->red.offset = 11;
+- var->green.offset = 6;
+- var->blue.offset = 1;
+- var->red.length = 5;
+- var->green.length = 5;
+- var->blue.length = 5;
+- var->transp.length = 0;
+- }
+- break;
+- case 24:
+- /* 24 bpp 888 */
+- var->red.length = 8;
+- var->red.offset = 16;
+- var->green.length = 8;
+- var->green.offset = 8;
+- var->blue.length = 8;
+- var->blue.offset = 0;
+- var->transp.length = 0;
+- break;
+-
+
++ if (var->bits_per_pixel == 16) {
++ var->red.offset = 11;
++ var->green.offset = 5;
++ var->blue.offset = 0;
++ var->red.length = 5;
++ var->green.length = 6;
++ var->blue.length = 5;
++ var->transp.length = 0;
++ } else {
++ var->red.length = var->bits_per_pixel;
++ var->red.offset = 0;
++ var->green.length = var->bits_per_pixel;
++ var->green.offset = 0;
++ var->blue.length = var->bits_per_pixel;
++ var->blue.offset = 0;
++ var->transp.length = 0;
+ }
++
+ return 0;
+ }
+
+-
+ /* s3c2410fb_activate_var
+ *
+ * activate (set) the controller from the given framebuffer
+@@ -288,61 +231,29 @@
+ static void s3c2410fb_activate_var(struct s3c2410fb_info *fbi,
+ struct fb_var_screeninfo *var)
+ {
+- int hs;
+-
+ fbi->regs.lcdcon1 &= ~S3C2410_LCDCON1_MODEMASK;
+- fbi->regs.lcdcon1 &= ~S3C2410_LCDCON1_TFT;
+
+ dprintk("%s: var->xres = %d\n", __FUNCTION__, var->xres);
+ dprintk("%s: var->yres = %d\n", __FUNCTION__, var->yres);
+ dprintk("%s: var->bpp = %d\n", __FUNCTION__, var->bits_per_pixel);
+
+- fbi->regs.lcdcon1 |= fbi->mach_info->type;
+-
+- if (fbi->mach_info->type == S3C2410_LCDCON1_TFT)
+- switch (var->bits_per_pixel) {
+- case 1:
+- fbi->regs.lcdcon1 |= S3C2410_LCDCON1_TFT1BPP;
+- break;
+- case 2:
+- fbi->regs.lcdcon1 |= S3C2410_LCDCON1_TFT2BPP;
+- break;
+- case 4:
+- fbi->regs.lcdcon1 |= S3C2410_LCDCON1_TFT4BPP;
+- break;
+- case 8:
+- fbi->regs.lcdcon1 |= S3C2410_LCDCON1_TFT8BPP;
+- break;
+- case 16:
+- fbi->regs.lcdcon1 |= S3C2410_LCDCON1_TFT16BPP;
+- break;
+-
+- default:
+- /* invalid pixel depth */
+- dev_err(fbi->dev, "invalid bpp %d\n", var->bits_per_pixel);
+- }
+- else
+- switch (var->bits_per_pixel) {
+- case 1:
+- fbi->regs.lcdcon1 |= S3C2410_LCDCON1_STN1BPP;
+- break;
+- case 2:
+- fbi->regs.lcdcon1 |= S3C2410_LCDCON1_STN2GREY;
+- break;
+- case 4:
+- fbi->regs.lcdcon1 |= S3C2410_LCDCON1_STN4GREY;
+- break;
+- case 8:
+- fbi->regs.lcdcon1 |= S3C2410_LCDCON1_STN8BPP;
+- break;
+- case 12:
+- fbi->regs.lcdcon1 |= S3C2410_LCDCON1_STN12BPP;
+- break;
+-
+- default:
+- /* invalid pixel depth */
+- dev_err(fbi->dev, "invalid bpp %d\n", var->bits_per_pixel);
+- }
++ switch (var->bits_per_pixel) {
++ case 1:
++ fbi->regs.lcdcon1 |= S3C2410_LCDCON1_TFT1BPP;
++ break;
++ case 2:
++ fbi->regs.lcdcon1 |= S3C2410_LCDCON1_TFT2BPP;
++ break;
++ case 4:
++ fbi->regs.lcdcon1 |= S3C2410_LCDCON1_TFT4BPP;
++ break;
++ case 8:
++ fbi->regs.lcdcon1 |= S3C2410_LCDCON1_TFT8BPP;
++ break;
++ case 16:
++ fbi->regs.lcdcon1 |= S3C2410_LCDCON1_TFT16BPP;
++ break;
++ }
+
+ /* check to see if we need to update sync/borders */
+
+@@ -373,44 +284,15 @@
+ fbi->regs.lcdcon2 &= ~S3C2410_LCDCON2_LINEVAL(0x3ff);
+ fbi->regs.lcdcon2 |= S3C2410_LCDCON2_LINEVAL(var->yres - 1);
+
+- switch(fbi->mach_info->type) {
+- case S3C2410_LCDCON1_DSCAN4:
+- case S3C2410_LCDCON1_STN8:
+- hs = var->xres / 8;
+- break;
+- case S3C2410_LCDCON1_STN4:
+- hs = var->xres / 4;
+- break;
+- default:
+- case S3C2410_LCDCON1_TFT:
+- hs = var->xres;
+- break;
+-
+- }
+-
+- /* Special cases : STN color displays */
+- if ( ((fbi->regs.lcdcon1 & S3C2410_LCDCON1_MODEMASK) == S3C2410_LCDCON1_STN8BPP) \
+- || ((fbi->regs.lcdcon1 & S3C2410_LCDCON1_MODEMASK) == S3C2410_LCDCON1_STN12BPP) ) {
+- hs = hs * 3;
+- }
+-
+-
+ fbi->regs.lcdcon3 &= ~S3C2410_LCDCON3_HOZVAL(0x7ff);
+- fbi->regs.lcdcon3 |= S3C2410_LCDCON3_HOZVAL(hs - 1);
++ fbi->regs.lcdcon3 |= S3C2410_LCDCON3_HOZVAL(var->xres - 1);
+
+ if (var->pixclock > 0) {
+ int clkdiv = s3c2410fb_calc_pixclk(fbi, var->pixclock);
+
+- if (fbi->mach_info->type == S3C2410_LCDCON1_TFT) {
+- clkdiv = (clkdiv / 2) -1;
+- if (clkdiv < 0)
+- clkdiv = 0;
+- }
+- else {
+- clkdiv = (clkdiv / 2);
+- if (clkdiv < 2)
+- clkdiv = 2;
+- }
++ clkdiv = (clkdiv / 2) -1;
++ if (clkdiv < 0)
++ clkdiv = 0;
+
+ fbi->regs.lcdcon1 &= ~S3C2410_LCDCON1_CLKVAL(0x3ff);
+ fbi->regs.lcdcon1 |= S3C2410_LCDCON1_CLKVAL(clkdiv);
+@@ -448,18 +330,10 @@
+ struct s3c2410fb_info *fbi = info->par;
+ struct fb_var_screeninfo *var = &info->var;
+
+- switch (var->bits_per_pixel)
+- {
+- case 16:
+- fbi->fb->fix.visual = FB_VISUAL_TRUECOLOR;
+- break;
+- case 1:
+- fbi->fb->fix.visual = FB_VISUAL_MONO01;
+- break;
+- default:
+- fbi->fb->fix.visual = FB_VISUAL_PSEUDOCOLOR;
+- break;
+- }
++ if (var->bits_per_pixel == 16)
++ fbi->fb->fix.visual = FB_VISUAL_TRUECOLOR;
++ else
++ fbi->fb->fix.visual = FB_VISUAL_PSEUDOCOLOR;
+
+ fbi->fb->fix.line_length = (var->width*var->bits_per_pixel)/8;
+
+@@ -767,7 +641,6 @@
+ int ret;
+ int irq;
+ int i;
+- u32 lcdcon1;
+
+ mach_info = pdev->dev.platform_data;
+ if (mach_info == NULL) {
+@@ -799,11 +672,6 @@
+
+ memcpy(&info->regs, &mach_info->regs, sizeof(info->regs));
+
+- /* Stop the video and unset ENVID if set */
+- info->regs.lcdcon1 &= ~S3C2410_LCDCON1_ENVID;
+- lcdcon1 = readl(S3C2410_LCDCON1);
+- writel(lcdcon1 & ~S3C2410_LCDCON1_ENVID, S3C2410_LCDCON1);
+-
+ info->mach_info = pdev->dev.platform_data;
+
+ fbinfo->fix.type = FB_TYPE_PACKED_PIXELS;
+@@ -926,14 +794,15 @@
+ * shutdown the lcd controller
+ */
+
+-static void s3c2410fb_stop_lcd(struct s3c2410fb_info *fbi)
++static void s3c2410fb_stop_lcd(void)
+ {
+ unsigned long flags;
++ unsigned long tmp;
+
+ local_irq_save(flags);
+
+- fbi->regs.lcdcon1 &= ~S3C2410_LCDCON1_ENVID;
+- writel(fbi->regs.lcdcon1, S3C2410_LCDCON1);
++ tmp = readl(S3C2410_LCDCON1);
++ writel(tmp & ~S3C2410_LCDCON1_ENVID, S3C2410_LCDCON1);
+
+ local_irq_restore(flags);
+ }
+@@ -947,7 +816,7 @@
+ struct s3c2410fb_info *info = fbinfo->par;
+ int irq;
+
+- s3c2410fb_stop_lcd(info);
++ s3c2410fb_stop_lcd();
+ msleep(1);
+
+ s3c2410fb_unmap_video_memory(info);
+@@ -975,7 +844,7 @@
+ struct fb_info *fbinfo = platform_get_drvdata(dev);
+ struct s3c2410fb_info *info = fbinfo->par;
+
+- s3c2410fb_stop_lcd(info);
++ s3c2410fb_stop_lcd();
+
+ /* sleep before disabling the clock, we need to ensure
+ * the LCD DMA engine is not going to get back on the bus
Modified: trunk/src/target/kernel/patches/s3c_mci.patch
===================================================================
--- trunk/src/target/kernel/patches/s3c_mci.patch 2007-02-15 21:31:15 UTC (rev 1003)
+++ trunk/src/target/kernel/patches/s3c_mci.patch 2007-02-15 21:37:15 UTC (rev 1004)
@@ -1,13 +1,13 @@
This is the latest S3C MMC/SD driver by Thomas Kleffel
-Index: linux-2.6.17.7-fic1/drivers/mmc/Kconfig
+Index: linux-2.6.20/drivers/mmc/Kconfig
===================================================================
---- linux-2.6.17.7-fic1.orig/drivers/mmc/Kconfig 2006-11-02 12:48:23.000000000 +0100
-+++ linux-2.6.17.7-fic1/drivers/mmc/Kconfig 2006-11-02 12:48:50.000000000 +0100
-@@ -109,4 +109,16 @@
+--- linux-2.6.20.orig/drivers/mmc/Kconfig 2007-02-15 16:15:19.000000000 +0100
++++ linux-2.6.20/drivers/mmc/Kconfig 2007-02-15 16:17:32.000000000 +0100
+@@ -125,4 +125,16 @@
+ To compile this driver as a module, choose M here: the
+ module will be called tifm_sd.
- If unsure, say N.
-
+config MMC_S3C
+ tristate "Samsung S3C SD/MMC Card Interface support"
+ depends on ARCH_S3C2410 && MMC
@@ -21,26 +21,10 @@
+
+
endmenu
-Index: linux-2.6.17.7-fic1/drivers/mmc/Makefile
+Index: linux-2.6.20/drivers/mmc/mmc_debug.c
===================================================================
---- linux-2.6.17.7-fic1.orig/drivers/mmc/Makefile 2006-11-02 12:48:23.000000000 +0100
-+++ linux-2.6.17.7-fic1/drivers/mmc/Makefile 2006-11-02 12:48:50.000000000 +0100
-@@ -23,9 +23,11 @@
- obj-$(CONFIG_MMC_AU1X) += au1xmmc.o
- obj-$(CONFIG_MMC_OMAP) += omap.o
- obj-$(CONFIG_MMC_AT91RM9200) += at91_mci.o
-+obj-$(CONFIG_MMC_S3C) += s3cmci.o
-
- mmc_core-y := mmc.o mmc_queue.o mmc_sysfs.o
-
- ifeq ($(CONFIG_MMC_DEBUG),y)
-+obj-$(CONFIG_MMC) += mmc_debug.o
- EXTRA_CFLAGS += -DDEBUG
- endif
-Index: linux-2.6.17.7-fic1/drivers/mmc/mmc_debug.c
-===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.17.7-fic1/drivers/mmc/mmc_debug.c 2006-11-02 12:48:50.000000000 +0100
++++ linux-2.6.20/drivers/mmc/mmc_debug.c 2007-02-15 16:17:32.000000000 +0100
@@ -0,0 +1,59 @@
+/*
+ * linux/drivers/mmc/mmc_debug.c
@@ -101,10 +85,10 @@
+ }
+}
+EXPORT_SYMBOL(mmc_err2str);
-Index: linux-2.6.17.7-fic1/drivers/mmc/mmc_debug.h
+Index: linux-2.6.20/drivers/mmc/mmc_debug.h
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.17.7-fic1/drivers/mmc/mmc_debug.h 2006-11-02 12:48:50.000000000 +0100
++++ linux-2.6.20/drivers/mmc/mmc_debug.h 2007-02-15 16:17:32.000000000 +0100
@@ -0,0 +1,7 @@
+#ifndef MMC_DEBUG_H
+#define MMC_DEBUG_H
@@ -113,10 +97,10 @@
+char *mmc_err2str(int err);
+
+#endif /* MMC_DEBUG_H */
-Index: linux-2.6.17.7-fic1/drivers/mmc/s3cmci.c
+Index: linux-2.6.20/drivers/mmc/s3cmci.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.17.7-fic1/drivers/mmc/s3cmci.c 2006-11-02 21:06:00.000000000 +0100
++++ linux-2.6.20/drivers/mmc/s3cmci.c 2007-02-15 16:22:54.000000000 +0100
@@ -0,0 +1,1339 @@
+/*
+ * linux/drivers/mmc/s3cmci.h - Samsung S3C MCI driver
@@ -487,7 +471,7 @@
+ * contition comes up
+ */
+
-+static irqreturn_t s3cmci_irq(int irq, void *dev_id, struct pt_regs *regs)
++static irqreturn_t s3cmci_irq(int irq, void *dev_id)
+{
+ struct s3cmci_host *host;
+ struct mmc_command *cmd;
@@ -669,7 +653,7 @@
+ * ISR for the CardDetect Pin
+*/
+
-+static irqreturn_t s3cmci_irq_cd(int irq, void *dev_id, struct pt_regs *regs)
++static irqreturn_t s3cmci_irq_cd(int irq, void *dev_id)
+{
+ struct s3cmci_host *host = (struct s3cmci_host *)dev_id;
+
@@ -1457,10 +1441,10 @@
+MODULE_LICENSE("GPL");
+MODULE_AUTHOR("Thomas Kleffel <tk at maintech.de>");
+
-Index: linux-2.6.17.7-fic1/drivers/mmc/s3cmci.h
+Index: linux-2.6.20/drivers/mmc/s3cmci.h
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.17.7-fic1/drivers/mmc/s3cmci.h 2006-11-02 21:05:15.000000000 +0100
++++ linux-2.6.20/drivers/mmc/s3cmci.h 2007-02-15 16:22:43.000000000 +0100
@@ -0,0 +1,71 @@
+/*
+ * linux/drivers/mmc/s3cmci.h - Samsung S3C MCI driver
@@ -1533,23 +1517,11 @@
+ unsigned int ccnt, dcnt;
+ struct tasklet_struct pio_tasklet;
+};
-Index: linux-2.6.17.7-fic1/include/asm-arm/arch-s3c2410/regs-sdi.h
+Index: linux-2.6.20/include/asm-arm/arch-s3c2410/regs-sdi.h
===================================================================
---- linux-2.6.17.7-fic1.orig/include/asm-arm/arch-s3c2410/regs-sdi.h 2006-11-02 12:48:24.000000000 +0100
-+++ linux-2.6.17.7-fic1/include/asm-arm/arch-s3c2410/regs-sdi.h 2006-11-02 12:48:50.000000000 +0100
-@@ -7,9 +7,10 @@
- * it under the terms of the GNU General Public License version 2 as
- * published by the Free Software Foundation.
- *
-- * S3C2410 MMC/SDIO register definitions
-+ * Samsung S3C MCI register definitions
- *
- * Changelog:
-+ * 09-May-2006 Thomas Kleffel Added defines for 2440
- * 18-Aug-2004 Ben Dooks Created initial file
- * 29-Nov-2004 Koen Martens Added some missing defines, fixed duplicates
- * 29-Nov-2004 Ben Dooks Updated Koen's patch
-@@ -33,9 +34,15 @@
+--- linux-2.6.20.orig/include/asm-arm/arch-s3c2410/regs-sdi.h 2007-02-15 16:15:19.000000000 +0100
++++ linux-2.6.20/include/asm-arm/arch-s3c2410/regs-sdi.h 2007-02-15 16:17:32.000000000 +0100
+@@ -28,9 +28,15 @@
#define S3C2410_SDIDCNT (0x30)
#define S3C2410_SDIDSTA (0x34)
#define S3C2410_SDIFSTA (0x38)
@@ -1565,7 +1537,7 @@
#define S3C2410_SDICON_BYTEORDER (1<<4)
#define S3C2410_SDICON_SDIOIRQ (1<<3)
#define S3C2410_SDICON_RWAITEN (1<<2)
-@@ -47,7 +54,8 @@
+@@ -42,7 +48,8 @@
#define S3C2410_SDICMDCON_LONGRSP (1<<10)
#define S3C2410_SDICMDCON_WAITRSP (1<<9)
#define S3C2410_SDICMDCON_CMDSTART (1<<8)
@@ -1575,7 +1547,7 @@
#define S3C2410_SDICMDSTAT_CRCFAIL (1<<12)
#define S3C2410_SDICMDSTAT_CMDSENT (1<<11)
-@@ -56,6 +64,9 @@
+@@ -51,6 +58,9 @@
#define S3C2410_SDICMDSTAT_XFERING (1<<8)
#define S3C2410_SDICMDSTAT_INDEX (0xff)
@@ -1585,7 +1557,7 @@
#define S3C2410_SDIDCON_IRQPERIOD (1<<21)
#define S3C2410_SDIDCON_TXAFTERRESP (1<<20)
#define S3C2410_SDIDCON_RXAFTERCMD (1<<19)
-@@ -64,6 +75,7 @@
+@@ -59,6 +69,7 @@
#define S3C2410_SDIDCON_WIDEBUS (1<<16)
#define S3C2410_SDIDCON_DMAEN (1<<15)
#define S3C2410_SDIDCON_STOP (1<<14)
@@ -1593,7 +1565,7 @@
#define S3C2410_SDIDCON_DATMODE (3<<12)
#define S3C2410_SDIDCON_BLKNUM (0x7ff)
-@@ -73,6 +85,7 @@
+@@ -68,6 +79,7 @@
#define S3C2410_SDIDCON_XFER_RXSTART (2<<12)
#define S3C2410_SDIDCON_XFER_TXSTART (3<<12)
@@ -1601,7 +1573,7 @@
#define S3C2410_SDIDCNT_BLKNUM_SHIFT (12)
#define S3C2410_SDIDSTA_RDYWAITREQ (1<<10)
-@@ -87,10 +100,12 @@
+@@ -82,10 +94,12 @@
#define S3C2410_SDIDSTA_TXDATAON (1<<1)
#define S3C2410_SDIDSTA_RXDATAON (1<<0)
@@ -1616,10 +1588,10 @@
#define S3C2410_SDIFSTA_RFLAST (1<<9)
#define S3C2410_SDIFSTA_RFFULL (1<<8)
#define S3C2410_SDIFSTA_RFHALF (1<<7)
-Index: linux-2.6.17.7-fic1/include/linux/mmc/mmc.h
+Index: linux-2.6.20/include/linux/mmc/mmc.h
===================================================================
---- linux-2.6.17.7-fic1.orig/include/linux/mmc/mmc.h 2006-11-02 12:48:24.000000000 +0100
-+++ linux-2.6.17.7-fic1/include/linux/mmc/mmc.h 2006-11-02 12:48:50.000000000 +0100
+--- linux-2.6.20.orig/include/linux/mmc/mmc.h 2007-02-15 16:15:19.000000000 +0100
++++ linux-2.6.20/include/linux/mmc/mmc.h 2007-02-15 16:17:32.000000000 +0100
@@ -54,12 +54,15 @@
unsigned int retries; /* max number of retries */
unsigned int error; /* command error */
Modified: trunk/src/target/kernel/patches/series
===================================================================
--- trunk/src/target/kernel/patches/series 2007-02-15 21:31:15 UTC (rev 1003)
+++ trunk/src/target/kernel/patches/series 2007-02-15 21:37:15 UTC (rev 1004)
@@ -1,10 +1,15 @@
asoc.patch
-asoc-neo_backport.patch
-gta01-asoc-rxmixer.patch
+asoc-asm_hardware_h.patch
+asoc-platform-hw_init-pcm_emulation-fix.patch
+i2c-permit_invalid_addrs.patch
+pm-debug_less_verbose.patch
+g_ether-highpower.patch
+s3c2410fb_2617_backport.patch
2.6.17-s3c2410-spi-mode23.patch
-2.6.17-arm-usb_gadget-ether-link.patch
s3c2410_serial-nodebug.patch
s3c2410_udc.patch
+s3c2410_touchscreen.patch
+s3c2410-bbt.patch
udc-nomodule-misccr.patch
s3c2410_udc-vbus_draw_pdata.patch
s3c_mci.patch
@@ -16,7 +21,6 @@
qt2410-cs8900.patch
qt2410-biglcd.patch
qt2410-s3c_mci-pdata.patch
-qt2410-touchscreen.patch
gta01-core.patch
gta01-jbt6k74.patch
gta01-backlight.patch
@@ -24,9 +28,7 @@
gta01-vibrator.patch
gta01-inputdevice.patch
gta01-power_control.patch
-s3c2410-bbt.patch
-g_ether-highpower.patch
gta01-vbus_draw.patch
+gta01-no_nand_partitions.patch
+input-nots-mousedev.patch
ts0710.patch
-input-nots-mousedev.patch
-gta01-no_nand_partitions.patch
Modified: trunk/src/target/kernel/patches/udc-nomodule-misccr.patch
===================================================================
--- trunk/src/target/kernel/patches/udc-nomodule-misccr.patch 2007-02-15 21:31:15 UTC (rev 1003)
+++ trunk/src/target/kernel/patches/udc-nomodule-misccr.patch 2007-02-15 21:37:15 UTC (rev 1004)
@@ -2,22 +2,13 @@
that the USB port is switched into device mode by configuering the MISCCR
register accordingly.
-Index: linux-2.6.17.14-fic1/drivers/usb/gadget/s3c2410_udc.c
+Index: linux-2.6.20/drivers/usb/gadget/s3c2410_udc.c
===================================================================
---- linux-2.6.17.14-fic1.orig/drivers/usb/gadget/s3c2410_udc.c 2006-11-03 01:22:14.000000000 +0100
-+++ linux-2.6.17.14-fic1/drivers/usb/gadget/s3c2410_udc.c 2006-11-03 12:41:52.000000000 +0100
-@@ -1492,7 +1492,7 @@
- return -ENODEV;
- if (udc->driver)
- return -EBUSY;
-- if (!driver->bind || !driver->unbind || !driver->setup
-+ if (!driver->bind || !driver->setup
- || driver->speed == USB_SPEED_UNKNOWN)
- return -EINVAL;
-
-@@ -1700,6 +1700,8 @@
+--- linux-2.6.20.orig/drivers/usb/gadget/s3c2410_udc.c 2007-02-15 14:54:49.000000000 +0100
++++ linux-2.6.20/drivers/usb/gadget/s3c2410_udc.c 2007-02-15 14:55:45.000000000 +0100
+@@ -1764,6 +1764,8 @@
+ udc->vbus = 1;
}
- dprintk(DEBUG_VERBOSE, "%s: got irq %i\n", gadget_name, IRQ_USBD);
+ s3c2410_modify_misccr(S3C2410_MISCCR_USBHOST|S3C2410_MISCCR_USBSUSPND0|S3C2410_MISCCR_USBSUSPND1, 0);
+
More information about the commitlog
mailing list