This patchset adds an ALSA ASoC driver for Tegra, and plumbs it into the Harmony board. Known issues: * Capture/recording has not been tested at all. This should work. There may be issues with concurrent capture/playback e.g. harmony_asoc_hw_params() shoudn't reprogram the clock if it's already at the correct rate, since it affects both streams. * harmony.c is missing controls/routing/DAPM setup logic. This is present in the ChromeOS code this driver was based on, but I haven't yet investigated whether it correctly describes Harmony, or some other board. * Noise especially at low sample rates. Not sure if this is a clock programming issue, or simply an issue in the board layout itself. * Not sure how to make snd-soc-tegra-harmony.ko auto-load based on running on Harmony. Perhaps ASoC machine module loading isn't meant to be automatic? * I2S FIFO is not drained when stopping playback. Equally, outstanding DMA requests are cancelled instead of drained. Need to investigate whether this will cut off the end of streams instead of flushing them out or not. * DMA driver's interrupt handler sometimes segfaults. Haven't found a reliable way to reproduce this yet (although it's typically accompanied by aplay complaining about underrun). Need to investigate this still. Anyway, I figure the current state is a good start for others to give feedback. My next steps are to look at forward-porting this to 2.6.37 or mainline kernel, then perform additional cleanups and fixes there. Stephen Warren (11): ARM: Add SZ_128 ARM: tegra: Add Kconfig for tegra_i2s_audio.c ARM: tegra: s/i2s/tegra-is2/ ARM: tegra: pll_a clock fixes ARM: tegra: Add tegra-das platform device definition ASoC: tegra: Base Kconfig infra-structure ASoC: tegra: Add tegra-das driver ASoC: tegra: Add tegra-pcm driver ASoC: tegra: Add tegra-i2s driver ASoC: tegra: Harmony machine support ARM: tegra: Enable Harmony audio support arch/arm/include/asm/sizes.h | 1 + arch/arm/mach-tegra/Kconfig | 8 + arch/arm/mach-tegra/Makefile | 2 +- arch/arm/mach-tegra/board-harmony-pinmux.c | 4 +- arch/arm/mach-tegra/board-harmony.c | 30 ++ arch/arm/mach-tegra/devices.c | 43 ++- arch/arm/mach-tegra/devices.h | 1 + arch/arm/mach-tegra/include/mach/iomap.h | 3 + arch/arm/mach-tegra/tegra2_clocks.c | 8 +- arch/arm/mach-tegra/tegra_i2s_audio.c | 2 +- sound/soc/Kconfig | 1 + sound/soc/Makefile | 1 + sound/soc/tegra/Kconfig | 29 ++ sound/soc/tegra/Makefile | 13 + sound/soc/tegra/harmony.c | 313 +++++++++++++++++++ sound/soc/tegra/tegra_das.c | 264 ++++++++++++++++ sound/soc/tegra/tegra_das.h | 119 +++++++ sound/soc/tegra/tegra_i2s.c | 468 ++++++++++++++++++++++++++++ sound/soc/tegra/tegra_i2s.h | 166 ++++++++++ sound/soc/tegra/tegra_pcm.c | 362 +++++++++++++++++++++ sound/soc/tegra/tegra_pcm.h | 57 ++++ 21 files changed, 1874 insertions(+), 21 deletions(-) create mode 100644 sound/soc/tegra/Kconfig create mode 100644 sound/soc/tegra/Makefile create mode 100644 sound/soc/tegra/harmony.c create mode 100644 sound/soc/tegra/tegra_das.c create mode 100644 sound/soc/tegra/tegra_das.h create mode 100644 sound/soc/tegra/tegra_i2s.c create mode 100644 sound/soc/tegra/tegra_i2s.h create mode 100644 sound/soc/tegra/tegra_pcm.c create mode 100644 sound/soc/tegra/tegra_pcm.h -- nvpublic -- To unsubscribe from this list: send the line "unsubscribe linux-tegra" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html