* [PATCH 00/19] Update and clean up on sound/arm/omap/omap-alsa*[c,h] (take #2) @ 2008-04-18 8:00 Eduardo Valentin 2008-04-18 8:00 ` [PATCH 01/19] Update audio driver for H2 board Eduardo Valentin 2008-04-23 23:57 ` [PATCH 00/19] Update and clean up on sound/arm/omap/omap-alsa*[c,h] (take #2) Tony Lindgren 0 siblings, 2 replies; 23+ messages in thread From: Eduardo Valentin @ 2008-04-18 8:00 UTC (permalink / raw) To: linux-omap; +Cc: Felipe Balbi, Ragner Magalhaes, Eduardo Valentin From: Eduardo Valentin <eduardo.valentin@indt.org.br> Hi all, This patch series cleans up most of the errors and warnings reported by checkpatch.pl on sound/arm/omap/omap-alsa*[c,h]. Some checks reported by checkpatch.pl were ignored, such as removing #if 0 codes. Not all were eligible for remotion. There is also one patch that updates the alsa driver for H2. Since tsc2101 i2c driver was updated, this alsa driver stop working. Cheers, --- Eduardo Valentin Eduardo Valentin (19): Update audio driver for H2 board Code clean-up for include/asm-arm/arch-omap/omap-alsa.h Code clean-up for sound/arm/omap/omap-alsa-aic23.c Code clean-up for sound/arm/omap/omap-alsa-aic23.h Code clean-up for sound/arm/omap/omap-alsa-aic23-mixer.c Code clean-up for sound/arm/omap/omap-alsa-dma.c Code clean-up for sound/arm/omap/omap-alsa-dma.h Code clean-up for sound/arm/omap/omap-alsa-sx1-mixer.c Code clean-up for sound/arm/omap/omap-alsa-sx1-mixer.h Code clean-up for sound/arm/omap/omap-alsa-sx1.c Code clean-up for sound/arm/omap/omap-alsa-sx1.h Code clean-up for sound/arm/omap/omap-alsa-tsc2101-mixer.c Code clean-up for sound/arm/omap/omap-alsa-tsc2101-mixer.h Code clean-up for sound/arm/omap/omap-alsa-tsc2101.c Code clean-up for sound/arm/omap/omap-alsa-tsc2101.h Code clean-up for sound/arm/omap/omap-alsa-tsc2102-mixer.c Code clean-up for sound/arm/omap/omap-alsa-tsc2102.c Code clean-up for sound/arm/omap/omap-alsa-tsc2102.h Code clean-up for sound/arm/omap/omap-alsa.c arch/arm/mach-omap1/board-h2.c | 71 ++-- include/asm-arm/arch-omap/omap-alsa.h | 29 +- sound/arm/omap/omap-alsa-aic23-mixer.c | 144 ++++--- sound/arm/omap/omap-alsa-aic23.c | 59 ++-- sound/arm/omap/omap-alsa-aic23.h | 12 +- sound/arm/omap/omap-alsa-dma.c | 171 ++++----- sound/arm/omap/omap-alsa-dma.h | 22 +- sound/arm/omap/omap-alsa-sx1-mixer.c | 22 +- sound/arm/omap/omap-alsa-sx1-mixer.h | 6 +- sound/arm/omap/omap-alsa-sx1.c | 72 +++- sound/arm/omap/omap-alsa-sx1.h | 3 +- sound/arm/omap/omap-alsa-tsc2101-mixer.c | 631 ++++++++++++++++-------------- sound/arm/omap/omap-alsa-tsc2101-mixer.h | 31 +- sound/arm/omap/omap-alsa-tsc2101.c | 320 ++++++++++----- sound/arm/omap/omap-alsa-tsc2101.h | 11 +- sound/arm/omap/omap-alsa-tsc2102-mixer.c | 14 +- sound/arm/omap/omap-alsa-tsc2102.c | 70 ++-- sound/arm/omap/omap-alsa-tsc2102.h | 2 +- sound/arm/omap/omap-alsa.c | 163 ++++---- 19 files changed, 1056 insertions(+), 797 deletions(-) ^ permalink raw reply [flat|nested] 23+ messages in thread
* [PATCH 01/19] Update audio driver for H2 board 2008-04-18 8:00 [PATCH 00/19] Update and clean up on sound/arm/omap/omap-alsa*[c,h] (take #2) Eduardo Valentin @ 2008-04-18 8:00 ` Eduardo Valentin 2008-04-18 8:00 ` [PATCH 02/19] Code clean-up for include/asm-arm/arch-omap/omap-alsa.h Eduardo Valentin 2008-04-23 23:57 ` [PATCH 00/19] Update and clean up on sound/arm/omap/omap-alsa*[c,h] (take #2) Tony Lindgren 1 sibling, 1 reply; 23+ messages in thread From: Eduardo Valentin @ 2008-04-18 8:00 UTC (permalink / raw) To: linux-omap; +Cc: Felipe Balbi, Ragner Magalhaes, Eduardo Valentin From: Eduardo Valentin <eduardo.valentin@indt.org.br> This patch updates the audio driver based on tsc2101 chip for H2 board. tsc2101 driver was updated against new spi framework, but its audio driver for H2 wasn't. Signed-off-by: Eduardo Valentin <eduardo.valentin@indt.org.br> --- arch/arm/mach-omap1/board-h2.c | 71 +++++++++++++++--------------- sound/arm/omap/omap-alsa-tsc2101-mixer.c | 7 ++- sound/arm/omap/omap-alsa-tsc2101-mixer.h | 2 + sound/arm/omap/omap-alsa-tsc2101.c | 28 ++++++++++-- sound/arm/omap/omap-alsa-tsc2101.h | 5 ++ 5 files changed, 70 insertions(+), 43 deletions(-) diff --git a/arch/arm/mach-omap1/board-h2.c b/arch/arm/mach-omap1/board-h2.c index aa1f8af..4f8e6da 100644 --- a/arch/arm/mach-omap1/board-h2.c +++ b/arch/arm/mach-omap1/board-h2.c @@ -320,6 +320,40 @@ static void h2_lcd_dev_init(struct spi_device *tsc2101) platform_device_register(&h2_lcd_device); } +static struct omap_mcbsp_reg_cfg mcbsp_regs = { + .spcr2 = FREE | FRST | GRST | XRST | XINTM(3), + .spcr1 = RINTM(3) | RRST, + .rcr2 = RPHASE | RFRLEN2(OMAP_MCBSP_WORD_8) | + RWDLEN2(OMAP_MCBSP_WORD_16) | RDATDLY(1), + .rcr1 = RFRLEN1(OMAP_MCBSP_WORD_8) | RWDLEN1(OMAP_MCBSP_WORD_16), + .xcr2 = XPHASE | XFRLEN2(OMAP_MCBSP_WORD_8) | + XWDLEN2(OMAP_MCBSP_WORD_16) | XDATDLY(1) | XFIG, + .xcr1 = XFRLEN1(OMAP_MCBSP_WORD_8) | XWDLEN1(OMAP_MCBSP_WORD_16), + .srgr1 = FWID(15), + .srgr2 = GSYNC | CLKSP | FSGM | FPER(31), + .pcr0 = CLKXM | CLKRM | FSXP | FSRP | CLKXP | CLKRP, + /*.pcr0 = CLKXP | CLKRP,*/ /* mcbsp: slave */ +}; + +static struct omap_alsa_codec_config alsa_config = { + .name = "H2 TSC2101", + .mcbsp_regs_alsa = &mcbsp_regs, +}; + +static struct platform_device h2_mcbsp1_device = { + .name = "omap_alsa_mcbsp", + .id = 1, + .dev = { + .platform_data = &alsa_config, + }, +}; + +static void h2_audio_dev_init(struct spi_device *tsc2101) +{ + h2_mcbsp1_device.dev.platform_data = tsc2101; + platform_device_register(&h2_mcbsp1_device); +} + static int h2_tsc2101_init(struct spi_device *spi) { int r; @@ -344,6 +378,7 @@ static int h2_tsc2101_init(struct spi_device *spi) omap_cfg_reg(N15_1610_UWIRE_CS1); h2_lcd_dev_init(spi); + h2_audio_dev_init(spi); return 0; err: @@ -386,48 +421,12 @@ static struct spi_board_info h2_spi_board_info[] __initdata = { }, }; -static struct omap_mcbsp_reg_cfg mcbsp_regs = { - .spcr2 = FREE | FRST | GRST | XRST | XINTM(3), - .spcr1 = RINTM(3) | RRST, - .rcr2 = RPHASE | RFRLEN2(OMAP_MCBSP_WORD_8) | - RWDLEN2(OMAP_MCBSP_WORD_16) | RDATDLY(1), - .rcr1 = RFRLEN1(OMAP_MCBSP_WORD_8) | RWDLEN1(OMAP_MCBSP_WORD_16), - .xcr2 = XPHASE | XFRLEN2(OMAP_MCBSP_WORD_8) | - XWDLEN2(OMAP_MCBSP_WORD_16) | XDATDLY(1) | XFIG, - .xcr1 = XFRLEN1(OMAP_MCBSP_WORD_8) | XWDLEN1(OMAP_MCBSP_WORD_16), - .srgr1 = FWID(15), - .srgr2 = GSYNC | CLKSP | FSGM | FPER(31), - - .pcr0 = CLKXM | CLKRM | FSXP | FSRP | CLKXP | CLKRP, - /*.pcr0 = CLKXP | CLKRP,*/ /* mcbsp: slave */ -}; - -static struct omap_alsa_codec_config alsa_config = { - .name = "H2 TSC2101", - .mcbsp_regs_alsa = &mcbsp_regs, - .codec_configure_dev = NULL, /* tsc2101_configure, */ - .codec_set_samplerate = NULL, /* tsc2101_set_samplerate, */ - .codec_clock_setup = NULL, /* tsc2101_clock_setup, */ - .codec_clock_on = NULL, /* tsc2101_clock_on, */ - .codec_clock_off = NULL, /* tsc2101_clock_off, */ - .get_default_samplerate = NULL, /* tsc2101_get_default_samplerate, */ -}; - -static struct platform_device h2_mcbsp1_device = { - .name = "omap_alsa_mcbsp", - .id = 1, - .dev = { - .platform_data = &alsa_config, - }, -}; - static struct platform_device *h2_devices[] __initdata = { &h2_nor_device, &h2_nand_device, &h2_smc91x_device, &h2_irda_device, &h2_kp_device, - &h2_mcbsp1_device, }; static void __init h2_init_smc91x(void) diff --git a/sound/arm/omap/omap-alsa-tsc2101-mixer.c b/sound/arm/omap/omap-alsa-tsc2101-mixer.c index 8faba95..09257d7 100644 --- a/sound/arm/omap/omap-alsa-tsc2101-mixer.c +++ b/sound/arm/omap/omap-alsa-tsc2101-mixer.c @@ -43,6 +43,7 @@ #include "omap-alsa-tsc2101.h" #include "omap-alsa-tsc2101-mixer.h" +#include <linux/spi/tsc2101.h> #include <linux/types.h> #include <sound/initval.h> #include <sound/control.h> @@ -68,7 +69,8 @@ static int current_rec_src = REC_SRC_SINGLE_ENDED_MICIN_HED; */ inline void omap_tsc2101_audio_write(u8 address, u16 data) { - omap_tsc2101_write(PAGE2_AUDIO_CODEC_REGISTERS, address, data); + tsc2101_write_sync(mcbsp_dev.tsc2101_dev, PAGE2_AUDIO_CODEC_REGISTERS, + address, data); } /* @@ -76,7 +78,8 @@ inline void omap_tsc2101_audio_write(u8 address, u16 data) */ inline u16 omap_tsc2101_audio_read(u8 address) { - return (omap_tsc2101_read(PAGE2_AUDIO_CODEC_REGISTERS, address)); + return (tsc2101_read_sync(mcbsp_dev.tsc2101_dev, + PAGE2_AUDIO_CODEC_REGISTERS, address)); } /* diff --git a/sound/arm/omap/omap-alsa-tsc2101-mixer.h b/sound/arm/omap/omap-alsa-tsc2101-mixer.h index 513614c..b110b36 100644 --- a/sound/arm/omap/omap-alsa-tsc2101-mixer.h +++ b/sound/arm/omap/omap-alsa-tsc2101-mixer.h @@ -76,4 +76,6 @@ #define TSC2101_AUDIO_CODEC_REGISTERS_PAGE2 (2) +extern struct mcbsp_dev_info mcbsp_dev; + #endif /*OMAPALSATSC2101MIXER_H_*/ diff --git a/sound/arm/omap/omap-alsa-tsc2101.c b/sound/arm/omap/omap-alsa-tsc2101.c index 88ed046..1d8adc1 100644 --- a/sound/arm/omap/omap-alsa-tsc2101.c +++ b/sound/arm/omap/omap-alsa-tsc2101.c @@ -22,6 +22,7 @@ #include <linux/soundcard.h> #include <linux/platform_device.h> #include <linux/clk.h> +#include <linux/spi/tsc2101.h> #include <asm/io.h> #include <asm/arch/mcbsp.h> @@ -38,6 +39,8 @@ #include <asm/arch/omap-alsa.h> #include "omap-alsa-tsc2101.h" +struct mcbsp_dev_info mcbsp_dev; + static struct clk *tsc2101_mclk = 0; //#define DUMP_TSC2101_AUDIO_REGISTERS @@ -143,7 +146,8 @@ static struct snd_pcm_hardware tsc2101_snd_omap_alsa_capture = { */ inline void tsc2101_audio_write(u8 address, u16 data) { - omap_tsc2101_write(PAGE2_AUDIO_CODEC_REGISTERS, address, data); + tsc2101_write_sync(mcbsp_dev.tsc2101_dev, PAGE2_AUDIO_CODEC_REGISTERS, + address, data); } /* @@ -151,7 +155,8 @@ inline void tsc2101_audio_write(u8 address, u16 data) */ inline u16 tsc2101_audio_read(u8 address) { - return (omap_tsc2101_read(PAGE2_AUDIO_CODEC_REGISTERS, address)); + return (tsc2101_read_sync(mcbsp_dev.tsc2101_dev, + PAGE2_AUDIO_CODEC_REGISTERS, address)); } #ifdef DUMP_TSC2101_AUDIO_REGISTERS @@ -341,9 +346,9 @@ int tsc2101_clock_on(void) err); // Now turn the audio on - omap_tsc2101_write(PAGE2_AUDIO_CODEC_REGISTERS, - TSC2101_CODEC_POWER_CTRL, - 0x0000); + tsc2101_write_sync(mcbsp_dev.tsc2101_dev, PAGE2_AUDIO_CODEC_REGISTERS, + TSC2101_CODEC_POWER_CTRL, + 0x0000); return 0; } @@ -382,9 +387,22 @@ int tsc2101_get_default_samplerate(void) static int __devinit snd_omap_alsa_tsc2101_probe(struct platform_device *pdev) { + struct spi_device *tsc2101; int ret; struct omap_alsa_codec_config *codec_cfg; + tsc2101 = dev_get_drvdata(&pdev->dev); + if (tsc2101 == NULL) { + dev_err(&pdev->dev, "no platform data\n"); + return -ENODEV; + } + if (strncmp(tsc2101->modalias, "tsc2101", 8) != 0) { + dev_err(&pdev->dev, "tsc2101 not found\n"); + return -EINVAL; + } + mcbsp_dev.mcbsp_dev = pdev; + mcbsp_dev.tsc2101_dev = tsc2101; + codec_cfg = pdev->dev.platform_data; if (codec_cfg != NULL) { codec_cfg->hw_constraints_rates = &tsc2101_hw_constraints_rates; diff --git a/sound/arm/omap/omap-alsa-tsc2101.h b/sound/arm/omap/omap-alsa-tsc2101.h index 85dccbb..73999a0 100644 --- a/sound/arm/omap/omap-alsa-tsc2101.h +++ b/sound/arm/omap/omap-alsa-tsc2101.h @@ -42,6 +42,11 @@ #define PAGE2_AUDIO_CODEC_REGISTERS (2) +struct mcbsp_dev_info { + struct platform_device *mcbsp_dev; + struct spi_device *tsc2101_dev; +}; + struct tsc2101_samplerate_reg_info { u16 sample_rate; u8 divisor; -- 1.5.5-rc3.GIT ^ permalink raw reply related [flat|nested] 23+ messages in thread
* [PATCH 02/19] Code clean-up for include/asm-arm/arch-omap/omap-alsa.h 2008-04-18 8:00 ` [PATCH 01/19] Update audio driver for H2 board Eduardo Valentin @ 2008-04-18 8:00 ` Eduardo Valentin 2008-04-18 8:00 ` [PATCH 03/19] Code clean-up for sound/arm/omap/omap-alsa-aic23.c Eduardo Valentin 0 siblings, 1 reply; 23+ messages in thread From: Eduardo Valentin @ 2008-04-18 8:00 UTC (permalink / raw) To: linux-omap; +Cc: Felipe Balbi, Ragner Magalhaes, Eduardo Valentin From: Eduardo Valentin <eduardo.valentin@indt.org.br> Removed lots of whitespaces and a few errors and warnings reported by checkpatch.pl. Signed-off-by: Eduardo Valentin <eduardo.valentin@indt.org.br> --- include/asm-arm/arch-omap/omap-alsa.h | 29 +++++++++++++++++++---------- 1 files changed, 19 insertions(+), 10 deletions(-) diff --git a/include/asm-arm/arch-omap/omap-alsa.h b/include/asm-arm/arch-omap/omap-alsa.h index 0f8a7d3..9eaa7f2 100644 --- a/include/asm-arm/arch-omap/omap-alsa.h +++ b/include/asm-arm/arch-omap/omap-alsa.h @@ -49,15 +49,23 @@ * Debug functions */ #undef DEBUG -//#define DEBUG +/* #define DEBUG */ -#define ERR(ARGS...) printk(KERN_ERR "{%s}-ERROR: ", __FUNCTION__);printk(ARGS); +#define ERR(ARGS...) \ + do { \ + printk(KERN_ERR "{%s}-ERROR: ", __func__); \ + printk(ARGS); \ + } while (0) #ifdef DEBUG -#define DPRINTK(ARGS...) printk(KERN_INFO "<%s>: ",__FUNCTION__);printk(ARGS) -#define ADEBUG() printk("XXX Alsa debug f:%s, l:%d\n", __FUNCTION__, __LINE__) -#define FN_IN printk(KERN_INFO "[%s]: start\n", __FUNCTION__) -#define FN_OUT(n) printk(KERN_INFO "[%s]: end(%u)\n",__FUNCTION__, n) +#define DPRINTK(ARGS...) \ + do { \ + printk(KERN_INFO "<%s>: ", __func__); \ + printk(ARGS); \ + } while (0) +#define ADEBUG() printk("XXX Alsa debug f:%s, l:%d\n", __func__, __LINE__) +#define FN_IN printk(KERN_INFO "[%s]: start\n", __func__) +#define FN_OUT(n) printk(KERN_INFO "[%s]: end(%u)\n", __func__, n) #else #define DPRINTK(ARGS...) /* nop */ #define ADEBUG() /* nop */ @@ -81,12 +89,12 @@ struct audio_stream { char dma_q_count; /* DMA Channel Q Count */ int active:1; /* we are using this stream for transfer now */ int period; /* current transfer period */ - int periods; /* current count of periods registerd in the DMA engine */ + int periods; /* current registered periods in DMA engine */ spinlock_t dma_lock; /* for locking in DMA operations */ struct snd_pcm_substream *stream; /* the pcm stream */ unsigned linked:1; /* dma channels linked */ - int offset; /* store start position of the last period in the alsa buffer */ - int (*hw_start)(void); /* interface to start HW interface, e.g. McBSP */ + int offset; /* start position of last period in alsa buf */ + int (*hw_start)(void); /* interface to start HW interface, (McBSP) */ int (*hw_stop)(void); /* interface to stop HW interface, e.g. McBSP */ }; @@ -127,7 +135,8 @@ void snd_omap_suspend_mixer(void); void snd_omap_resume_mixer(void); #endif -int snd_omap_alsa_post_probe(struct platform_device *pdev, struct omap_alsa_codec_config *config); +int snd_omap_alsa_post_probe(struct platform_device *pdev, + struct omap_alsa_codec_config *config); int snd_omap_alsa_remove(struct platform_device *pdev); #ifdef CONFIG_PM int snd_omap_alsa_suspend(struct platform_device *pdev, pm_message_t state); -- 1.5.5-rc3.GIT ^ permalink raw reply related [flat|nested] 23+ messages in thread
* [PATCH 03/19] Code clean-up for sound/arm/omap/omap-alsa-aic23.c 2008-04-18 8:00 ` [PATCH 02/19] Code clean-up for include/asm-arm/arch-omap/omap-alsa.h Eduardo Valentin @ 2008-04-18 8:00 ` Eduardo Valentin 2008-04-18 8:00 ` [PATCH 04/19] Code clean-up for sound/arm/omap/omap-alsa-aic23.h Eduardo Valentin 0 siblings, 1 reply; 23+ messages in thread From: Eduardo Valentin @ 2008-04-18 8:00 UTC (permalink / raw) To: linux-omap; +Cc: Felipe Balbi, Ragner Magalhaes, Eduardo Valentin From: Eduardo Valentin <eduardo.valentin@indt.org.br> Removed lots of whitespaces and a few errors and warnings reported by checkpatch.pl. Signed-off-by: Eduardo Valentin <eduardo.valentin@indt.org.br> --- sound/arm/omap/omap-alsa-aic23.c | 59 ++++++++++++++++++++------------------ sound/arm/omap/omap-alsa-aic23.h | 2 + 2 files changed, 33 insertions(+), 28 deletions(-) diff --git a/sound/arm/omap/omap-alsa-aic23.c b/sound/arm/omap/omap-alsa-aic23.c index 4d67fa3..1e43608 100644 --- a/sound/arm/omap/omap-alsa-aic23.c +++ b/sound/arm/omap/omap-alsa-aic23.c @@ -1,6 +1,6 @@ /* * arch/arm/mach-omap1/omap-alsa-aic23.c - * + * * Alsa codec Driver for AIC23 chip on OSK5912 platform board * * Copyright (C) 2005 Instituto Nokia de Tecnologia - INdT - Manaus Brazil @@ -8,7 +8,7 @@ * {daniel.petrini, david.cohen, anderson.briglia}@indt.org.br * * Copyright (C) 2006 Mika Laitio <lamikr@cc.jyu.fi> - * + * * Based in former alsa driver for osk and oss driver * * This program is free software; you can redistribute it and/or modify it @@ -28,7 +28,7 @@ #include <asm/arch/omap-alsa.h> #include "omap-alsa-aic23.h" -static struct clk *aic23_mclk = 0; +static struct clk *aic23_mclk; /* aic23 related */ static const struct aic23_samplerate_reg_info @@ -48,7 +48,7 @@ static const struct aic23_samplerate_reg_info /* * Hardware capabilities */ - + /* * DAC USB-mode sampling rates (MCLK = 12 MHz) * The rates and rate_reg_into MUST be in the same order @@ -67,7 +67,7 @@ static struct snd_pcm_hw_constraint_list aic23_hw_constraints_rates = { static struct snd_pcm_hardware aic23_snd_omap_alsa_playback = { .info = (SNDRV_PCM_INFO_INTERLEAVED | SNDRV_PCM_INFO_BLOCK_TRANSFER | - SNDRV_PCM_INFO_MMAP | SNDRV_PCM_INFO_MMAP_VALID), + SNDRV_PCM_INFO_MMAP | SNDRV_PCM_INFO_MMAP_VALID), .formats = (SNDRV_PCM_FMTBIT_S16_LE), .rates = (SNDRV_PCM_RATE_8000 | SNDRV_PCM_RATE_16000 | SNDRV_PCM_RATE_22050 | SNDRV_PCM_RATE_32000 | @@ -112,8 +112,6 @@ static struct snd_pcm_hardware aic23_snd_omap_alsa_capture = { * codec dependent code. */ -extern int aic23_write_value(u8 reg, u16 value); - /* TLV320AIC23 is a write only device */ void audio_aic23_write(u8 address, u16 data) { @@ -172,8 +170,12 @@ inline void aic23_configure(void) /* Initialize the AIC23 internal state */ - /* Analog audio path control, DAC selected, delete INSEL_MIC for line in */ - audio_aic23_write(ANALOG_AUDIO_CONTROL_ADDR, DEFAULT_ANALOG_AUDIO_CONTROL); + /* + * Analog audio path control, DAC selected, + * delete INSEL_MIC for line-in + */ + audio_aic23_write(ANALOG_AUDIO_CONTROL_ADDR, + DEFAULT_ANALOG_AUDIO_CONTROL); /* Digital audio path control, de-emphasis control 44.1kHz */ audio_aic23_write(DIGITAL_AUDIO_CONTROL_ADDR, DEEMP_44K); @@ -191,11 +193,11 @@ inline void aic23_configure(void) } /* - * Omap MCBSP clock configuration and Power Management - * - * Here we have some functions that allows clock to be enabled and - * disabled only when needed. Besides doing clock configuration - * it allows turn on/turn off audio when necessary. + * OMAP MCBSP clock configuration and Power Management + * + * Here we have some functions that allow clock to be enabled and + * disabled only when needed. Besides doing clock configuration + * it allows turn on/turn off audio when necessary. */ /* * Do clock framework mclk search @@ -207,7 +209,7 @@ void aic23_clock_setup(void) /* * Do some sanity check, set clock rate, starts it and - * turn codec audio on + * turn codec audio on */ int aic23_clock_on(void) { @@ -236,9 +238,9 @@ int aic23_clock_on(void) clk_get_usecount(aic23_mclk)); /* Now turn the audio on */ - audio_aic23_write(POWER_DOWN_CONTROL_ADDR, + audio_aic23_write(POWER_DOWN_CONTROL_ADDR, ~DEVICE_POWER_OFF & ~OUT_OFF & ~DAC_OFF & - ~ADC_OFF & ~MIC_OFF & ~LINE_OFF); + ~ADC_OFF & ~MIC_OFF & ~LINE_OFF); return 0; } @@ -248,7 +250,7 @@ int aic23_clock_on(void) */ int aic23_clock_off(void) { - if (clk_get_usecount(aic23_mclk) > 0) { + if (clk_get_usecount(aic23_mclk) > 0) { if (clk_get_rate(aic23_mclk) != CODEC_CLOCK) { printk(KERN_WARNING "MCLK for audio should be %d Hz. But is %d Hz\n", @@ -258,10 +260,10 @@ int aic23_clock_off(void) clk_disable(aic23_mclk); } - + audio_aic23_write(POWER_DOWN_CONTROL_ADDR, DEVICE_POWER_OFF | OUT_OFF | DAC_OFF | - ADC_OFF | MIC_OFF | LINE_OFF); + ADC_OFF | MIC_OFF | LINE_OFF); return 0; } @@ -274,21 +276,22 @@ static int __devinit snd_omap_alsa_aic23_probe(struct platform_device *pdev) { int ret; struct omap_alsa_codec_config *codec_cfg; - + codec_cfg = pdev->dev.platform_data; if (codec_cfg != NULL) { codec_cfg->hw_constraints_rates = &aic23_hw_constraints_rates; - codec_cfg->snd_omap_alsa_playback = &aic23_snd_omap_alsa_playback; - codec_cfg->snd_omap_alsa_capture = &aic23_snd_omap_alsa_capture; + codec_cfg->snd_omap_alsa_playback = + &aic23_snd_omap_alsa_playback; + codec_cfg->snd_omap_alsa_capture = &aic23_snd_omap_alsa_capture; codec_cfg->codec_configure_dev = aic23_configure; codec_cfg->codec_set_samplerate = aic23_set_samplerate; codec_cfg->codec_clock_setup = aic23_clock_setup; codec_cfg->codec_clock_on = aic23_clock_on; codec_cfg->codec_clock_off = aic23_clock_off; - codec_cfg->get_default_samplerate = aic23_get_default_samplerate; + codec_cfg->get_default_samplerate = + aic23_get_default_samplerate; ret = snd_omap_alsa_post_probe(pdev, codec_cfg); - } - else + } else ret = -ENODEV; return ret; } @@ -306,7 +309,7 @@ static struct platform_driver omap_alsa_driver = { static int __init omap_alsa_aic23_init(void) { int err; - + ADEBUG(); err = platform_driver_register(&omap_alsa_driver); @@ -316,7 +319,7 @@ static int __init omap_alsa_aic23_init(void) static void __exit omap_alsa_aic23_exit(void) { ADEBUG(); - + platform_driver_unregister(&omap_alsa_driver); } diff --git a/sound/arm/omap/omap-alsa-aic23.h b/sound/arm/omap/omap-alsa-aic23.h index e2e2d59..8b11a69 100644 --- a/sound/arm/omap/omap-alsa-aic23.h +++ b/sound/arm/omap/omap-alsa-aic23.h @@ -67,6 +67,8 @@ struct aic23_samplerate_reg_info { u8 divider; /* if 0 CLKIN = MCLK, if 1 CLKIN = MCLK/2 */ }; +extern int aic23_write_value(u8 reg, u16 value); + /* * Defines codec specific functions pointers that can be used from the * common omap-alse base driver for all omap codecs. (tsc2101 and aic23) -- 1.5.5-rc3.GIT ^ permalink raw reply related [flat|nested] 23+ messages in thread
* [PATCH 04/19] Code clean-up for sound/arm/omap/omap-alsa-aic23.h 2008-04-18 8:00 ` [PATCH 03/19] Code clean-up for sound/arm/omap/omap-alsa-aic23.c Eduardo Valentin @ 2008-04-18 8:00 ` Eduardo Valentin 2008-04-18 8:00 ` [PATCH 05/19] Code clean-up for sound/arm/omap/omap-alsa-aic23-mixer.c Eduardo Valentin 0 siblings, 1 reply; 23+ messages in thread From: Eduardo Valentin @ 2008-04-18 8:00 UTC (permalink / raw) To: linux-omap; +Cc: Felipe Balbi, Ragner Magalhaes, Eduardo Valentin From: Eduardo Valentin <eduardo.valentin@indt.org.br> Removed lots of whitespaces and a few errors and warnings reported by checkpatch.pl. Signed-off-by: Eduardo Valentin <eduardo.valentin@indt.org.br> --- sound/arm/omap/omap-alsa-aic23.h | 9 +++++---- 1 files changed, 5 insertions(+), 4 deletions(-) diff --git a/sound/arm/omap/omap-alsa-aic23.h b/sound/arm/omap/omap-alsa-aic23.h index 8b11a69..66dc56b 100644 --- a/sound/arm/omap/omap-alsa-aic23.h +++ b/sound/arm/omap/omap-alsa-aic23.h @@ -1,6 +1,6 @@ /* * sound/arm/omap-alsa-aic23.h - * + * * Alsa Driver for AIC23 codec on OSK5912 platform board * * Copyright (C) 2005 Instituto Nokia de Tecnologia - INdT - Manaus Brazil @@ -59,7 +59,8 @@ #define SIDETONE_12 0x080 #define SIDETONE_18 0x0c0 -#define DEFAULT_ANALOG_AUDIO_CONTROL DAC_SELECTED | STE_ENABLED | BYPASS_ON | INSEL_MIC | MICB_20DB +#define DEFAULT_ANALOG_AUDIO_CONTROL (DAC_SELECTED | STE_ENABLED | \ + BYPASS_ON | INSEL_MIC | MICB_20DB) struct aic23_samplerate_reg_info { u32 sample_rate; @@ -70,8 +71,8 @@ struct aic23_samplerate_reg_info { extern int aic23_write_value(u8 reg, u16 value); /* - * Defines codec specific functions pointers that can be used from the - * common omap-alse base driver for all omap codecs. (tsc2101 and aic23) + * Defines codec specific function pointers that can be used from the + * common omap-alsa base driver for all omap codecs. (tsc2101 and aic23) */ void define_codec_functions(struct omap_alsa_codec_config *codec_config); inline void aic23_configure(void); -- 1.5.5-rc3.GIT ^ permalink raw reply related [flat|nested] 23+ messages in thread
* [PATCH 05/19] Code clean-up for sound/arm/omap/omap-alsa-aic23-mixer.c 2008-04-18 8:00 ` [PATCH 04/19] Code clean-up for sound/arm/omap/omap-alsa-aic23.h Eduardo Valentin @ 2008-04-18 8:00 ` Eduardo Valentin 2008-04-18 8:00 ` [PATCH 06/19] Code clean-up for sound/arm/omap/omap-alsa-dma.c Eduardo Valentin 0 siblings, 1 reply; 23+ messages in thread From: Eduardo Valentin @ 2008-04-18 8:00 UTC (permalink / raw) To: linux-omap; +Cc: Felipe Balbi, Ragner Magalhaes, Eduardo Valentin From: Eduardo Valentin <eduardo.valentin@indt.org.br> Removed lots of whitespaces and a few errors and warnings reported by checkpatch.pl. Signed-off-by: Eduardo Valentin <eduardo.valentin@indt.org.br> --- sound/arm/omap/omap-alsa-aic23-mixer.c | 144 ++++++++++++++++++------------- sound/arm/omap/omap-alsa-aic23.h | 1 + 2 files changed, 85 insertions(+), 60 deletions(-) diff --git a/sound/arm/omap/omap-alsa-aic23-mixer.c b/sound/arm/omap/omap-alsa-aic23-mixer.c index ce55824..7f06582 100644 --- a/sound/arm/omap/omap-alsa-aic23-mixer.c +++ b/sound/arm/omap/omap-alsa-aic23-mixer.c @@ -46,7 +46,9 @@ #include <sound/initval.h> #include <sound/control.h> -MODULE_AUTHOR("David Cohen, Daniel Petrini - INdT"); +MODULE_AUTHOR("David Cohen"); +MODULE_AUTHOR("Daniel Petrini"); + MODULE_LICENSE("GPL"); MODULE_DESCRIPTION("OMAP Alsa mixer driver for ALSA"); @@ -55,9 +57,8 @@ MODULE_DESCRIPTION("OMAP Alsa mixer driver for ALSA"); */ /* Codec AIC23 */ -#if defined(CONFIG_SENSORS_TLV320AIC23) || defined (CONFIG_SENSORS_TLV320AIC23_MODULE) - -extern void audio_aic23_write(u8, u16); +#if defined(CONFIG_SENSORS_TLV320AIC23) || \ + defined(CONFIG_SENSORS_TLV320AIC23_MODULE) #define MIXER_NAME "Mixer AIC23" #define SND_OMAP_WRITE(reg, val) audio_aic23_write(reg, val) @@ -73,7 +74,8 @@ extern void audio_aic23_write(u8, u16); .info = snd_omap_info_bool, \ .get = snd_omap_get_bool, \ .put = snd_omap_put_bool, \ - .private_value = reg | (reg_index << 8) | (invert << 10) | (mask << 12) \ + .private_value = reg | (reg_index << 8) | (invert << 10) | \ + (mask << 12) \ } #define OMAP_MUX(xname, reg, reg_index, mask) \ @@ -94,7 +96,8 @@ extern void audio_aic23_write(u8, u16); .info = snd_omap_info_single, \ .get = snd_omap_get_single, \ .put = snd_omap_put_single, \ - .private_value = reg | (reg_val << 8) | (reg_index << 16) | (mask << 18) \ + .private_value = reg | (reg_val << 8) | (reg_index << 16) |\ + (mask << 18) \ } #define OMAP_DOUBLE(xname, xindex, left_reg, right_reg, reg_index, mask) \ @@ -105,7 +108,8 @@ extern void audio_aic23_write(u8, u16); .info = snd_omap_info_double, \ .get = snd_omap_get_double, \ .put = snd_omap_put_double, \ - .private_value = left_reg | (right_reg << 8) | (reg_index << 16) | (mask << 18) \ + .private_value = left_reg | (right_reg << 8) | (reg_index << 16) | \ + (mask << 18) \ } /* Local Registers */ @@ -141,7 +145,7 @@ u16 snd_sidetone[6] = { /* Begin Bool Functions */ static int snd_omap_info_bool(struct snd_kcontrol *kcontrol, - struct snd_ctl_elem_info * uinfo) + struct snd_ctl_elem_info *uinfo) { uinfo->type = SNDRV_CTL_ELEM_TYPE_BOOLEAN; uinfo->count = 1; @@ -151,8 +155,8 @@ static int snd_omap_info_bool(struct snd_kcontrol *kcontrol, return 0; } -static int snd_omap_get_bool(struct snd_kcontrol * kcontrol, - struct snd_ctl_elem_value * ucontrol) +static int snd_omap_get_bool(struct snd_kcontrol *kcontrol, + struct snd_ctl_elem_value *ucontrol) { int mic_index = (kcontrol->private_value >> 8) & 0x03; u16 mask = (kcontrol->private_value >> 12) & 0xff; @@ -168,8 +172,8 @@ static int snd_omap_get_bool(struct snd_kcontrol * kcontrol, return 0; } -static int snd_omap_put_bool(struct snd_kcontrol * kcontrol, - struct snd_ctl_elem_value * ucontrol) +static int snd_omap_put_bool(struct snd_kcontrol *kcontrol, + struct snd_ctl_elem_value *ucontrol) { int mic_index = (kcontrol->private_value >> 8) & 0x03; u16 mask = (kcontrol->private_value >> 12) & 0xff; @@ -199,7 +203,7 @@ static int snd_omap_put_bool(struct snd_kcontrol * kcontrol, /* Begin Mux Functions */ static int snd_omap_info_mux(struct snd_kcontrol *kcontrol, - struct snd_ctl_elem_info * uinfo) + struct snd_ctl_elem_info *uinfo) { /* Mic = 0 * Line = 1 */ @@ -218,20 +222,20 @@ static int snd_omap_info_mux(struct snd_kcontrol *kcontrol, return 0; } -static int snd_omap_get_mux(struct snd_kcontrol * kcontrol, - struct snd_ctl_elem_value * ucontrol) +static int snd_omap_get_mux(struct snd_kcontrol *kcontrol, + struct snd_ctl_elem_value *ucontrol) { u16 mask = (kcontrol->private_value >> 10) & 0xff; - int mux_index = (kcontrol->private_value >> 8) & 0x03; + int mux_idx = (kcontrol->private_value >> 8) & 0x03; ucontrol->value.enumerated.item[0] = - (omap_regs[mux_index].l_reg & mask) ? 0 /* Mic */ : 1 /* Line */; + (omap_regs[mux_idx].l_reg & mask) ? 0 /* Mic */ : 1 /* Line */; return 0; } -static int snd_omap_put_mux(struct snd_kcontrol * kcontrol, - struct snd_ctl_elem_value * ucontrol) +static int snd_omap_put_mux(struct snd_kcontrol *kcontrol, + struct snd_ctl_elem_value *ucontrol) { u16 reg = kcontrol->private_value & 0xff; u16 mask = (kcontrol->private_value >> 10) & 0xff; @@ -254,7 +258,7 @@ static int snd_omap_put_mux(struct snd_kcontrol * kcontrol, /* Begin Single Functions */ static int snd_omap_info_single(struct snd_kcontrol *kcontrol, - struct snd_ctl_elem_info * uinfo) + struct snd_ctl_elem_info *uinfo) { int mask = (kcontrol->private_value >> 18) & 0xff; int reg_val = (kcontrol->private_value >> 8) & 0xff; @@ -268,8 +272,8 @@ static int snd_omap_info_single(struct snd_kcontrol *kcontrol, return 0; } -static int snd_omap_get_single(struct snd_kcontrol * kcontrol, - struct snd_ctl_elem_value * ucontrol) +static int snd_omap_get_single(struct snd_kcontrol *kcontrol, + struct snd_ctl_elem_value *ucontrol) { u16 reg_val = (kcontrol->private_value >> 8) & 0xff; @@ -278,8 +282,8 @@ static int snd_omap_get_single(struct snd_kcontrol * kcontrol, return 0; } -static int snd_omap_put_single(struct snd_kcontrol * kcontrol, - struct snd_ctl_elem_value * ucontrol) +static int snd_omap_put_single(struct snd_kcontrol *kcontrol, + struct snd_ctl_elem_value *ucontrol) { u16 reg_index = (kcontrol->private_value >> 16) & 0x03; u16 mask = (kcontrol->private_value >> 18) & 0x1ff; @@ -311,10 +315,12 @@ static int snd_omap_put_single(struct snd_kcontrol * kcontrol, /* Begin Double Functions */ static int snd_omap_info_double(struct snd_kcontrol *kcontrol, - struct snd_ctl_elem_info * uinfo) + struct snd_ctl_elem_info *uinfo) { - /* mask == 0 : Switch - * mask != 0 : Volume */ + /* + * mask == 0 : Switch + * mask != 0 : Volume + */ int mask = (kcontrol->private_value >> 18) & 0xff; uinfo->type = mask ? SNDRV_CTL_ELEM_TYPE_INTEGER : @@ -326,11 +332,13 @@ static int snd_omap_info_double(struct snd_kcontrol *kcontrol, return 0; } -static int snd_omap_get_double(struct snd_kcontrol * kcontrol, - struct snd_ctl_elem_value * ucontrol) +static int snd_omap_get_double(struct snd_kcontrol *kcontrol, + struct snd_ctl_elem_value *ucontrol) { - /* mask == 0 : Switch - * mask != 0 : Volume */ + /* + * mask == 0 : Switch + * mask != 0 : Volume + */ int mask = (kcontrol->private_value >> 18) & 0xff; int vol_index = (kcontrol->private_value >> 16) & 0x03; @@ -346,8 +354,8 @@ static int snd_omap_get_double(struct snd_kcontrol * kcontrol, return 0; } -static int snd_omap_put_double(struct snd_kcontrol * kcontrol, - struct snd_ctl_elem_value * ucontrol) +static int snd_omap_put_double(struct snd_kcontrol *kcontrol, + struct snd_ctl_elem_value *ucontrol) { /* mask == 0 : Switch * mask != 0 : Volume */ @@ -371,8 +379,10 @@ static int snd_omap_put_double(struct snd_kcontrol * kcontrol, omap_regs[vol_index].sw = ucontrol->value.integer.value[0]; } else { /* Volume */ - if ((omap_regs[vol_index].l_reg != (ucontrol->value.integer.value[0] & mask)) || - (omap_regs[vol_index].r_reg != (ucontrol->value.integer.value[1] & mask))) { + if ((omap_regs[vol_index].l_reg != + (ucontrol->value.integer.value[0] & mask)) || + (omap_regs[vol_index].r_reg != + (ucontrol->value.integer.value[1] & mask))) { changed = 1; omap_regs[vol_index].l_reg &= ~mask; @@ -383,11 +393,12 @@ static int snd_omap_put_double(struct snd_kcontrol * kcontrol, (ucontrol->value.integer.value[1] & mask); if (omap_regs[vol_index].sw) { /* write to registers only if sw is actived */ - SND_OMAP_WRITE(left_reg, omap_regs[vol_index].l_reg); - SND_OMAP_WRITE(right_reg, omap_regs[vol_index].r_reg); + SND_OMAP_WRITE(left_reg, + omap_regs[vol_index].l_reg); + SND_OMAP_WRITE(right_reg, + omap_regs[vol_index].r_reg); } - } - else { + } else { changed = 0; } } @@ -398,20 +409,27 @@ static int snd_omap_put_double(struct snd_kcontrol * kcontrol, /* End Double Functions */ static struct snd_kcontrol_new snd_omap_controls[] = { - OMAP_DOUBLE("PCM Playback Switch", 0, LEFT_CHANNEL_VOLUME_ADDR, RIGHT_CHANNEL_VOLUME_ADDR, - PCM_INDEX, 0x00), - OMAP_DOUBLE("PCM Playback Volume", 0, LEFT_CHANNEL_VOLUME_ADDR, RIGHT_CHANNEL_VOLUME_ADDR, - PCM_INDEX, OUTPUT_VOLUME_MASK), - OMAP_BOOL("Line Playback Switch", 0, ANALOG_AUDIO_CONTROL_ADDR, AAC_INDEX, BYPASS_ON, 0), - OMAP_DOUBLE("Line Capture Switch", 0, LEFT_LINE_VOLUME_ADDR, RIGHT_LINE_VOLUME_ADDR, - LINE_INDEX, 0x00), - OMAP_DOUBLE("Line Capture Volume", 0, LEFT_LINE_VOLUME_ADDR, RIGHT_LINE_VOLUME_ADDR, - LINE_INDEX, INPUT_VOLUME_MASK), - OMAP_BOOL("Mic Playback Switch", 0, ANALOG_AUDIO_CONTROL_ADDR, AAC_INDEX, STE_ENABLED, 0), - OMAP_SINGLE("Mic Playback Volume", 0, ANALOG_AUDIO_CONTROL_ADDR, AAC_INDEX, 5, SIDETONE_MASK), - OMAP_BOOL("Mic Capture Switch", 0, ANALOG_AUDIO_CONTROL_ADDR, AAC_INDEX, MICM_MUTED, 1), - OMAP_BOOL("Mic Booster Playback Switch", 0, ANALOG_AUDIO_CONTROL_ADDR, AAC_INDEX, MICB_20DB, 0), - OMAP_MUX("Capture Source", ANALOG_AUDIO_CONTROL_ADDR, AAC_INDEX, INSEL_MIC), + OMAP_DOUBLE("PCM Playback Switch", 0, LEFT_CHANNEL_VOLUME_ADDR, + RIGHT_CHANNEL_VOLUME_ADDR, PCM_INDEX, 0x00), + OMAP_DOUBLE("PCM Playback Volume", 0, LEFT_CHANNEL_VOLUME_ADDR, + RIGHT_CHANNEL_VOLUME_ADDR, PCM_INDEX, + OUTPUT_VOLUME_MASK), + OMAP_BOOL("Line Playback Switch", 0, ANALOG_AUDIO_CONTROL_ADDR, + AAC_INDEX, BYPASS_ON, 0), + OMAP_DOUBLE("Line Capture Switch", 0, LEFT_LINE_VOLUME_ADDR, + RIGHT_LINE_VOLUME_ADDR, LINE_INDEX, 0x00), + OMAP_DOUBLE("Line Capture Volume", 0, LEFT_LINE_VOLUME_ADDR, + RIGHT_LINE_VOLUME_ADDR, LINE_INDEX, INPUT_VOLUME_MASK), + OMAP_BOOL("Mic Playback Switch", 0, ANALOG_AUDIO_CONTROL_ADDR, + AAC_INDEX, STE_ENABLED, 0), + OMAP_SINGLE("Mic Playback Volume", 0, ANALOG_AUDIO_CONTROL_ADDR, + AAC_INDEX, 5, SIDETONE_MASK), + OMAP_BOOL("Mic Capture Switch", 0, ANALOG_AUDIO_CONTROL_ADDR, + AAC_INDEX, MICM_MUTED, 1), + OMAP_BOOL("Mic Booster Playback Switch", 0, ANALOG_AUDIO_CONTROL_ADDR, + AAC_INDEX, MICB_20DB, 0), + OMAP_MUX("Capture Source", ANALOG_AUDIO_CONTROL_ADDR, AAC_INDEX, + INSEL_MIC), }; #ifdef CONFIG_PM @@ -447,8 +465,10 @@ void snd_omap_resume_mixer(void) omap_regs[PCM_INDEX].l_reg = omap_pm_regs[PCM_INDEX].l_reg; omap_regs[PCM_INDEX].r_reg = omap_pm_regs[PCM_INDEX].r_reg; omap_regs[PCM_INDEX].sw = omap_pm_regs[PCM_INDEX].sw; - SND_OMAP_WRITE(LEFT_CHANNEL_VOLUME_ADDR, omap_pm_regs[PCM_INDEX].l_reg); - SND_OMAP_WRITE(RIGHT_CHANNEL_VOLUME_ADDR, omap_pm_regs[PCM_INDEX].r_reg); + SND_OMAP_WRITE(LEFT_CHANNEL_VOLUME_ADDR, + omap_pm_regs[PCM_INDEX].l_reg); + SND_OMAP_WRITE(RIGHT_CHANNEL_VOLUME_ADDR, + omap_pm_regs[PCM_INDEX].r_reg); } #endif @@ -460,8 +480,10 @@ void snd_omap_init_mixer(void) omap_regs[LINE_INDEX].l_reg = DEFAULT_INPUT_VOLUME & INPUT_VOLUME_MASK; omap_regs[LINE_INDEX].r_reg = DEFAULT_INPUT_VOLUME & INPUT_VOLUME_MASK; omap_regs[LINE_INDEX].sw = 0; - SND_OMAP_WRITE(LEFT_LINE_VOLUME_ADDR, DEFAULT_INPUT_VOLUME & INPUT_VOLUME_MASK); - SND_OMAP_WRITE(RIGHT_LINE_VOLUME_ADDR, DEFAULT_INPUT_VOLUME & INPUT_VOLUME_MASK); + SND_OMAP_WRITE(LEFT_LINE_VOLUME_ADDR, + DEFAULT_INPUT_VOLUME & INPUT_VOLUME_MASK); + SND_OMAP_WRITE(RIGHT_LINE_VOLUME_ADDR, + DEFAULT_INPUT_VOLUME & INPUT_VOLUME_MASK); /* Analog Audio Control's default values */ omap_regs[AAC_INDEX].l_reg = DEFAULT_ANALOG_AUDIO_CONTROL; @@ -490,10 +512,12 @@ int snd_omap_mixer(struct snd_card_omap_codec *chip) strcpy(card->mixername, MIXER_NAME); /* Registering alsa mixer controls */ - for (idx = 0; idx < ARRAY_SIZE(snd_omap_controls); idx++) - if ((err = snd_ctl_add(card, - snd_ctl_new1(&snd_omap_controls[idx], chip))) < 0) + for (idx = 0; idx < ARRAY_SIZE(snd_omap_controls); idx++) { + err = snd_ctl_add(card, + snd_ctl_new1(&snd_omap_controls[idx], chip)); + if (err < 0) return err; + } return 0; } diff --git a/sound/arm/omap/omap-alsa-aic23.h b/sound/arm/omap/omap-alsa-aic23.h index 66dc56b..e7dfc15 100644 --- a/sound/arm/omap/omap-alsa-aic23.h +++ b/sound/arm/omap/omap-alsa-aic23.h @@ -74,6 +74,7 @@ extern int aic23_write_value(u8 reg, u16 value); * Defines codec specific function pointers that can be used from the * common omap-alsa base driver for all omap codecs. (tsc2101 and aic23) */ +void audio_aic23_write(u8 address, u16 data); void define_codec_functions(struct omap_alsa_codec_config *codec_config); inline void aic23_configure(void); void aic23_set_samplerate(long rate); -- 1.5.5-rc3.GIT ^ permalink raw reply related [flat|nested] 23+ messages in thread
* [PATCH 06/19] Code clean-up for sound/arm/omap/omap-alsa-dma.c 2008-04-18 8:00 ` [PATCH 05/19] Code clean-up for sound/arm/omap/omap-alsa-aic23-mixer.c Eduardo Valentin @ 2008-04-18 8:00 ` Eduardo Valentin 2008-04-18 8:00 ` [PATCH 07/19] Code clean-up for sound/arm/omap/omap-alsa-dma.h Eduardo Valentin 0 siblings, 1 reply; 23+ messages in thread From: Eduardo Valentin @ 2008-04-18 8:00 UTC (permalink / raw) To: linux-omap; +Cc: Felipe Balbi, Ragner Magalhaes, Eduardo Valentin From: Eduardo Valentin <eduardo.valentin@indt.org.br> Removed lots of whitespaces and a few errors and warnings reported by checkpatch.pl. Signed-off-by: Eduardo Valentin <eduardo.valentin@indt.org.br> --- sound/arm/omap/omap-alsa-dma.c | 171 +++++++++++++++++++-------------------- 1 files changed, 83 insertions(+), 88 deletions(-) diff --git a/sound/arm/omap/omap-alsa-dma.c b/sound/arm/omap/omap-alsa-dma.c index 00359cb..3f9ff68 100644 --- a/sound/arm/omap/omap-alsa-dma.c +++ b/sound/arm/omap/omap-alsa-dma.c @@ -6,7 +6,7 @@ * Copyright (C) 2006 Mika Laitio <lamikr@cc.jyu.fi> * * Copyright (C) 2005 Instituto Nokia de Tecnologia - INdT - Manaus Brazil - * + * * Copyright (C) 2004 Texas Instruments, Inc. * * Copyright (C) 2000, 2001 Nicolas Pitre <nico@cam.org> @@ -21,24 +21,30 @@ * * History: * - * 2004-06-07 Sriram Kannan - Created new file from omap_audio_dma_intfc.c. This file - * will contain only the DMA interface and buffer handling of OMAP - * audio driver. + * 2004-06-07 Sriram Kannan - Created new file from omap_audio_dma_intfc.c. + * This file will contain only the DMA interface + * and buffer handling of OMAP audio driver. + * + * 2004-06-22 Sriram Kannan - removed legacy code (auto-init). Self-linking + * of DMA logical channel. * - * 2004-06-22 Sriram Kannan - removed legacy code (auto-init). Self-linking of DMA logical channel. + * 2004-08-12 Nishanth Menon - Modified to integrate Audio requirements on + * 1610, 1710 platforms * - * 2004-08-12 Nishanth Menon - Modified to integrate Audio requirements on 1610,1710 platforms + * 2004-11-01 Nishanth Menon - 16xx platform code base modified to support + * multi channel chaining. * - * 2004-11-01 Nishanth Menon - 16xx platform code base modified to support multi channel chaining. + * 2004-12-15 Nishanth Menon - Improved 16xx platform channel logic + * introduced - tasklets, queue handling updated * - * 2004-12-15 Nishanth Menon - Improved 16xx platform channel logic introduced - tasklets, queue handling updated - * - * 2005-07-19 INdT Kernel Team - Alsa port. Creation of new file omap-alsa-dma.c based in - * omap-audio-dma-intfc.c oss file. Support for aic23 codec. - * Removal of buffer handling (Alsa does that), modifications - * in dma handling and port to alsa structures. + * 2005-07-19 INdT Kernel Team - Alsa port. Creation of new file + * omap-alsa-dma.c based in omap-audio-dma-intfc.c + * oss file. Support for aic23 codec. Removal of + * buffer handling (Alsa does that), modifications + * in dma handling and port to alsa structures. * - * 2005-12-18 Dirk Behme - Added L/R Channel Interchange fix as proposed by Ajaya Babu + * 2005-12-18 Dirk Behme - Added L/R Channel Interchange fix as proposed + * by Ajaya Babu */ #include <linux/module.h> @@ -56,24 +62,21 @@ #include <linux/sysrq.h> #include <linux/interrupt.h> #include <linux/dma-mapping.h> +#include <linux/io.h> +#include <linux/uaccess.h> -#include <asm/uaccess.h> -#include <asm/io.h> #include <asm/hardware.h> #include <asm/semaphore.h> - #include <asm/arch/dma.h> -#include "omap-alsa-dma.h" - #include <asm/arch/mcbsp.h> - #include <asm/arch/omap-alsa.h> -#undef DEBUG +#include "omap-alsa-dma.h" -#define ERR(ARGS...) printk(KERN_ERR "{%s}-ERROR: ", __FUNCTION__);printk(ARGS); +#undef DEBUG -/* Channel Queue Handling macros +/* + * Channel Queue Handling macros * tail always points to the current free entry * Head always points to the current entry being used * end is either head or tail @@ -83,13 +86,21 @@ #define AUDIO_QUEUE_FULL(s) (nr_linked_channels == s->dma_q_count) #define AUDIO_QUEUE_LAST(s) (1 == s->dma_q_count) #define AUDIO_QUEUE_EMPTY(s) (0 == s->dma_q_count) -#define __AUDIO_INCREMENT_QUEUE(end) ((end)=((end)+1) % nr_linked_channels) -#define AUDIO_INCREMENT_HEAD(s) __AUDIO_INCREMENT_QUEUE(s->dma_q_head); s->dma_q_count--; -#define AUDIO_INCREMENT_TAIL(s) __AUDIO_INCREMENT_QUEUE(s->dma_q_tail); s->dma_q_count++; +#define __AUDIO_INCREMENT_QUEUE(end) ((end) = ((end)+1) % nr_linked_channels) +#define AUDIO_INCREMENT_HEAD(s) \ + do { \ + __AUDIO_INCREMENT_QUEUE(s->dma_q_head); \ + s->dma_q_count--; \ + } while (0) +#define AUDIO_INCREMENT_TAIL(s) \ + do { \ + __AUDIO_INCREMENT_QUEUE(s->dma_q_tail); \ + s->dma_q_count++; \ + } while (0) /* DMA buffer fragmentation sizes */ #define MAX_DMA_SIZE 0x1000000 /* todo: sync with alsa */ -//#define CUT_DMA_SIZE 0x1000 +/* #define CUT_DMA_SIZE 0x1000 */ /* TODO: To be moved to more appropriate location */ #define DCSR_ERROR 0x3 #define DCSR_END_BLOCK (1 << 5) @@ -100,7 +111,7 @@ #define DCCR_EN (1 << 7) #define DCCR_AI (1 << 8) #define DCCR_REPEAT (1 << 9) -/* if 0 the channel works in 3.1 compatible mode*/ +/* if 0 the channel works in 3.1 compatible mode */ #define DCCR_N31COMP (1 << 10) #define DCCR_EP (1 << 11) #define DCCR_SRC_AMODE_BIT 12 @@ -112,26 +123,22 @@ #define AMODE_SINGLE_INDEX 0x2 #define AMODE_DOUBLE_INDEX 0x3 -/**************************** DATA STRUCTURES *****************************************/ - -static spinlock_t dma_list_lock = SPIN_LOCK_UNLOCKED; - +/* Data structures */ +DEFINE_SPINLOCK(dma_list_lock); static char nr_linked_channels = 1; -/*********************************** MODULE SPECIFIC FUNCTIONS ***********************/ +/* Module specific functions */ static void sound_dma_irq_handler(int lch, u16 ch_status, void *data); static int audio_set_dma_params_play(int channel, dma_addr_t dma_ptr, u_int dma_size); static int audio_set_dma_params_capture(int channel, dma_addr_t dma_ptr, u_int dma_size); -static int audio_start_dma_chain(struct audio_stream * s); +static int audio_start_dma_chain(struct audio_stream *s); -/*************************************************************************************** - * +/* * DMA channel requests - * - **************************************************************************************/ + */ static void omap_sound_dma_link_lch(void *data) { @@ -166,8 +173,7 @@ int omap_request_alsa_sound_dma(int device_id, const char *device_name, return -EPERM; } /* Try allocate memory for the num channels */ - *channels = - (int *) kmalloc(sizeof(int) * nr_linked_channels, GFP_KERNEL); + *channels = kmalloc(sizeof(int) * nr_linked_channels, GFP_KERNEL); chan = *channels; if (NULL == chan) { ERR("No Memory for channel allocs!\n"); @@ -176,18 +182,19 @@ int omap_request_alsa_sound_dma(int device_id, const char *device_name, } spin_lock(&dma_list_lock); for (i = 0; i < nr_linked_channels; i++) { - err = omap_request_dma(device_id, + err = omap_request_dma(device_id, device_name, - sound_dma_irq_handler, + sound_dma_irq_handler, data, &chan[i]); /* Handle Failure condition here */ if (err < 0) { int j; - for (j = 0; j < i; j++) { + + for (j = 0; j < i; j++) omap_free_dma(chan[j]); - } + spin_unlock(&dma_list_lock); kfree(chan); *channels = NULL; @@ -206,12 +213,11 @@ int omap_request_alsa_sound_dma(int device_id, const char *device_name, FN_OUT(0); return 0; } +EXPORT_SYMBOL(omap_request_alsa_sound_dma); -/*************************************************************************************** - * +/* * DMA channel requests Freeing - * - **************************************************************************************/ + */ static void omap_sound_dma_unlink_lch(void *data) { struct audio_stream *s = (struct audio_stream *)data; @@ -238,7 +244,7 @@ int omap_free_alsa_sound_dma(void *data, int **channels) { int i; int *chan = NULL; - + FN_IN; if (unlikely(NULL == channels)) { BUG(); @@ -262,17 +268,16 @@ int omap_free_alsa_sound_dma(void *data, int **channels) FN_OUT(0); return 0; } +EXPORT_SYMBOL(omap_free_alsa_sound_dma); -/*************************************************************************************** - * +/* * Stop all the DMA channels of the stream - * - **************************************************************************************/ + */ void omap_stop_alsa_sound_dma(struct audio_stream *s) { int *chan = s->lch; int i; - + FN_IN; if (unlikely(NULL == chan)) { BUG(); @@ -286,31 +291,30 @@ void omap_stop_alsa_sound_dma(struct audio_stream *s) FN_OUT(0); return; } -/*************************************************************************************** - * +EXPORT_SYMBOL(omap_stop_alsa_sound_dma); + +/* * Clear any pending transfers - * - **************************************************************************************/ -void omap_clear_alsa_sound_dma(struct audio_stream * s) + */ +void omap_clear_alsa_sound_dma(struct audio_stream *s) { FN_IN; omap_clear_dma(s->lch[s->dma_q_head]); FN_OUT(0); return; } +EXPORT_SYMBOL(omap_clear_alsa_sound_dma); -/*************************************************************************************** - * +/* * DMA related functions - * - **************************************************************************************/ + */ static int audio_set_dma_params_play(int channel, dma_addr_t dma_ptr, u_int dma_size) { int dt = 0x1; /* data type 16 */ int cen = 32; /* Stereo */ int cfn = dma_size / (2 * cen); - + FN_IN; omap_set_dma_dest_params(channel, 0x05, 0x00, (OMAP1510_MCBSP1_BASE + 0x06), @@ -328,7 +332,7 @@ static int audio_set_dma_params_capture(int channel, dma_addr_t dma_ptr, int dt = 0x1; /* data type 16 */ int cen = 32; /* stereo */ int cfn = dma_size / (2 * cen); - + FN_IN; omap_set_dma_src_params(channel, 0x05, 0x00, (OMAP1510_MCBSP1_BASE + 0x02), @@ -344,7 +348,7 @@ static int audio_start_dma_chain(struct audio_stream *s) int channel = s->lch[s->dma_q_head]; FN_IN; if (!s->started) { - s->hw_stop(); /* stops McBSP Interface */ + s->hw_stop(); /* stops McBSP Interface */ omap_start_dma(channel); s->started = 1; s->hw_start(); /* start McBSP interface */ @@ -355,12 +359,13 @@ static int audio_start_dma_chain(struct audio_stream *s) return 0; } -/* Start DMA - +/* + * Start DMA - * Do the initial set of work to initialize all the channels as required. * We shall then initate a transfer */ -int omap_start_alsa_sound_dma(struct audio_stream *s, - dma_addr_t dma_ptr, +int omap_start_alsa_sound_dma(struct audio_stream *s, + dma_addr_t dma_ptr, u_int dma_size) { int ret = -EPERM; @@ -372,13 +377,9 @@ int omap_start_alsa_sound_dma(struct audio_stream *s, MAX_DMA_SIZE); return -EOVERFLOW; } - //if (AUDIO_QUEUE_FULL(s)) { - // ret = -2; - // goto sound_out; - //} if (s->stream_id == SNDRV_PCM_STREAM_PLAYBACK) { - /*playback */ + /* playback */ ret = audio_set_dma_params_play(s->lch[s->dma_q_tail], dma_ptr, dma_size); @@ -393,17 +394,18 @@ int omap_start_alsa_sound_dma(struct audio_stream *s, } AUDIO_INCREMENT_TAIL(s); ret = audio_start_dma_chain(s); - if (ret) { + if (ret) ERR("dma start failed"); - } - sound_out: + +sound_out: FN_OUT(ret); return ret; } +EXPORT_SYMBOL(omap_start_alsa_sound_dma); -/* - * ISRs have to be short and smart.. +/* + * ISRs have to be short and smart.. * Here we call alsa handling, after some error checking */ static void sound_dma_irq_handler(int sound_curr_lch, u16 ch_status, @@ -413,9 +415,7 @@ static void sound_dma_irq_handler(int sound_curr_lch, u16 ch_status, struct audio_stream *s = (struct audio_stream *) data; FN_IN; - /* - * some register checkings - */ + /* some register checking */ DPRINTK("lch=%d,status=0x%x, dma_status=%d, data=%p\n", sound_curr_lch, ch_status, dma_status, data); @@ -426,7 +426,7 @@ static void sound_dma_irq_handler(int sound_curr_lch, u16 ch_status, return; } - if (ch_status & DCSR_END_BLOCK) + if (ch_status & DCSR_END_BLOCK) callback_omap_alsa_sound_dma(s); FN_OUT(0); return; @@ -436,8 +436,3 @@ MODULE_AUTHOR("Texas Instruments"); MODULE_DESCRIPTION("Common DMA handling for Audio driver on OMAP processors"); MODULE_LICENSE("GPL"); -EXPORT_SYMBOL(omap_start_alsa_sound_dma); -EXPORT_SYMBOL(omap_clear_alsa_sound_dma); -EXPORT_SYMBOL(omap_request_alsa_sound_dma); -EXPORT_SYMBOL(omap_free_alsa_sound_dma); -EXPORT_SYMBOL(omap_stop_alsa_sound_dma); -- 1.5.5-rc3.GIT ^ permalink raw reply related [flat|nested] 23+ messages in thread
* [PATCH 07/19] Code clean-up for sound/arm/omap/omap-alsa-dma.h 2008-04-18 8:00 ` [PATCH 06/19] Code clean-up for sound/arm/omap/omap-alsa-dma.c Eduardo Valentin @ 2008-04-18 8:00 ` Eduardo Valentin 2008-04-18 8:00 ` [PATCH 08/19] Code clean-up for sound/arm/omap/omap-alsa-sx1-mixer.c Eduardo Valentin 0 siblings, 1 reply; 23+ messages in thread From: Eduardo Valentin @ 2008-04-18 8:00 UTC (permalink / raw) To: linux-omap; +Cc: Felipe Balbi, Ragner Magalhaes, Eduardo Valentin From: Eduardo Valentin <eduardo.valentin@indt.org.br> Removed lots of whitespaces and a few errors and warnings reported by checkpatch.pl. Signed-off-by: Eduardo Valentin <eduardo.valentin@indt.org.br> --- sound/arm/omap/omap-alsa-dma.h | 22 +++++++++++----------- 1 files changed, 11 insertions(+), 11 deletions(-) diff --git a/sound/arm/omap/omap-alsa-dma.h b/sound/arm/omap/omap-alsa-dma.h index 1cecc8a..2f0e4e8 100644 --- a/sound/arm/omap/omap-alsa-dma.h +++ b/sound/arm/omap/omap-alsa-dma.h @@ -1,4 +1,4 @@ -/* +/* * linux/sound/arm/omap/omap-alsa-dma.h * * Common audio DMA handling for the OMAP processors @@ -6,7 +6,7 @@ * Copyright (C) 2006 Mika Laitio <lamikr@cc.jyu.fi> * * Copyright (C) 2005 Instituto Nokia de Tecnologia - INdT - Manaus Brazil - * + * * Copyright (C) 2004 Texas Instruments, Inc. * * Copyright (C) 2000, 2001 Nicolas Pitre <nico@cam.org> @@ -21,8 +21,9 @@ * * History: * - * - * 2004/08/12 Nishanth Menon - Modified to integrate Audio requirements on 1610,1710 platforms + * + * 2004/08/12 Nishanth Menon - Modified to integrate Audio requirements on + * 1610, 1710 platforms * * 2005/07/25 INdT Kernel Team - Renamed to omap-alsa-dma.h. Ported to Alsa. */ @@ -30,23 +31,22 @@ #ifndef __OMAP_AUDIO_ALSA_DMA_H #define __OMAP_AUDIO_ALSA_DMA_H -/************************** INCLUDES *************************************/ - #include <asm/arch/omap-alsa.h> -/************************** GLOBAL DATA STRUCTURES *********************************/ +/* Global data structures */ typedef void (*dma_callback_t) (int lch, u16 ch_status, void *data); -/**************** ARCH SPECIFIC FUNCIONS *******************************************/ +/* arch specific functions */ -void omap_clear_alsa_sound_dma(struct audio_stream * s); +void omap_clear_alsa_sound_dma(struct audio_stream *s); int omap_request_alsa_sound_dma(int device_id, const char *device_name, - void *data, int **channels); + void *data, int **channels); int omap_free_alsa_sound_dma(void *data, int **channels); -int omap_start_alsa_sound_dma(struct audio_stream *s, dma_addr_t dma_ptr, u_int dma_size); +int omap_start_alsa_sound_dma(struct audio_stream *s, dma_addr_t dma_ptr, + u_int dma_size); void omap_stop_alsa_sound_dma(struct audio_stream *s); -- 1.5.5-rc3.GIT ^ permalink raw reply related [flat|nested] 23+ messages in thread
* [PATCH 08/19] Code clean-up for sound/arm/omap/omap-alsa-sx1-mixer.c 2008-04-18 8:00 ` [PATCH 07/19] Code clean-up for sound/arm/omap/omap-alsa-dma.h Eduardo Valentin @ 2008-04-18 8:00 ` Eduardo Valentin 2008-04-18 8:00 ` [PATCH 09/19] Code clean-up for sound/arm/omap/omap-alsa-sx1-mixer.h Eduardo Valentin 0 siblings, 1 reply; 23+ messages in thread From: Eduardo Valentin @ 2008-04-18 8:00 UTC (permalink / raw) To: linux-omap; +Cc: Felipe Balbi, Ragner Magalhaes, Eduardo Valentin From: Eduardo Valentin <eduardo.valentin@indt.org.br> Removed lots of whitespaces and a few errors and warnings reported by checkpatch.pl. Signed-off-by: Eduardo Valentin <eduardo.valentin@indt.org.br> --- sound/arm/omap/omap-alsa-sx1-mixer.c | 22 +++++++++++----------- 1 files changed, 11 insertions(+), 11 deletions(-) diff --git a/sound/arm/omap/omap-alsa-sx1-mixer.c b/sound/arm/omap/omap-alsa-sx1-mixer.c index 631b080..d0c3322 100644 --- a/sound/arm/omap/omap-alsa-sx1-mixer.c +++ b/sound/arm/omap/omap-alsa-sx1-mixer.c @@ -111,9 +111,9 @@ static int pcm_playback_target_info(struct snd_kcontrol *kcontrol, uinfo->type = SNDRV_CTL_ELEM_TYPE_ENUMERATED; uinfo->count = 1; uinfo->value.enumerated.items = PLAYBACK_TARGET_COUNT; - if (uinfo->value.enumerated.item > PLAYBACK_TARGET_COUNT - 1) { + if (uinfo->value.enumerated.item > PLAYBACK_TARGET_COUNT - 1) uinfo->value.enumerated.item = PLAYBACK_TARGET_COUNT - 1; - } + strcpy(uinfo->value.enumerated.name, texts[uinfo->value.enumerated.item]); return 0; @@ -210,14 +210,14 @@ static int headset_playback_volume_info(struct snd_kcontrol *kcontrol, } static int headset_playback_volume_get(struct snd_kcontrol *kcontrol, - struct snd_ctl_elem_value *ucontrol) + struct snd_ctl_elem_value *ucontrol) { ucontrol->value.integer.value[0] = current_volume; return 0; } static int headset_playback_volume_put(struct snd_kcontrol *kcontrol, - struct snd_ctl_elem_value *ucontrol) + struct snd_ctl_elem_value *ucontrol) { return set_mixer_volume(ucontrol->value.integer.value[0]); } @@ -233,14 +233,14 @@ static int headset_playback_switch_info(struct snd_kcontrol *kcontrol, } static int headset_playback_switch_get(struct snd_kcontrol *kcontrol, - struct snd_ctl_elem_value *ucontrol) + struct snd_ctl_elem_value *ucontrol) { ucontrol->value.integer.value[0] = 1; return 0; } static int headset_playback_switch_put(struct snd_kcontrol *kcontrol, - struct snd_ctl_elem_value *ucontrol) + struct snd_ctl_elem_value *ucontrol) { /* mute/unmute headset */ #if 0 @@ -262,14 +262,14 @@ static int fmradio_playback_volume_info(struct snd_kcontrol *kcontrol, } static int fmradio_playback_volume_get(struct snd_kcontrol *kcontrol, - struct snd_ctl_elem_value *ucontrol) + struct snd_ctl_elem_value *ucontrol) { ucontrol->value.integer.value[0] = current_fm_volume; return 0; } static int fmradio_playback_volume_put(struct snd_kcontrol *kcontrol, - struct snd_ctl_elem_value *ucontrol) + struct snd_ctl_elem_value *ucontrol) { int ret = current_fm_volume != ucontrol->value.integer.value[0]; int i; @@ -291,14 +291,14 @@ static int fmradio_playback_switch_info(struct snd_kcontrol *kcontrol, } static int fmradio_playback_switch_get(struct snd_kcontrol *kcontrol, - struct snd_ctl_elem_value *ucontrol) + struct snd_ctl_elem_value *ucontrol) { ucontrol->value.integer.value[0] = 1; return 0; } static int fmradio_playback_switch_put(struct snd_kcontrol *kcontrol, - struct snd_ctl_elem_value *ucontrol) + struct snd_ctl_elem_value *ucontrol) { /* mute/unmute FM radio */ if (ucontrol->value.integer.value[0]) @@ -460,7 +460,7 @@ int snd_omap_mixer(struct snd_card_omap_codec *egold) if (!egold) return -EINVAL; - for (i=0; i < ARRAY_SIZE(egold_control); i++) { + for (i = 0; i < ARRAY_SIZE(egold_control); i++) { err = snd_ctl_add(egold->card, snd_ctl_new1(&egold_control[i], egold->card)); if (err < 0) -- 1.5.5-rc3.GIT ^ permalink raw reply related [flat|nested] 23+ messages in thread
* [PATCH 09/19] Code clean-up for sound/arm/omap/omap-alsa-sx1-mixer.h 2008-04-18 8:00 ` [PATCH 08/19] Code clean-up for sound/arm/omap/omap-alsa-sx1-mixer.c Eduardo Valentin @ 2008-04-18 8:00 ` Eduardo Valentin 2008-04-18 8:00 ` [PATCH 10/19] Code clean-up for sound/arm/omap/omap-alsa-sx1.c Eduardo Valentin 0 siblings, 1 reply; 23+ messages in thread From: Eduardo Valentin @ 2008-04-18 8:00 UTC (permalink / raw) To: linux-omap; +Cc: Felipe Balbi, Ragner Magalhaes, Eduardo Valentin From: Eduardo Valentin <eduardo.valentin@indt.org.br> Removed lots of whitespaces and a few errors and warnings reported by checkpatch.pl. Signed-off-by: Eduardo Valentin <eduardo.valentin@indt.org.br> --- sound/arm/omap/omap-alsa-sx1-mixer.h | 6 ++++-- 1 files changed, 4 insertions(+), 2 deletions(-) diff --git a/sound/arm/omap/omap-alsa-sx1-mixer.h b/sound/arm/omap/omap-alsa-sx1-mixer.h index 686b81c..7d55388 100644 --- a/sound/arm/omap/omap-alsa-sx1-mixer.h +++ b/sound/arm/omap/omap-alsa-sx1-mixer.h @@ -31,8 +31,10 @@ /* following are used for register 03h Mixer PGA control bits D7-D5 for selecting record source */ #define REC_SRC_TARGET_COUNT 0x08 -#define REC_SRC_SINGLE_ENDED_MICIN_HED 0x00 /* oss code referred to MIXER_LINE */ -#define REC_SRC_SINGLE_ENDED_MICIN_HND 0x01 /* oss code referred to MIXER_MIC */ +/* OSS code referred to MIXER_LINE */ +#define REC_SRC_SINGLE_ENDED_MICIN_HED 0x00 +/* OSS code referred to MIXER_MIC */ +#define REC_SRC_SINGLE_ENDED_MICIN_HND 0x01 #define REC_SRC_SINGLE_ENDED_AUX1 0x02 #define REC_SRC_SINGLE_ENDED_AUX2 0x03 #define REC_SRC_MICIN_HED_AND_AUX1 0x04 -- 1.5.5-rc3.GIT ^ permalink raw reply related [flat|nested] 23+ messages in thread
* [PATCH 10/19] Code clean-up for sound/arm/omap/omap-alsa-sx1.c 2008-04-18 8:00 ` [PATCH 09/19] Code clean-up for sound/arm/omap/omap-alsa-sx1-mixer.h Eduardo Valentin @ 2008-04-18 8:00 ` Eduardo Valentin 2008-04-18 8:00 ` [PATCH 11/19] Code clean-up for sound/arm/omap/omap-alsa-sx1.h Eduardo Valentin 0 siblings, 1 reply; 23+ messages in thread From: Eduardo Valentin @ 2008-04-18 8:00 UTC (permalink / raw) To: linux-omap; +Cc: Felipe Balbi, Ragner Magalhaes, Eduardo Valentin From: Eduardo Valentin <eduardo.valentin@indt.org.br> Removed lots of whitespaces and a few errors and warnings reported by checkpatch.pl. Signed-off-by: Eduardo Valentin <eduardo.valentin@indt.org.br> --- sound/arm/omap/omap-alsa-sx1.c | 72 +++++++++++++++++++++++++++------------ 1 files changed, 50 insertions(+), 22 deletions(-) diff --git a/sound/arm/omap/omap-alsa-sx1.c b/sound/arm/omap/omap-alsa-sx1.c index c4691cd..efcabff 100644 --- a/sound/arm/omap/omap-alsa-sx1.c +++ b/sound/arm/omap/omap-alsa-sx1.c @@ -14,19 +14,18 @@ #include <linux/soundcard.h> #include <linux/platform_device.h> #include <linux/clk.h> -#include <asm/io.h> -#include <asm/arch/mcbsp.h> - +#include <linux/io.h> +#include <linux/connector.h> #include <linux/slab.h> #include <linux/pm.h> + #include <asm/arch/dma.h> #include <asm/arch/clock.h> #include <asm/arch/gpio.h> - +#include <asm/arch/mcbsp.h> #include <asm/arch/omap-alsa.h> -#include "omap-alsa-sx1.h" -#include <linux/connector.h> +#include "omap-alsa-sx1.h" /* Connector implementation */ static struct cb_id cn_sx1snd_id = { CN_IDX_SX1SND, CN_VAL_SX1SND }; @@ -36,9 +35,10 @@ static void cn_sx1snd_callback(void *data) { struct cn_msg *msg = (struct cn_msg *)data; - printk("%s: %lu: idx=%x, val=%x, seq=%u, ack=%u, len=%d: %s.\n", - __func__, jiffies, msg->id.idx, msg->id.val, - msg->seq, msg->ack, msg->len, (char *)msg->data); + printk(KERN_INFO + "%s: %lu: idx=%x, val=%x, seq=%u, ack=%u, len=%d: %s.\n", + __func__, jiffies, msg->id.idx, msg->id.val, + msg->seq, msg->ack, msg->len, (char *)msg->data); } /* Send IPC message to sound server */ @@ -63,7 +63,7 @@ int cn_sx1snd_send(unsigned int cmd, unsigned int arg1, unsigned int arg2) memcpy(m + 1, data, m->len); err = cn_netlink_send(m, CN_IDX_SX1SND, gfp_any()); - snd_printd("sent= %02X %02X %02X, err=%d\n", cmd,arg1,arg2,err); + snd_printd("sent= %02X %02X %02X, err=%d\n", cmd, arg1, arg2, err); kfree(m); if (err == -ESRCH) @@ -150,15 +150,42 @@ static void egold_set_samplerate(long sample_rate) clkgdv = CODEC_CLOCK / (sample_rate * (DEFAULT_BITPERSAMPLE * 2 - 1)); #endif switch (sample_rate) { - case 8000: clkgdv = 71; egold_rate = FRQ_8000; break; - case 11025: clkgdv = 51; egold_rate = FRQ_11025; break; - case 12000: clkgdv = 47; egold_rate = FRQ_12000; break; - case 16000: clkgdv = 35; egold_rate = FRQ_16000; break; - case 22050: clkgdv = 25; egold_rate = FRQ_22050; break; - case 24000: clkgdv = 23; egold_rate = FRQ_24000; break; - case 32000: clkgdv = 17; egold_rate = FRQ_32000; break; - case 44100: clkgdv = 12; egold_rate = FRQ_44100; break; - case 48000: clkgdv = 11; egold_rate = FRQ_48000; break; + case 8000: + clkgdv = 71; + egold_rate = FRQ_8000; + break; + case 11025: + clkgdv = 51; + egold_rate = FRQ_11025; + break; + case 12000: + clkgdv = 47; + egold_rate = FRQ_12000; + break; + case 16000: + clkgdv = 35; + egold_rate = FRQ_16000; + break; + case 22050: + clkgdv = 25; + egold_rate = FRQ_22050; + break; + case 24000: + clkgdv = 23; + egold_rate = FRQ_24000; + break; + case 32000: + clkgdv = 17; + egold_rate = FRQ_32000; + break; + case 44100: + clkgdv = 12; + egold_rate = FRQ_44100; + break; + case 48000: + clkgdv = 11; + egold_rate = FRQ_48000; + break; } srgr1 = (FWID(DEFAULT_BITPERSAMPLE - 1) | CLKGDV(clkgdv)); @@ -234,8 +261,8 @@ static int __init snd_omap_alsa_egold_probe(struct platform_device *pdev) return -ENODEV; codec_cfg->hw_constraints_rates = &egold_hw_constraints_rates; - codec_cfg->snd_omap_alsa_playback= &egold_snd_omap_alsa_playback; - codec_cfg->snd_omap_alsa_capture = &egold_snd_omap_alsa_capture; + codec_cfg->snd_omap_alsa_playback = &egold_snd_omap_alsa_playback; + codec_cfg->snd_omap_alsa_capture = &egold_snd_omap_alsa_capture; codec_cfg->codec_configure_dev = egold_configure; codec_cfg->codec_set_samplerate = egold_set_samplerate; codec_cfg->codec_clock_setup = egold_clock_setup; @@ -262,7 +289,8 @@ static int __init omap_alsa_egold_init(void) { int retval; - retval = cn_add_callback(&cn_sx1snd_id, cn_sx1snd_name, cn_sx1snd_callback); + retval = cn_add_callback(&cn_sx1snd_id, cn_sx1snd_name, + cn_sx1snd_callback); if (retval) printk(KERN_WARNING "cn_sx1snd failed to register\n"); return platform_driver_register(&omap_alsa_driver); -- 1.5.5-rc3.GIT ^ permalink raw reply related [flat|nested] 23+ messages in thread
* [PATCH 11/19] Code clean-up for sound/arm/omap/omap-alsa-sx1.h 2008-04-18 8:00 ` [PATCH 10/19] Code clean-up for sound/arm/omap/omap-alsa-sx1.c Eduardo Valentin @ 2008-04-18 8:00 ` Eduardo Valentin 2008-04-18 8:00 ` [PATCH 12/19] Code clean-up for sound/arm/omap/omap-alsa-tsc2101-mixer.c Eduardo Valentin 0 siblings, 1 reply; 23+ messages in thread From: Eduardo Valentin @ 2008-04-18 8:00 UTC (permalink / raw) To: linux-omap; +Cc: Felipe Balbi, Ragner Magalhaes, Eduardo Valentin From: Eduardo Valentin <eduardo.valentin@indt.org.br> Removed lots of whitespaces and a few errors and warnings reported by checkpatch.pl. Signed-off-by: Eduardo Valentin <eduardo.valentin@indt.org.br> --- sound/arm/omap/omap-alsa-sx1.h | 3 ++- 1 files changed, 2 insertions(+), 1 deletions(-) diff --git a/sound/arm/omap/omap-alsa-sx1.h b/sound/arm/omap/omap-alsa-sx1.h index af7a409..9e11e0a 100644 --- a/sound/arm/omap/omap-alsa-sx1.h +++ b/sound/arm/omap/omap-alsa-sx1.h @@ -35,7 +35,8 @@ #define OSC_EN 2 /* Send IPC message to sound server */ -extern int cn_sx1snd_send(unsigned int cmd, unsigned int arg1, unsigned int arg2); +extern int cn_sx1snd_send(unsigned int cmd, unsigned int arg1, + unsigned int arg2); /* cmd for IPC_GROUP_DAC */ #define DAC_VOLUME_UPDATE 0 #define DAC_SETAUDIODEVICE 1 -- 1.5.5-rc3.GIT ^ permalink raw reply related [flat|nested] 23+ messages in thread
* [PATCH 12/19] Code clean-up for sound/arm/omap/omap-alsa-tsc2101-mixer.c 2008-04-18 8:00 ` [PATCH 11/19] Code clean-up for sound/arm/omap/omap-alsa-sx1.h Eduardo Valentin @ 2008-04-18 8:00 ` Eduardo Valentin 2008-04-18 8:01 ` [PATCH 13/19] Code clean-up for sound/arm/omap/omap-alsa-tsc2101-mixer.h Eduardo Valentin 0 siblings, 1 reply; 23+ messages in thread From: Eduardo Valentin @ 2008-04-18 8:00 UTC (permalink / raw) To: linux-omap; +Cc: Felipe Balbi, Ragner Magalhaes, Eduardo Valentin [-- Warning: decoded text below may be mangled, UTF-8 assumed --] [-- Attachment #1: Type: text/plain; charset=unknown-8bit, Size: 43599 bytes --] From: Eduardo Valentin <eduardo.valentin@indt.org.br> Removed lots of whitespaces and a few errors and warnings reported by checkpatch.pl. Signed-off-by: Eduardo Valentin <eduardo.valentin@indt.org.br> --- sound/arm/omap/omap-alsa-tsc2101-mixer.c | 624 ++++++++++++++++-------------- 1 files changed, 342 insertions(+), 282 deletions(-) diff --git a/sound/arm/omap/omap-alsa-tsc2101-mixer.c b/sound/arm/omap/omap-alsa-tsc2101-mixer.c index 09257d7..d443342 100644 --- a/sound/arm/omap/omap-alsa-tsc2101-mixer.c +++ b/sound/arm/omap/omap-alsa-tsc2101-mixer.c @@ -1,15 +1,15 @@ /* * sound/arm/omap/omap-alsa-tsc2101-mixer.c - * + * * Alsa Driver for TSC2101 codec for OMAP platform boards. * - * Copyright (C) 2005 Mika Laitio <lamikr@cc.jyu.fi> and + * Copyright (C) 2005 Mika Laitio <lamikr@cc.jyu.fi> and * Everett Coleman II <gcc80x86@fuzzyneural.net> * * Board initialization code is based on the code in TSC2101 OSS driver. * Copyright (C) 2004 Texas Instruments, Inc. * Written by Nishanth Menon and Sriram Kannan - * + * * 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 @@ -33,13 +33,13 @@ * History: * * 2006-03-01 Mika Laitio - Mixer for the tsc2101 driver used in omap boards. - * Can switch between headset and loudspeaker playback, + * Can switch between headset and loudspeaker playback, * mute and unmute dgc, set dgc volume. Record source switch, - * keyclick, buzzer and headset volume and handset volume control + * keyclick, buzzer and headset volume and handset volume control * are still missing. - * + * */ - + #include "omap-alsa-tsc2101.h" #include "omap-alsa-tsc2101-mixer.h" @@ -48,8 +48,15 @@ #include <sound/initval.h> #include <sound/control.h> -//#define M_DPRINTK(ARGS...) printk(KERN_INFO "<%s>: ",__FUNCTION__);printk(ARGS) +#ifdef DEBUG +#define M_DPRINTK(ARGS...) \ + do { \ + printk(KERN_INFO "<%s>: ", __func__); \ + printk(ARGS); \ + } while (0) +#else #define M_DPRINTK(ARGS...) /* nop */ +#endif #define CHECK_BIT(INDX, ARG) (((ARG) & TSC2101_BIT(INDX)) >> INDX) #define IS_UNMUTED(INDX, ARG) (((CHECK_BIT(INDX, ARG)) == 0)) @@ -64,7 +71,7 @@ static int current_playback_target = PLAYBACK_TARGET_LOUDSPEAKER; static int current_rec_src = REC_SRC_SINGLE_ENDED_MICIN_HED; -/* +/* * Simplified write for the tsc2101 audio registers. */ inline void omap_tsc2101_audio_write(u8 address, u16 data) @@ -73,7 +80,7 @@ inline void omap_tsc2101_audio_write(u8 address, u16 data) address, data); } -/* +/* * Simplified read for the tsc2101 audio registers. */ inline u16 omap_tsc2101_audio_read(u8 address) @@ -88,8 +95,9 @@ inline u16 omap_tsc2101_audio_read(u8 address) static void set_record_source(int val) { u16 data; - - /* Mute Analog Sidetone + + /* + * Mute Analog Sidetone * Analog sidetone gain db? * Input selected by MICSEL connected to ADC */ @@ -98,77 +106,84 @@ static void set_record_source(int val) data |= MPC_MICSEL(val); data |= MPC_MICADC; omap_tsc2101_audio_write(TSC2101_MIXER_PGA_CTRL, data); - + current_rec_src = val; } /* - * Converts the Alsa mixer volume (0 - 100) to real + * Converts the Alsa mixer volume (0 - 100) to real * Digital Gain Control (DGC) value that can be written * or read from the TSC2101 registry. - * + * * Note that the number "OUTPUT_VOLUME_MAX" is smaller than OUTPUT_VOLUME_MIN * because DGC works as a volume decreaser. (The more bigger value is put * to DGC, the more the volume of controlled channel is decreased) - * - * In addition the TCS2101 chip would allow the maximum volume reduction be 63.5 DB + * + * In addition the TCS2101 chip would allow the maximum + * volume reduction be 63.5 DB * but according to some tests user can not hear anything with this chip * when the volume is set to be less than 25 db. - * Therefore this function will return a value that means 38.5 db (63.5 db - 25 db) + * Therefore this function will return a value + * that means 38.5 db (63.5 db - 25 db) * reduction in the channel volume, when mixer is set to 0. - * For mixer value 100, this will return a value that means 0 db volume reduction. + * For mixer value 100, this will return a value that means + * 0 db volume reduction. * ([mute_left_bit]0000000[mute_right_bit]0000000) -*/ + */ int get_mixer_volume_as_dac_gain_control_volume(int vol) { u16 retVal; /* Convert 0 -> 100 volume to 0x7F(min) -> y(max) volume range */ - retVal = ((vol * OUTPUT_VOLUME_RANGE) / 100) + OUTPUT_VOLUME_MAX; + retVal = ((vol * OUTPUT_VOLUME_RANGE) / 100) + OUTPUT_VOLUME_MAX; /* invert the value for getting the proper range 0 min and 100 max */ - retVal = OUTPUT_VOLUME_MIN - retVal; - + retVal = OUTPUT_VOLUME_MIN - retVal; + return retVal; } /* - * Converts the Alsa mixer volume (0 - 100) to TSC2101 + * Converts the Alsa mixer volume (0 - 100) to TSC2101 * Digital Gain Control (DGC) volume. Alsa mixer volume 0 * is converted to value meaning the volume reduction of -38.5 db * and Alsa mixer volume 100 is converted to value meaning the * reduction of 0 db. */ -int set_mixer_volume_as_dac_gain_control_volume(int mixerVolL, int mixerVolR) +int set_mixer_volume_as_dac_gain_control_volume(int mixerVolL, int mixerVolR) { u16 val; int retVal; int volL; int volR; - - if ((mixerVolL < 0) || + + if ((mixerVolL < 0) || (mixerVolL > 100) || (mixerVolR < 0) || (mixerVolR > 100)) { - printk(KERN_ERR "Trying a bad mixer volume as dac gain control volume value, left (%d), right (%d)!\n", mixerVolL, mixerVolR); + printk(KERN_ERR "Trying a bad mixer volume as dac gain control" + " volume value, left (%d), right (%d)!\n", mixerVolL, + mixerVolR); return -EPERM; } - M_DPRINTK("mixer volume left = %d, right = %d\n", mixerVolL, mixerVolR); + M_DPRINTK("mixer volume left = %d, right = %d\n", mixerVolL, mixerVolR); volL = get_mixer_volume_as_dac_gain_control_volume(mixerVolL); volR = get_mixer_volume_as_dac_gain_control_volume(mixerVolR); - + val = omap_tsc2101_audio_read(TSC2101_DAC_GAIN_CTRL); /* keep the old mute bit settings */ - val &= ~(DGC_DALVL(OUTPUT_VOLUME_MIN) | DGC_DARVL(OUTPUT_VOLUME_MIN)); + val &= ~(DGC_DALVL(OUTPUT_VOLUME_MIN) | + DGC_DARVL(OUTPUT_VOLUME_MIN)); val |= DGC_DALVL(volL) | DGC_DARVL(volR); retVal = 2; - if (retVal) { + if (retVal) omap_tsc2101_audio_write(TSC2101_DAC_GAIN_CTRL, val); - } - M_DPRINTK("to registry: left = %d, right = %d, total = %d\n", DGC_DALVL_EXTRACT(val), DGC_DARVL_EXTRACT(val), val); + + M_DPRINTK("to registry: left = %d, right = %d, total = %d\n", + DGC_DALVL_EXTRACT(val), DGC_DARVL_EXTRACT(val), val); return retVal; } -/** +/* * If unmuteLeft/unmuteRight == 0 --> mute * If unmuteLeft/unmuteRight == 1 --> unmute */ @@ -179,15 +194,16 @@ int dac_gain_control_unmute(int unmuteLeft, int unmuteRight) count = 0; val = omap_tsc2101_audio_read(TSC2101_DAC_GAIN_CTRL); - /* in alsa mixer 1 --> on, 0 == off. In tsc2101 registry 1 --> off, 0 --> on - * so if values are same, it's time to change the registry value. + /* + * in alsa mixer 1 --> on, 0 == off. In tsc2101 registry 1 --> off, + * 0 --> on so if values are same, it's time to change the registry + * value. */ if (unmuteLeft != IS_UNMUTED(15, val)) { if (unmuteLeft == 0) { /* mute --> turn bit on */ val = val | DGC_DALMU; - } - else { + } else { /* unmute --> turn bit off */ val = val & ~DGC_DALMU; } @@ -197,69 +213,71 @@ int dac_gain_control_unmute(int unmuteLeft, int unmuteRight) if (unmuteRight == 0) { /* mute --> turn bit on */ val = val | DGC_DARMU; - } - else { + } else { /* unmute --> turn bit off */ val = val & ~DGC_DARMU; - } + } count++; } /* R */ if (count) { omap_tsc2101_audio_write(TSC2101_DAC_GAIN_CTRL, val); - M_DPRINTK("changed value, is_unmuted left = %d, right = %d\n", + M_DPRINTK("changed value, is_unmuted left = %d, right = %d\n", IS_UNMUTED(15, val), IS_UNMUTED(7, val)); } - return count; + return count; } -/** +/* * unmute: 0 --> mute, 1 --> unmute * page2RegIndx: Registry index in tsc2101 page2. - * muteBitIndx: Index number for the bit in registry that indicates whether muted or unmuted. + * muteBitIndx: Index number for the bit in registry that indicates whether + * muted or unmuted. */ int adc_pga_unmute_control(int unmute, int page2regIndx, int muteBitIndx) { int count; u16 val; - + count = 0; val = omap_tsc2101_audio_read(page2regIndx); - /* in alsa mixer 1 --> on, 0 == off. In tsc2101 registry 1 --> off, 0 --> on - * so if the values are same, it's time to change the registry value... + /* + * in alsa mixer 1 --> on, 0 == off. In tsc2101 registry 1 --> off, + * 0 --> on so if the values are same, it's time to change the + * registry value... */ if (unmute != IS_UNMUTED(muteBitIndx, val)) { if (unmute == 0) { /* mute --> turn bit on */ val = val | TSC2101_BIT(muteBitIndx); - } - else { + } else { /* unmute --> turn bit off */ val = val & ~TSC2101_BIT(muteBitIndx); } - M_DPRINTK("changed value, is_unmuted = %d\n", IS_UNMUTED(muteBitIndx, val)); + M_DPRINTK("changed value, is_unmuted = %d\n", + IS_UNMUTED(muteBitIndx, val)); count++; } - if (count) { + if (count) omap_tsc2101_audio_write(page2regIndx, val); - } + return count; } /* - * Converts the DGC registry value read from the TSC2101 registry to + * Converts the DGC registry value read from the TSC2101 registry to * Alsa mixer volume format (0 - 100). */ -int get_dac_gain_control_volume_as_mixer_volume(u16 vol) +int get_dac_gain_control_volume_as_mixer_volume(u16 vol) { - u16 retVal; + u16 retVal; retVal = OUTPUT_VOLUME_MIN - vol; retVal = ((retVal - OUTPUT_VOLUME_MAX) * 100) / OUTPUT_VOLUME_RANGE; /* fix scaling error */ - if ((retVal > 0) && (retVal < 100)) { + if ((retVal > 0) && (retVal < 100)) retVal++; - } + return retVal; } @@ -267,10 +285,10 @@ int get_dac_gain_control_volume_as_mixer_volume(u16 vol) * Converts the headset gain control volume (0 - 63.5 db) * to Alsa mixer volume (0 - 100) */ -int get_headset_gain_control_volume_as_mixer_volume(u16 registerVal) +int get_headset_gain_control_volume_as_mixer_volume(u16 registerVal) { u16 retVal; - + retVal = ((registerVal * 100) / INPUT_VOLUME_RANGE); return retVal; } @@ -279,71 +297,78 @@ int get_headset_gain_control_volume_as_mixer_volume(u16 registerVal) * Converts the handset gain control volume (0 - 63.5 db) * to Alsa mixer volume (0 - 100) */ -int get_handset_gain_control_volume_as_mixer_volume(u16 registerVal) +int get_handset_gain_control_volume_as_mixer_volume(u16 registerVal) { return get_headset_gain_control_volume_as_mixer_volume(registerVal); } /* - * Converts the Alsa mixer volume (0 - 100) to + * Converts the Alsa mixer volume (0 - 100) to * headset gain control volume (0 - 63.5 db) */ -int get_mixer_volume_as_headset_gain_control_volume(u16 mixerVal) +int get_mixer_volume_as_headset_gain_control_volume(u16 mixerVal) { u16 retVal; - - retVal = ((mixerVal * INPUT_VOLUME_RANGE) / 100) + INPUT_VOLUME_MIN; + + retVal = ((mixerVal * INPUT_VOLUME_RANGE) / 100) + INPUT_VOLUME_MIN; return retVal; } /* * Writes Alsa mixer volume (0 - 100) to TSC2101 headset volume registry in * a TSC2101 format. (0 - 63.5 db) - * In TSC2101 OSS driver this functionality was controlled with "SET_LINE" parameter. + * In TSC2101 OSS driver this functionality was controlled with "SET_LINE" + * parameter. */ -int set_mixer_volume_as_headset_gain_control_volume(int mixerVol) +int set_mixer_volume_as_headset_gain_control_volume(int mixerVol) { int volume; int retVal; u16 val; if (mixerVol < 0 || mixerVol > 100) { - M_DPRINTK("Trying a bad headset mixer volume value(%d)!\n", mixerVol); + M_DPRINTK("Trying a bad headset mixer volume value(%d)!\n", + mixerVol); return -EPERM; } M_DPRINTK("mixer volume = %d\n", mixerVol); - /* Convert 0 -> 100 volume to 0x0(min) -> 0x7D(max) volume range */ - /* NOTE: 0 is minimum volume and not mute */ - volume = get_mixer_volume_as_headset_gain_control_volume(mixerVol); + /* + * Convert 0 -> 100 volume to 0x0(min) -> 0x7D(max) volume range + * NOTE: 0 is minimum volume and not mute + */ + volume = get_mixer_volume_as_headset_gain_control_volume(mixerVol); val = omap_tsc2101_audio_read(TSC2101_HEADSET_GAIN_CTRL); /* preserve the old mute settings */ val &= ~(HGC_ADPGA_HED(INPUT_VOLUME_MAX)); val |= HGC_ADPGA_HED(volume); - omap_tsc2101_audio_write(TSC2101_HEADSET_GAIN_CTRL, val); + omap_tsc2101_audio_write(TSC2101_HEADSET_GAIN_CTRL, val); retVal = 1; - - M_DPRINTK("to registry = %d\n", val); + + M_DPRINTK("to registry = %d\n", val); return retVal; } /* * Writes Alsa mixer volume (0 - 100) to TSC2101 handset volume registry in * a TSC2101 format. (0 - 63.5 db) - * In TSC2101 OSS driver this functionality was controlled with "SET_MIC" parameter. + * In TSC2101 OSS driver this functionality was controlled with + * "SET_MIC" parameter. */ -int set_mixer_volume_as_handset_gain_control_volume(int mixerVol) +int set_mixer_volume_as_handset_gain_control_volume(int mixerVol) { int volume; int retVal; - u16 val; + u16 val; if (mixerVol < 0 || mixerVol > 100) { - M_DPRINTK("Trying a bad mic mixer volume value(%d)!\n", mixerVol); + M_DPRINTK("Trying a bad mic mixer volume value(%d)!\n", + mixerVol); return -EPERM; } M_DPRINTK("mixer volume = %d\n", mixerVol); - /* Convert 0 -> 100 volume to 0x0(min) -> 0x7D(max) volume range - * NOTE: 0 is minimum volume and not mute + /* + * Convert 0 -> 100 volume to 0x0(min) -> 0x7D(max) volume range + * NOTE: 0 is minimum volume and not mute */ volume = get_mixer_volume_as_headset_gain_control_volume(mixerVol); val = omap_tsc2101_audio_read(TSC2101_HANDSET_GAIN_CTRL); @@ -352,8 +377,8 @@ int set_mixer_volume_as_handset_gain_control_volume(int mixerVol) val |= HNGC_ADPGA_HND(volume); omap_tsc2101_audio_write(TSC2101_HANDSET_GAIN_CTRL, val); retVal = 1; - - M_DPRINTK("to registry = %d\n", val); + + M_DPRINTK("to registry = %d\n", val); return retVal; } @@ -361,27 +386,31 @@ void set_loudspeaker_to_playback_target(void) { /* power down SPK1, SPK2 and loudspeaker */ omap_tsc2101_audio_write(TSC2101_CODEC_POWER_CTRL, - CPC_SP1PWDN | CPC_SP2PWDN | CPC_LDAPWDF); - /* ADC, DAC, Analog Sidetone, cellphone, buzzer softstepping enabled + CPC_SP1PWDN | CPC_SP2PWDN | CPC_LDAPWDF); + /* + * ADC, DAC, Analog Sidetone, cellphone, buzzer softstepping enabled * 1dB AGC hysteresis * MICes bias 2V */ omap_tsc2101_audio_write(TSC2101_AUDIO_CTRL_4, AC4_MB_HED(0)); - /* DAC left and right routed to SPK1/SPK2 + /* + * DAC left and right routed to SPK1/SPK2 * SPK1/SPK2 unmuted * Keyclicks routed to SPK1/SPK2 */ - omap_tsc2101_audio_write(TSC2101_AUDIO_CTRL_5, + omap_tsc2101_audio_write(TSC2101_AUDIO_CTRL_5, AC5_DIFFIN | AC5_DAC2SPK1(3) | AC5_AST2SPK1 | AC5_KCL2SPK1 | AC5_DAC2SPK2(3) | AC5_AST2SPK2 | AC5_KCL2SPK2); - - /* routing selected to SPK1 goes also to OUT8P/OUT8N. (loudspeaker) + + /* + * routing selected to SPK1 goes also to OUT8P/OUT8N. (loudspeaker) * analog sidetone routed to loudspeaker * buzzer pga routed to loudspeaker * keyclick routing to loudspeaker * cellphone input routed to loudspeaker - * mic selection (control register 04h/page2) routed to cell phone output (CP_OUT) + * mic selection (control register 04h/page2) routed to cell phone + * output (CP_OUT) * routing selected for SPK1 goes also to cellphone output (CP_OUT) * OUT8P/OUT8N (loudspeakers) unmuted (0 = unmuted) * Cellphone output is not muted (0 = unmuted) @@ -399,19 +428,23 @@ void set_headphone_to_playback_target(void) /* power down SPK1, SPK2 and loudspeaker */ omap_tsc2101_audio_write(TSC2101_CODEC_POWER_CTRL, CPC_SP1PWDN | CPC_SP2PWDN | CPC_LDAPWDF); - /* ADC, DAC, Analog Sidetone, cellphone, buzzer softstepping enabled */ - /* 1dB AGC hysteresis */ - /* MICes bias 2V */ + /* + * ADC, DAC, Analog Sidetone, cellphone, buzzer softstepping enabled + * 1dB AGC hysteresis + * MICes bias 2V + */ omap_tsc2101_audio_write(TSC2101_AUDIO_CTRL_4, AC4_MB_HED(0)); - - /* DAC left and right routed to SPK1/SPK2 + + /* + * DAC left and right routed to SPK1/SPK2 * SPK1/SPK2 unmuted - * Keyclicks routed to SPK1/SPK2 */ + * Keyclicks routed to SPK1/SPK2 + */ omap_tsc2101_audio_write(TSC2101_AUDIO_CTRL_5, AC5_DAC2SPK1(3) | AC5_AST2SPK1 | AC5_KCL2SPK1 | AC5_DAC2SPK2(3) | AC5_AST2SPK2 | AC5_KCL2SPK2 | AC5_HDSCPTC); - + /* OUT8P/OUT8N muted, CPOUT muted */ omap_tsc2101_audio_write(TSC2101_AUDIO_CTRL_6, AC6_MUTLSPK | AC6_MUTSPK2 | AC6_LDSCPTC | @@ -421,45 +454,47 @@ void set_headphone_to_playback_target(void) void set_telephone_to_playback_target(void) { - /* + /* * 0110 1101 0101 1100 - * power down MICBIAS_HED, Analog sidetone, SPK2, DAC, + * power down MICBIAS_HED, Analog sidetone, SPK2, DAC, * Driver virtual ground, loudspeaker. Values D2-d5 are flags. - */ + */ omap_tsc2101_audio_write(TSC2101_CODEC_POWER_CTRL, CPC_MBIAS_HED | CPC_ASTPWD | CPC_SP2PWDN | CPC_DAPWDN | CPC_VGPWDN | CPC_LSPWDN); - - /* + + /* * 0010 1010 0100 0000 * ADC, DAC, Analog Sidetone, cellphone, buzzer softstepping enabled * 1dB AGC hysteresis * MICes bias 2V */ omap_tsc2101_audio_write(TSC2101_AUDIO_CTRL_4, - AC4_MB_HND | AC4_MB_HED(0) | AC4_AGCHYS(1) | + AC4_MB_HND | AC4_MB_HED(0) | AC4_AGCHYS(1) | AC4_BISTPD | AC4_ASSTPD | AC4_DASTPD); - printk("set_telephone_to_playback_target(), TSC2101_AUDIO_CTRL_4 = %d\n", omap_tsc2101_audio_read(TSC2101_AUDIO_CTRL_4)); - - /* + printk(KERN_INFO "set_telephone_to_playback_target(), " + "TSC2101_AUDIO_CTRL_4 = %d\n", + omap_tsc2101_audio_read(TSC2101_AUDIO_CTRL_4)); + + /* * 1110 0010 0000 0010 * DAC left and right routed to SPK1/SPK2 * SPK1/SPK2 unmuted * keyclicks routed to SPK1/SPK2 - */ + */ omap_tsc2101_audio_write(TSC2101_AUDIO_CTRL_5, - AC5_DIFFIN | AC5_DAC2SPK1(3) | - AC5_CPI2SPK1 | AC5_MUTSPK2); - + AC5_DIFFIN | AC5_DAC2SPK1(3) | + AC5_CPI2SPK1 | AC5_MUTSPK2); + omap_tsc2101_audio_write(TSC2101_AUDIO_CTRL_6, - AC6_MIC2CPO | AC6_MUTLSPK | + AC6_MIC2CPO | AC6_MUTLSPK | AC6_LDSCPTC | AC6_VGNDSCPTC | AC6_CAPINTF); current_playback_target = PLAYBACK_TARGET_CELLPHONE; } /* * 1100 0101 1101 0000 - * + * * #define MPC_ASTMU TSC2101_BIT(15) * #define MPC_ASTG(ARG) (((ARG) & 0x7F) << 8) * #define MPC_MICSEL(ARG) (((ARG) & 0x07) << 5) @@ -470,14 +505,14 @@ void set_telephone_to_playback_target(void) static void set_telephone_to_record_source(void) { u16 val; - - /* - * D0 = 0: + + /* + * D0 = 0: * --> AGC is off for handset input. * --> ADC PGA is controlled by the ADMUT_HDN + ADPGA_HND * (D15, D14-D8) - * D4 - D1 = 0000 - * --> AGC time constant for handset input, + * D4 - D1 = 0000 + * --> AGC time constant for handset input, * attack time = 8 mc, decay time = 100 ms * D7 - D5 = 000 * --> AGC Target gain for handset input = -5.5 db @@ -486,33 +521,36 @@ static void set_telephone_to_record_source(void) * D15 = 0 * --> Handset input ON (unmuted) */ - val = 0x3c00; // 0011 1100 0000 0000 = 60 = 30 + val = 0x3c00; /* 0011 1100 0000 0000 = 60 = 30 */ omap_tsc2101_audio_write(TSC2101_HANDSET_GAIN_CTRL, val); - + /* * D0 = 0 * --> AGC is off for headset/Aux input - * --> ADC headset/Aux PGA is contoller by ADMUT_HED + ADPGA_HED + * --> ADC headset/Aux PGA is contoller by + * ADMUT_HED + ADPGA_HED * (D15, D14-D8) - * D4 - D1 = 0000 + * D4 - D1 = 0000 * --> Agc constant for headset/Aux input, - * attack time = 8 mc, decay time = 100 ms + * attack time = 8 mc, decay time = 100 ms * D7 - D5 = 000 * --> AGC target gain for headset input = -5.5 db * D14 - D8 = 000 0000 * --> Adc headset/AUX pga settings = 0 db * D15 = 1 * --> Headset/AUX input muted - * + * * Mute headset aux input */ - val = 0x8000; // 1000 0000 0000 0000 + val = 0x8000; /* 1000 0000 0000 0000 */ omap_tsc2101_audio_write(TSC2101_HEADSET_GAIN_CTRL, val); set_record_source(REC_SRC_MICIN_HND_AND_AUX1); - // hacks start - /* D0 = flag, Headset/Aux or handset PGA flag - * --> & with 1 (= 1 -->gain applied == pga register settings) + /* + * hacks start + * D0 = flag, Headset/Aux or handset PGA flag + * --> & with 1 (= 1 -->gain applied == pga + * register settings) * D1 = 0, DAC channel PGA soft stepping control * --> 0.5 db change every WCLK * D2 = flag, DAC right channel PGA flag @@ -521,8 +559,8 @@ static void set_telephone_to_record_source(void) * -- > & with 1 * D7 - D4 = 0001, keyclick length * --> 4 periods key clicks - * D10 - D8 = 100, keyclick frequenzy - * --> 1 kHz, + * D10 - D8 = 100, keyclick frequency + * --> 1 kHz, * D11 = 0, Headset/Aux or handset soft stepping control * --> 0,5 db change every WCLK or ADWS * D14 -D12 = 100, Keyclick applitude control @@ -531,7 +569,7 @@ static void set_telephone_to_record_source(void) */ val = omap_tsc2101_audio_read(TSC2101_AUDIO_CTRL_2); val = val & 0x441d; - val = val | 0x4410; // D14, D10, D4 bits == 1 + val = val | 0x4410; /* D14, D10, D4 bits == 1 */ omap_tsc2101_audio_write(TSC2101_AUDIO_CTRL_2, val); /* @@ -543,24 +581,28 @@ static void set_telephone_to_record_source(void) * --> MICBIAS_HND = 2.0 v * D8 - D7 = 00 * --> MICBIAS_HED = 3.3 v - * D10 - D9 = 01, + * D10 - D9 = 01, * --> Mic AGC hysteric selection = 2 db - * D11 = 1, + * D11 = 1, * --> Disable buzzer PGA soft stepping * D12 = 0, * --> Enable CELL phone PGA soft stepping control * D13 = 1 - * --> Disable analog sidetone soft stepping control + * --> Disable analog sidetone soft + * stepping control * D14 = 0 * --> Enable DAC PGA soft stepping control * D15 = 0, - * --> Enable headset/Aux or Handset soft stepping control + * --> Enable headset/Aux or Handset soft + * stepping control */ val = omap_tsc2101_audio_read(TSC2101_AUDIO_CTRL_4); - val = val & 0x2a42; // 0010 1010 0100 0010 - val = val | 0x2a40; // bits D13, D11, D9, D6 == 1 + val = val & 0x2a42; /* 0010 1010 0100 0010 */ + val = val | 0x2a40; /* bits D13, D11, D9, D6 == 1 */ omap_tsc2101_audio_write(TSC2101_AUDIO_CTRL_4, val); - printk("set_telephone_to_record_source(), TSC2101_AUDIO_CTRL_4 = %d\n", omap_tsc2101_audio_read(TSC2101_AUDIO_CTRL_4)); + printk(KERN_INFO "set_telephone_to_record_source(), " + "TSC2101_AUDIO_CTRL_4 = %d\n", + omap_tsc2101_audio_read(TSC2101_AUDIO_CTRL_4)); /* * D0 = 0 * --> reserved, write always = 0 @@ -579,10 +621,12 @@ static void set_telephone_to_record_source(void) */ val = omap_tsc2101_audio_read(TSC2101_BUZZER_GAIN_CTRL); val = val & 0x5dfe; - val = val | 0x5dfe; // bits, D14, D12, D11, D10, D8, D6, D5,D4,D3,D2 + /* bits, D14, D12, D11, D10, D8, D6, D5,D4,D3,D2 */ + val = val | 0x5dfe; omap_tsc2101_audio_write(TSC2101_BUZZER_GAIN_CTRL, val); - - /* D6 - D0 = 000 1001 + + /* + * D6 - D0 = 000 1001 * --> -4.5 db for DAC right channel volume control * D7 = 1 * --> DAC right channel muted @@ -591,12 +635,13 @@ static void set_telephone_to_record_source(void) * D15 = 1 * --> DAC left channel muted */ - //val = omap_tsc2101_audio_read(TSC2101_DAC_GAIN_CTRL); + /* val = omap_tsc2101_audio_read(TSC2101_DAC_GAIN_CTRL); */ val = 0x8989; - omap_tsc2101_audio_write(TSC2101_DAC_GAIN_CTRL, val); - - /* 0000 0000 0100 0000 - * + omap_tsc2101_audio_write(TSC2101_DAC_GAIN_CTRL, val); + + /* + * 0000 0000 0100 0000 + * * D1 - D0 = 0 * --> GPIO 1 pin output is three stated * D2 = 0 @@ -610,18 +655,18 @@ static void set_telephone_to_record_source(void) * --> 8 ms clitch detection * D8 = reserved, write only 0 * D10 -D9 = 00 - * --> 16 ms de bouncing programmatitily + * --> 16 ms de-bouncing * for glitch detection during headset detection * D11 = flag for button press * D12 = flag for headset detection * D14-D13 = 00 - * --> type of headset detected = 00 == no stereo headset deected + * --> type of headset detected = 00 == no stereo + * headset deected * D15 = 0 * --> Disable headset detection - * - * */ + */ val = 0x40; - omap_tsc2101_audio_write(TSC2101_AUDIO_CTRL_7, val); + omap_tsc2101_audio_write(TSC2101_AUDIO_CTRL_7, val); } /* @@ -637,17 +682,17 @@ u16 get_headset_detected(void) u16 curDetected; u16 curType; u16 curVal; - + curType = 0; /* not detected */ curVal = omap_tsc2101_audio_read(TSC2101_AUDIO_CTRL_7); curDetected = curVal & AC7_HDDETFL; if (curDetected) { - printk("headset detected, checking type from %d \n", curVal); + printk(KERN_INFO "headset detected, checking type from %d \n", + curVal); curType = ((curVal & 0x6000) >> 13); - printk("headset type detected = %d \n", curType); - } - else { - printk("headset not detected\n"); + printk(KERN_INFO "headset type detected = %d \n", curType); + } else { + printk(KERN_INFO "headset not detected\n"); } return curType; } @@ -657,40 +702,46 @@ void init_playback_targets(void) u16 val; set_loudspeaker_to_playback_target(); - /* Left line input volume control + /* + * Left line input volume control * = SET_LINE in the OSS driver */ set_mixer_volume_as_headset_gain_control_volume(DEFAULT_INPUT_VOLUME); - /* Set headset to be controllable by handset mixer + /* + * Set headset to be controllable by handset mixer * AGC enable for handset input * Handset input not muted */ val = omap_tsc2101_audio_read(TSC2101_HANDSET_GAIN_CTRL); - val = val | HNGC_AGCEN_HND; + val = val | HNGC_AGCEN_HND; val = val & ~HNGC_ADMUT_HND; - omap_tsc2101_audio_write(TSC2101_HANDSET_GAIN_CTRL, val); - - /* mic input volume control - * SET_MIC in the OSS driver + omap_tsc2101_audio_write(TSC2101_HANDSET_GAIN_CTRL, val); + + /* + * mic input volume control + * SET_MIC in the OSS driver */ set_mixer_volume_as_handset_gain_control_volume(DEFAULT_INPUT_VOLUME); - /* Left/Right headphone channel volume control + /* + * Left/Right headphone channel volume control * Zero-cross detect on */ - set_mixer_volume_as_dac_gain_control_volume(DEFAULT_OUTPUT_VOLUME, DEFAULT_OUTPUT_VOLUME); + set_mixer_volume_as_dac_gain_control_volume(DEFAULT_OUTPUT_VOLUME, + DEFAULT_OUTPUT_VOLUME); /* unmute */ dac_gain_control_unmute(1, 1); } /* - * Initializes tsc2101 recourd source (to line) and playback target (to loudspeaker) + * Initializes tsc2101 recourd source (to line) and playback target + * (to loudspeaker) */ void snd_omap_init_mixer(void) -{ +{ FN_IN; - + /* Headset/Hook switch detect enabled */ omap_tsc2101_audio_write(TSC2101_AUDIO_CTRL_7, AC7_DETECT); @@ -706,17 +757,17 @@ static int __pcm_playback_target_info(struct snd_kcontrol *kcontrol, struct snd_ctl_elem_info *uinfo) { static char *texts[PLAYBACK_TARGET_COUNT] = { - "Loudspeaker", "Headphone", "Cellphone" + "Loudspeaker", "Headphone", "Cellphone" }; uinfo->type = SNDRV_CTL_ELEM_TYPE_ENUMERATED; uinfo->count = 1; uinfo->value.enumerated.items = PLAYBACK_TARGET_COUNT; - if (uinfo->value.enumerated.item > PLAYBACK_TARGET_COUNT - 1) { - uinfo->value.enumerated.item = PLAYBACK_TARGET_COUNT - 1; - } + if (uinfo->value.enumerated.item > PLAYBACK_TARGET_COUNT - 1) + uinfo->value.enumerated.item = PLAYBACK_TARGET_COUNT - 1; + strcpy(uinfo->value.enumerated.name, - texts[uinfo->value.enumerated.item]); + texts[uinfo->value.enumerated.item]); return 0; } @@ -732,28 +783,26 @@ static int __pcm_playback_target_put(struct snd_kcontrol *kcontrol, { int retVal; int curVal; - + retVal = 0; curVal = ucontrol->value.integer.value[0]; if ((curVal >= 0) && (curVal < PLAYBACK_TARGET_COUNT) && - (curVal != current_playback_target)) { + (curVal != current_playback_target)) { if (curVal == PLAYBACK_TARGET_LOUDSPEAKER) { set_record_source(REC_SRC_SINGLE_ENDED_MICIN_HED); set_loudspeaker_to_playback_target(); - } - else if (curVal == PLAYBACK_TARGET_HEADPHONE) { + } else if (curVal == PLAYBACK_TARGET_HEADPHONE) { set_record_source(REC_SRC_SINGLE_ENDED_MICIN_HND); set_headphone_to_playback_target(); - } - else if (curVal == PLAYBACK_TARGET_CELLPHONE) { + } else if (curVal == PLAYBACK_TARGET_CELLPHONE) { set_telephone_to_record_source(); set_telephone_to_playback_target(); } retVal = 1; } return retVal; -} +} static int __pcm_playback_volume_info(struct snd_kcontrol *kcontrol, struct snd_ctl_elem_info *uinfo) @@ -766,16 +815,16 @@ static int __pcm_playback_volume_info(struct snd_kcontrol *kcontrol, } /* - * Alsa mixer interface function for getting the volume read from the DGC in a + * Alsa mixer interface function for getting the volume read from the DGC in a * 0 -100 alsa mixer format. */ static int __pcm_playback_volume_get(struct snd_kcontrol *kcontrol, struct snd_ctl_elem_value *ucontrol) { u16 volL; - u16 volR; + u16 volR; u16 val; - + val = omap_tsc2101_audio_read(TSC2101_DAC_GAIN_CTRL); M_DPRINTK("registry value = %d!\n", val); volL = DGC_DALVL_EXTRACT(val); @@ -786,19 +835,22 @@ static int __pcm_playback_volume_get(struct snd_kcontrol *kcontrol, volL = get_dac_gain_control_volume_as_mixer_volume(volL); volR = get_dac_gain_control_volume_as_mixer_volume(volR); - + ucontrol->value.integer.value[0] = volL; /* L */ ucontrol->value.integer.value[1] = volR; /* R */ - - M_DPRINTK("mixer volume left = %ld, right = %ld\n", ucontrol->value.integer.value[0], ucontrol->value.integer.value[1]); + + M_DPRINTK("mixer volume left = %ld, right = %ld\n", + ucontrol->value.integer.value[0], + ucontrol->value.integer.value[1]); return 0; } static int __pcm_playback_volume_put(struct snd_kcontrol *kcontrol, struct snd_ctl_elem_value *ucontrol) { - return set_mixer_volume_as_dac_gain_control_volume(ucontrol->value.integer.value[0], - ucontrol->value.integer.value[1]); + return set_mixer_volume_as_dac_gain_control_volume( + ucontrol->value.integer.value[0], + ucontrol->value.integer.value[1]); } static int __pcm_playback_switch_info(struct snd_kcontrol *kcontrol, @@ -811,7 +863,7 @@ static int __pcm_playback_switch_info(struct snd_kcontrol *kcontrol, return 0; } -/* +/* * When DGC_DALMU (bit 15) is 1, the left channel is muted. * When DGC_DALMU is 0, left channel is not muted. * Same logic apply also for the right channel. @@ -820,16 +872,16 @@ static int __pcm_playback_switch_get(struct snd_kcontrol *kcontrol, struct snd_ctl_elem_value *ucontrol) { u16 val = omap_tsc2101_audio_read(TSC2101_DAC_GAIN_CTRL); - - ucontrol->value.integer.value[0] = IS_UNMUTED(15, val); // left - ucontrol->value.integer.value[1] = IS_UNMUTED(7, val); // right + + ucontrol->value.integer.value[0] = IS_UNMUTED(15, val); /* left */ + ucontrol->value.integer.value[1] = IS_UNMUTED(7, val); /* right */ return 0; } static int __pcm_playback_switch_put(struct snd_kcontrol *kcontrol, struct snd_ctl_elem_value *ucontrol) { - return dac_gain_control_unmute(ucontrol->value.integer.value[0], + return dac_gain_control_unmute(ucontrol->value.integer.value[0], ucontrol->value.integer.value[1]); } @@ -848,7 +900,7 @@ static int __headset_playback_volume_get(struct snd_kcontrol *kcontrol, { u16 val; u16 vol; - + val = omap_tsc2101_audio_read(TSC2101_HEADSET_GAIN_CTRL); M_DPRINTK("registry value = %d\n", val); vol = HGC_ADPGA_HED_EXTRACT(val); @@ -856,15 +908,17 @@ static int __headset_playback_volume_get(struct snd_kcontrol *kcontrol, vol = get_headset_gain_control_volume_as_mixer_volume(vol); ucontrol->value.integer.value[0] = vol; - - M_DPRINTK("mixer volume returned = %ld\n", ucontrol->value.integer.value[0]); + + M_DPRINTK("mixer volume returned = %ld\n", + ucontrol->value.integer.value[0]); return 0; } static int __headset_playback_volume_put(struct snd_kcontrol *kcontrol, struct snd_ctl_elem_value *ucontrol) { - return set_mixer_volume_as_headset_gain_control_volume(ucontrol->value.integer.value[0]); + return set_mixer_volume_as_headset_gain_control_volume( + ucontrol->value.integer.value[0]); } static int __headset_playback_switch_info(struct snd_kcontrol *kcontrol, @@ -877,7 +931,8 @@ static int __headset_playback_switch_info(struct snd_kcontrol *kcontrol, return 0; } -/* When HGC_ADMUT_HED (bit 15) is 1, the headset is muted. +/* + * When HGC_ADMUT_HED (bit 15) is 1, the headset is muted. * When HGC_ADMUT_HED is 0, headset is not muted. */ static int __headset_playback_switch_get(struct snd_kcontrol *kcontrol, @@ -891,7 +946,7 @@ static int __headset_playback_switch_get(struct snd_kcontrol *kcontrol, static int __headset_playback_switch_put(struct snd_kcontrol *kcontrol, struct snd_ctl_elem_value *ucontrol) { - // mute/unmute headset + /* mute/unmute headset */ return adc_pga_unmute_control(ucontrol->value.integer.value[0], TSC2101_HEADSET_GAIN_CTRL, 15); @@ -912,22 +967,24 @@ static int __handset_playback_volume_get(struct snd_kcontrol *kcontrol, { u16 val; u16 vol; - + val = omap_tsc2101_audio_read(TSC2101_HANDSET_GAIN_CTRL); M_DPRINTK("registry value = %d\n", val); vol = HNGC_ADPGA_HND_EXTRACT(val); vol = vol & ~HNGC_ADMUT_HND; vol = get_handset_gain_control_volume_as_mixer_volume(vol); ucontrol->value.integer.value[0] = vol; - - M_DPRINTK("mixer volume returned = %ld\n", ucontrol->value.integer.value[0]); + + M_DPRINTK("mixer volume returned = %ld\n", + ucontrol->value.integer.value[0]); return 0; } static int __handset_playback_volume_put(struct snd_kcontrol *kcontrol, struct snd_ctl_elem_value *ucontrol) { - return set_mixer_volume_as_handset_gain_control_volume(ucontrol->value.integer.value[0]); + return set_mixer_volume_as_handset_gain_control_volume( + ucontrol->value.integer.value[0]); } static int __handset_playback_switch_info(struct snd_kcontrol *kcontrol, @@ -940,7 +997,8 @@ static int __handset_playback_switch_info(struct snd_kcontrol *kcontrol, return 0; } -/* When HNGC_ADMUT_HND (bit 15) is 1, the handset is muted. +/* + * When HNGC_ADMUT_HND (bit 15) is 1, the handset is muted. * When HNGC_ADMUT_HND is 0, handset is not muted. */ static int __handset_playback_switch_get(struct snd_kcontrol *kcontrol, @@ -954,7 +1012,7 @@ static int __handset_playback_switch_get(struct snd_kcontrol *kcontrol, static int __handset_playback_switch_put(struct snd_kcontrol *kcontrol, struct snd_ctl_elem_value *ucontrol) { - // handset mute/unmute + /* handset mute/unmute */ return adc_pga_unmute_control(ucontrol->value.integer.value[0], TSC2101_HANDSET_GAIN_CTRL, 15); @@ -970,7 +1028,8 @@ static int __cellphone_input_switch_info(struct snd_kcontrol *kcontrol, return 0; } -/* When BGC_MUT_CP (bit 15) = 1, power down cellphone input pga. +/* + * When BGC_MUT_CP (bit 15) = 1, power down cellphone input pga. * When BGC_MUT_CP = 0, power up cellphone input pga. */ static int __cellphone_input_switch_get(struct snd_kcontrol *kcontrol, @@ -986,7 +1045,7 @@ static int __cellphone_input_switch_put(struct snd_kcontrol *kcontrol, { return adc_pga_unmute_control(ucontrol->value.integer.value[0], TSC2101_BUZZER_GAIN_CTRL, - 15); + 15); } static int __buzzer_input_switch_info(struct snd_kcontrol *kcontrol, @@ -999,7 +1058,8 @@ static int __buzzer_input_switch_info(struct snd_kcontrol *kcontrol, return 0; } -/* When BGC_MUT_BU (bit 6) = 1, power down cellphone input pga. +/* + * When BGC_MUT_BU (bit 6) = 1, power down cellphone input pga. * When BGC_MUT_BU = 0, power up cellphone input pga. */ static int __buzzer_input_switch_get(struct snd_kcontrol *kcontrol, @@ -1015,82 +1075,82 @@ static int __buzzer_input_switch_put(struct snd_kcontrol *kcontrol, { return adc_pga_unmute_control(ucontrol->value.integer.value[0], TSC2101_BUZZER_GAIN_CTRL, - 6); + 6); } static struct snd_kcontrol_new tsc2101_control[] __devinitdata = { { - .name = "Target Playback Route", - .iface = SNDRV_CTL_ELEM_IFACE_MIXER, - .index = 0, - .access= SNDRV_CTL_ELEM_ACCESS_READWRITE, - .info = __pcm_playback_target_info, - .get = __pcm_playback_target_get, - .put = __pcm_playback_target_put, + .name = "Target Playback Route", + .iface = SNDRV_CTL_ELEM_IFACE_MIXER, + .index = 0, + .access = SNDRV_CTL_ELEM_ACCESS_READWRITE, + .info = __pcm_playback_target_info, + .get = __pcm_playback_target_get, + .put = __pcm_playback_target_put, }, { - .name = "Master Playback Volume", - .iface = SNDRV_CTL_ELEM_IFACE_MIXER, - .index = 0, - .access= SNDRV_CTL_ELEM_ACCESS_READWRITE, - .info = __pcm_playback_volume_info, - .get = __pcm_playback_volume_get, - .put = __pcm_playback_volume_put, + .name = "Master Playback Volume", + .iface = SNDRV_CTL_ELEM_IFACE_MIXER, + .index = 0, + .access = SNDRV_CTL_ELEM_ACCESS_READWRITE, + .info = __pcm_playback_volume_info, + .get = __pcm_playback_volume_get, + .put = __pcm_playback_volume_put, }, { - .name = "Master Playback Switch", - .iface = SNDRV_CTL_ELEM_IFACE_MIXER, - .index = 0, - .access= SNDRV_CTL_ELEM_ACCESS_READWRITE, - .info = __pcm_playback_switch_info, - .get = __pcm_playback_switch_get, - .put = __pcm_playback_switch_put, + .name = "Master Playback Switch", + .iface = SNDRV_CTL_ELEM_IFACE_MIXER, + .index = 0, + .access = SNDRV_CTL_ELEM_ACCESS_READWRITE, + .info = __pcm_playback_switch_info, + .get = __pcm_playback_switch_get, + .put = __pcm_playback_switch_put, }, { - .name = "Headset Playback Volume", - .iface = SNDRV_CTL_ELEM_IFACE_MIXER, - .index = 0, - .access= SNDRV_CTL_ELEM_ACCESS_READWRITE, - .info = __headset_playback_volume_info, - .get = __headset_playback_volume_get, - .put = __headset_playback_volume_put, + .name = "Headset Playback Volume", + .iface = SNDRV_CTL_ELEM_IFACE_MIXER, + .index = 0, + .access = SNDRV_CTL_ELEM_ACCESS_READWRITE, + .info = __headset_playback_volume_info, + .get = __headset_playback_volume_get, + .put = __headset_playback_volume_put, }, { - .name = "Headset Playback Switch", - .iface = SNDRV_CTL_ELEM_IFACE_MIXER, - .index = 0, - .access= SNDRV_CTL_ELEM_ACCESS_READWRITE, - .info = __headset_playback_switch_info, - .get = __headset_playback_switch_get, - .put = __headset_playback_switch_put, + .name = "Headset Playback Switch", + .iface = SNDRV_CTL_ELEM_IFACE_MIXER, + .index = 0, + .access = SNDRV_CTL_ELEM_ACCESS_READWRITE, + .info = __headset_playback_switch_info, + .get = __headset_playback_switch_get, + .put = __headset_playback_switch_put, }, { - .name = "Handset Playback Volume", - .iface = SNDRV_CTL_ELEM_IFACE_MIXER, - .index = 0, - .access= SNDRV_CTL_ELEM_ACCESS_READWRITE, - .info = __handset_playback_volume_info, - .get = __handset_playback_volume_get, - .put = __handset_playback_volume_put, + .name = "Handset Playback Volume", + .iface = SNDRV_CTL_ELEM_IFACE_MIXER, + .index = 0, + .access = SNDRV_CTL_ELEM_ACCESS_READWRITE, + .info = __handset_playback_volume_info, + .get = __handset_playback_volume_get, + .put = __handset_playback_volume_put, }, { - .name = "Handset Playback Switch", - .iface = SNDRV_CTL_ELEM_IFACE_MIXER, - .index = 0, - .access= SNDRV_CTL_ELEM_ACCESS_READWRITE, - .info = __handset_playback_switch_info, - .get = __handset_playback_switch_get, - .put = __handset_playback_switch_put, + .name = "Handset Playback Switch", + .iface = SNDRV_CTL_ELEM_IFACE_MIXER, + .index = 0, + .access = SNDRV_CTL_ELEM_ACCESS_READWRITE, + .info = __handset_playback_switch_info, + .get = __handset_playback_switch_get, + .put = __handset_playback_switch_put, }, { - .name = "Cellphone Input Switch", - .iface = SNDRV_CTL_ELEM_IFACE_MIXER, - .index = 0, - .access= SNDRV_CTL_ELEM_ACCESS_READWRITE, - .info = __cellphone_input_switch_info, - .get = __cellphone_input_switch_get, - .put = __cellphone_input_switch_put, + .name = "Cellphone Input Switch", + .iface = SNDRV_CTL_ELEM_IFACE_MIXER, + .index = 0, + .access = SNDRV_CTL_ELEM_ACCESS_READWRITE, + .info = __cellphone_input_switch_info, + .get = __cellphone_input_switch_get, + .put = __cellphone_input_switch_put, }, { - .name = "Buzzer Input Switch", - .iface = SNDRV_CTL_ELEM_IFACE_MIXER, - .index = 0, - .access= SNDRV_CTL_ELEM_ACCESS_READWRITE, - .info = __buzzer_input_switch_info, - .get = __buzzer_input_switch_get, - .put = __buzzer_input_switch_put, + .name = "Buzzer Input Switch", + .iface = SNDRV_CTL_ELEM_IFACE_MIXER, + .index = 0, + .access = SNDRV_CTL_ELEM_ACCESS_READWRITE, + .info = __buzzer_input_switch_info, + .get = __buzzer_input_switch_get, + .put = __buzzer_input_switch_put, } }; @@ -1106,20 +1166,20 @@ void snd_omap_resume_mixer(void) } #endif -int snd_omap_mixer(struct snd_card_omap_codec *tsc2101) +int snd_omap_mixer(struct snd_card_omap_codec *tsc2101) { - int i=0; - int err=0; + int i = 0; + int err = 0; - if (!tsc2101) { + if (!tsc2101) return -EINVAL; - } - for (i=0; i < ARRAY_SIZE(tsc2101_control); i++) { - if ((err = snd_ctl_add(tsc2101->card, - snd_ctl_new1(&tsc2101_control[i], - tsc2101->card))) < 0) { + + for (i = 0; i < ARRAY_SIZE(tsc2101_control); i++) { + err = snd_ctl_add(tsc2101->card, + snd_ctl_new1(&tsc2101_control[i], + tsc2101->card)); + if (err < 0) return err; - } } return 0; } -- 1.5.5-rc3.GIT -- To unsubscribe from this list: send the line "unsubscribe linux-omap" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html ^ permalink raw reply related [flat|nested] 23+ messages in thread
* [PATCH 13/19] Code clean-up for sound/arm/omap/omap-alsa-tsc2101-mixer.h 2008-04-18 8:00 ` [PATCH 12/19] Code clean-up for sound/arm/omap/omap-alsa-tsc2101-mixer.c Eduardo Valentin @ 2008-04-18 8:01 ` Eduardo Valentin 2008-04-18 8:01 ` [PATCH 14/19] Code clean-up for sound/arm/omap/omap-alsa-tsc2101.c Eduardo Valentin 0 siblings, 1 reply; 23+ messages in thread From: Eduardo Valentin @ 2008-04-18 8:01 UTC (permalink / raw) To: linux-omap; +Cc: Felipe Balbi, Ragner Magalhaes, Eduardo Valentin From: Eduardo Valentin <eduardo.valentin@indt.org.br> Removed lots of whitespaces and a few errors and warnings reported by checkpatch.pl. Signed-off-by: Eduardo Valentin <eduardo.valentin@indt.org.br> --- sound/arm/omap/omap-alsa-tsc2101-mixer.h | 29 ++++++++++++++++++----------- 1 files changed, 18 insertions(+), 11 deletions(-) diff --git a/sound/arm/omap/omap-alsa-tsc2101-mixer.h b/sound/arm/omap/omap-alsa-tsc2101-mixer.h index b110b36..c0d9b23 100644 --- a/sound/arm/omap/omap-alsa-tsc2101-mixer.h +++ b/sound/arm/omap/omap-alsa-tsc2101-mixer.h @@ -1,9 +1,9 @@ /* * sound/arm/omap/omap-alsa-tsc2101-mixer.h - * + * * Alsa Driver for TSC2101 codec for OMAP platform boards. * - * Copyright (C) 2005 Mika Laitio <lamikr@cc.jyu.fi> and + * Copyright (C) 2005 Mika Laitio <lamikr@cc.jyu.fi> and * Everett Coleman II <gcc80x86@fuzzyneural.net> * * Based on the ideas in omap-aic23.c and sa11xx-uda1341.c @@ -33,9 +33,9 @@ * History: * * 2006-03-01 Mika Laitio - Mixer for the tsc2101 driver used in omap boards. - * Can switch between headset and loudspeaker playback, + * Can switch between headset and loudspeaker playback, * mute and unmute dgc, set dgc volume. Record source switch, - * keyclick, buzzer and headset volume and handset volume control + * keyclick, buzzer and headset volume and handset volume control * are still missing. */ @@ -46,8 +46,8 @@ #include "omap-alsa-dma.h" /* tsc2101 DAC gain control volume specific */ -#define OUTPUT_VOLUME_MIN 0x7F // 1111111 = -63.5 DB -#define OUTPUT_VOLUME_MAX 0x32 // 110010 +#define OUTPUT_VOLUME_MIN 0x7F /* 1111111 = -63.5 DB */ +#define OUTPUT_VOLUME_MAX 0x32 /* 110010 */ #define OUTPUT_VOLUME_RANGE (OUTPUT_VOLUME_MIN - OUTPUT_VOLUME_MAX) /* use input vol of 75 for 0dB gain */ @@ -60,10 +60,15 @@ #define PLAYBACK_TARGET_HEADPHONE 0x01 #define PLAYBACK_TARGET_CELLPHONE 0x02 -/* following are used for register 03h Mixer PGA control bits D7-D5 for selecting record source */ +/* + * Following are used for register 03h Mixer PGA control bits D7-D5 for + * selecting record source + */ #define REC_SRC_TARGET_COUNT 0x08 -#define REC_SRC_SINGLE_ENDED_MICIN_HED 0x00 // oss code referred to MIXER_LINE -#define REC_SRC_SINGLE_ENDED_MICIN_HND 0x01 // oss code referred to MIXER_MIC +/* oss code referred to MIXER_LINE */ +#define REC_SRC_SINGLE_ENDED_MICIN_HED 0x00 +/* oss code referred to MIXER_MIC */ +#define REC_SRC_SINGLE_ENDED_MICIN_HND 0x01 #define REC_SRC_SINGLE_ENDED_AUX1 0x02 #define REC_SRC_SINGLE_ENDED_AUX2 0x03 #define REC_SRC_MICIN_HED_AND_AUX1 0x04 @@ -71,8 +76,10 @@ #define REC_SRC_MICIN_HND_AND_AUX1 0x06 #define REC_SRC_MICIN_HND_AND_AUX2 0x07 -#define DEFAULT_OUTPUT_VOLUME 90 // default output volume to dac dgc -#define DEFAULT_INPUT_VOLUME 20 // default record volume +/* default output volume to dac dgc */ +#define DEFAULT_OUTPUT_VOLUME 90 +/* default record volume */ +#define DEFAULT_INPUT_VOLUME 20 #define TSC2101_AUDIO_CODEC_REGISTERS_PAGE2 (2) -- 1.5.5-rc3.GIT ^ permalink raw reply related [flat|nested] 23+ messages in thread
* [PATCH 14/19] Code clean-up for sound/arm/omap/omap-alsa-tsc2101.c 2008-04-18 8:01 ` [PATCH 13/19] Code clean-up for sound/arm/omap/omap-alsa-tsc2101-mixer.h Eduardo Valentin @ 2008-04-18 8:01 ` Eduardo Valentin 2008-04-18 8:01 ` [PATCH 15/19] Code clean-up for sound/arm/omap/omap-alsa-tsc2101.h Eduardo Valentin 0 siblings, 1 reply; 23+ messages in thread From: Eduardo Valentin @ 2008-04-18 8:01 UTC (permalink / raw) To: linux-omap; +Cc: Felipe Balbi, Ragner Magalhaes, Eduardo Valentin From: Eduardo Valentin <eduardo.valentin@indt.org.br> Removed lots of whitespaces and a few errors and warnings reported by checkpatch.pl. Signed-off-by: Eduardo Valentin <eduardo.valentin@indt.org.br> --- sound/arm/omap/omap-alsa-tsc2101.c | 292 +++++++++++++++++++++++------------- 1 files changed, 190 insertions(+), 102 deletions(-) diff --git a/sound/arm/omap/omap-alsa-tsc2101.c b/sound/arm/omap/omap-alsa-tsc2101.c index 1d8adc1..8a7e770 100644 --- a/sound/arm/omap/omap-alsa-tsc2101.c +++ b/sound/arm/omap/omap-alsa-tsc2101.c @@ -1,15 +1,15 @@ /* * sound/arm/omap/omap-alsa-tsc2101.c - * - * Alsa codec Driver for TSC2101 chip for OMAP platform boards. + * + * Alsa codec Driver for TSC2101 chip for OMAP platform boards. * Code obtained from oss omap drivers * * Copyright (C) 2004 Texas Instruments, Inc. * Written by Nishanth Menon and Sriram Kannan - * + * * Copyright (C) 2006 Instituto Nokia de Tecnologia - INdT - Manaus Brazil * Alsa modularization by Daniel Petrini (d.pensator@gmail.com) - * + * * Copyright (C) 2006 Mika Laitio <lamikr@cc.jyu.fi> * * This program is free software; you can redistribute it and/or modify it @@ -23,31 +23,30 @@ #include <linux/platform_device.h> #include <linux/clk.h> #include <linux/spi/tsc2101.h> -#include <asm/io.h> -#include <asm/arch/mcbsp.h> - +#include <linux/io.h> #include <linux/slab.h> #ifdef CONFIG_PM #include <linux/pm.h> #endif + #include <asm/mach-types.h> #include <asm/arch/dma.h> #include <asm/arch/clock.h> - +#include <asm/arch/mcbsp.h> #include <asm/hardware/tsc2101.h> - #include <asm/arch/omap-alsa.h> + #include "omap-alsa-tsc2101.h" struct mcbsp_dev_info mcbsp_dev; -static struct clk *tsc2101_mclk = 0; +static struct clk *tsc2101_mclk; -//#define DUMP_TSC2101_AUDIO_REGISTERS +/* #define DUMP_TSC2101_AUDIO_REGISTERS */ #undef DUMP_TSC2101_AUDIO_REGISTERS /* - * Hardware capabilities + * Hardware capabilities */ /* @@ -77,7 +76,7 @@ static const struct tsc2101_samplerate_reg_info {8727, 6, 0}, /* Div 5 */ {8820, 5, 1}, - {9600, 5, 0}, + {9600, 5, 0}, /* Div 4 */ {11025, 4, 1}, {12000, 4, 0}, @@ -92,22 +91,22 @@ static const struct tsc2101_samplerate_reg_info {32000, 1, 0}, /* Div 1 */ {44100, 0, 1}, - {48000, 0, 0}, + {48000, 0, 0}, }; static struct snd_pcm_hardware tsc2101_snd_omap_alsa_playback = { - .info = (SNDRV_PCM_INFO_INTERLEAVED | SNDRV_PCM_INFO_BLOCK_TRANSFER | - SNDRV_PCM_INFO_MMAP | SNDRV_PCM_INFO_MMAP_VALID), + .info = SNDRV_PCM_INFO_INTERLEAVED | SNDRV_PCM_INFO_BLOCK_TRANSFER | + SNDRV_PCM_INFO_MMAP | SNDRV_PCM_INFO_MMAP_VALID, #ifdef CONFIG_MACH_OMAP_H6300 - .formats = (SNDRV_PCM_FMTBIT_S8), + .formats = SNDRV_PCM_FMTBIT_S8, #else - .formats = (SNDRV_PCM_FMTBIT_S16_LE), + .formats = SNDRV_PCM_FMTBIT_S16_LE, #endif - .rates = (SNDRV_PCM_RATE_8000 | SNDRV_PCM_RATE_11025 | + .rates = SNDRV_PCM_RATE_8000 | SNDRV_PCM_RATE_11025 | SNDRV_PCM_RATE_16000 | SNDRV_PCM_RATE_22050 | SNDRV_PCM_RATE_32000 | SNDRV_PCM_RATE_44100 | SNDRV_PCM_RATE_48000 | - SNDRV_PCM_RATE_KNOT), + SNDRV_PCM_RATE_KNOT, .rate_min = 7350, .rate_max = 48000, .channels_min = 2, @@ -121,14 +120,14 @@ static struct snd_pcm_hardware tsc2101_snd_omap_alsa_playback = { }; static struct snd_pcm_hardware tsc2101_snd_omap_alsa_capture = { - .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), - .rates = (SNDRV_PCM_RATE_8000 | SNDRV_PCM_RATE_11025 | + .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, + .rates = SNDRV_PCM_RATE_8000 | SNDRV_PCM_RATE_11025 | SNDRV_PCM_RATE_16000 | SNDRV_PCM_RATE_22050 | SNDRV_PCM_RATE_32000 | SNDRV_PCM_RATE_44100 | SNDRV_PCM_RATE_48000 | - SNDRV_PCM_RATE_KNOT), + SNDRV_PCM_RATE_KNOT, .rate_min = 7350, .rate_max = 48000, .channels_min = 2, @@ -141,7 +140,7 @@ static struct snd_pcm_hardware tsc2101_snd_omap_alsa_capture = { .fifo_size = 0, }; -/* +/* * Simplified write for tsc2101 audio registers. */ inline void tsc2101_audio_write(u8 address, u16 data) @@ -150,7 +149,7 @@ inline void tsc2101_audio_write(u8 address, u16 data) address, data); } -/* +/* * Simplified read for tsc2101 audio registers. */ inline u16 tsc2101_audio_read(u8 address) @@ -160,49 +159,130 @@ inline u16 tsc2101_audio_read(u8 address) } #ifdef DUMP_TSC2101_AUDIO_REGISTERS -void dump_tsc2101_audio_reg(void) { - printk("TSC2101_AUDIO_CTRL_1 = 0x%04x\n", tsc2101_audio_read(TSC2101_AUDIO_CTRL_1)); - printk("TSC2101_HEADSET_GAIN_CTRL = 0x%04x\n", tsc2101_audio_read(TSC2101_HEADSET_GAIN_CTRL)); - printk("TSC2101_DAC_GAIN_CTRL = 0x%04x\n", tsc2101_audio_read(TSC2101_DAC_GAIN_CTRL)); - printk("TSC2101_MIXER_PGA_CTRL = 0x%04x\n", tsc2101_audio_read(TSC2101_MIXER_PGA_CTRL)); - printk("TSC2101_AUDIO_CTRL_2 = 0x%04x\n", tsc2101_audio_read(TSC2101_AUDIO_CTRL_2)); - printk("TSC2101_CODEC_POWER_CTRL = 0x%04x\n", tsc2101_audio_read(TSC2101_CODEC_POWER_CTRL)); - printk("TSC2101_AUDIO_CTRL_3 = 0x%04x\n", tsc2101_audio_read(TSC2101_AUDIO_CTRL_3)); - printk("TSC2101_LCH_BASS_BOOST_N0 = 0x%04x\n", tsc2101_audio_read(TSC2101_LCH_BASS_BOOST_N0)); - printk("TSC2101_LCH_BASS_BOOST_N1 = 0x%04x\n", tsc2101_audio_read(TSC2101_LCH_BASS_BOOST_N1)); - printk("TSC2101_LCH_BASS_BOOST_N2 = 0x%04x\n", tsc2101_audio_read(TSC2101_LCH_BASS_BOOST_N2)); - printk("TSC2101_LCH_BASS_BOOST_N3 = 0x%04x\n", tsc2101_audio_read(TSC2101_LCH_BASS_BOOST_N3)); - printk("TSC2101_LCH_BASS_BOOST_N4 = 0x%04x\n", tsc2101_audio_read(TSC2101_LCH_BASS_BOOST_N4)); - printk("TSC2101_LCH_BASS_BOOST_N5 = 0x%04x\n", tsc2101_audio_read(TSC2101_LCH_BASS_BOOST_N5)); - printk("TSC2101_LCH_BASS_BOOST_D1 = 0x%04x\n", tsc2101_audio_read(TSC2101_LCH_BASS_BOOST_D1)); - printk("TSC2101_LCH_BASS_BOOST_D2 = 0x%04x\n", tsc2101_audio_read(TSC2101_LCH_BASS_BOOST_D2)); - printk("TSC2101_LCH_BASS_BOOST_D4 = 0x%04x\n", tsc2101_audio_read(TSC2101_LCH_BASS_BOOST_D4)); - printk("TSC2101_LCH_BASS_BOOST_D5 = 0x%04x\n", tsc2101_audio_read(TSC2101_LCH_BASS_BOOST_D5)); - - printk("TSC2101_RCH_BASS_BOOST_N0 = 0x%04x\n", tsc2101_audio_read(TSC2101_RCH_BASS_BOOST_N0)); - printk("TSC2101_RCH_BASS_BOOST_N1 = 0x%04x\n", tsc2101_audio_read(TSC2101_RCH_BASS_BOOST_N1)); - printk("TSC2101_RCH_BASS_BOOST_N2 = 0x%04x\n", tsc2101_audio_read(TSC2101_RCH_BASS_BOOST_N2)); - printk("TSC2101_RCH_BASS_BOOST_N3 = 0x%04x\n", tsc2101_audio_read(TSC2101_RCH_BASS_BOOST_N3)); - printk("TSC2101_RCH_BASS_BOOST_N4 = 0x%04x\n", tsc2101_audio_read(TSC2101_RCH_BASS_BOOST_N4)); - printk("TSC2101_RCH_BASS_BOOST_N5 = 0x%04x\n", tsc2101_audio_read(TSC2101_RCH_BASS_BOOST_N5)); - printk("TSC2101_RCH_BASS_BOOST_D1 = 0x%04x\n", tsc2101_audio_read(TSC2101_RCH_BASS_BOOST_D1)); - printk("TSC2101_RCH_BASS_BOOST_D2 = 0x%04x\n", tsc2101_audio_read(TSC2101_RCH_BASS_BOOST_D2)); - printk("TSC2101_RCH_BASS_BOOST_D4 = 0x%04x\n", tsc2101_audio_read(TSC2101_RCH_BASS_BOOST_D4)); - printk("TSC2101_RCH_BASS_BOOST_D5 = 0x%04x\n", tsc2101_audio_read(TSC2101_RCH_BASS_BOOST_D5)); - - printk("TSC2101_PLL_PROG_1 = 0x%04x\n", tsc2101_audio_read(TSC2101_PLL_PROG_1)); - printk("TSC2101_PLL_PROG_1 = 0x%04x\n", tsc2101_audio_read(TSC2101_PLL_PROG_2)); - printk("TSC2101_AUDIO_CTRL_4 = 0x%04x\n", tsc2101_audio_read(TSC2101_AUDIO_CTRL_4)); - printk("TSC2101_HANDSET_GAIN_CTRL = 0x%04x\n", tsc2101_audio_read(TSC2101_HANDSET_GAIN_CTRL)); - printk("TSC2101_BUZZER_GAIN_CTRL = 0x%04x\n", tsc2101_audio_read(TSC2101_BUZZER_GAIN_CTRL)); - printk("TSC2101_AUDIO_CTRL_5 = 0x%04x\n", tsc2101_audio_read(TSC2101_AUDIO_CTRL_5)); - printk("TSC2101_AUDIO_CTRL_6 = 0x%04x\n", tsc2101_audio_read(TSC2101_AUDIO_CTRL_6)); - printk("TSC2101_AUDIO_CTRL_7 = 0x%04x\n", tsc2101_audio_read(TSC2101_AUDIO_CTRL_7)); - printk("TSC2101_GPIO_CTRL = 0x%04x\n", tsc2101_audio_read(TSC2101_GPIO_CTRL)); - printk("TSC2101_AGC_CTRL = 0x%04x\n", tsc2101_audio_read(TSC2101_AGC_CTRL)); - printk("TSC2101_POWERDOWN_STS = 0x%04x\n", tsc2101_audio_read(TSC2101_POWERDOWN_STS)); - printk("TSC2101_MIC_AGC_CONTROL = 0x%04x\n", tsc2101_audio_read(TSC2101_MIC_AGC_CONTROL)); - printk("TSC2101_CELL_AGC_CONTROL = 0x%04x\n", tsc2101_audio_read(TSC2101_CELL_AGC_CONTROL)); +void dump_tsc2101_audio_reg(void) +{ + dev_dbg(&mcbsp_dev.mcbsp_dev->dev, + "TSC2101_AUDIO_CTRL_1 = 0x%04x\n", + tsc2101_audio_read(TSC2101_AUDIO_CTRL_1)); + dev_dbg(&mcbsp_dev.mcbsp_dev->dev, + "TSC2101_HEADSET_GAIN_CTRL = 0x%04x\n", + tsc2101_audio_read(TSC2101_HEADSET_GAIN_CTRL)); + dev_dbg(&mcbsp_dev.mcbsp_dev->dev, + "TSC2101_DAC_GAIN_CTRL = 0x%04x\n", + tsc2101_audio_read(TSC2101_DAC_GAIN_CTRL)); + dev_dbg(&mcbsp_dev.mcbsp_dev->dev, + "TSC2101_MIXER_PGA_CTRL = 0x%04x\n", + tsc2101_audio_read(TSC2101_MIXER_PGA_CTRL)); + dev_dbg(&mcbsp_dev.mcbsp_dev->dev, + "TSC2101_AUDIO_CTRL_2 = 0x%04x\n", + tsc2101_audio_read(TSC2101_AUDIO_CTRL_2)); + dev_dbg(&mcbsp_dev.mcbsp_dev->dev, + "TSC2101_CODEC_POWER_CTRL = 0x%04x\n", + tsc2101_audio_read(TSC2101_CODEC_POWER_CTRL)); + dev_dbg(&mcbsp_dev.mcbsp_dev->dev, + "TSC2101_AUDIO_CTRL_3 = 0x%04x\n", + tsc2101_audio_read(TSC2101_AUDIO_CTRL_3)); + dev_dbg(&mcbsp_dev.mcbsp_dev->dev, + "TSC2101_LCH_BASS_BOOST_N0 = 0x%04x\n", + tsc2101_audio_read(TSC2101_LCH_BASS_BOOST_N0)); + dev_dbg(&mcbsp_dev.mcbsp_dev->dev, + "TSC2101_LCH_BASS_BOOST_N1 = 0x%04x\n", + tsc2101_audio_read(TSC2101_LCH_BASS_BOOST_N1)); + dev_dbg(&mcbsp_dev.mcbsp_dev->dev, + "TSC2101_LCH_BASS_BOOST_N2 = 0x%04x\n", + tsc2101_audio_read(TSC2101_LCH_BASS_BOOST_N2)); + dev_dbg(&mcbsp_dev.mcbsp_dev->dev, + "TSC2101_LCH_BASS_BOOST_N3 = 0x%04x\n", + tsc2101_audio_read(TSC2101_LCH_BASS_BOOST_N3)); + dev_dbg(&mcbsp_dev.mcbsp_dev->dev, + "TSC2101_LCH_BASS_BOOST_N4 = 0x%04x\n", + tsc2101_audio_read(TSC2101_LCH_BASS_BOOST_N4)); + dev_dbg(&mcbsp_dev.mcbsp_dev->dev, + "TSC2101_LCH_BASS_BOOST_N5 = 0x%04x\n", + tsc2101_audio_read(TSC2101_LCH_BASS_BOOST_N5)); + dev_dbg(&mcbsp_dev.mcbsp_dev->dev, + "TSC2101_LCH_BASS_BOOST_D1 = 0x%04x\n", + tsc2101_audio_read(TSC2101_LCH_BASS_BOOST_D1)); + dev_dbg(&mcbsp_dev.mcbsp_dev->dev, + "TSC2101_LCH_BASS_BOOST_D2 = 0x%04x\n", + tsc2101_audio_read(TSC2101_LCH_BASS_BOOST_D2)); + dev_dbg(&mcbsp_dev.mcbsp_dev->dev, + "TSC2101_LCH_BASS_BOOST_D4 = 0x%04x\n", + tsc2101_audio_read(TSC2101_LCH_BASS_BOOST_D4)); + dev_dbg(&mcbsp_dev.mcbsp_dev->dev, + "TSC2101_LCH_BASS_BOOST_D5 = 0x%04x\n", + tsc2101_audio_read(TSC2101_LCH_BASS_BOOST_D5)); + + dev_dbg(&mcbsp_dev.mcbsp_dev->dev, + "TSC2101_RCH_BASS_BOOST_N0 = 0x%04x\n", + tsc2101_audio_read(TSC2101_RCH_BASS_BOOST_N0)); + dev_dbg(&mcbsp_dev.mcbsp_dev->dev, + "TSC2101_RCH_BASS_BOOST_N1 = 0x%04x\n", + tsc2101_audio_read(TSC2101_RCH_BASS_BOOST_N1)); + dev_dbg(&mcbsp_dev.mcbsp_dev->dev, + "TSC2101_RCH_BASS_BOOST_N2 = 0x%04x\n", + tsc2101_audio_read(TSC2101_RCH_BASS_BOOST_N2)); + dev_dbg(&mcbsp_dev.mcbsp_dev->dev, + "TSC2101_RCH_BASS_BOOST_N3 = 0x%04x\n", + tsc2101_audio_read(TSC2101_RCH_BASS_BOOST_N3)); + dev_dbg(&mcbsp_dev.mcbsp_dev->dev, + "TSC2101_RCH_BASS_BOOST_N4 = 0x%04x\n", + tsc2101_audio_read(TSC2101_RCH_BASS_BOOST_N4)); + dev_dbg(&mcbsp_dev.mcbsp_dev->dev, + "TSC2101_RCH_BASS_BOOST_N5 = 0x%04x\n", + tsc2101_audio_read(TSC2101_RCH_BASS_BOOST_N5)); + dev_dbg(&mcbsp_dev.mcbsp_dev->dev, + "TSC2101_RCH_BASS_BOOST_D1 = 0x%04x\n", + tsc2101_audio_read(TSC2101_RCH_BASS_BOOST_D1)); + dev_dbg(&mcbsp_dev.mcbsp_dev->dev, + "TSC2101_RCH_BASS_BOOST_D2 = 0x%04x\n", + tsc2101_audio_read(TSC2101_RCH_BASS_BOOST_D2)); + dev_dbg(&mcbsp_dev.mcbsp_dev->dev, + "TSC2101_RCH_BASS_BOOST_D4 = 0x%04x\n", + tsc2101_audio_read(TSC2101_RCH_BASS_BOOST_D4)); + dev_dbg(&mcbsp_dev.mcbsp_dev->dev, + "TSC2101_RCH_BASS_BOOST_D5 = 0x%04x\n", + tsc2101_audio_read(TSC2101_RCH_BASS_BOOST_D5)); + + dev_dbg(&mcbsp_dev.mcbsp_dev->dev, + "TSC2101_PLL_PROG_1 = 0x%04x\n", + tsc2101_audio_read(TSC2101_PLL_PROG_1)); + dev_dbg(&mcbsp_dev.mcbsp_dev->dev, + "TSC2101_PLL_PROG_1 = 0x%04x\n", + tsc2101_audio_read(TSC2101_PLL_PROG_2)); + dev_dbg(&mcbsp_dev.mcbsp_dev->dev, + "TSC2101_AUDIO_CTRL_4 = 0x%04x\n", + tsc2101_audio_read(TSC2101_AUDIO_CTRL_4)); + dev_dbg(&mcbsp_dev.mcbsp_dev->dev, + "TSC2101_HANDSET_GAIN_CTRL = 0x%04x\n", + tsc2101_audio_read(TSC2101_HANDSET_GAIN_CTRL)); + dev_dbg(&mcbsp_dev.mcbsp_dev->dev, + "TSC2101_BUZZER_GAIN_CTRL = 0x%04x\n", + tsc2101_audio_read(TSC2101_BUZZER_GAIN_CTRL)); + dev_dbg(&mcbsp_dev.mcbsp_dev->dev, + "TSC2101_AUDIO_CTRL_5 = 0x%04x\n", + tsc2101_audio_read(TSC2101_AUDIO_CTRL_5)); + dev_dbg(&mcbsp_dev.mcbsp_dev->dev, + "TSC2101_AUDIO_CTRL_6 = 0x%04x\n", + tsc2101_audio_read(TSC2101_AUDIO_CTRL_6)); + dev_dbg(&mcbsp_dev.mcbsp_dev->dev, + "TSC2101_AUDIO_CTRL_7 = 0x%04x\n", + tsc2101_audio_read(TSC2101_AUDIO_CTRL_7)); + dev_dbg(&mcbsp_dev.mcbsp_dev->dev, + "TSC2101_GPIO_CTRL = 0x%04x\n", + tsc2101_audio_read(TSC2101_GPIO_CTRL)); + dev_dbg(&mcbsp_dev.mcbsp_dev->dev, + "TSC2101_AGC_CTRL = 0x%04x\n", + tsc2101_audio_read(TSC2101_AGC_CTRL)); + dev_dbg(&mcbsp_dev.mcbsp_dev->dev, + "TSC2101_POWERDOWN_STS = 0x%04x\n", + tsc2101_audio_read(TSC2101_POWERDOWN_STS)); + dev_dbg(&mcbsp_dev.mcbsp_dev->dev, + "TSC2101_MIC_AGC_CONTROL = 0x%04x\n", + tsc2101_audio_read(TSC2101_MIC_AGC_CONTROL)); + dev_dbg(&mcbsp_dev.mcbsp_dev->dev, + "TSC2101_CELL_AGC_CONTROL = 0x%04x\n", + tsc2101_audio_read(TSC2101_CELL_AGC_CONTROL)); } #endif @@ -233,14 +313,14 @@ void tsc2101_set_samplerate(long sample_rate) if (count == NUMBER_SAMPLE_RATES_SUPPORTED) { printk(KERN_ERR "Invalid Sample Rate %d requested\n", (int) sample_rate); - return; // -EPERM; + return; } /* Set AC1 */ data = tsc2101_audio_read(TSC2101_AUDIO_CTRL_1); /* Clear prev settings */ data &= ~(AC1_DACFS(0x07) | AC1_ADCFS(0x07)); - data |= AC1_DACFS(rate_reg_info[count].divisor) | + data |= AC1_DACFS(rate_reg_info[count].divisor) | AC1_ADCFS(rate_reg_info[count].divisor); tsc2101_audio_write(TSC2101_AUDIO_CTRL_1, data); @@ -254,20 +334,25 @@ void tsc2101_set_samplerate(long sample_rate) #endif /* #ifdef TSC_MASTER */ tsc2101_audio_write(TSC2101_AUDIO_CTRL_3, data); - /* Program the PLLs. This code assumes that the 12 Mhz MCLK is in use. - * If MCLK rate is something else, these values must be changed. + /* + * Program the PLLs. This code assumes that the 12 Mhz MCLK is in use. + * If MCLK rate is something else, these values must be changed. * See the tsc2101 specification for the details. */ if (rate_reg_info[count].fs_44kHz) { /* samplerate = (44.1kHZ / x), where x is int. */ tsc2101_audio_write(TSC2101_PLL_PROG_1, PLL1_PLLSEL | - PLL1_PVAL(1) | PLL1_I_VAL(7)); /* PVAL 1; I_VAL 7 */ - tsc2101_audio_write(TSC2101_PLL_PROG_2, PLL2_D_VAL(0x1490)); /* D_VAL 5264 */ + /* PVAL 1; I_VAL 7 */ + PLL1_PVAL(1) | PLL1_I_VAL(7)); + /* D_VAL 5264 */ + tsc2101_audio_write(TSC2101_PLL_PROG_2, PLL2_D_VAL(0x1490)); } else { /* samplerate = (48.kHZ / x), where x is int. */ tsc2101_audio_write(TSC2101_PLL_PROG_1, PLL1_PLLSEL | - PLL1_PVAL(1) | PLL1_I_VAL(8)); /* PVAL 1; I_VAL 8 */ - tsc2101_audio_write(TSC2101_PLL_PROG_2, PLL2_D_VAL(0x780)); /* D_VAL 1920 */ + /* PVAL 1; I_VAL 8 */ + PLL1_PVAL(1) | PLL1_I_VAL(8)); + /* D_VAL 1920 */ + tsc2101_audio_write(TSC2101_PLL_PROG_2, PLL2_D_VAL(0x780)); } /* Set the sample rate */ @@ -295,12 +380,12 @@ void tsc2101_configure(void) /* * Omap MCBSP clock and Power Management configuration - * + * * Here we have some functions that allows clock to be enabled and - * disabled only when needed. Besides doing clock configuration - * it allows turn on/turn off audio when necessary. + * disabled only when needed. Besides doing clock configuration + * it allows turn on/turn off audio when necessary. */ - + /* * Do clock framework mclk search */ @@ -312,7 +397,7 @@ void tsc2101_clock_setup(void) /* * Do some sanity check, set clock rate, starts it and turn codec audio on */ -int tsc2101_clock_on(void) +int tsc2101_clock_on(void) { int curUseCount; uint curRate; @@ -321,7 +406,7 @@ int tsc2101_clock_on(void) curUseCount = clk_get_usecount(tsc2101_mclk); DPRINTK("clock use count = %d\n", curUseCount); if (curUseCount > 0) { - // MCLK is already in use + /* MCLK is already in use */ printk(KERN_WARNING "MCLK already in use at %d Hz. We change it to %d Hz\n", (uint) clk_get_rate(tsc2101_mclk), @@ -331,8 +416,8 @@ int tsc2101_clock_on(void) if (curRate != CODEC_CLOCK) { err = clk_set_rate(tsc2101_mclk, CODEC_CLOCK); if (err) { - printk(KERN_WARNING - "Cannot set MCLK clock rate for TSC2101 CODEC, error code = %d\n", err); + printk(KERN_WARNING "Cannot set MCLK clock rate for " + "TSC2101 CODEC, error code = %d\n", err); return -ECANCELED; } } @@ -340,22 +425,22 @@ int tsc2101_clock_on(void) curRate = (uint)clk_get_rate(tsc2101_mclk); curUseCount = clk_get_usecount(tsc2101_mclk); DPRINTK("MCLK = %d [%d], usecount = %d, clk_enable retval = %d\n", - curRate, + curRate, CODEC_CLOCK, curUseCount, err); - // Now turn the audio on + /* Now turn the audio on */ tsc2101_write_sync(mcbsp_dev.tsc2101_dev, PAGE2_AUDIO_CODEC_REGISTERS, TSC2101_CODEC_POWER_CTRL, 0x0000); - return 0; + return 0; } /* * Do some sanity check, turn clock off and then turn codec audio off */ -int tsc2101_clock_off(void) +int tsc2101_clock_off(void) { int curUseCount; int curRate; @@ -377,7 +462,7 @@ int tsc2101_clock_off(void) tsc2101_audio_write(TSC2101_CODEC_POWER_CTRL, ~(CPC_SP1PWDN | CPC_SP2PWDN | CPC_BASSBC)); DPRINTK("audio codec off\n"); - return 0; + return 0; } int tsc2101_get_default_samplerate(void) @@ -390,7 +475,7 @@ static int __devinit snd_omap_alsa_tsc2101_probe(struct platform_device *pdev) struct spi_device *tsc2101; int ret; struct omap_alsa_codec_config *codec_cfg; - + tsc2101 = dev_get_drvdata(&pdev->dev); if (tsc2101 == NULL) { dev_err(&pdev->dev, "no platform data\n"); @@ -405,18 +490,21 @@ static int __devinit snd_omap_alsa_tsc2101_probe(struct platform_device *pdev) codec_cfg = pdev->dev.platform_data; if (codec_cfg != NULL) { - codec_cfg->hw_constraints_rates = &tsc2101_hw_constraints_rates; - codec_cfg->snd_omap_alsa_playback = &tsc2101_snd_omap_alsa_playback; - codec_cfg->snd_omap_alsa_capture = &tsc2101_snd_omap_alsa_capture; + codec_cfg->hw_constraints_rates = + &tsc2101_hw_constraints_rates; + codec_cfg->snd_omap_alsa_playback = + &tsc2101_snd_omap_alsa_playback; + codec_cfg->snd_omap_alsa_capture = + &tsc2101_snd_omap_alsa_capture; codec_cfg->codec_configure_dev = tsc2101_configure; codec_cfg->codec_set_samplerate = tsc2101_set_samplerate; codec_cfg->codec_clock_setup = tsc2101_clock_setup; codec_cfg->codec_clock_on = tsc2101_clock_on; codec_cfg->codec_clock_off = tsc2101_clock_off; - codec_cfg->get_default_samplerate = tsc2101_get_default_samplerate; - ret = snd_omap_alsa_post_probe(pdev, codec_cfg); - } - else + codec_cfg->get_default_samplerate = + tsc2101_get_default_samplerate; + ret = snd_omap_alsa_post_probe(pdev, codec_cfg); + } else ret = -ENODEV; return ret; } @@ -432,10 +520,10 @@ static struct platform_driver omap_alsa_driver = { }; static int __init omap_alsa_tsc2101_init(void) -{ +{ ADEBUG(); #ifdef DUMP_TSC2101_AUDIO_REGISTERS - printk("omap_alsa_tsc2101_init()\n"); + printk(KERN_INFO "omap_alsa_tsc2101_init()\n"); dump_tsc2101_audio_reg(); #endif return platform_driver_register(&omap_alsa_driver); @@ -445,7 +533,7 @@ static void __exit omap_alsa_tsc2101_exit(void) { ADEBUG(); #ifdef DUMP_TSC2101_AUDIO_REGISTERS - printk("omap_alsa_tsc2101_exit()\n"); + printk(KERN_INFO "omap_alsa_tsc2101_exit()\n"); dump_tsc2101_audio_reg(); #endif platform_driver_unregister(&omap_alsa_driver); -- 1.5.5-rc3.GIT ^ permalink raw reply related [flat|nested] 23+ messages in thread
* [PATCH 15/19] Code clean-up for sound/arm/omap/omap-alsa-tsc2101.h 2008-04-18 8:01 ` [PATCH 14/19] Code clean-up for sound/arm/omap/omap-alsa-tsc2101.c Eduardo Valentin @ 2008-04-18 8:01 ` Eduardo Valentin 2008-04-18 8:01 ` [PATCH 16/19] Code clean-up for sound/arm/omap/omap-alsa-tsc2102-mixer.c Eduardo Valentin 0 siblings, 1 reply; 23+ messages in thread From: Eduardo Valentin @ 2008-04-18 8:01 UTC (permalink / raw) To: linux-omap; +Cc: Felipe Balbi, Ragner Magalhaes, Eduardo Valentin From: Eduardo Valentin <eduardo.valentin@indt.org.br> Removed lots of whitespaces and a few errors and warnings reported by checkpatch.pl. Signed-off-by: Eduardo Valentin <eduardo.valentin@indt.org.br> --- sound/arm/omap/omap-alsa-tsc2101.h | 6 +++--- 1 files changed, 3 insertions(+), 3 deletions(-) diff --git a/sound/arm/omap/omap-alsa-tsc2101.h b/sound/arm/omap/omap-alsa-tsc2101.h index 73999a0..fb03801 100644 --- a/sound/arm/omap/omap-alsa-tsc2101.h +++ b/sound/arm/omap/omap-alsa-tsc2101.h @@ -1,6 +1,6 @@ /* * sound/arm/omap/omap-alsa-tsc2101.h - * + * * Alsa Driver for TSC2101 codec for OMAP platform boards. * * Based on former omap-aic23.h and tsc2101 OSS drivers. @@ -9,7 +9,7 @@ * * Copyright (C) 2006 Instituto Nokia de Tecnologia - INdT - Manaus Brazil * Alsa modularization by Daniel Petrini (d.pensator@gmail.com) - * + * * Copyright (C) 2006 Mika Laitio <lamikr@cc.jyu.fi> * * This program is free software; you can redistribute it and/or modify it @@ -54,7 +54,7 @@ struct tsc2101_samplerate_reg_info { }; /* - * Defines codec specific functions pointers that can be used from the + * Defines codec specific function pointers that can be used from the * common omap-alse base driver for all omap codecs. (tsc2101 and aic23) */ inline void tsc2101_configure(void); -- 1.5.5-rc3.GIT ^ permalink raw reply related [flat|nested] 23+ messages in thread
* [PATCH 16/19] Code clean-up for sound/arm/omap/omap-alsa-tsc2102-mixer.c 2008-04-18 8:01 ` [PATCH 15/19] Code clean-up for sound/arm/omap/omap-alsa-tsc2101.h Eduardo Valentin @ 2008-04-18 8:01 ` Eduardo Valentin 2008-04-18 8:01 ` [PATCH 17/19] Code clean-up for sound/arm/omap/omap-alsa-tsc2102.c Eduardo Valentin 0 siblings, 1 reply; 23+ messages in thread From: Eduardo Valentin @ 2008-04-18 8:01 UTC (permalink / raw) To: linux-omap; +Cc: Felipe Balbi, Ragner Magalhaes, Eduardo Valentin From: Eduardo Valentin <eduardo.valentin@indt.org.br> Removed lots of whitespaces and a few errors and warnings reported by checkpatch.pl. Signed-off-by: Eduardo Valentin <eduardo.valentin@indt.org.br> --- sound/arm/omap/omap-alsa-tsc2102-mixer.c | 14 ++++++++------ 1 files changed, 8 insertions(+), 6 deletions(-) diff --git a/sound/arm/omap/omap-alsa-tsc2102-mixer.c b/sound/arm/omap/omap-alsa-tsc2102-mixer.c index 99b1a1d..cf1f852 100644 --- a/sound/arm/omap/omap-alsa-tsc2102-mixer.c +++ b/sound/arm/omap/omap-alsa-tsc2102-mixer.c @@ -82,8 +82,10 @@ void init_playback_targets(void) /* Unmute */ tsc2102_set_mute(0, 0); - mute[0] = mute[1] = 0; - filter[0] = filter[1] = 0; + mute[0] = 0; + mute[1] = 0; + filter[0] = 0; + filter[1] = 0; } /* @@ -146,7 +148,7 @@ static int __pcm_playback_switch_get(struct snd_kcontrol *kcontrol, } static int __pcm_playback_switch_put(struct snd_kcontrol *kcontrol, - struct snd_ctl_elem_value *ucontrol) + struct snd_ctl_elem_value *ucontrol) { mute[0] = (ucontrol->value.integer.value[0] == 0); /* L */ mute[1] = (ucontrol->value.integer.value[1] == 0); /* R */ @@ -173,7 +175,7 @@ static int __pcm_playback_deemphasis_get(struct snd_kcontrol *kcontrol, } static int __pcm_playback_deemphasis_put(struct snd_kcontrol *kcontrol, - struct snd_ctl_elem_value *ucontrol) + struct snd_ctl_elem_value *ucontrol) { filter[0] = (ucontrol->value.integer.value[0] > 0); @@ -199,7 +201,7 @@ static int __pcm_playback_bassboost_get(struct snd_kcontrol *kcontrol, } static int __pcm_playback_bassboost_put(struct snd_kcontrol *kcontrol, - struct snd_ctl_elem_value *ucontrol) + struct snd_ctl_elem_value *ucontrol) { filter[1] = (ucontrol->value.integer.value[0] > 0); @@ -270,7 +272,7 @@ int snd_omap_mixer(struct snd_card_omap_codec *tsc2102) if (!tsc2102) return -EINVAL; - for (i = 0; i < ARRAY_SIZE(tsc2102_controls); i ++) { + for (i = 0; i < ARRAY_SIZE(tsc2102_controls); i++) { err = snd_ctl_add(tsc2102->card, snd_ctl_new1(&tsc2102_controls[i], tsc2102->card)); -- 1.5.5-rc3.GIT ^ permalink raw reply related [flat|nested] 23+ messages in thread
* [PATCH 17/19] Code clean-up for sound/arm/omap/omap-alsa-tsc2102.c 2008-04-18 8:01 ` [PATCH 16/19] Code clean-up for sound/arm/omap/omap-alsa-tsc2102-mixer.c Eduardo Valentin @ 2008-04-18 8:01 ` Eduardo Valentin 2008-04-18 8:01 ` [PATCH 18/19] Code clean-up for sound/arm/omap/omap-alsa-tsc2102.h Eduardo Valentin 0 siblings, 1 reply; 23+ messages in thread From: Eduardo Valentin @ 2008-04-18 8:01 UTC (permalink / raw) To: linux-omap; +Cc: Felipe Balbi, Ragner Magalhaes, Eduardo Valentin From: Eduardo Valentin <eduardo.valentin@indt.org.br> Removed lots of whitespaces and a few errors and warnings reported by checkpatch.pl. Signed-off-by: Eduardo Valentin <eduardo.valentin@indt.org.br> --- sound/arm/omap/omap-alsa-tsc2102.c | 70 ++++++++++++++++++------------------ 1 files changed, 35 insertions(+), 35 deletions(-) diff --git a/sound/arm/omap/omap-alsa-tsc2102.c b/sound/arm/omap/omap-alsa-tsc2102.c index 1ca5ba9..911e776 100644 --- a/sound/arm/omap/omap-alsa-tsc2102.c +++ b/sound/arm/omap/omap-alsa-tsc2102.c @@ -1,6 +1,6 @@ /* * sound/arm/omap/omap-alsa-tsc2102.c - * + * * Alsa codec driver for TSC2102 chip for OMAP platforms. * * Copyright (c) 2006 Andrzej Zaborowski <balrog@zabor.org> @@ -17,17 +17,16 @@ #include <linux/platform_device.h> #include <linux/clk.h> #include <linux/module.h> +#include <linux/io.h> #include <linux/spi/tsc2102.h> -#include <asm/io.h> - #include <asm/arch/dma.h> #include <asm/arch/clock.h> #include <asm/arch/omap-alsa.h> #include "omap-alsa-tsc2102.h" -static struct clk *tsc2102_bclk = 0; +static struct clk *tsc2102_bclk; /* * Hardware capabilities @@ -67,62 +66,63 @@ static struct snd_pcm_hardware tsc2102_snd_omap_alsa_playback = { }; #ifdef DUMP_TSC2102_AUDIO_REGISTERS -static void dump_tsc2102_audio_regs(void) { - printk("TSC2102_AUDIO1_CTRL = 0x%04x\n", +static void dump_tsc2102_audio_regs(void) +{ + printk(KERN_INFO "TSC2102_AUDIO1_CTRL = 0x%04x\n", tsc2102_read_sync(TSC2102_AUDIO1_CTRL)); - printk("TSC2102_DAC_GAIN_CTRL = 0x%04x\n", + printk(KERN_INFO "TSC2102_DAC_GAIN_CTRL = 0x%04x\n", tsc2102_read_sync(TSC2102_DAC_GAIN_CTRL)); - printk("TSC2102_AUDIO2_CTRL = 0x%04x\n", + printk(KERN_INFO "TSC2102_AUDIO2_CTRL = 0x%04x\n", tsc2102_read_sync(TSC2102_AUDIO2_CTRL)); - printk("TSC2102_DAC_POWER_CTRL = 0x%04x\n", + printk(KERN_INFO "TSC2102_DAC_POWER_CTRL = 0x%04x\n", tsc2102_read_sync(TSC2102_DAC_POWER_CTRL)); - printk("TSC2102_AUDIO3_CTRL = 0x%04x\n", + printk(KERN_INFO "TSC2102_AUDIO3_CTRL = 0x%04x\n", tsc2102_read_sync(TSC2102_AUDIO_CTRL_3)); - printk("TSC2102_LCH_BASS_BOOST_N0 = 0x%04x\n", + printk(KERN_INFO "TSC2102_LCH_BASS_BOOST_N0 = 0x%04x\n", tsc2102_read_sync(TSC2102_LCH_BASS_BOOST_N0)); - printk("TSC2102_LCH_BASS_BOOST_N1 = 0x%04x\n", + printk(KERN_INFO "TSC2102_LCH_BASS_BOOST_N1 = 0x%04x\n", tsc2102_read_sync(TSC2102_LCH_BASS_BOOST_N1)); - printk("TSC2102_LCH_BASS_BOOST_N2 = 0x%04x\n", + printk(KERN_INFO "TSC2102_LCH_BASS_BOOST_N2 = 0x%04x\n", tsc2102_read_sync(TSC2102_LCH_BASS_BOOST_N2)); - printk("TSC2102_LCH_BASS_BOOST_N3 = 0x%04x\n", + printk(KERN_INFO "TSC2102_LCH_BASS_BOOST_N3 = 0x%04x\n", tsc2102_read_sync(TSC2102_LCH_BASS_BOOST_N3)); - printk("TSC2102_LCH_BASS_BOOST_N4 = 0x%04x\n", + printk(KERN_INFO "TSC2102_LCH_BASS_BOOST_N4 = 0x%04x\n", tsc2102_read_sync(TSC2102_LCH_BASS_BOOST_N4)); - printk("TSC2102_LCH_BASS_BOOST_N5 = 0x%04x\n", + printk(KERN_INFO "TSC2102_LCH_BASS_BOOST_N5 = 0x%04x\n", tsc2102_read_sync(TSC2102_LCH_BASS_BOOST_N5)); - printk("TSC2102_LCH_BASS_BOOST_D1 = 0x%04x\n", + printk(KERN_INFO "TSC2102_LCH_BASS_BOOST_D1 = 0x%04x\n", tsc2102_read_sync(TSC2102_LCH_BASS_BOOST_D1)); - printk("TSC2102_LCH_BASS_BOOST_D2 = 0x%04x\n", + printk(KERN_INFO "TSC2102_LCH_BASS_BOOST_D2 = 0x%04x\n", tsc2102_read_sync(TSC2102_LCH_BASS_BOOST_D2)); - printk("TSC2102_LCH_BASS_BOOST_D4 = 0x%04x\n", + printk(KERN_INFO "TSC2102_LCH_BASS_BOOST_D4 = 0x%04x\n", tsc2102_read_sync(TSC2102_LCH_BASS_BOOST_D4)); - printk("TSC2102_LCH_BASS_BOOST_D5 = 0x%04x\n", + printk(KERN_INFO "TSC2102_LCH_BASS_BOOST_D5 = 0x%04x\n", tsc2102_read_sync(TSC2102_LCH_BASS_BOOST_D5)); - printk("TSC2102_RCH_BASS_BOOST_N0 = 0x%04x\n", + printk(KERN_INFO "TSC2102_RCH_BASS_BOOST_N0 = 0x%04x\n", tsc2102_read_sync(TSC2102_RCH_BASS_BOOST_N0)); - printk("TSC2102_RCH_BASS_BOOST_N1 = 0x%04x\n", + printk(KERN_INFO "TSC2102_RCH_BASS_BOOST_N1 = 0x%04x\n", tsc2102_read_sync(TSC2102_RCH_BASS_BOOST_N1)); - printk("TSC2102_RCH_BASS_BOOST_N2 = 0x%04x\n", + printk(KERN_INFO "TSC2102_RCH_BASS_BOOST_N2 = 0x%04x\n", tsc2102_read_sync(TSC2102_RCH_BASS_BOOST_N2)); - printk("TSC2102_RCH_BASS_BOOST_N3 = 0x%04x\n", + printk(KERN_INFO "TSC2102_RCH_BASS_BOOST_N3 = 0x%04x\n", tsc2102_read_sync(TSC2102_RCH_BASS_BOOST_N3)); - printk("TSC2102_RCH_BASS_BOOST_N4 = 0x%04x\n", + printk(KERN_INFO "TSC2102_RCH_BASS_BOOST_N4 = 0x%04x\n", tsc2102_read_sync(TSC2102_RCH_BASS_BOOST_N4)); - printk("TSC2102_RCH_BASS_BOOST_N5 = 0x%04x\n", + printk(KERN_INFO "TSC2102_RCH_BASS_BOOST_N5 = 0x%04x\n", tsc2102_read_sync(TSC2102_RCH_BASS_BOOST_N5)); - printk("TSC2102_RCH_BASS_BOOST_D1 = 0x%04x\n", + printk(KERN_INFO "TSC2102_RCH_BASS_BOOST_D1 = 0x%04x\n", tsc2102_read_sync(TSC2102_RCH_BASS_BOOST_D1)); - printk("TSC2102_RCH_BASS_BOOST_D2 = 0x%04x\n", + printk(KERN_INFO "TSC2102_RCH_BASS_BOOST_D2 = 0x%04x\n", tsc2102_read_sync(TSC2102_RCH_BASS_BOOST_D2)); - printk("TSC2102_RCH_BASS_BOOST_D4 = 0x%04x\n", + printk(KERN_INFO "TSC2102_RCH_BASS_BOOST_D4 = 0x%04x\n", tsc2102_read_sync(TSC2102_RCH_BASS_BOOST_D4)); - printk("TSC2102_RCH_BASS_BOOST_D5 = 0x%04x\n", + printk(KERN_INFO "TSC2102_RCH_BASS_BOOST_D5 = 0x%04x\n", tsc2102_read_sync(TSC2102_RCH_BASS_BOOST_D5)); - printk("TSC2102_PLL1_CTRL = 0x%04x\n", + printk(KERN_INFO "TSC2102_PLL1_CTRL = 0x%04x\n", tsc2102_read_sync(TSC2102_PLL1_CTRL)); - printk("TSC2102_PLL2_CTRL = 0x%04x\n", + printk(KERN_INFO "TSC2102_PLL2_CTRL = 0x%04x\n", tsc2102_read_sync(TSC2102_PLL2_CTRL)); - printk("TSC2102_AUDIO4_CTRL = 0x%04x\n", + printk(KERN_INFO "TSC2102_AUDIO4_CTRL = 0x%04x\n", tsc2102_read_sync(TSC2102_AUDIO4_CTRL)); } #endif @@ -131,7 +131,7 @@ static void dump_tsc2102_audio_regs(void) { * ALSA operations according to board file */ -static long current_rate = 0; +static long current_rate; /* * Sample rate changing @@ -180,7 +180,7 @@ static void tsc2102_configure(void) /* * Omap McBSP clock and Power Management configuration - * + * * Here we have some functions that allow clock to be enabled and * disabled only when needed. Besides doing clock configuration * they allow turn audio on and off when necessary. -- 1.5.5-rc3.GIT ^ permalink raw reply related [flat|nested] 23+ messages in thread
* [PATCH 18/19] Code clean-up for sound/arm/omap/omap-alsa-tsc2102.h 2008-04-18 8:01 ` [PATCH 17/19] Code clean-up for sound/arm/omap/omap-alsa-tsc2102.c Eduardo Valentin @ 2008-04-18 8:01 ` Eduardo Valentin 2008-04-18 8:01 ` [PATCH 19/19] Code clean-up for sound/arm/omap/omap-alsa.c Eduardo Valentin 0 siblings, 1 reply; 23+ messages in thread From: Eduardo Valentin @ 2008-04-18 8:01 UTC (permalink / raw) To: linux-omap; +Cc: Felipe Balbi, Ragner Magalhaes, Eduardo Valentin From: Eduardo Valentin <eduardo.valentin@indt.org.br> Removed lots of whitespaces and a few errors and warnings reported by checkpatch.pl. Signed-off-by: Eduardo Valentin <eduardo.valentin@indt.org.br> --- sound/arm/omap/omap-alsa-tsc2102.h | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) diff --git a/sound/arm/omap/omap-alsa-tsc2102.h b/sound/arm/omap/omap-alsa-tsc2102.h index cee2839..0e0c097 100644 --- a/sound/arm/omap/omap-alsa-tsc2102.h +++ b/sound/arm/omap/omap-alsa-tsc2102.h @@ -1,6 +1,6 @@ /* * sound/arm/omap/omap-alsa-tsc2102.h - * + * * Alsa codec driver for TSC2102 chip for OMAP platforms. * * Copyright (c) 2006 Andrzej Zaborowski <balrog@zabor.org> -- 1.5.5-rc3.GIT ^ permalink raw reply related [flat|nested] 23+ messages in thread
* [PATCH 19/19] Code clean-up for sound/arm/omap/omap-alsa.c 2008-04-18 8:01 ` [PATCH 18/19] Code clean-up for sound/arm/omap/omap-alsa-tsc2102.h Eduardo Valentin @ 2008-04-18 8:01 ` Eduardo Valentin 0 siblings, 0 replies; 23+ messages in thread From: Eduardo Valentin @ 2008-04-18 8:01 UTC (permalink / raw) To: linux-omap; +Cc: Felipe Balbi, Ragner Magalhaes, Eduardo Valentin From: Eduardo Valentin <eduardo.valentin@indt.org.br> Removed lots of whitespaces and a few errors and warnings reported by checkpatch.pl. Signed-off-by: Eduardo Valentin <eduardo.valentin@indt.org.br> --- sound/arm/omap/omap-alsa.c | 163 +++++++++++++++++++++++--------------------- 1 files changed, 86 insertions(+), 77 deletions(-) diff --git a/sound/arm/omap/omap-alsa.c b/sound/arm/omap/omap-alsa.c index 30c7942..8693942 100644 --- a/sound/arm/omap/omap-alsa.c +++ b/sound/arm/omap/omap-alsa.c @@ -1,6 +1,6 @@ /* * sound/arm/omap-alsa.c - * + * * Alsa Driver for OMAP * * Copyright (C) 2005 Instituto Nokia de Tecnologia - INdT - Manaus Brazil @@ -9,7 +9,7 @@ * * Copyright (C) 2006 Mika Laitio <lamikr@cc.jyu.fi> * - * Based on sa11xx-uda1341.c, + * Based on sa11xx-uda1341.c, * Copyright (C) 2002 Tomas Kasparek <tomas.kasparek@seznam.cz> * * This program is free software; you can redistribute it and/or modify it @@ -34,10 +34,10 @@ * * History: * - * 2005-07-29 INdT Kernel Team - Alsa driver for omap osk. Creation of new + * 2005-07-29 INdT Kernel Team - Alsa driver for omap osk. Creation of new * file omap-aic23.c - * - * 2005-12-18 Dirk Behme - Added L/R Channel Interchange fix as proposed + * + * 2005-12-18 Dirk Behme - Added L/R Channel Interchange fix as proposed * by Ajaya Babu * */ @@ -52,14 +52,18 @@ #include <asm/arch/omap-alsa.h> #include "omap-alsa-dma.h" -MODULE_AUTHOR("Mika Laitio, Daniel Petrini, David Cohen, Anderson Briglia - INdT"); +MODULE_AUTHOR("Mika Laitio"); +MODULE_AUTHOR("Daniel Petrini"); +MODULE_AUTHOR("David Cohen"); +MODULE_AUTHOR("Anderson Briglia"); + MODULE_LICENSE("GPL"); MODULE_DESCRIPTION("OMAP driver for ALSA"); MODULE_ALIAS("omap_alsa_mcbsp.1"); -static char *id = NULL; -static struct snd_card_omap_codec *alsa_codec = NULL; -static struct omap_alsa_codec_config *alsa_codec_config = NULL; +static char *id; +static struct snd_card_omap_codec *alsa_codec; +static struct omap_alsa_codec_config *alsa_codec_config; /* * HW interface start and stop helper functions @@ -100,10 +104,9 @@ static void omap_alsa_audio_init(struct snd_card_omap_codec *omap_alsa) audio_ifc_stop; } -/* - * DMA functions +/* + * DMA functions * Depends on omap-alsa-dma.c functions and (omap) dma.c - * */ static int audio_dma_request(struct audio_stream *s, void (*callback) (void *)) @@ -151,7 +154,8 @@ static u_int audio_get_dma_pos(struct audio_stream *s) spin_unlock_irqrestore(&s->dma_lock, flags); /* Now, the position related to the end of that period */ - offset = bytes_to_frames(runtime, s->offset) - bytes_to_frames(runtime, count); + offset = bytes_to_frames(runtime, s->offset) - + bytes_to_frames(runtime, count); if (offset >= runtime->buffer_size) offset = 0; @@ -190,29 +194,28 @@ static void audio_process_dma(struct audio_stream *s) unsigned int dma_size; unsigned int offset; int ret; - + ADEBUG(); runtime = substream->runtime; if (s->active) { dma_size = frames_to_bytes(runtime, runtime->period_size); offset = dma_size * s->period; - snd_assert(dma_size <= DMA_BUF_SIZE,); + snd_assert(dma_size <= DMA_BUF_SIZE, return); /* * On omap1510 based devices, we need to call the stop_dma * before calling the start_dma or we will not receive the * irq from DMA after the first transfered/played buffer. * (invocation of callback_omap_alsa_sound_dma() method). */ - if (cpu_is_omap1510()) { + if (cpu_is_omap1510()) omap_stop_alsa_sound_dma(s); - } + ret = omap_start_alsa_sound_dma(s, (dma_addr_t)runtime->dma_area + offset, dma_size); if (ret) { - printk(KERN_ERR - "audio_process_dma: cannot queue DMA buffer (%i)\n", - ret); + printk(KERN_ERR "audio_process_dma: cannot" + " queue DMA buffer (%i)\n", ret); return; } @@ -223,15 +226,15 @@ static void audio_process_dma(struct audio_stream *s) } } -/* +/* * This is called when dma IRQ occurs at the end of each transmited block */ void callback_omap_alsa_sound_dma(void *data) { struct audio_stream *s = data; - + ADEBUG(); - /* + /* * If we are getting a callback for an active stream then we inform * the PCM middle layer we've finished a period */ @@ -239,25 +242,25 @@ void callback_omap_alsa_sound_dma(void *data) snd_pcm_period_elapsed(s->stream); spin_lock(&s->dma_lock); - if (s->periods > 0) + if (s->periods > 0) s->periods--; - + audio_process_dma(s); spin_unlock(&s->dma_lock); } -/* +/* * Alsa section * PCM settings and callbacks */ -static int snd_omap_alsa_trigger(struct snd_pcm_substream * substream, int cmd) +static int snd_omap_alsa_trigger(struct snd_pcm_substream *substream, int cmd) { struct snd_card_omap_codec *chip = snd_pcm_substream_chip(substream); int stream_id = substream->pstr->stream; struct audio_stream *s = &chip->s[stream_id]; int err = 0; - + ADEBUG(); /* note local interrupts are already disabled in the midlevel code */ spin_lock(&s->dma_lock); @@ -276,16 +279,16 @@ static int snd_omap_alsa_trigger(struct snd_pcm_substream * substream, int cmd) break; } spin_unlock(&s->dma_lock); - + return err; } -static int snd_omap_alsa_prepare(struct snd_pcm_substream * substream) +static int snd_omap_alsa_prepare(struct snd_pcm_substream *substream) { struct snd_card_omap_codec *chip = snd_pcm_substream_chip(substream); struct snd_pcm_runtime *runtime = substream->runtime; struct audio_stream *s = &chip->s[substream->pstr->stream]; - + ADEBUG(); /* set requested samplerate */ alsa_codec_config->codec_set_samplerate(runtime->rate); @@ -297,63 +300,64 @@ static int snd_omap_alsa_prepare(struct snd_pcm_substream * substream) return 0; } -static snd_pcm_uframes_t snd_omap_alsa_pointer(struct snd_pcm_substream *substream) +static snd_pcm_uframes_t +snd_omap_alsa_pointer(struct snd_pcm_substream *substream) { struct snd_card_omap_codec *chip = snd_pcm_substream_chip(substream); - ADEBUG(); + ADEBUG(); return audio_get_dma_pos(&chip->s[substream->pstr->stream]); } -static int snd_card_omap_alsa_open(struct snd_pcm_substream * substream) +static int snd_card_omap_alsa_open(struct snd_pcm_substream *substream) { struct snd_card_omap_codec *chip = snd_pcm_substream_chip(substream); struct snd_pcm_runtime *runtime = substream->runtime; int stream_id = substream->pstr->stream; int err; - + ADEBUG(); chip->s[stream_id].stream = substream; alsa_codec_config->codec_clock_on(); - if (stream_id == SNDRV_PCM_STREAM_PLAYBACK) + if (stream_id == SNDRV_PCM_STREAM_PLAYBACK) runtime->hw = *(alsa_codec_config->snd_omap_alsa_playback); - else + else runtime->hw = *(alsa_codec_config->snd_omap_alsa_capture); - - if ((err = snd_pcm_hw_constraint_integer(runtime, - SNDRV_PCM_HW_PARAM_PERIODS)) < 0) + + err = snd_pcm_hw_constraint_integer(runtime, + SNDRV_PCM_HW_PARAM_PERIODS); + if (err < 0) return err; - - if ((err = snd_pcm_hw_constraint_list(runtime, - 0, - SNDRV_PCM_HW_PARAM_RATE, - alsa_codec_config->hw_constraints_rates)) < 0) + + err = snd_pcm_hw_constraint_list(runtime, 0, SNDRV_PCM_HW_PARAM_RATE, + alsa_codec_config->hw_constraints_rates); + if (err < 0) return err; - + return 0; } -static int snd_card_omap_alsa_close(struct snd_pcm_substream * substream) +static int snd_card_omap_alsa_close(struct snd_pcm_substream *substream) { struct snd_card_omap_codec *chip = snd_pcm_substream_chip(substream); - + ADEBUG(); alsa_codec_config->codec_clock_off(); chip->s[substream->pstr->stream].stream = NULL; - + return 0; } /* HW params & free */ -static int snd_omap_alsa_hw_params(struct snd_pcm_substream * substream, - struct snd_pcm_hw_params * hw_params) +static int snd_omap_alsa_hw_params(struct snd_pcm_substream *substream, + struct snd_pcm_hw_params *hw_params) { return snd_pcm_lib_malloc_pages(substream, params_buffer_bytes(hw_params)); } -static int snd_omap_alsa_hw_free(struct snd_pcm_substream * substream) +static int snd_omap_alsa_hw_free(struct snd_pcm_substream *substream) { return snd_pcm_lib_free_pages(substream); } @@ -383,17 +387,17 @@ static struct snd_pcm_ops snd_card_omap_alsa_capture_ops = { /* * Alsa init and exit section - * * Inits pcm alsa structures, allocate the alsa buffer, suspend, resume */ -static int __init snd_card_omap_alsa_pcm(struct snd_card_omap_codec *omap_alsa, +static int __init snd_card_omap_alsa_pcm(struct snd_card_omap_codec *omap_alsa, int device) { struct snd_pcm *pcm; int err; - + ADEBUG(); - if ((err = snd_pcm_new(omap_alsa->card, "OMAP PCM", device, 1, 1, &pcm)) < 0) + err = snd_pcm_new(omap_alsa->card, "OMAP PCM", device, 1, 1, &pcm); + if (err < 0) return err; /* sets up initial buffer with continuous allocation */ @@ -433,11 +437,12 @@ int snd_omap_alsa_suspend(struct platform_device *pdev, pm_message_t state) { struct snd_card_omap_codec *chip; struct snd_card *card = platform_get_drvdata(pdev); - + if (card->power_state != SNDRV_CTL_POWER_D3hot) { chip = card->private_data; if (chip->card->power_state != SNDRV_CTL_POWER_D3hot) { - snd_power_change_state(chip->card, SNDRV_CTL_POWER_D3hot); + snd_power_change_state(chip->card, + SNDRV_CTL_POWER_D3hot); snd_pcm_suspend_all(chip->pcm); /* Mutes and turn clock off */ alsa_codec_config->codec_clock_off(); @@ -452,7 +457,7 @@ int snd_omap_alsa_resume(struct platform_device *pdev) struct snd_card_omap_codec *chip; struct snd_card *card = platform_get_drvdata(pdev); - if (card->power_state != SNDRV_CTL_POWER_D0) { + if (card->power_state != SNDRV_CTL_POWER_D0) { chip = card->private_data; if (chip->card->power_state != SNDRV_CTL_POWER_D0) { snd_power_change_state(chip->card, SNDRV_CTL_POWER_D0); @@ -465,11 +470,11 @@ int snd_omap_alsa_resume(struct platform_device *pdev) #endif /* CONFIG_PM */ -void snd_omap_alsa_free(struct snd_card * card) +void snd_omap_alsa_free(struct snd_card *card) { struct snd_card_omap_codec *chip = card->private_data; ADEBUG(); - + /* * Turn off codec after it is done. * Can't do it immediately, since it may still have @@ -486,27 +491,28 @@ void snd_omap_alsa_free(struct snd_card * card) /* module init & exit */ -/* +/* * Inits alsa soudcard structure. * Called by the probe method in codec after function pointers has been set. */ -int snd_omap_alsa_post_probe(struct platform_device *pdev, struct omap_alsa_codec_config *config) +int snd_omap_alsa_post_probe(struct platform_device *pdev, + struct omap_alsa_codec_config *config) { int err = 0; int def_rate; struct snd_card *card; - + ADEBUG(); alsa_codec_config = config; alsa_codec_config->codec_clock_setup(); - alsa_codec_config->codec_clock_on(); + alsa_codec_config->codec_clock_on(); omap_mcbsp_request(AUDIO_MCBSP); omap_mcbsp_stop(AUDIO_MCBSP); omap_mcbsp_config(AUDIO_MCBSP, alsa_codec_config->mcbsp_regs_alsa); omap_mcbsp_start(AUDIO_MCBSP); - + if (alsa_codec_config && alsa_codec_config->codec_configure_dev) alsa_codec_config->codec_configure_dev(); @@ -525,18 +531,20 @@ int snd_omap_alsa_post_probe(struct platform_device *pdev, struct omap_alsa_code card->private_free = snd_omap_alsa_free; alsa_codec->card = card; - def_rate = alsa_codec_config->get_default_samplerate(); + def_rate = alsa_codec_config->get_default_samplerate(); alsa_codec->samplerate = def_rate; spin_lock_init(&alsa_codec->s[0].dma_lock); spin_lock_init(&alsa_codec->s[1].dma_lock); /* mixer */ - if ((err = snd_omap_mixer(alsa_codec)) < 0) + err = snd_omap_mixer(alsa_codec); + if (err < 0) goto nodev3; /* PCM */ - if ((err = snd_card_omap_alsa_pcm(alsa_codec, 0)) < 0) + err = snd_card_omap_alsa_pcm(alsa_codec, 0); + if (err < 0) goto nodev3; strcpy(card->driver, "OMAP_ALSA"); @@ -545,16 +553,17 @@ int snd_omap_alsa_post_probe(struct platform_device *pdev, struct omap_alsa_code snd_omap_init_mixer(); snd_card_set_dev(card, &pdev->dev); - - if ((err = snd_card_register(card)) == 0) { + + err = snd_card_register(card); + if (err == 0) { printk(KERN_INFO "audio support initialized\n"); platform_set_drvdata(pdev, card); return 0; } - + nodev3: - kfree(alsa_codec); -nodev2: + kfree(alsa_codec); +nodev2: snd_card_free(card); nodev1: omap_mcbsp_stop(AUDIO_MCBSP); @@ -567,14 +576,14 @@ int snd_omap_alsa_remove(struct platform_device *pdev) { struct snd_card *card = platform_get_drvdata(pdev); struct snd_card_omap_codec *chip = card->private_data; - + snd_card_free(card); alsa_codec = NULL; card->private_data = NULL; kfree(chip); - + platform_set_drvdata(pdev, NULL); - + return 0; } -- 1.5.5-rc3.GIT ^ permalink raw reply related [flat|nested] 23+ messages in thread
* Re: [PATCH 00/19] Update and clean up on sound/arm/omap/omap-alsa*[c,h] (take #2) 2008-04-18 8:00 [PATCH 00/19] Update and clean up on sound/arm/omap/omap-alsa*[c,h] (take #2) Eduardo Valentin 2008-04-18 8:00 ` [PATCH 01/19] Update audio driver for H2 board Eduardo Valentin @ 2008-04-23 23:57 ` Tony Lindgren 1 sibling, 0 replies; 23+ messages in thread From: Tony Lindgren @ 2008-04-23 23:57 UTC (permalink / raw) To: Eduardo Valentin Cc: linux-omap, Felipe Balbi, Ragner Magalhaes, Eduardo Valentin * Eduardo Valentin <edubezval@gmail.com> [080418 01:03]: > From: Eduardo Valentin <eduardo.valentin@indt.org.br> > > Hi all, > > This patch series cleans up most of the errors and warnings reported > by checkpatch.pl on sound/arm/omap/omap-alsa*[c,h]. Some checks reported > by checkpatch.pl were ignored, such as removing #if 0 codes. Not all were > eligible for remotion. > > There is also one patch that updates the alsa driver for H2. > Since tsc2101 i2c driver was updated, this alsa driver stop > working. Pushing this today, you might want to talk with Jarkko Nikula on converting things to use the asoc driver :) Tony > > Cheers, > > --- > Eduardo Valentin > > Eduardo Valentin (19): > Update audio driver for H2 board > Code clean-up for include/asm-arm/arch-omap/omap-alsa.h > Code clean-up for sound/arm/omap/omap-alsa-aic23.c > Code clean-up for sound/arm/omap/omap-alsa-aic23.h > Code clean-up for sound/arm/omap/omap-alsa-aic23-mixer.c > Code clean-up for sound/arm/omap/omap-alsa-dma.c > Code clean-up for sound/arm/omap/omap-alsa-dma.h > Code clean-up for sound/arm/omap/omap-alsa-sx1-mixer.c > Code clean-up for sound/arm/omap/omap-alsa-sx1-mixer.h > Code clean-up for sound/arm/omap/omap-alsa-sx1.c > Code clean-up for sound/arm/omap/omap-alsa-sx1.h > Code clean-up for sound/arm/omap/omap-alsa-tsc2101-mixer.c > Code clean-up for sound/arm/omap/omap-alsa-tsc2101-mixer.h > Code clean-up for sound/arm/omap/omap-alsa-tsc2101.c > Code clean-up for sound/arm/omap/omap-alsa-tsc2101.h > Code clean-up for sound/arm/omap/omap-alsa-tsc2102-mixer.c > Code clean-up for sound/arm/omap/omap-alsa-tsc2102.c > Code clean-up for sound/arm/omap/omap-alsa-tsc2102.h > Code clean-up for sound/arm/omap/omap-alsa.c > > arch/arm/mach-omap1/board-h2.c | 71 ++-- > include/asm-arm/arch-omap/omap-alsa.h | 29 +- > sound/arm/omap/omap-alsa-aic23-mixer.c | 144 ++++--- > sound/arm/omap/omap-alsa-aic23.c | 59 ++-- > sound/arm/omap/omap-alsa-aic23.h | 12 +- > sound/arm/omap/omap-alsa-dma.c | 171 ++++----- > sound/arm/omap/omap-alsa-dma.h | 22 +- > sound/arm/omap/omap-alsa-sx1-mixer.c | 22 +- > sound/arm/omap/omap-alsa-sx1-mixer.h | 6 +- > sound/arm/omap/omap-alsa-sx1.c | 72 +++- > sound/arm/omap/omap-alsa-sx1.h | 3 +- > sound/arm/omap/omap-alsa-tsc2101-mixer.c | 631 ++++++++++++++++-------------- > sound/arm/omap/omap-alsa-tsc2101-mixer.h | 31 +- > sound/arm/omap/omap-alsa-tsc2101.c | 320 ++++++++++----- > sound/arm/omap/omap-alsa-tsc2101.h | 11 +- > sound/arm/omap/omap-alsa-tsc2102-mixer.c | 14 +- > sound/arm/omap/omap-alsa-tsc2102.c | 70 ++-- > sound/arm/omap/omap-alsa-tsc2102.h | 2 +- > sound/arm/omap/omap-alsa.c | 163 ++++---- > 19 files changed, 1056 insertions(+), 797 deletions(-) > > -- > To unsubscribe from this list: send the line "unsubscribe linux-omap" in > the body of a message to majordomo@vger.kernel.org > More majordomo info at http://vger.kernel.org/majordomo-info.html ^ permalink raw reply [flat|nested] 23+ messages in thread
* [PATCH 00/19] Update and clean up on sound/arm/omap/omap-alsa*[c,h] @ 2008-04-15 14:02 Eduardo Valentin 2008-04-15 14:02 ` [PATCH 01/19] Update audio driver for H2 board Eduardo Valentin 0 siblings, 1 reply; 23+ messages in thread From: Eduardo Valentin @ 2008-04-15 14:02 UTC (permalink / raw) To: linux-omap; +Cc: Eduardo Valentin From: Eduardo Valentin <eduardo.valentin@indt.org.br> Hi all, This patch series cleans up most of the errors and warnings reported by checkpatch.pl on sound/arm/omap/omap-alsa*[c,h]. Some checks reported by checkpatch.pl were ignored, such as removing #if 0 codes. Not all were eligible for remotion. There is also one patch that updates the alsa driver for H2. Since tsc2101 i2c driver was updated, this alsa driver stop working. As Carlos already sent a patch to remove old #includes into these files [1], this series does not include this fix. Cheers, --- Eduardo Valentin [1] - http://marc.info/?l=linux-omap&m=120813065101654&w=2 Eduardo Valentin (19): Update audio driver for H2 board Code clean-up for sound/arm/omap/omap-alsa.h Code clean-up for sound/arm/omap/omap-alsa-aic23.c Code clean-up for sound/arm/omap/omap-alsa-aic23.h Code clean-up for sound/arm/omap/omap-alsa-aic23-mixer.c Code clean-up for sound/arm/omap/omap-alsa-dma.c Code clean-up for sound/arm/omap/omap-alsa-dma.h Code clean-up for sound/arm/omap/omap-alsa-sx1-mixer.c Code clean-up for sound/arm/omap/omap-alsa-sx1-mixer.h Code clean-up for sound/arm/omap/omap-alsa-sx1.c Code clean-up for sound/arm/omap/omap-alsa-sx1.h Code clean-up for sound/arm/omap/omap-alsa-tsc2101-mixer.c Code clean-up for sound/arm/omap/omap-alsa-tsc2101-mixer.h Code clean-up for sound/arm/omap/omap-alsa-tsc2101.c Code clean-up for sound/arm/omap/omap-alsa-tsc2101.h Code clean-up for sound/arm/omap/omap-alsa-tsc2102-mixer.c Code clean-up for sound/arm/omap/omap-alsa-tsc2102.c Code clean-up for sound/arm/omap/omap-alsa-tsc2102.h Code clean-up for sound/arm/omap/omap-alsa.c arch/arm/mach-omap1/board-h2.c | 72 ++-- include/asm-arm/arch-omap/omap-alsa.h | 14 +- sound/arm/omap/omap-alsa-aic23-mixer.c | 138 ++++--- sound/arm/omap/omap-alsa-aic23.c | 59 ++-- sound/arm/omap/omap-alsa-aic23.h | 12 +- sound/arm/omap/omap-alsa-dma.c | 171 ++++----- sound/arm/omap/omap-alsa-dma.h | 22 +- sound/arm/omap/omap-alsa-sx1-mixer.c | 22 +- sound/arm/omap/omap-alsa-sx1-mixer.h | 6 +- sound/arm/omap/omap-alsa-sx1.c | 72 +++- sound/arm/omap/omap-alsa-sx1.h | 3 +- sound/arm/omap/omap-alsa-tsc2101-mixer.c | 631 ++++++++++++++++-------------- sound/arm/omap/omap-alsa-tsc2101-mixer.h | 31 +- sound/arm/omap/omap-alsa-tsc2101.c | 320 ++++++++++----- sound/arm/omap/omap-alsa-tsc2101.h | 11 +- sound/arm/omap/omap-alsa-tsc2102-mixer.c | 14 +- sound/arm/omap/omap-alsa-tsc2102.c | 70 ++-- sound/arm/omap/omap-alsa-tsc2102.h | 2 +- sound/arm/omap/omap-alsa.c | 163 ++++---- 19 files changed, 1045 insertions(+), 788 deletions(-) ^ permalink raw reply [flat|nested] 23+ messages in thread
* [PATCH 01/19] Update audio driver for H2 board 2008-04-15 14:02 [PATCH 00/19] Update and clean up on sound/arm/omap/omap-alsa*[c,h] Eduardo Valentin @ 2008-04-15 14:02 ` Eduardo Valentin 2008-04-17 23:59 ` Felipe Balbi 0 siblings, 1 reply; 23+ messages in thread From: Eduardo Valentin @ 2008-04-15 14:02 UTC (permalink / raw) To: linux-omap; +Cc: Eduardo Valentin From: Eduardo Valentin <eduardo.valentin@indt.org.br> This patch updates the audio driver based on tsc2101 chip for H2 board. tsc2101 driver was updated against new spi framework, but its audio driver for H2 wasn't. Signed-off-by: Eduardo Valentin <eduardo.valentin@indt.org.br> --- arch/arm/mach-omap1/board-h2.c | 72 +++++++++++++++--------------- sound/arm/omap/omap-alsa-tsc2101-mixer.c | 7 ++- sound/arm/omap/omap-alsa-tsc2101-mixer.h | 2 + sound/arm/omap/omap-alsa-tsc2101.c | 28 +++++++++-- sound/arm/omap/omap-alsa-tsc2101.h | 5 ++ 5 files changed, 71 insertions(+), 43 deletions(-) diff --git a/arch/arm/mach-omap1/board-h2.c b/arch/arm/mach-omap1/board-h2.c index aa1f8af..a576b5b 100644 --- a/arch/arm/mach-omap1/board-h2.c +++ b/arch/arm/mach-omap1/board-h2.c @@ -320,6 +320,41 @@ static void h2_lcd_dev_init(struct spi_device *tsc2101) platform_device_register(&h2_lcd_device); } +static struct omap_mcbsp_reg_cfg mcbsp_regs = { + .spcr2 = FREE | FRST | GRST | XRST | XINTM(3), + .spcr1 = RINTM(3) | RRST, + .rcr2 = RPHASE | RFRLEN2(OMAP_MCBSP_WORD_8) | + RWDLEN2(OMAP_MCBSP_WORD_16) | RDATDLY(1), + .rcr1 = RFRLEN1(OMAP_MCBSP_WORD_8) | RWDLEN1(OMAP_MCBSP_WORD_16), + .xcr2 = XPHASE | XFRLEN2(OMAP_MCBSP_WORD_8) | + XWDLEN2(OMAP_MCBSP_WORD_16) | XDATDLY(1) | XFIG, + .xcr1 = XFRLEN1(OMAP_MCBSP_WORD_8) | XWDLEN1(OMAP_MCBSP_WORD_16), + .srgr1 = FWID(15), + .srgr2 = GSYNC | CLKSP | FSGM | FPER(31), + + .pcr0 = CLKXM | CLKRM | FSXP | FSRP | CLKXP | CLKRP, + /*.pcr0 = CLKXP | CLKRP,*/ /* mcbsp: slave */ +}; + +static struct omap_alsa_codec_config alsa_config = { + .name = "H2 TSC2101", + .mcbsp_regs_alsa = &mcbsp_regs, +}; + +static struct platform_device h2_mcbsp1_device = { + .name = "omap_alsa_mcbsp", + .id = 1, + .dev = { + .platform_data = &alsa_config, + }, +}; + +static void h2_audio_dev_init(struct spi_device *tsc2101) +{ + h2_mcbsp1_device.dev.platform_data = tsc2101; + platform_device_register(&h2_mcbsp1_device); +} + static int h2_tsc2101_init(struct spi_device *spi) { int r; @@ -344,6 +379,7 @@ static int h2_tsc2101_init(struct spi_device *spi) omap_cfg_reg(N15_1610_UWIRE_CS1); h2_lcd_dev_init(spi); + h2_audio_dev_init(spi); return 0; err: @@ -386,48 +422,12 @@ static struct spi_board_info h2_spi_board_info[] __initdata = { }, }; -static struct omap_mcbsp_reg_cfg mcbsp_regs = { - .spcr2 = FREE | FRST | GRST | XRST | XINTM(3), - .spcr1 = RINTM(3) | RRST, - .rcr2 = RPHASE | RFRLEN2(OMAP_MCBSP_WORD_8) | - RWDLEN2(OMAP_MCBSP_WORD_16) | RDATDLY(1), - .rcr1 = RFRLEN1(OMAP_MCBSP_WORD_8) | RWDLEN1(OMAP_MCBSP_WORD_16), - .xcr2 = XPHASE | XFRLEN2(OMAP_MCBSP_WORD_8) | - XWDLEN2(OMAP_MCBSP_WORD_16) | XDATDLY(1) | XFIG, - .xcr1 = XFRLEN1(OMAP_MCBSP_WORD_8) | XWDLEN1(OMAP_MCBSP_WORD_16), - .srgr1 = FWID(15), - .srgr2 = GSYNC | CLKSP | FSGM | FPER(31), - - .pcr0 = CLKXM | CLKRM | FSXP | FSRP | CLKXP | CLKRP, - /*.pcr0 = CLKXP | CLKRP,*/ /* mcbsp: slave */ -}; - -static struct omap_alsa_codec_config alsa_config = { - .name = "H2 TSC2101", - .mcbsp_regs_alsa = &mcbsp_regs, - .codec_configure_dev = NULL, /* tsc2101_configure, */ - .codec_set_samplerate = NULL, /* tsc2101_set_samplerate, */ - .codec_clock_setup = NULL, /* tsc2101_clock_setup, */ - .codec_clock_on = NULL, /* tsc2101_clock_on, */ - .codec_clock_off = NULL, /* tsc2101_clock_off, */ - .get_default_samplerate = NULL, /* tsc2101_get_default_samplerate, */ -}; - -static struct platform_device h2_mcbsp1_device = { - .name = "omap_alsa_mcbsp", - .id = 1, - .dev = { - .platform_data = &alsa_config, - }, -}; - static struct platform_device *h2_devices[] __initdata = { &h2_nor_device, &h2_nand_device, &h2_smc91x_device, &h2_irda_device, &h2_kp_device, - &h2_mcbsp1_device, }; static void __init h2_init_smc91x(void) diff --git a/sound/arm/omap/omap-alsa-tsc2101-mixer.c b/sound/arm/omap/omap-alsa-tsc2101-mixer.c index 8faba95..09257d7 100644 --- a/sound/arm/omap/omap-alsa-tsc2101-mixer.c +++ b/sound/arm/omap/omap-alsa-tsc2101-mixer.c @@ -43,6 +43,7 @@ #include "omap-alsa-tsc2101.h" #include "omap-alsa-tsc2101-mixer.h" +#include <linux/spi/tsc2101.h> #include <linux/types.h> #include <sound/initval.h> #include <sound/control.h> @@ -68,7 +69,8 @@ static int current_rec_src = REC_SRC_SINGLE_ENDED_MICIN_HED; */ inline void omap_tsc2101_audio_write(u8 address, u16 data) { - omap_tsc2101_write(PAGE2_AUDIO_CODEC_REGISTERS, address, data); + tsc2101_write_sync(mcbsp_dev.tsc2101_dev, PAGE2_AUDIO_CODEC_REGISTERS, + address, data); } /* @@ -76,7 +78,8 @@ inline void omap_tsc2101_audio_write(u8 address, u16 data) */ inline u16 omap_tsc2101_audio_read(u8 address) { - return (omap_tsc2101_read(PAGE2_AUDIO_CODEC_REGISTERS, address)); + return (tsc2101_read_sync(mcbsp_dev.tsc2101_dev, + PAGE2_AUDIO_CODEC_REGISTERS, address)); } /* diff --git a/sound/arm/omap/omap-alsa-tsc2101-mixer.h b/sound/arm/omap/omap-alsa-tsc2101-mixer.h index 513614c..b110b36 100644 --- a/sound/arm/omap/omap-alsa-tsc2101-mixer.h +++ b/sound/arm/omap/omap-alsa-tsc2101-mixer.h @@ -76,4 +76,6 @@ #define TSC2101_AUDIO_CODEC_REGISTERS_PAGE2 (2) +extern struct mcbsp_dev_info mcbsp_dev; + #endif /*OMAPALSATSC2101MIXER_H_*/ diff --git a/sound/arm/omap/omap-alsa-tsc2101.c b/sound/arm/omap/omap-alsa-tsc2101.c index 88ed046..9d056ad 100644 --- a/sound/arm/omap/omap-alsa-tsc2101.c +++ b/sound/arm/omap/omap-alsa-tsc2101.c @@ -22,6 +22,7 @@ #include <linux/soundcard.h> #include <linux/platform_device.h> #include <linux/clk.h> +#include <linux/spi/tsc2101.h> #include <asm/io.h> #include <asm/arch/mcbsp.h> @@ -38,6 +39,8 @@ #include <asm/arch/omap-alsa.h> #include "omap-alsa-tsc2101.h" +struct mcbsp_dev_info mcbsp_dev; + static struct clk *tsc2101_mclk = 0; //#define DUMP_TSC2101_AUDIO_REGISTERS @@ -143,7 +146,8 @@ static struct snd_pcm_hardware tsc2101_snd_omap_alsa_capture = { */ inline void tsc2101_audio_write(u8 address, u16 data) { - omap_tsc2101_write(PAGE2_AUDIO_CODEC_REGISTERS, address, data); + tsc2101_write_sync(mcbsp_dev.tsc2101_dev, PAGE2_AUDIO_CODEC_REGISTERS, + address, data); } /* @@ -151,7 +155,8 @@ inline void tsc2101_audio_write(u8 address, u16 data) */ inline u16 tsc2101_audio_read(u8 address) { - return (omap_tsc2101_read(PAGE2_AUDIO_CODEC_REGISTERS, address)); + return (tsc2101_read_sync(mcbsp_dev.tsc2101_dev, PAGE2_AUDIO_CODEC_REGISTERS, + address)); } #ifdef DUMP_TSC2101_AUDIO_REGISTERS @@ -341,9 +346,9 @@ int tsc2101_clock_on(void) err); // Now turn the audio on - omap_tsc2101_write(PAGE2_AUDIO_CODEC_REGISTERS, - TSC2101_CODEC_POWER_CTRL, - 0x0000); + tsc2101_write_sync(mcbsp_dev.tsc2101_dev, PAGE2_AUDIO_CODEC_REGISTERS, + TSC2101_CODEC_POWER_CTRL, + 0x0000); return 0; } @@ -382,9 +387,22 @@ int tsc2101_get_default_samplerate(void) static int __devinit snd_omap_alsa_tsc2101_probe(struct platform_device *pdev) { + struct spi_device *tsc2101; int ret; struct omap_alsa_codec_config *codec_cfg; + tsc2101 = dev_get_drvdata(&pdev->dev); + if (tsc2101 == NULL) { + dev_err(&pdev->dev, "no platform data\n"); + return -ENODEV; + } + if (strncmp(tsc2101->modalias, "tsc2101", 8) != 0) { + dev_err(&pdev->dev, "tsc2101 not found\n"); + return -EINVAL; + } + mcbsp_dev.mcbsp_dev = pdev; + mcbsp_dev.tsc2101_dev = tsc2101; + codec_cfg = pdev->dev.platform_data; if (codec_cfg != NULL) { codec_cfg->hw_constraints_rates = &tsc2101_hw_constraints_rates; diff --git a/sound/arm/omap/omap-alsa-tsc2101.h b/sound/arm/omap/omap-alsa-tsc2101.h index 85dccbb..73999a0 100644 --- a/sound/arm/omap/omap-alsa-tsc2101.h +++ b/sound/arm/omap/omap-alsa-tsc2101.h @@ -42,6 +42,11 @@ #define PAGE2_AUDIO_CODEC_REGISTERS (2) +struct mcbsp_dev_info { + struct platform_device *mcbsp_dev; + struct spi_device *tsc2101_dev; +}; + struct tsc2101_samplerate_reg_info { u16 sample_rate; u8 divisor; -- 1.5.5-rc3.GIT ^ permalink raw reply related [flat|nested] 23+ messages in thread
* Re: [PATCH 01/19] Update audio driver for H2 board 2008-04-15 14:02 ` [PATCH 01/19] Update audio driver for H2 board Eduardo Valentin @ 2008-04-17 23:59 ` Felipe Balbi 0 siblings, 0 replies; 23+ messages in thread From: Felipe Balbi @ 2008-04-17 23:59 UTC (permalink / raw) To: Eduardo Valentin; +Cc: linux-omap, Eduardo Valentin On Tue, Apr 15, 2008 at 10:02:05AM -0400, Eduardo Valentin wrote: > From: Eduardo Valentin <eduardo.valentin@indt.org.br> > > This patch updates the audio driver based on tsc2101 chip > for H2 board. tsc2101 driver was updated against new spi > framework, but its audio driver for H2 wasn't. > > Signed-off-by: Eduardo Valentin <eduardo.valentin@indt.org.br> Some from checkpatch: -:79: ERROR: use tabs not spaces -:82: ERROR: use tabs not spaces -:249: WARNING: line over 80 characters total: 2 errors, 1 warnings, 0 checks, 205 lines checked > --- > arch/arm/mach-omap1/board-h2.c | 72 +++++++++++++++--------------- > sound/arm/omap/omap-alsa-tsc2101-mixer.c | 7 ++- > sound/arm/omap/omap-alsa-tsc2101-mixer.h | 2 + > sound/arm/omap/omap-alsa-tsc2101.c | 28 +++++++++-- > sound/arm/omap/omap-alsa-tsc2101.h | 5 ++ > 5 files changed, 71 insertions(+), 43 deletions(-) > > diff --git a/arch/arm/mach-omap1/board-h2.c b/arch/arm/mach-omap1/board-h2.c > index aa1f8af..a576b5b 100644 > --- a/arch/arm/mach-omap1/board-h2.c > +++ b/arch/arm/mach-omap1/board-h2.c > @@ -320,6 +320,41 @@ static void h2_lcd_dev_init(struct spi_device *tsc2101) > platform_device_register(&h2_lcd_device); > } > > +static struct omap_mcbsp_reg_cfg mcbsp_regs = { > + .spcr2 = FREE | FRST | GRST | XRST | XINTM(3), > + .spcr1 = RINTM(3) | RRST, > + .rcr2 = RPHASE | RFRLEN2(OMAP_MCBSP_WORD_8) | > + RWDLEN2(OMAP_MCBSP_WORD_16) | RDATDLY(1), > + .rcr1 = RFRLEN1(OMAP_MCBSP_WORD_8) | RWDLEN1(OMAP_MCBSP_WORD_16), > + .xcr2 = XPHASE | XFRLEN2(OMAP_MCBSP_WORD_8) | > + XWDLEN2(OMAP_MCBSP_WORD_16) | XDATDLY(1) | XFIG, > + .xcr1 = XFRLEN1(OMAP_MCBSP_WORD_8) | XWDLEN1(OMAP_MCBSP_WORD_16), > + .srgr1 = FWID(15), > + .srgr2 = GSYNC | CLKSP | FSGM | FPER(31), > + > + .pcr0 = CLKXM | CLKRM | FSXP | FSRP | CLKXP | CLKRP, > + /*.pcr0 = CLKXP | CLKRP,*/ /* mcbsp: slave */ > +}; > + > +static struct omap_alsa_codec_config alsa_config = { > + .name = "H2 TSC2101", > + .mcbsp_regs_alsa = &mcbsp_regs, > +}; > + > +static struct platform_device h2_mcbsp1_device = { > + .name = "omap_alsa_mcbsp", > + .id = 1, > + .dev = { > + .platform_data = &alsa_config, > + }, > +}; > + > +static void h2_audio_dev_init(struct spi_device *tsc2101) > +{ > + h2_mcbsp1_device.dev.platform_data = tsc2101; > + platform_device_register(&h2_mcbsp1_device); > +} > + > static int h2_tsc2101_init(struct spi_device *spi) > { > int r; > @@ -344,6 +379,7 @@ static int h2_tsc2101_init(struct spi_device *spi) > omap_cfg_reg(N15_1610_UWIRE_CS1); > > h2_lcd_dev_init(spi); > + h2_audio_dev_init(spi); > > return 0; > err: > @@ -386,48 +422,12 @@ static struct spi_board_info h2_spi_board_info[] __initdata = { > }, > }; > > -static struct omap_mcbsp_reg_cfg mcbsp_regs = { > - .spcr2 = FREE | FRST | GRST | XRST | XINTM(3), > - .spcr1 = RINTM(3) | RRST, > - .rcr2 = RPHASE | RFRLEN2(OMAP_MCBSP_WORD_8) | > - RWDLEN2(OMAP_MCBSP_WORD_16) | RDATDLY(1), > - .rcr1 = RFRLEN1(OMAP_MCBSP_WORD_8) | RWDLEN1(OMAP_MCBSP_WORD_16), > - .xcr2 = XPHASE | XFRLEN2(OMAP_MCBSP_WORD_8) | > - XWDLEN2(OMAP_MCBSP_WORD_16) | XDATDLY(1) | XFIG, > - .xcr1 = XFRLEN1(OMAP_MCBSP_WORD_8) | XWDLEN1(OMAP_MCBSP_WORD_16), > - .srgr1 = FWID(15), > - .srgr2 = GSYNC | CLKSP | FSGM | FPER(31), > - > - .pcr0 = CLKXM | CLKRM | FSXP | FSRP | CLKXP | CLKRP, > - /*.pcr0 = CLKXP | CLKRP,*/ /* mcbsp: slave */ > -}; > - > -static struct omap_alsa_codec_config alsa_config = { > - .name = "H2 TSC2101", > - .mcbsp_regs_alsa = &mcbsp_regs, > - .codec_configure_dev = NULL, /* tsc2101_configure, */ > - .codec_set_samplerate = NULL, /* tsc2101_set_samplerate, */ > - .codec_clock_setup = NULL, /* tsc2101_clock_setup, */ > - .codec_clock_on = NULL, /* tsc2101_clock_on, */ > - .codec_clock_off = NULL, /* tsc2101_clock_off, */ > - .get_default_samplerate = NULL, /* tsc2101_get_default_samplerate, */ > -}; > - > -static struct platform_device h2_mcbsp1_device = { > - .name = "omap_alsa_mcbsp", > - .id = 1, > - .dev = { > - .platform_data = &alsa_config, > - }, > -}; > - > static struct platform_device *h2_devices[] __initdata = { > &h2_nor_device, > &h2_nand_device, > &h2_smc91x_device, > &h2_irda_device, > &h2_kp_device, > - &h2_mcbsp1_device, > }; > > static void __init h2_init_smc91x(void) > diff --git a/sound/arm/omap/omap-alsa-tsc2101-mixer.c b/sound/arm/omap/omap-alsa-tsc2101-mixer.c > index 8faba95..09257d7 100644 > --- a/sound/arm/omap/omap-alsa-tsc2101-mixer.c > +++ b/sound/arm/omap/omap-alsa-tsc2101-mixer.c > @@ -43,6 +43,7 @@ > #include "omap-alsa-tsc2101.h" > #include "omap-alsa-tsc2101-mixer.h" > > +#include <linux/spi/tsc2101.h> > #include <linux/types.h> > #include <sound/initval.h> > #include <sound/control.h> > @@ -68,7 +69,8 @@ static int current_rec_src = REC_SRC_SINGLE_ENDED_MICIN_HED; > */ > inline void omap_tsc2101_audio_write(u8 address, u16 data) > { > - omap_tsc2101_write(PAGE2_AUDIO_CODEC_REGISTERS, address, data); > + tsc2101_write_sync(mcbsp_dev.tsc2101_dev, PAGE2_AUDIO_CODEC_REGISTERS, > + address, data); > } > > /* > @@ -76,7 +78,8 @@ inline void omap_tsc2101_audio_write(u8 address, u16 data) > */ > inline u16 omap_tsc2101_audio_read(u8 address) > { > - return (omap_tsc2101_read(PAGE2_AUDIO_CODEC_REGISTERS, address)); > + return (tsc2101_read_sync(mcbsp_dev.tsc2101_dev, > + PAGE2_AUDIO_CODEC_REGISTERS, address)); > } > > /* > diff --git a/sound/arm/omap/omap-alsa-tsc2101-mixer.h b/sound/arm/omap/omap-alsa-tsc2101-mixer.h > index 513614c..b110b36 100644 > --- a/sound/arm/omap/omap-alsa-tsc2101-mixer.h > +++ b/sound/arm/omap/omap-alsa-tsc2101-mixer.h > @@ -76,4 +76,6 @@ > > #define TSC2101_AUDIO_CODEC_REGISTERS_PAGE2 (2) > > +extern struct mcbsp_dev_info mcbsp_dev; > + > #endif /*OMAPALSATSC2101MIXER_H_*/ > diff --git a/sound/arm/omap/omap-alsa-tsc2101.c b/sound/arm/omap/omap-alsa-tsc2101.c > index 88ed046..9d056ad 100644 > --- a/sound/arm/omap/omap-alsa-tsc2101.c > +++ b/sound/arm/omap/omap-alsa-tsc2101.c > @@ -22,6 +22,7 @@ > #include <linux/soundcard.h> > #include <linux/platform_device.h> > #include <linux/clk.h> > +#include <linux/spi/tsc2101.h> > #include <asm/io.h> > #include <asm/arch/mcbsp.h> > > @@ -38,6 +39,8 @@ > #include <asm/arch/omap-alsa.h> > #include "omap-alsa-tsc2101.h" > > +struct mcbsp_dev_info mcbsp_dev; > + > static struct clk *tsc2101_mclk = 0; > > //#define DUMP_TSC2101_AUDIO_REGISTERS > @@ -143,7 +146,8 @@ static struct snd_pcm_hardware tsc2101_snd_omap_alsa_capture = { > */ > inline void tsc2101_audio_write(u8 address, u16 data) > { > - omap_tsc2101_write(PAGE2_AUDIO_CODEC_REGISTERS, address, data); > + tsc2101_write_sync(mcbsp_dev.tsc2101_dev, PAGE2_AUDIO_CODEC_REGISTERS, > + address, data); > } > > /* > @@ -151,7 +155,8 @@ inline void tsc2101_audio_write(u8 address, u16 data) > */ > inline u16 tsc2101_audio_read(u8 address) > { > - return (omap_tsc2101_read(PAGE2_AUDIO_CODEC_REGISTERS, address)); > + return (tsc2101_read_sync(mcbsp_dev.tsc2101_dev, PAGE2_AUDIO_CODEC_REGISTERS, > + address)); > } > > #ifdef DUMP_TSC2101_AUDIO_REGISTERS > @@ -341,9 +346,9 @@ int tsc2101_clock_on(void) > err); > > // Now turn the audio on > - omap_tsc2101_write(PAGE2_AUDIO_CODEC_REGISTERS, > - TSC2101_CODEC_POWER_CTRL, > - 0x0000); > + tsc2101_write_sync(mcbsp_dev.tsc2101_dev, PAGE2_AUDIO_CODEC_REGISTERS, > + TSC2101_CODEC_POWER_CTRL, > + 0x0000); > return 0; > } > > @@ -382,9 +387,22 @@ int tsc2101_get_default_samplerate(void) > > static int __devinit snd_omap_alsa_tsc2101_probe(struct platform_device *pdev) > { > + struct spi_device *tsc2101; > int ret; > struct omap_alsa_codec_config *codec_cfg; > > + tsc2101 = dev_get_drvdata(&pdev->dev); > + if (tsc2101 == NULL) { > + dev_err(&pdev->dev, "no platform data\n"); > + return -ENODEV; > + } > + if (strncmp(tsc2101->modalias, "tsc2101", 8) != 0) { > + dev_err(&pdev->dev, "tsc2101 not found\n"); > + return -EINVAL; > + } > + mcbsp_dev.mcbsp_dev = pdev; > + mcbsp_dev.tsc2101_dev = tsc2101; > + > codec_cfg = pdev->dev.platform_data; > if (codec_cfg != NULL) { > codec_cfg->hw_constraints_rates = &tsc2101_hw_constraints_rates; > diff --git a/sound/arm/omap/omap-alsa-tsc2101.h b/sound/arm/omap/omap-alsa-tsc2101.h > index 85dccbb..73999a0 100644 > --- a/sound/arm/omap/omap-alsa-tsc2101.h > +++ b/sound/arm/omap/omap-alsa-tsc2101.h > @@ -42,6 +42,11 @@ > > #define PAGE2_AUDIO_CODEC_REGISTERS (2) > > +struct mcbsp_dev_info { > + struct platform_device *mcbsp_dev; > + struct spi_device *tsc2101_dev; > +}; > + > struct tsc2101_samplerate_reg_info { > u16 sample_rate; > u8 divisor; > -- > 1.5.5-rc3.GIT > > -- > To unsubscribe from this list: send the line "unsubscribe linux-omap" in > the body of a message to majordomo@vger.kernel.org > More majordomo info at http://vger.kernel.org/majordomo-info.html -- Best Regards, Felipe Balbi me@felipebalbi.com http://blog.felipebalbi.com ^ permalink raw reply [flat|nested] 23+ messages in thread
end of thread, other threads:[~2008-04-23 23:57 UTC | newest] Thread overview: 23+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2008-04-18 8:00 [PATCH 00/19] Update and clean up on sound/arm/omap/omap-alsa*[c,h] (take #2) Eduardo Valentin 2008-04-18 8:00 ` [PATCH 01/19] Update audio driver for H2 board Eduardo Valentin 2008-04-18 8:00 ` [PATCH 02/19] Code clean-up for include/asm-arm/arch-omap/omap-alsa.h Eduardo Valentin 2008-04-18 8:00 ` [PATCH 03/19] Code clean-up for sound/arm/omap/omap-alsa-aic23.c Eduardo Valentin 2008-04-18 8:00 ` [PATCH 04/19] Code clean-up for sound/arm/omap/omap-alsa-aic23.h Eduardo Valentin 2008-04-18 8:00 ` [PATCH 05/19] Code clean-up for sound/arm/omap/omap-alsa-aic23-mixer.c Eduardo Valentin 2008-04-18 8:00 ` [PATCH 06/19] Code clean-up for sound/arm/omap/omap-alsa-dma.c Eduardo Valentin 2008-04-18 8:00 ` [PATCH 07/19] Code clean-up for sound/arm/omap/omap-alsa-dma.h Eduardo Valentin 2008-04-18 8:00 ` [PATCH 08/19] Code clean-up for sound/arm/omap/omap-alsa-sx1-mixer.c Eduardo Valentin 2008-04-18 8:00 ` [PATCH 09/19] Code clean-up for sound/arm/omap/omap-alsa-sx1-mixer.h Eduardo Valentin 2008-04-18 8:00 ` [PATCH 10/19] Code clean-up for sound/arm/omap/omap-alsa-sx1.c Eduardo Valentin 2008-04-18 8:00 ` [PATCH 11/19] Code clean-up for sound/arm/omap/omap-alsa-sx1.h Eduardo Valentin 2008-04-18 8:00 ` [PATCH 12/19] Code clean-up for sound/arm/omap/omap-alsa-tsc2101-mixer.c Eduardo Valentin 2008-04-18 8:01 ` [PATCH 13/19] Code clean-up for sound/arm/omap/omap-alsa-tsc2101-mixer.h Eduardo Valentin 2008-04-18 8:01 ` [PATCH 14/19] Code clean-up for sound/arm/omap/omap-alsa-tsc2101.c Eduardo Valentin 2008-04-18 8:01 ` [PATCH 15/19] Code clean-up for sound/arm/omap/omap-alsa-tsc2101.h Eduardo Valentin 2008-04-18 8:01 ` [PATCH 16/19] Code clean-up for sound/arm/omap/omap-alsa-tsc2102-mixer.c Eduardo Valentin 2008-04-18 8:01 ` [PATCH 17/19] Code clean-up for sound/arm/omap/omap-alsa-tsc2102.c Eduardo Valentin 2008-04-18 8:01 ` [PATCH 18/19] Code clean-up for sound/arm/omap/omap-alsa-tsc2102.h Eduardo Valentin 2008-04-18 8:01 ` [PATCH 19/19] Code clean-up for sound/arm/omap/omap-alsa.c Eduardo Valentin 2008-04-23 23:57 ` [PATCH 00/19] Update and clean up on sound/arm/omap/omap-alsa*[c,h] (take #2) Tony Lindgren -- strict thread matches above, loose matches on Subject: below -- 2008-04-15 14:02 [PATCH 00/19] Update and clean up on sound/arm/omap/omap-alsa*[c,h] Eduardo Valentin 2008-04-15 14:02 ` [PATCH 01/19] Update audio driver for H2 board Eduardo Valentin 2008-04-17 23:59 ` Felipe Balbi
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox