diff options
author | Rolf Leggewie <oe-devel@rolf.leggewie.biz> | 2007-01-15 20:46:52 +0000 |
---|---|---|
committer | Rolf Leggewie <oe-devel@rolf.leggewie.biz> | 2007-01-15 20:46:52 +0000 |
commit | 127b5109e790172290734d282ed6b00f1e9a559c (patch) | |
tree | 75864f6f7df49d446a995440be17146ab46dc0d0 /packages/linux | |
parent | 6eafd8a3f7ce813e5c2e33a606d2b2754d6aacb1 (diff) | |
parent | aef114162d66ed9f45e616b631701b988dc95137 (diff) |
merge of '8f81066c1bea85c3191ff30a0d721cd1a3ccc041'
and '98ff999fc95d5b6c4cf5fd58a2c502aea38ea350'
Diffstat (limited to 'packages/linux')
4 files changed, 991 insertions, 33 deletions
diff --git a/packages/linux/linux-efika/0001-sound-Add-support-for-the-MPC52xx-PSC-AC97-Link.txt b/packages/linux/linux-efika/0001-sound-Add-support-for-the-MPC52xx-PSC-AC97-Link.txt new file mode 100644 index 0000000000..a352f0e2f5 --- /dev/null +++ b/packages/linux/linux-efika/0001-sound-Add-support-for-the-MPC52xx-PSC-AC97-Link.txt @@ -0,0 +1,834 @@ +I cleaned up the setting of the port_config register on the MPC5200B. +This driver now touches only the two relevant bits without overriding +the others. + +Signed-off-by: Leon Woestenberg <leonw@mailcan.com> + +From 144658ad3d23bb426e29562235e40f0f9797a9c7 Mon Sep 17 00:00:00 2001 +From: Sylvain Munaut <tnt@246tNt.com> +Date: Mon, 18 Dec 2006 22:51:38 +0100 +Subject: [PATCH] sound: Add support for the MPC52xx PSC AC97 Link + +Messy driver, to be cleaned ... a lot ... + +Signed-off-by: Sylvain Munaut <tnt@246tNt.com> +--- + include/asm-ppc/mpc52xx_psc.h | 10 - + sound/ppc/Kconfig | 16 + + sound/ppc/Makefile | 3 + sound/ppc/mpc52xx_ac97.c | 738 +++++++++++++++++++++++++++++++++++++++++ + 4 files changed, 765 insertions(+), 2 deletions(-) + +Index: linux-2.6.19-rc6_efika/include/asm-ppc/mpc52xx_psc.h +=================================================================== +--- linux-2.6.19-rc6_efika.orig/include/asm-ppc/mpc52xx_psc.h 2007-01-14 19:45:07.000000000 +0100 ++++ linux-2.6.19-rc6_efika/include/asm-ppc/mpc52xx_psc.h 2007-01-14 19:45:07.000000000 +0100 +@@ -28,6 +28,10 @@ + #define MPC52xx_PSC_MAXNUM 6 + + /* Programmable Serial Controller (PSC) status register bits */ ++#define MPC52xx_PSC_SR_UNEX_RX 0x0001 ++#define MPC52xx_PSC_SR_DATA_VAL 0x0002 ++#define MPC52xx_PSC_SR_DATA_OVR 0x0004 ++#define MPC52xx_PSC_SR_CMDSEND 0x0008 + #define MPC52xx_PSC_SR_CDE 0x0080 + #define MPC52xx_PSC_SR_RXRDY 0x0100 + #define MPC52xx_PSC_SR_RXFULL 0x0200 +@@ -132,8 +136,10 @@ + u8 reserved5[3]; + u8 ctlr; /* PSC + 0x1c */ + u8 reserved6[3]; +- u16 ccr; /* PSC + 0x20 */ +- u8 reserved7[14]; ++ u32 ccr; /* PSC + 0x20 */ ++ u32 ac97_slots; /* PSC + 0x24 */ ++ u32 ac97_cmd; /* PSC + 0x28 */ ++ u32 ac97_data; /* PSC + 0x2c */ + u8 ivr; /* PSC + 0x30 */ + u8 reserved8[3]; + u8 ip; /* PSC + 0x34 */ +Index: linux-2.6.19-rc6_efika/sound/ppc/Kconfig +=================================================================== +--- linux-2.6.19-rc6_efika.orig/sound/ppc/Kconfig 2007-01-14 19:45:07.000000000 +0100 ++++ linux-2.6.19-rc6_efika/sound/ppc/Kconfig 2007-01-14 19:45:07.000000000 +0100 +@@ -33,3 +33,19 @@ + option. + + endmenu ++ ++ ++# ALSA ppc drivers ++ ++menu "ALSA PPC devices" ++ depends on SND!=n && PPC ++ ++config SND_PPC_MPC52xx_AC97 ++ tristate "Freescale MPC52xx AC97 interface support" ++ depends on SND && PPC_MPC52xx ++ select SND_AC97_CODEC ++ help ++ Say Y or M if you want to support any AC97 codec attached to ++ the Freescqle MPC52xx AC97 interface. ++ ++endmenu +Index: linux-2.6.19-rc6_efika/sound/ppc/Makefile +=================================================================== +--- linux-2.6.19-rc6_efika.orig/sound/ppc/Makefile 2007-01-14 19:45:07.000000000 +0100 ++++ linux-2.6.19-rc6_efika/sound/ppc/Makefile 2007-01-14 19:45:07.000000000 +0100 +@@ -4,6 +4,9 @@ + # + + snd-powermac-objs := powermac.o pmac.o awacs.o burgundy.o daca.o tumbler.o keywest.o beep.o ++snd-mpc52xx-ac97-objs := mpc52xx_ac97.o + + # Toplevel Module Dependency + obj-$(CONFIG_SND_POWERMAC) += snd-powermac.o ++ ++obj-$(CONFIG_SND_PPC_MPC52xx_AC97) += snd-mpc52xx-ac97.o +Index: linux-2.6.19-rc6_efika/sound/ppc/mpc52xx_ac97.c +=================================================================== +--- /dev/null 1970-01-01 00:00:00.000000000 +0000 ++++ linux-2.6.19-rc6_efika/sound/ppc/mpc52xx_ac97.c 2007-01-14 22:45:55.000000000 +0100 +@@ -0,0 +1,742 @@ ++/* ++ * Driver for the PSC of the Freescale MPC52xx configured as AC97 interface ++ * ++ * ++ * Copyright (C) 2006 Sylvain Munaut <tnt@246tNt.com> ++ * ++ * This file is licensed under the terms of the GNU General Public License ++ * version 2. This program is licensed "as is" without any warranty of any ++ * kind, whether express or implied. ++ */ ++ ++#define DEBUG ++ ++#include <linux/kernel.h> ++#include <linux/module.h> ++#include <linux/interrupt.h> ++ ++#include <sound/driver.h> ++#include <sound/core.h> ++#include <sound/initval.h> ++#include <sound/pcm.h> ++#include <sound/pcm_params.h> ++#include <sound/ac97_codec.h> ++ ++#include <asm/of_platform.h> ++#include <asm/mpc52xx_psc.h> ++ ++ ++#define DRV_NAME "mpc52xx-psc-ac97" ++ ++ ++/* ======================================================================== */ ++/* Structs / Defines */ ++/* ======================================================================== */ ++ ++/* Private structure */ ++struct mpc52xx_ac97_priv { ++ struct device *dev; ++ resource_size_t mem_start; ++ resource_size_t mem_len; ++ int irq; ++ struct mpc52xx_psc __iomem *psc; ++ struct snd_card *card; ++ struct snd_pcm *pcm; ++ struct snd_ac97 *ac97; ++ ++ struct snd_pcm_substream *substream_playback; ++ unsigned int buf_pos; ++}; ++ ++/* Register bit definition (AC97 mode specific) */ ++#define PSC_AC97_SLOT_BIT(n) (1<<(12-n)) ++#define PSC_AC97_SLOTS_XMIT_SHIFT 16 ++#define PSC_AC97_SLOTS_RECV_SHIFT 0 ++ ++ ++ ++/* ======================================================================== */ ++/* ISR routine */ ++/* ======================================================================== */ ++ ++static irqreturn_t ++mpc52xx_ac97_irq(int irq, void *dev_id) ++{ ++ struct mpc52xx_ac97_priv *priv = dev_id; ++ ++ static int icnt = 0; ++ #if 0 ++ { ++ unsigned int val; ++// val = in_be32(&priv->psc->ac97_data); ++ printk(KERN_INFO "mpc52xx_ac97_irq fired (isr=%04x, status=%04x) %08x\n", in_be16(&priv->psc->mpc52xx_psc_imr), in_be16(&priv->psc->mpc52xx_psc_status), val); ++ out_8(&priv->psc->command,MPC52xx_PSC_RST_ERR_STAT); ++ } ++ #endif ++ ++ /* Anti Crash during dev ;) */ ++ #if 0 ++ if ((icnt++) > 50000) ++ out_be16(&priv->psc->mpc52xx_psc_imr, 0); ++ #endif ++ ++ /* Copy 64 data into the buffer */ ++ if (in_be16(&priv->psc->mpc52xx_psc_imr) & 0x0100) { ++ if (priv->substream_playback) { ++ struct snd_pcm_runtime *rt; ++ ++ rt = priv->substream_playback->runtime; ++ ++ if (snd_pcm_playback_hw_avail(rt) < bytes_to_frames(rt,128)) { ++ int i; ++ /* Push silence */ ++ for (i=0; i<64; i++) ++ out_be32(&priv->psc->mpc52xx_psc_buffer_32, 0x00000800); ++ printk(KERN_DEBUG "pushed silence ...\n"); ++ } else { ++ int i; ++ unsigned short *data; ++ ++ data = (unsigned short *) ++ (&rt->dma_area[frames_to_bytes(rt, priv->buf_pos)]); ++ ++ for (i=0; i<64; i++) ++ out_be32(&priv->psc->mpc52xx_psc_buffer_32, ++ (((unsigned int)data[i]) << 16) | 0x00000000); ++ /* Setting the sof bit looks useless */ ++ ++ priv->buf_pos += bytes_to_frames(rt,128);; ++ if (priv->buf_pos >= rt->buffer_size) ++ priv->buf_pos = 0; ++ ++ snd_pcm_period_elapsed(priv->substream_playback); ++ } ++ } else { ++ out_be16(&priv->psc->mpc52xx_psc_imr, 0); ++ printk(KERN_DEBUG "Interrupt with no stream ...\n"); ++ } ++ } else { ++ printk(KERN_ERR "Spurious int\n"); ++ } ++ ++ return IRQ_HANDLED; ++} ++ ++ ++/* ======================================================================== */ ++/* PCM interface */ ++/* ======================================================================== */ ++ ++/* HW desc */ ++ ++static struct snd_pcm_hardware mpc52xx_ac97_hw = { ++ .info = SNDRV_PCM_INFO_INTERLEAVED | ++ SNDRV_PCM_INFO_MMAP | ++ SNDRV_PCM_INFO_MMAP_VALID, ++ .formats = SNDRV_PCM_FMTBIT_S16_BE, ++ .rates = SNDRV_PCM_RATE_8000_48000, ++ .rate_min = 8000, ++ .rate_max = 48000, ++ .channels_min = 1, ++ .channels_max = 2, /* Support for more ? */ ++ .buffer_bytes_max = 128*1024, ++ .period_bytes_min = 128, /* 32, */ ++ .period_bytes_max = 128, /* 16*1024, */ ++ .periods_min = 8, ++ .periods_max = 256, ++ .fifo_size = 512, ++}; ++ ++ ++/* Playback */ ++ ++static int ++mpc52xx_ac97_playback_open(struct snd_pcm_substream *substream) ++{ ++ struct mpc52xx_ac97_priv *priv = substream->pcm->private_data; ++ ++ dev_dbg(priv->dev, "mpc52xx_ac97_playback_open(%p)\n", substream); ++ ++ substream->runtime->hw = mpc52xx_ac97_hw; ++ ++ priv->substream_playback = substream; ++ priv->buf_pos = 0; /* FIXME Do that where ? */ ++ ++ return 0; /* FIXME */ ++} ++ ++static int ++mpc52xx_ac97_playback_close(struct snd_pcm_substream *substream) ++{ ++ struct mpc52xx_ac97_priv *priv = substream->pcm->private_data; ++ dev_dbg(priv->dev, "mpc52xx_ac97_playback_close(%p)\n", substream); ++ priv->substream_playback = NULL; ++ return 0; /* FIXME */ ++} ++ ++static int ++mpc52xx_ac97_playback_prepare(struct snd_pcm_substream *substream) ++{ ++ struct mpc52xx_ac97_priv *priv = substream->pcm->private_data; ++ ++ dev_dbg(priv->dev, "mpc52xx_ac97_playback_prepare(%p)\n", substream); ++ ++ /* FIXME, need a spinlock to protect access */ ++ if (substream->runtime->channels == 1) ++ out_be32(&priv->psc->ac97_slots, 0x01000000); ++ else ++ out_be32(&priv->psc->ac97_slots, 0x03000000); ++ ++ snd_ac97_set_rate(priv->ac97, AC97_PCM_FRONT_DAC_RATE, substream->runtime->rate); ++ ++ return 0; /* FIXME */ ++} ++ ++ ++/* Capture */ ++ ++static int ++mpc52xx_ac97_capture_open(struct snd_pcm_substream *substream) ++{ ++ struct mpc52xx_ac97_priv *priv = substream->pcm->private_data; ++ return 0; /* FIXME */ ++} ++ ++static int ++mpc52xx_ac97_capture_close(struct snd_pcm_substream *substream) ++{ ++ struct mpc52xx_ac97_priv *priv = substream->pcm->private_data; ++ return 0; /* FIXME */ ++} ++ ++static int ++mpc52xx_ac97_capture_prepare(struct snd_pcm_substream *substream) ++{ ++ struct mpc52xx_ac97_priv *priv = substream->pcm->private_data; ++ return 0; /* FIXME */ ++} ++ ++ ++/* Common */ ++ ++static int ++mpc52xx_ac97_hw_params(struct snd_pcm_substream *substream, ++ struct snd_pcm_hw_params *params) ++{ ++ struct mpc52xx_ac97_priv *priv = substream->pcm->private_data; ++ int rv; ++ ++ dev_dbg(priv->dev, "mpc52xx_ac97_hw_params(%p)\n", substream); ++ ++ rv = snd_pcm_lib_malloc_pages(substream, ++ params_buffer_bytes(params)); ++ if (rv < 0) { ++ printk(KERN_ERR "hw params failes\n"); /* FIXME */ ++ return rv; ++ } ++ ++ printk(KERN_DEBUG "%d %d %d\n", params_buffer_bytes(params), params_period_bytes(params), params_periods(params)); ++ ++ ++ return 0; ++} ++ ++static int ++mpc52xx_ac97_hw_free(struct snd_pcm_substream *substream) ++{ ++ struct mpc52xx_ac97_priv *priv = substream->pcm->private_data; ++ ++ dev_dbg(priv->dev, "mpc52xx_ac97_hw_free(%p)\n", substream); ++ ++ return snd_pcm_lib_free_pages(substream); ++} ++ ++static int ++mpc52xx_ac97_trigger(struct snd_pcm_substream *substream, int cmd) ++{ ++ struct mpc52xx_ac97_priv *priv = substream->pcm->private_data; ++ int rv = 0; ++ ++ dev_dbg(priv->dev, "mpc52xx_ac97_trigger(%p,%d)\n", substream, cmd); ++ ++ switch (cmd) { ++ case SNDRV_PCM_TRIGGER_START: ++ /* Enable TX interrupt */ ++ out_be16(&priv->psc->mpc52xx_psc_imr, 0x0100); // 0x0100 ++ ++ break; ++ ++ case SNDRV_PCM_TRIGGER_STOP: ++ /* Disable TX interrupt */ ++ out_be16(&priv->psc->mpc52xx_psc_imr, 0x0000); ++ ++ break; ++ ++ default: ++ rv = -EINVAL; ++ } ++ ++ /* FIXME */ ++ return rv; ++} ++ ++static snd_pcm_uframes_t ++mpc52xx_ac97_pointer(struct snd_pcm_substream *substream) ++{ ++ struct mpc52xx_ac97_priv *priv = substream->pcm->private_data; ++ ++// dev_dbg(priv->dev, "mpc52xx_ac97_pointer(%p)\n", substream); ++ ++ if (substream->runtime->channels == 1) ++ return priv->buf_pos; /* FIXME */ ++ else ++ return priv->buf_pos >> 1; /* FIXME */ ++} ++ ++ ++/* Ops */ ++ ++static struct snd_pcm_ops mpc52xx_ac97_playback_ops = { ++ .open = mpc52xx_ac97_playback_open, ++ .close = mpc52xx_ac97_playback_close, ++ .ioctl = snd_pcm_lib_ioctl, ++ .hw_params = mpc52xx_ac97_hw_params, ++ .hw_free = mpc52xx_ac97_hw_free, ++ .prepare = mpc52xx_ac97_playback_prepare, ++ .trigger = mpc52xx_ac97_trigger, ++ .pointer = mpc52xx_ac97_pointer, ++}; ++ ++static struct snd_pcm_ops mpc52xx_ac97_capture_ops = { ++ .open = mpc52xx_ac97_capture_open, ++ .close = mpc52xx_ac97_capture_close, ++ .ioctl = snd_pcm_lib_ioctl, ++ .hw_params = mpc52xx_ac97_hw_params, ++ .hw_free = mpc52xx_ac97_hw_free, ++ .prepare = mpc52xx_ac97_capture_prepare, ++ .trigger = mpc52xx_ac97_trigger, ++ .pointer = mpc52xx_ac97_pointer, ++}; ++ ++ ++/* ======================================================================== */ ++/* AC97 Bus interface */ ++/* ======================================================================== */ ++ ++static unsigned short ++mpc52xx_ac97_bus_read(struct snd_ac97 *ac97, unsigned short reg) ++{ ++ struct mpc52xx_ac97_priv *priv = ac97->private_data; ++ int timeout; ++ unsigned int val; ++ ++ dev_dbg(priv->dev, "ac97 read: reg %04x\n", reg); ++ ++ /* Wait for it to be ready */ ++ timeout = 1000; ++ while ((--timeout) && (in_be16(&priv->psc->mpc52xx_psc_status) & ++ MPC52xx_PSC_SR_CMDSEND) ) ++ udelay(10); ++ ++ if (!timeout) { ++ printk(KERN_ERR DRV_NAME ": timeout on ac97 bus (rdy)\n"); ++ return 0xffff; ++ } ++ ++ /* Do the read */ ++ out_be32(&priv->psc->ac97_cmd, (1<<31) | ((reg & 0x7f) << 24)); ++ ++ /* Wait for the answer */ ++ timeout = 1000; ++ while ((--timeout) && !(in_be16(&priv->psc->mpc52xx_psc_status) & ++ MPC52xx_PSC_SR_DATA_VAL) ) ++ udelay(10); ++ ++ if (!timeout) { ++ printk(KERN_ERR DRV_NAME ": timeout on ac97 read (val)\n"); ++ return 0xffff; ++ } ++ ++ /* Get the data */ ++ val = in_be32(&priv->psc->ac97_data); ++ if ( ((val>>24) & 0x7f) != reg ) { ++ printk(KERN_ERR DRV_NAME ": reg echo error on ac97 read\n"); ++ return 0xffff; ++ } ++ val = (val >> 8) & 0xffff; ++ ++ dev_dbg(priv->dev, "ac97 read ok: reg %04x val %04x\n", ++ reg, val); ++ ++ return (unsigned short) val; ++} ++ ++static void ++mpc52xx_ac97_bus_write(struct snd_ac97 *ac97, ++ unsigned short reg, unsigned short val) ++{ ++ struct mpc52xx_ac97_priv *priv = ac97->private_data; ++ int timeout; ++ ++ dev_dbg(priv->dev, "ac97 write: reg %04x val %04x\n", ++ reg, val); ++ ++ /* Wait for it to be ready */ ++ timeout = 1000; ++ while ((--timeout) && (in_be16(&priv->psc->mpc52xx_psc_status) & ++ MPC52xx_PSC_SR_CMDSEND) ) ++ udelay(10); ++ ++ if (!timeout) { ++ printk(KERN_ERR DRV_NAME ": timeout on ac97 write\n"); ++ return; ++ } ++ ++ /* Write data */ ++ out_be32(&priv->psc->ac97_cmd, ((reg & 0x7f) << 24) | (val << 8)); ++} ++ ++static void ++mpc52xx_ac97_bus_reset(struct snd_ac97 *ac97) ++{ ++ struct mpc52xx_ac97_priv *priv = ac97->private_data; ++ ++ dev_dbg(priv->dev, "ac97 codec reset\n"); ++ ++ /* Do a cold reset */ ++ out_8(&priv->psc->op1, 0x03); ++ udelay(10); ++ out_8(&priv->psc->op0, 0x02); ++ udelay(50); ++ ++ /* PSC recover from cold reset (cfr user manual, not sure if useful) */ ++ out_be32(&priv->psc->sicr, in_be32(&priv->psc->sicr)); ++} ++ ++ ++static struct snd_ac97_bus_ops mpc52xx_ac97_bus_ops = { ++ .read = mpc52xx_ac97_bus_read, ++ .write = mpc52xx_ac97_bus_write, ++ .reset = mpc52xx_ac97_bus_reset, ++}; ++ ++ ++/* ======================================================================== */ ++/* Sound driver setup */ ++/* ======================================================================== */ ++ ++static int ++mpc52xx_ac97_setup_pcm(struct mpc52xx_ac97_priv *priv) ++{ ++ int rv; ++ ++ rv = snd_pcm_new(priv->card, DRV_NAME "-pcm", 0, 1, 1, &priv->pcm); ++ if (rv) { ++ printk(KERN_ERR DRV_NAME ": snd_pcm_new failed\n"); ++ return rv; ++ } ++ ++ rv = snd_pcm_lib_preallocate_pages_for_all(priv->pcm, ++ SNDRV_DMA_TYPE_CONTINUOUS, snd_dma_continuous_data(GFP_KERNEL), ++ 128*1024, 128*1024); ++ if (rv) { ++ printk(KERN_ERR DRV_NAME ++ ": snd_pcm_lib_preallocate_pages_for_all failed\n"); ++ return rv; ++ } ++ ++ snd_pcm_set_ops(priv->pcm, SNDRV_PCM_STREAM_PLAYBACK, ++ &mpc52xx_ac97_playback_ops); ++ snd_pcm_set_ops(priv->pcm, SNDRV_PCM_STREAM_CAPTURE, ++ &mpc52xx_ac97_capture_ops); ++ ++ priv->pcm->private_data = priv; ++ priv->pcm->info_flags = 0; ++ ++ strcpy(priv->pcm->name, "Freescale MPC52xx PSC-AC97 PCM"); ++ ++ return 0; ++} ++ ++static int ++mpc52xx_ac97_setup_mixer(struct mpc52xx_ac97_priv *priv) ++{ ++ struct snd_ac97_bus *ac97_bus; ++ struct snd_ac97_template ac97_template; ++ int rv; ++ ++ rv = snd_ac97_bus(priv->card, 0, &mpc52xx_ac97_bus_ops, NULL, &ac97_bus); ++ if (rv) { ++ printk(KERN_ERR DRV_NAME ": snd_ac97_bus failed\n"); ++ return rv; ++ } ++ ++ memset(&ac97_template, 0, sizeof(struct snd_ac97_template)); ++ ac97_template.private_data = priv; ++ ++ rv = snd_ac97_mixer(ac97_bus, &ac97_template, &priv->ac97); ++ if (rv) { ++ printk(KERN_ERR DRV_NAME ": snd_ac97_mixer failed\n"); ++ return rv; ++ } ++ ++ return 0; ++} ++ ++ ++static int ++mpc52xx_ac97_hwinit(struct mpc52xx_ac97_priv *priv) ++{ ++ /* Reset everything first by safety */ ++ out_8(&priv->psc->command,MPC52xx_PSC_RST_RX); ++ out_8(&priv->psc->command,MPC52xx_PSC_RST_TX); ++ out_8(&priv->psc->command,MPC52xx_PSC_RST_ERR_STAT); ++ ++ /* Do a cold reset of codec */ ++ out_8(&priv->psc->op1, 0x03); ++ udelay(10); ++ out_8(&priv->psc->op0, 0x02); ++ udelay(50); ++ ++ /* Configure AC97 enhanced mode */ ++ out_be32(&priv->psc->sicr, 0x03010000); ++ ++ /* No slots active */ ++ out_be32(&priv->psc->ac97_slots, 0x00000000); ++ ++ /* No IRQ */ ++ out_be16(&priv->psc->mpc52xx_psc_imr, 0x0000); ++ ++ /* FIFO levels */ ++ out_8(&priv->psc->rfcntl, 0x07); ++ out_8(&priv->psc->tfcntl, 0x07); ++ out_be16(&priv->psc->rfalarm, 0x80); ++ out_be16(&priv->psc->tfalarm, 0x80); ++ ++ /* Go */ ++ out_8(&priv->psc->command,MPC52xx_PSC_TX_ENABLE); ++ out_8(&priv->psc->command,MPC52xx_PSC_RX_ENABLE); ++ ++ return 0; ++} ++ ++static int ++mpc52xx_ac97_hwshutdown(struct mpc52xx_ac97_priv *priv) ++{ ++ /* No IRQ */ ++ out_be16(&priv->psc->mpc52xx_psc_imr, 0x0000); ++ ++ /* Disable TB & RX */ ++ out_8(&priv->psc->command,MPC52xx_PSC_RST_RX); ++ out_8(&priv->psc->command,MPC52xx_PSC_RST_TX); ++ ++ /* FIXME : Reset or put codec in low power ? */ ++ ++ return 0; ++} ++ ++ ++/* ======================================================================== */ ++/* OF Platform Driver */ ++/* ======================================================================== */ ++ ++static int __devinit ++mpc52xx_ac97_probe(struct of_device *op, const struct of_device_id *match) ++{ ++ struct device_node *dn = op->node; ++ struct mpc52xx_ac97_priv *priv; ++ struct snd_card *card; ++ struct resource res; ++ int rv; ++ ++ dev_dbg(&op->dev, "probing MPC52xx PSC AC97 driver\n"); ++ ++ /* Get card structure */ ++ rv = -ENOMEM; ++ card = snd_card_new(SNDRV_DEFAULT_IDX1, SNDRV_DEFAULT_STR1, ++ THIS_MODULE, sizeof(struct mpc52xx_ac97_priv)); ++ if (!card) ++ goto err_early; ++ ++ priv = card->private_data; ++ ++ /* Init our private structure */ ++ priv->card = card; ++ priv->dev = &op->dev; ++ ++ /* Get resources (mem,irq,...) */ ++ rv = of_address_to_resource(dn, 0, &res); ++ if (rv) ++ goto err_early; ++ ++ priv->mem_start = res.start; ++ priv->mem_len = res.end - res.start + 1; ++ ++ if (!request_mem_region(priv->mem_start, priv->mem_len, DRV_NAME)) { ++ printk(KERN_ERR DRV_NAME ": request_mem_region failed\n"); ++ rv = -EBUSY; ++ goto err_early; ++ } ++ ++ priv->psc = ioremap(priv->mem_start, priv->mem_len); ++ if (!priv->psc) { ++ printk(KERN_ERR DRV_NAME ": ioremap failed\n"); ++ rv = -ENOMEM; ++ goto err_iomap; ++ } ++ ++ priv->irq = irq_of_parse_and_map(dn, 0); ++ if (priv->irq == NO_IRQ) { ++ printk(KERN_ERR DRV_NAME ": irq_of_parse_and_map failed\n"); ++ rv = -EBUSY; ++ goto err_irqmap; ++ } ++ ++ /* Low level HW Init */ ++ mpc52xx_ac97_hwinit(priv); ++ ++ /* Request IRQ now that we're 'stable' */ ++ rv = request_irq(priv->irq, mpc52xx_ac97_irq, 0, DRV_NAME, priv); ++ if (rv < 0) { ++ printk(KERN_ERR DRV_NAME ": request_irq failed\n"); ++ goto err_irqreq; ++ } ++ ++ /* Prepare sound stuff */ ++ rv = mpc52xx_ac97_setup_mixer(priv); ++ if (rv) ++ goto err_late; ++ ++ rv = mpc52xx_ac97_setup_pcm(priv); ++ if (rv) ++ goto err_late; ++ ++ /* Finally register the card */ ++ snprintf(card->shortname, sizeof(card->shortname), DRV_NAME); ++ snprintf(card->longname, sizeof(card->longname), ++ "Freescale MPC52xx PSC-AC97 (%s)", card->mixername); ++ ++ rv = snd_card_register(card); ++ if (rv) { ++ printk(KERN_ERR DRV_NAME ": snd_card_register failed\n"); ++ goto err_late; ++ } ++ ++ dev_set_drvdata(&op->dev, priv); ++ ++ return 0; ++ ++err_late: ++ free_irq(priv->irq, priv); ++err_irqreq: ++ mpc52xx_ac97_hwshutdown(priv); ++ irq_dispose_mapping(priv->irq); ++err_irqmap: ++ iounmap(priv->psc); ++err_iomap: ++ release_mem_region(priv->mem_start, priv->mem_len); ++err_early: ++ if (card) ++ snd_card_free(card); ++ return rv; ++} ++ ++static int ++mpc52xx_ac97_remove(struct of_device *op) ++{ ++ struct mpc52xx_ac97_priv *priv; ++ ++ dev_dbg(&op->dev, "removing MPC52xx PSC AC97 driver\n"); ++ ++ priv = dev_get_drvdata(&op->dev); ++ if (priv) { ++ /* Sound subsys shutdown */ ++ snd_card_free(priv->card); ++ ++ /* Low level HW shutdown */ ++ mpc52xx_ac97_hwshutdown(priv); ++ ++ /* Release resources */ ++ iounmap(priv->psc); ++ free_irq(priv->irq, priv); ++ irq_dispose_mapping(priv->irq); ++ release_mem_region(priv->mem_start, priv->mem_len); ++ } ++ ++ dev_set_drvdata(&op->dev, NULL); ++ ++ return 0; ++} ++ ++ ++static struct of_device_id mpc52xx_ac97_of_match[] = { ++ { ++/* .type = "ac97", FIXME Efika ... */ ++ .compatible = "mpc5200b-psc-ac97", /* B only for now */ ++ }, ++}; ++/* Prevent autoload during developpment phase ... */ ++/* MODULE_DEVICE_TABLE(of, mpc52xx_ac97_of_match); */ ++ ++ ++static struct of_platform_driver mpc52xx_ac97_of_driver = { ++ .owner = THIS_MODULE, ++ .name = DRV_NAME, ++ .match_table = mpc52xx_ac97_of_match, ++ .probe = mpc52xx_ac97_probe, ++ .remove = mpc52xx_ac97_remove, ++ .driver = { ++ .name = DRV_NAME, ++ }, ++}; ++ ++ ++/* ======================================================================== */ ++/* Module */ ++/* ======================================================================== */ ++ ++static int __init ++mpc52xx_ac97_init(void) ++{ ++ int rv; ++ ++ /* Set port_config bits[25:26] to 01, keep the others as-is. This ++ sets PSC2 to AC97 mode. */ ++ { ++ void *mbar; ++ u32 port_config; ++ mbar = ioremap(0xf0000000, 0x100000); ++ port_config = in_be32(mbar + 0xb00); ++ printk(KERN_INFO "port_config was: %08x\n", port_config); ++ port_config &= ~0x00000060; ++ port_config |= 0x00000020; ++ out_be32(mbar + 0xb00, port_config); ++ printk(KERN_INFO "port_config now: %08x\n", port_config); ++ iounmap(mbar); ++ } ++ ++ printk(KERN_INFO "Sound: MPC52xx PSC AC97 driver\n"); ++ ++ rv = of_register_platform_driver(&mpc52xx_ac97_of_driver); ++ if (rv) { ++ printk(KERN_ERR DRV_NAME ": " ++ "of_register_platform_driver failed (%i)\n", rv); ++ return rv; ++ } ++ ++ return 0; ++} ++ ++static void __exit ++mpc52xx_ac97_exit(void) ++{ ++ of_unregister_platform_driver(&mpc52xx_ac97_of_driver); ++} ++ ++module_init(mpc52xx_ac97_init); ++module_exit(mpc52xx_ac97_exit); ++ ++MODULE_AUTHOR("Sylvain Munaut <tnt@246tNt.com>"); ++MODULE_DESCRIPTION(DRV_NAME ": Freescale MPC52xx PSC AC97 driver"); ++MODULE_LICENSE("GPL"); ++ diff --git a/packages/linux/linux-efika/defconfig b/packages/linux/linux-efika/defconfig index 05a06b6c5e..b8a39ffa05 100644 --- a/packages/linux/linux-efika/defconfig +++ b/packages/linux/linux-efika/defconfig @@ -1827,7 +1827,7 @@ CONFIG_RPCSEC_GSS_SPKM3=m CONFIG_SMB_FS=m CONFIG_SMB_NLS_DEFAULT=y CONFIG_SMB_NLS_REMOTE="iso8859-1" -# CONFIG_CIFS is not set +CONFIG_CIFS=m # CONFIG_NCP_FS is not set # CONFIG_CODA_FS is not set # CONFIG_AFS_FS is not set diff --git a/packages/linux/linux-efika_2.6.18+2.6.19-rc6.bb b/packages/linux/linux-efika_2.6.18+2.6.19-rc6.bb index 679bd667d5..fec05ad168 100644 --- a/packages/linux/linux-efika_2.6.18+2.6.19-rc6.bb +++ b/packages/linux/linux-efika_2.6.18+2.6.19-rc6.bb @@ -1,15 +1,16 @@ DESCRIPTION = "Linux Kernel for the EFIKA dev platform" SECTION = "kernel" LICENSE = "GPL" -PR = "r1" +PR = "r2" COMPATIBLE_MACHINE = "efika" SRC_URI = "http://www.efika.de/download/linux-2.6.19-rc6_efika.tgz \ - http://www.246tnt.com/files/0001-sound-Add-support-for-the-MPC52xx-PSC-AC97-Link.txt;patch=1 \ + file://0001-sound-Add-support-for-the-MPC52xx-PSC-AC97-Link.txt;patch=1 \ http://www.246tnt.com/files/0001-powerpc-Add-device-tree-fixup-for-the-EFIKA.txt;patch=1 \ file://defconfig \ " +# http://www.246tnt.com/files/0001-sound-Add-support-for-the-MPC52xx-PSC-AC97-Link.txt;patch=1 \ # http://lkml.org/lkml/2006/11/29/335;patch=1 \ S = "${WORKDIR}/linux-2.6.19-rc6_efika" diff --git a/packages/linux/linux-handhelds-2.6/rx3000/defconfig b/packages/linux/linux-handhelds-2.6/rx3000/defconfig index 3d915d7f8f..35ae57e8ac 100644 --- a/packages/linux/linux-handhelds-2.6/rx3000/defconfig +++ b/packages/linux/linux-handhelds-2.6/rx3000/defconfig @@ -1,11 +1,13 @@ # # Automatically generated make config: don't edit -# Linux kernel version: 2.6.18-hh1 -# Wed Nov 29 21:13:14 2006 +# Linux kernel version: 2.6.19-hh4 +# Sat Dec 16 17:40:31 2006 # CONFIG_ARM=y +# CONFIG_GENERIC_TIME is not set CONFIG_MMU=y CONFIG_GENERIC_HARDIRQS=y +CONFIG_TRACE_IRQFLAGS_SUPPORT=y CONFIG_HARDIRQS_SW_RESEND=y CONFIG_GENERIC_IRQ_PROBE=y CONFIG_RWSEM_GENERIC_SPINLOCK=y @@ -28,9 +30,11 @@ CONFIG_LOCALVERSION="" CONFIG_LOCALVERSION_AUTO=y CONFIG_SWAP=y CONFIG_SYSVIPC=y +# CONFIG_IPC_NS is not set # CONFIG_POSIX_MQUEUE is not set # CONFIG_BSD_PROCESS_ACCT is not set # CONFIG_TASKSTATS is not set +# CONFIG_UTS_NS is not set # CONFIG_AUDIT is not set CONFIG_IKCONFIG=y # CONFIG_MINIMAL_OOPS is not set @@ -38,9 +42,10 @@ CONFIG_IKCONFIG_PROC=y # CONFIG_RELAY is not set CONFIG_INITRAMFS_SOURCE="" CONFIG_CC_OPTIMIZE_FOR_SIZE=y +CONFIG_SYSCTL=y # CONFIG_EMBEDDED is not set CONFIG_UID16=y -CONFIG_SYSCTL=y +CONFIG_SYSCTL_SYSCALL=y CONFIG_KALLSYMS=y # CONFIG_KALLSYMS_EXTRA_PASS is not set CONFIG_HOTPLUG=y @@ -73,6 +78,7 @@ CONFIG_KMOD=y # # Block layer # +CONFIG_BLOCK=y # CONFIG_BLK_DEV_IO_TRACE is not set # @@ -105,7 +111,8 @@ CONFIG_DEFAULT_IOSCHED="anticipatory" # CONFIG_ARCH_NETX is not set # CONFIG_ARCH_H720X is not set # CONFIG_ARCH_IMX is not set -# CONFIG_ARCH_IOP3XX is not set +# CONFIG_ARCH_IOP32X is not set +# CONFIG_ARCH_IOP33X is not set # CONFIG_ARCH_IXP4XX is not set # CONFIG_ARCH_IXP2000 is not set # CONFIG_ARCH_IXP23XX is not set @@ -125,9 +132,11 @@ CONFIG_ARCH_S3C2410=y # # S3C24XX Implementations # +# CONFIG_MACH_AML_M5900 is not set # CONFIG_MACH_ANUBIS is not set # CONFIG_MACH_OSIRIS is not set # CONFIG_ARCH_BAST is not set +CONFIG_PM_H1940=y # CONFIG_ARCH_H1940 is not set # CONFIG_MACH_N30 is not set # CONFIG_ARCH_SMDK2410 is not set @@ -135,9 +144,14 @@ CONFIG_ARCH_S3C2410=y # CONFIG_MACH_SMDK2413 is not set # CONFIG_MACH_VR1000 is not set CONFIG_MACH_RX3715=y +CONFIG_RX3715_LEDS=m +CONFIG_RX3715_BLUETOOTH=m +CONFIG_RX3715_DS1WM=m # CONFIG_MACH_OTOM is not set # CONFIG_MACH_NEXCODER_2440 is not set +# CONFIG_MACH_VSTMS is not set CONFIG_S3C2410_CLOCK=y +CONFIG_S3C2410_PM=y CONFIG_CPU_S3C244X=y CONFIG_CPU_S3C2440=y @@ -172,6 +186,8 @@ CONFIG_CPU_CACHE_V4WT=y CONFIG_CPU_CACHE_VIVT=y CONFIG_CPU_COPY_V4WB=y CONFIG_CPU_TLB_V4WBI=y +CONFIG_CPU_CP15=y +CONFIG_CPU_CP15_MMU=y # # Processor Features @@ -225,9 +241,9 @@ CONFIG_ALIGNMENT_TRAP=y # # Boot options # -CONFIG_ZBOOT_ROM_TEXT=0 -CONFIG_ZBOOT_ROM_BSS=0 -CONFIG_CMDLINE="root=/dev/mmcblk0p2" +CONFIG_ZBOOT_ROM_TEXT=0x0 +CONFIG_ZBOOT_ROM_BSS=0x0 +CONFIG_CMDLINE="" # CONFIG_XIP_KERNEL is not set # @@ -255,6 +271,8 @@ CONFIG_BINFMT_MISC=y CONFIG_PM=y CONFIG_PM_LEGACY=y CONFIG_PM_DEBUG=y +# CONFIG_DISABLE_CONSOLE_SUSPEND is not set +# CONFIG_PM_SYSFS_DEPRECATED is not set CONFIG_APM=y # @@ -271,6 +289,7 @@ CONFIG_PACKET_MMAP=y CONFIG_UNIX=y CONFIG_XFRM=y # CONFIG_XFRM_USER is not set +# CONFIG_XFRM_SUB_POLICY is not set # CONFIG_NET_KEY is not set CONFIG_INET=y CONFIG_IP_MULTICAST=y @@ -289,10 +308,12 @@ CONFIG_IP_FIB_HASH=y # CONFIG_INET_TUNNEL is not set CONFIG_INET_XFRM_MODE_TRANSPORT=y CONFIG_INET_XFRM_MODE_TUNNEL=y +CONFIG_INET_XFRM_MODE_BEET=y CONFIG_INET_DIAG=y CONFIG_INET_TCP_DIAG=y # CONFIG_TCP_CONG_ADVANCED is not set -CONFIG_TCP_CONG_BIC=y +CONFIG_TCP_CONG_CUBIC=y +CONFIG_DEFAULT_TCP_CONG="cubic" # # IP: Virtual Server Configuration @@ -389,7 +410,7 @@ CONFIG_IRDA_FAST_RR=y # # SIR device drivers # -CONFIG_IRTTY_SIR=y +CONFIG_IRTTY_SIR=m # # Dongle support @@ -421,11 +442,12 @@ CONFIG_BT_HIDP=m # # Bluetooth device drivers # -CONFIG_BT_HCIUART=y +CONFIG_BT_HCIUART=m CONFIG_BT_HCIUART_H4=y -# CONFIG_BT_HCIUART_BCSP is not set +CONFIG_BT_HCIUART_BCSP=y # CONFIG_BT_HCIVHCI is not set # CONFIG_IEEE80211 is not set +CONFIG_WIRELESS_EXT=y # # Device Drivers @@ -465,6 +487,7 @@ CONFIG_MTD_BLOCK=y # CONFIG_NFTL is not set # CONFIG_INFTL is not set # CONFIG_RFD_FTL is not set +# CONFIG_SSFDC is not set # # RAM/ROM/Flash chip drivers @@ -560,6 +583,12 @@ CONFIG_BLK_DEV_INITRD=y # # CONFIG_RAID_ATTRS is not set # CONFIG_SCSI is not set +# CONFIG_SCSI_NETLINK is not set + +# +# Serial ATA (prod) and Parallel ATA (experimental) drivers +# +# CONFIG_ATA is not set # # Multi-device support (RAID and LVM) @@ -612,7 +641,17 @@ CONFIG_NETDEVICES=y # # Wireless LAN (non-hamradio) # -# CONFIG_NET_RADIO is not set +CONFIG_NET_RADIO=y +# CONFIG_NET_WIRELESS_RTNETLINK is not set + +# +# Obsolete Wireless cards support (pre-802.11) +# +# CONFIG_STRIP is not set +# CONFIG_HOSTAP is not set +CONFIG_ACX=m +CONFIG_ACX_MEM=y +CONFIG_ACX_RX3715=m # # Wan interfaces @@ -628,6 +667,7 @@ CONFIG_PPP_BSDCOMP=y # CONFIG_PPP_MPPE is not set # CONFIG_PPPOE is not set # CONFIG_SLIP is not set +CONFIG_SLHC=y # CONFIG_SHAPER is not set # CONFIG_NETCONSOLE is not set # CONFIG_NETPOLL is not set @@ -642,12 +682,13 @@ CONFIG_PPP_BSDCOMP=y # Input device support # CONFIG_INPUT=y +# CONFIG_INPUT_FF_MEMLESS is not set # # Userland interfaces # CONFIG_INPUT_MOUSEDEV=y -CONFIG_INPUT_MOUSEDEV_PSAUX=y +# CONFIG_INPUT_MOUSEDEV_PSAUX is not set CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024 CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768 # CONFIG_INPUT_JOYDEV is not set @@ -666,19 +707,24 @@ CONFIG_INPUT_KEYBOARD=y # CONFIG_KEYBOARD_LKKBD is not set # CONFIG_KEYBOARD_XTKBD is not set # CONFIG_KEYBOARD_NEWTON is not set +# CONFIG_KEYBOARD_STOWAWAY is not set CONFIG_GPIO_KEYS=y CONFIG_KEYBOARD_ASIC3=y -CONFIG_INPUT_MOUSE=y -# CONFIG_MOUSE_PS2 is not set -# CONFIG_MOUSE_SERIAL is not set -# CONFIG_MOUSE_NAVPOINT is not set -# CONFIG_MOUSE_VSXXXAA is not set +# CONFIG_INPUT_MOUSE is not set # CONFIG_INPUT_JOYSTICK is not set CONFIG_INPUT_TOUCHSCREEN=y +CONFIG_TOUCHSCREEN_S3C2410=y +# CONFIG_TOUCHSCREEN_S3C2410_DEBUG is not set # CONFIG_TOUCHSCREEN_GUNZE is not set # CONFIG_TOUCHSCREEN_ELO is not set # CONFIG_TOUCHSCREEN_MTOUCH is not set # CONFIG_TOUCHSCREEN_MK712 is not set +# CONFIG_TOUCHSCREEN_WM9705 is not set +# CONFIG_TOUCHSCREEN_WM9712 is not set +# CONFIG_TOUCHSCREEN_WM9713 is not set +# CONFIG_TOUCHSCREEN_PENMOUNT is not set +# CONFIG_TOUCHSCREEN_TOUCHRIGHT is not set +# CONFIG_TOUCHSCREEN_TOUCHWIN is not set # CONFIG_INPUT_MISC is not set # @@ -732,7 +778,6 @@ CONFIG_WATCHDOG=y CONFIG_S3C2410_WATCHDOG=y CONFIG_HW_RANDOM=y # CONFIG_NVRAM is not set -# CONFIG_S3C2410_RTC is not set # CONFIG_DTLK is not set # CONFIG_R3964 is not set @@ -745,13 +790,12 @@ CONFIG_HW_RANDOM=y # TPM devices # # CONFIG_TCG_TPM is not set -# CONFIG_TELCLOCK is not set # # I2C support # CONFIG_I2C=y -CONFIG_I2C_CHARDEV=m +CONFIG_I2C_CHARDEV=y # # I2C Algorithms @@ -783,7 +827,7 @@ CONFIG_I2C_S3C2410=m # CONFIG_SENSORS_MAX6875 is not set # CONFIG_I2C_DEBUG_CORE is not set # CONFIG_I2C_DEBUG_ALGO is not set -CONFIG_I2C_DEBUG_BUS=y +# CONFIG_I2C_DEBUG_BUS is not set # CONFIG_I2C_DEBUG_CHIP is not set # @@ -817,7 +861,12 @@ CONFIG_W1_DS2760=m # # CONFIG_HWMON is not set # CONFIG_HWMON_VID is not set -CONFIG_BATTERY_MONITOR=y + +# +# Hardware Monitoring - Battery +# +CONFIG_BATTERY_MONITOR=m +CONFIG_RX3715_BATTERY=m # # L3 serial bus support @@ -834,6 +883,7 @@ CONFIG_BATTERY_MONITOR=y # CONFIG_HTC_ASIC2 is not set CONFIG_HTC_ASIC3=y # CONFIG_SOC_TSC2101 is not set +# CONFIG_SOC_TSC2200 is not set # # Misc devices @@ -843,6 +893,8 @@ CONFIG_HTC_ASIC3=y # Multimedia Capabilities Port drivers # # CONFIG_MCP is not set +# CONFIG_ADC_ADS7846_SSP is not set +# CONFIG_TIFM_CORE is not set # # LED devices @@ -854,21 +906,21 @@ CONFIG_LEDS_CLASS=y # LED drivers # # CONFIG_LEDS_S3C24XX is not set -# CONFIG_LEDS_ASIC3 is not set +CONFIG_LEDS_ASIC3=y # # LED Triggers # CONFIG_LEDS_TRIGGERS=y CONFIG_LEDS_TRIGGER_TIMER=y +CONFIG_LEDS_TRIGGER_TIMER_ASIC3=y # CONFIG_LEDS_TRIGGER_HEARTBEAT is not set -# CONFIG_LEDS_TRIGGER_SHARED is not set +CONFIG_LEDS_TRIGGER_SHARED=y # # Multimedia devices # # CONFIG_VIDEO_DEV is not set -CONFIG_VIDEO_V4L2=y # # Digital Video Broadcasting Devices @@ -892,6 +944,7 @@ CONFIG_FB_TILEBLITTING=y CONFIG_FB_S3C2410=y # CONFIG_FB_S3C2410_DEBUG is not set # CONFIG_FB_VIRTUAL is not set +# CONFIG_FB_VSFB is not set # # Console display driver support @@ -925,11 +978,56 @@ CONFIG_BACKLIGHT_DEVICE=y CONFIG_LCD_CLASS_DEVICE=y CONFIG_LCD_DEVICE=y # CONFIG_BACKLIGHT_CORGI is not set +CONFIG_BACKLIGHT_S3C2410=y # # Sound # -# CONFIG_SOUND is not set +CONFIG_SOUND=m + +# +# Advanced Linux Sound Architecture +# +CONFIG_SND=m +CONFIG_SND_TIMER=m +CONFIG_SND_PCM=m +# CONFIG_SND_SEQUENCER is not set +CONFIG_SND_OSSEMUL=y +CONFIG_SND_MIXER_OSS=m +CONFIG_SND_PCM_OSS=m +CONFIG_SND_PCM_OSS_PLUGINS=y +# CONFIG_SND_DYNAMIC_MINORS is not set +CONFIG_SND_SUPPORT_OLD_API=y +CONFIG_SND_VERBOSE_PROCFS=y +# CONFIG_SND_VERBOSE_PRINTK is not set +# CONFIG_SND_DEBUG is not set + +# +# Generic devices +# +# CONFIG_SND_DUMMY is not set +# CONFIG_SND_MTPAV is not set +# CONFIG_SND_SERIAL_U16550 is not set +# CONFIG_SND_MPU401 is not set + +# +# ALSA ARM devices +# +CONFIG_SND_RX3715=m +CONFIG_SND_S3C2410=m +# CONFIG_SND_S3C2410_DBG is not set +# CONFIG_SND_S3C2410_DBG_DMA is not set + +# +# SoC audio support +# +# CONFIG_SND_SOC is not set +CONFIG_SND_UDA1380=m + +# +# Open Sound System +# +# CONFIG_SOUND_PRIME is not set # # USB support @@ -946,8 +1044,9 @@ CONFIG_USB_ARCH_HAS_OHCI=y # # USB Gadget Support # -CONFIG_USB_GADGET=m +CONFIG_USB_GADGET=y # CONFIG_USB_GADGET_DEBUG_FILES is not set +CONFIG_USB_GADGET_SELECTED=y # CONFIG_USB_GADGET_NET2280 is not set # CONFIG_USB_GADGET_PXA2XX is not set # CONFIG_USB_GADGET_PXA27X is not set @@ -955,9 +1054,20 @@ CONFIG_USB_GADGET=m # CONFIG_USB_GADGET_MQ11XX is not set # CONFIG_USB_GADGET_LH7A40X is not set # CONFIG_USB_GADGET_OMAP is not set +CONFIG_USB_GADGET_S3C2410=y +CONFIG_USB_S3C2410=y +# CONFIG_USB_S3C2410_DEBUG is not set # CONFIG_USB_GADGET_AT91 is not set # CONFIG_USB_GADGET_DUMMY_HCD is not set # CONFIG_USB_GADGET_DUALSPEED is not set +# CONFIG_USB_ZERO is not set +CONFIG_USB_ETH=y +CONFIG_USB_ETH_RNDIS=y +# CONFIG_USB_GADGETFS is not set +# CONFIG_USB_FILE_STORAGE is not set +# CONFIG_USB_G_SERIAL is not set +# CONFIG_USB_MIDI_GADGET is not set +# CONFIG_USB_G_CHAR is not set # # MMC/SD Card support @@ -965,6 +1075,7 @@ CONFIG_USB_GADGET=m CONFIG_MMC=y # CONFIG_MMC_DEBUG is not set CONFIG_MMC_BLOCK=y +# CONFIG_MMC_TIFM_SD is not set # CONFIG_MMC_TMIO is not set # CONFIG_MMC_SAMCOP is not set CONFIG_MMC_ASIC3=y @@ -976,6 +1087,7 @@ CONFIG_RTC_LIB=y CONFIG_RTC_CLASS=y CONFIG_RTC_HCTOSYS=y CONFIG_RTC_HCTOSYS_DEVICE="rtc0" +# CONFIG_RTC_DEBUG is not set # # RTC interfaces @@ -1009,10 +1121,12 @@ CONFIG_EXT2_FS=y # CONFIG_EXT2_FS_XATTR is not set # CONFIG_EXT2_FS_XIP is not set # CONFIG_EXT3_FS is not set +# CONFIG_EXT4DEV_FS is not set # CONFIG_REISERFS_FS is not set # CONFIG_JFS_FS is not set # CONFIG_FS_POSIX_ACL is not set # CONFIG_XFS_FS is not set +# CONFIG_GFS2_FS is not set # CONFIG_OCFS2_FS is not set # CONFIG_MINIX_FS is not set # CONFIG_ROMFS_FS is not set @@ -1044,8 +1158,10 @@ CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1" # Pseudo filesystems # CONFIG_PROC_FS=y +CONFIG_PROC_SYSCTL=y CONFIG_SYSFS=y CONFIG_TMPFS=y +# CONFIG_TMPFS_POSIX_ACL is not set # CONFIG_HUGETLB_PAGE is not set CONFIG_RAMFS=y # CONFIG_CONFIGFS_FS is not set @@ -1082,7 +1198,8 @@ CONFIG_JFFS2_RTIME=y # # CONFIG_NFS_FS is not set # CONFIG_NFSD is not set -# CONFIG_SMB_FS is not set +CONFIG_SMB_FS=m +# CONFIG_SMB_NLS_DEFAULT is not set # CONFIG_CIFS is not set # CONFIG_NCP_FS is not set # CONFIG_CODA_FS is not set @@ -1164,6 +1281,7 @@ CONFIG_OPROFILE=y # Kernel hacking # # CONFIG_PRINTK_TIME is not set +CONFIG_ENABLE_MUST_CHECK=y # CONFIG_MAGIC_SYSRQ is not set # CONFIG_UNUSED_SYMBOLS is not set # CONFIG_DEBUG_KERNEL is not set @@ -1171,7 +1289,7 @@ CONFIG_LOG_BUF_SHIFT=14 CONFIG_DEBUG_BUGVERBOSE=y # CONFIG_DEBUG_FS is not set CONFIG_FRAME_POINTER=y -# CONFIG_UNWIND_INFO is not set +# CONFIG_HEADERS_CHECK is not set # CONFIG_DEBUG_USER is not set CONFIG_DEBUG_S3C2410_UART=2 @@ -1185,6 +1303,9 @@ CONFIG_DEBUG_S3C2410_UART=2 # Cryptographic options # CONFIG_CRYPTO=y +CONFIG_CRYPTO_ALGAPI=y +CONFIG_CRYPTO_BLKCIPHER=m +CONFIG_CRYPTO_MANAGER=m # CONFIG_CRYPTO_HMAC is not set # CONFIG_CRYPTO_NULL is not set # CONFIG_CRYPTO_MD4 is not set @@ -1194,6 +1315,8 @@ CONFIG_CRYPTO_MD5=y # CONFIG_CRYPTO_SHA512 is not set # CONFIG_CRYPTO_WP512 is not set # CONFIG_CRYPTO_TGR192 is not set +CONFIG_CRYPTO_ECB=m +CONFIG_CRYPTO_CBC=m CONFIG_CRYPTO_DES=y # CONFIG_CRYPTO_BLOWFISH is not set # CONFIG_CRYPTO_TWOFISH is not set |