Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 16035
b: refs/heads/master
c: af0fbfb
h: refs/heads/master
i:
  16033: a460c32
  16031: e5a4ace
v: v3
  • Loading branch information
Takashi Iwai authored and Jaroslav Kysela committed Jan 3, 2006
1 parent a44dd25 commit aec26d7
Show file tree
Hide file tree
Showing 2 changed files with 62 additions and 65 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: d18f83764e376dea9e14a8ac53d1e14004fa9c13
refs/heads/master: af0fbfb58dbb2081ae91789892933321ee95d71f
125 changes: 61 additions & 64 deletions trunk/sound/arm/sa11xx-uda1341.c
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@
* merged HAL layer (patches from Brian)
*/

/* $Id: sa11xx-uda1341.c,v 1.24 2005/11/17 10:25:22 tiwai Exp $ */
/* $Id: sa11xx-uda1341.c,v 1.25 2005/11/17 15:10:58 tiwai Exp $ */

/***************************************************************************************************
*
Expand Down Expand Up @@ -115,7 +115,7 @@ static char *id = NULL; /* ID for this card */
module_param(id, charp, 0444);
MODULE_PARM_DESC(id, "ID string for SA1100/SA1111 + UDA1341TS soundcard.");

typedef struct audio_stream {
struct audio_stream {
char *id; /* identification string */
int stream_id; /* numeric identification */
dma_device_t dma_dev; /* device identifier for DMA */
Expand All @@ -130,24 +130,24 @@ typedef struct audio_stream {
int tx_spin; /* are we recoding - flag used to do DMA trans. for sync */
unsigned int old_offset;
spinlock_t dma_lock; /* for locking in DMA operations (see dma-sa1100.c in the kernel) */
snd_pcm_substream_t *stream;
}audio_stream_t;
struct snd_pcm_substream *stream;
};

typedef struct snd_card_sa11xx_uda1341 {
snd_card_t *card;
struct sa11xx_uda1341 {
struct snd_card *card;
struct l3_client *uda1341;
snd_pcm_t *pcm;
struct snd_pcm *pcm;
long samplerate;
audio_stream_t s[2]; /* playback & capture */
} sa11xx_uda1341_t;
struct audio_stream s[2]; /* playback & capture */
};

static unsigned int rates[] = {
8000, 10666, 10985, 14647,
16000, 21970, 22050, 24000,
29400, 32000, 44100, 48000,
};

static snd_pcm_hw_constraint_list_t hw_constraints_rates = {
static struct snd_pcm_hw_constraint_list hw_constraints_rates = {
.count = ARRAY_SIZE(rates),
.list = rates,
.mask = 0,
Expand Down Expand Up @@ -193,7 +193,7 @@ static void sa11xx_uda1341_set_audio_clock(long val)
}
}

static void sa11xx_uda1341_set_samplerate(sa11xx_uda1341_t *sa11xx_uda1341, long rate)
static void sa11xx_uda1341_set_samplerate(struct sa11xx_uda1341 *sa11xx_uda1341, long rate)
{
int clk_div = 0;
int clk=0;
Expand Down Expand Up @@ -278,7 +278,7 @@ static void sa11xx_uda1341_set_samplerate(sa11xx_uda1341_t *sa11xx_uda1341, long

/* {{{ HW init and shutdown */

static void sa11xx_uda1341_audio_init(sa11xx_uda1341_t *sa11xx_uda1341)
static void sa11xx_uda1341_audio_init(struct sa11xx_uda1341 *sa11xx_uda1341)
{
unsigned long flags;

Expand Down Expand Up @@ -335,7 +335,7 @@ static void sa11xx_uda1341_audio_init(sa11xx_uda1341_t *sa11xx_uda1341)
#endif
}

static void sa11xx_uda1341_audio_shutdown(sa11xx_uda1341_t *sa11xx_uda1341)
static void sa11xx_uda1341_audio_shutdown(struct sa11xx_uda1341 *sa11xx_uda1341)
{
/* mute on */
#ifdef CONFIG_H3600_HAL
Expand Down Expand Up @@ -376,7 +376,7 @@ static void sa11xx_uda1341_audio_shutdown(sa11xx_uda1341_t *sa11xx_uda1341)

#ifdef HH_VERSION

static int audio_dma_request(audio_stream_t *s, void (*callback)(void *, int))
static int audio_dma_request(struct audio_stream *s, void (*callback)(void *, int))
{
int ret;

Expand All @@ -389,15 +389,15 @@ static int audio_dma_request(audio_stream_t *s, void (*callback)(void *, int))
return 0;
}

static inline void audio_dma_free(audio_stream_t *s)
static inline void audio_dma_free(struct audio_stream *s)
{
sa1100_free_dma(s->dmach);
s->dmach = -1;
}

#else

static int audio_dma_request(audio_stream_t *s, void (*callback)(void *))
static int audio_dma_request(struct audio_stream *s, void (*callback)(void *))
{
int ret;

Expand All @@ -407,18 +407,18 @@ static int audio_dma_request(audio_stream_t *s, void (*callback)(void *))
return ret;
}

static void audio_dma_free(audio_stream_t *s)
static void audio_dma_free(struct audio_stream *s)
{
sa1100_free_dma(s->dma_regs);
s->dma_regs = 0;
}

#endif

static u_int audio_get_dma_pos(audio_stream_t *s)
static u_int audio_get_dma_pos(struct audio_stream *s)
{
snd_pcm_substream_t * substream = s->stream;
snd_pcm_runtime_t *runtime = substream->runtime;
struct snd_pcm_substream *substream = s->stream;
struct snd_pcm_runtime *runtime = substream->runtime;
unsigned int offset;
unsigned long flags;
dma_addr_t addr;
Expand All @@ -443,7 +443,7 @@ static u_int audio_get_dma_pos(audio_stream_t *s)
/*
* this stops the dma and clears the dma ptrs
*/
static void audio_stop_dma(audio_stream_t *s)
static void audio_stop_dma(struct audio_stream *s)
{
unsigned long flags;

Expand All @@ -459,10 +459,10 @@ static void audio_stop_dma(audio_stream_t *s)
spin_unlock_irqrestore(&s->dma_lock, flags);
}

static void audio_process_dma(audio_stream_t *s)
static void audio_process_dma(struct audio_stream *s)
{
snd_pcm_substream_t *substream = s->stream;
snd_pcm_runtime_t *runtime;
struct snd_pcm_substream *substream = s->stream;
struct snd_pcm_runtime *runtime;
unsigned int dma_size;
unsigned int offset;
int ret;
Expand Down Expand Up @@ -525,7 +525,7 @@ static void audio_dma_callback(void *data, int size)
static void audio_dma_callback(void *data)
#endif
{
audio_stream_t *s = data;
struct audio_stream *s = data;

/*
* If we are getting a callback for an active stream then we inform
Expand All @@ -547,12 +547,12 @@ static void audio_dma_callback(void *data)

/* {{{ trigger & timer */

static int snd_sa11xx_uda1341_trigger(snd_pcm_substream_t * substream, int cmd)
static int snd_sa11xx_uda1341_trigger(struct snd_pcm_substream *substream, int cmd)
{
sa11xx_uda1341_t *chip = snd_pcm_substream_chip(substream);
struct sa11xx_uda1341 *chip = snd_pcm_substream_chip(substream);
int stream_id = substream->pstr->stream;
audio_stream_t *s = &chip->s[stream_id];
audio_stream_t *s1 = &chip->s[stream_id ^ 1];
struct audio_stream *s = &chip->s[stream_id];
struct audio_stream *s1 = &chip->s[stream_id ^ 1];
int err = 0;

/* note local interrupts are already disabled in the midlevel code */
Expand Down Expand Up @@ -681,11 +681,11 @@ static int snd_sa11xx_uda1341_trigger(snd_pcm_substream_t * substream, int cmd)
return err;
}

static int snd_sa11xx_uda1341_prepare(snd_pcm_substream_t * substream)
static int snd_sa11xx_uda1341_prepare(struct snd_pcm_substream *substream)
{
sa11xx_uda1341_t *chip = snd_pcm_substream_chip(substream);
snd_pcm_runtime_t *runtime = substream->runtime;
audio_stream_t *s = &chip->s[substream->pstr->stream];
struct sa11xx_uda1341 *chip = snd_pcm_substream_chip(substream);
struct snd_pcm_runtime *runtime = substream->runtime;
struct audio_stream *s = &chip->s[substream->pstr->stream];

/* set requested samplerate */
sa11xx_uda1341_set_samplerate(chip, runtime->rate);
Expand All @@ -699,15 +699,15 @@ static int snd_sa11xx_uda1341_prepare(snd_pcm_substream_t * substream)
return 0;
}

static snd_pcm_uframes_t snd_sa11xx_uda1341_pointer(snd_pcm_substream_t * substream)
static snd_pcm_uframes_t snd_sa11xx_uda1341_pointer(struct snd_pcm_substream *substream)
{
sa11xx_uda1341_t *chip = snd_pcm_substream_chip(substream);
struct sa11xx_uda1341 *chip = snd_pcm_substream_chip(substream);
return audio_get_dma_pos(&chip->s[substream->pstr->stream]);
}

/* }}} */

static snd_pcm_hardware_t snd_sa11xx_uda1341_capture =
static struct snd_pcm_hardware snd_sa11xx_uda1341_capture =
{
.info = (SNDRV_PCM_INFO_INTERLEAVED |
SNDRV_PCM_INFO_BLOCK_TRANSFER |
Expand All @@ -730,7 +730,7 @@ static snd_pcm_hardware_t snd_sa11xx_uda1341_capture =
.fifo_size = 0,
};

static snd_pcm_hardware_t snd_sa11xx_uda1341_playback =
static struct snd_pcm_hardware snd_sa11xx_uda1341_playback =
{
.info = (SNDRV_PCM_INFO_INTERLEAVED |
SNDRV_PCM_INFO_BLOCK_TRANSFER |
Expand All @@ -753,10 +753,10 @@ static snd_pcm_hardware_t snd_sa11xx_uda1341_playback =
.fifo_size = 0,
};

static int snd_card_sa11xx_uda1341_open(snd_pcm_substream_t * substream)
static int snd_card_sa11xx_uda1341_open(struct snd_pcm_substream *substream)
{
sa11xx_uda1341_t *chip = snd_pcm_substream_chip(substream);
snd_pcm_runtime_t *runtime = substream->runtime;
struct sa11xx_uda1341 *chip = snd_pcm_substream_chip(substream);
struct snd_pcm_runtime *runtime = substream->runtime;
int stream_id = substream->pstr->stream;
int err;

Expand All @@ -774,31 +774,31 @@ static int snd_card_sa11xx_uda1341_open(snd_pcm_substream_t * substream)
return 0;
}

static int snd_card_sa11xx_uda1341_close(snd_pcm_substream_t * substream)
static int snd_card_sa11xx_uda1341_close(struct snd_pcm_substream *substream)
{
sa11xx_uda1341_t *chip = snd_pcm_substream_chip(substream);
struct sa11xx_uda1341 *chip = snd_pcm_substream_chip(substream);

chip->s[substream->pstr->stream].stream = NULL;
return 0;
}

/* {{{ HW params & free */

static int snd_sa11xx_uda1341_hw_params(snd_pcm_substream_t * substream,
snd_pcm_hw_params_t * hw_params)
static int snd_sa11xx_uda1341_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_sa11xx_uda1341_hw_free(snd_pcm_substream_t * substream)
static int snd_sa11xx_uda1341_hw_free(struct snd_pcm_substream *substream)
{
return snd_pcm_lib_free_pages(substream);
}

/* }}} */

static snd_pcm_ops_t snd_card_sa11xx_uda1341_playback_ops = {
static struct snd_pcm_ops snd_card_sa11xx_uda1341_playback_ops = {
.open = snd_card_sa11xx_uda1341_open,
.close = snd_card_sa11xx_uda1341_close,
.ioctl = snd_pcm_lib_ioctl,
Expand All @@ -809,7 +809,7 @@ static snd_pcm_ops_t snd_card_sa11xx_uda1341_playback_ops = {
.pointer = snd_sa11xx_uda1341_pointer,
};

static snd_pcm_ops_t snd_card_sa11xx_uda1341_capture_ops = {
static struct snd_pcm_ops snd_card_sa11xx_uda1341_capture_ops = {
.open = snd_card_sa11xx_uda1341_open,
.close = snd_card_sa11xx_uda1341_close,
.ioctl = snd_pcm_lib_ioctl,
Expand All @@ -820,9 +820,9 @@ static snd_pcm_ops_t snd_card_sa11xx_uda1341_capture_ops = {
.pointer = snd_sa11xx_uda1341_pointer,
};

static int __init snd_card_sa11xx_uda1341_pcm(sa11xx_uda1341_t *sa11xx_uda1341, int device)
static int __init snd_card_sa11xx_uda1341_pcm(struct sa11xx_uda1341 *sa11xx_uda1341, int device)
{
snd_pcm_t *pcm;
struct snd_pcm *pcm;
int err;

if ((err = snd_pcm_new(sa11xx_uda1341->card, "UDA1341 PCM", device, 1, 1, &pcm)) < 0)
Expand Down Expand Up @@ -860,9 +860,9 @@ static int __init snd_card_sa11xx_uda1341_pcm(sa11xx_uda1341_t *sa11xx_uda1341,

#ifdef CONFIG_PM

static int snd_sa11xx_uda1341_suspend(snd_card_t *card, pm_message_t state)
static int snd_sa11xx_uda1341_suspend(struct snd_card *card, pm_message_t state)
{
sa11xx_uda1341_t *chip = card->pm_private_data;
struct sa11xx_uda1341 *chip = card->pm_private_data;

snd_pcm_suspend_all(chip->pcm);
#ifdef HH_VERSION
Expand All @@ -876,9 +876,9 @@ static int snd_sa11xx_uda1341_suspend(snd_card_t *card, pm_message_t state)
return 0;
}

static int snd_sa11xx_uda1341_resume(snd_card_t *card)
static int snd_sa11xx_uda1341_resume(struct snd_card *card)
{
sa11xx_uda1341_t *chip = card->pm_private_data;
struct sa11xx_uda1341 *chip = card->pm_private_data;

sa11xx_uda1341_audio_init(chip);
l3_command(chip->uda1341, CMD_RESUME, NULL);
Expand All @@ -892,43 +892,40 @@ static int snd_sa11xx_uda1341_resume(snd_card_t *card)
}
#endif /* COMFIG_PM */

void snd_sa11xx_uda1341_free(snd_card_t *card)
void snd_sa11xx_uda1341_free(struct snd_card *card)
{
sa11xx_uda1341_t *chip = card->private_data;
struct sa11xx_uda1341 *chip = card->private_data;

audio_dma_free(&chip->s[SNDRV_PCM_STREAM_PLAYBACK]);
audio_dma_free(&chip->s[SNDRV_PCM_STREAM_CAPTURE]);
}

static snd_card_t *sa11xx_uda1341_card;
static struct snd_card *sa11xx_uda1341_card;

static int __init sa11xx_uda1341_init(void)
{
int err;
snd_card_t *card;
sa11xx_uda1341_t *chip;
struct snd_card *card;
struct sa11xx_uda1341 *chip;

if (!machine_is_h3xxx())
return -ENODEV;

/* register the soundcard */
card = snd_card_new(-1, id, THIS_MODULE, sizeof(sa11xx_uda1341_t));
card = snd_card_new(-1, id, THIS_MODULE, sizeof(struct sa11xx_uda1341));
if (card == NULL)
return -ENOMEM;

sa11xx_uda1341 = kzalloc(sizeof(*sa11xx_uda1341), GFP_KERNEL);
if (sa11xx_uda1341 == NULL)
return -ENOMEM;
card->private_free = snd_sa11xx_uda1341_free;
chip = card->private_data;
spin_lock_init(&chip->s[0].dma_lock);
spin_lock_init(&chip->s[1].dma_lock);

chip->card = card;
chip->samplerate = AUDIO_RATE_DEFAULT;

// mixer
if ((err = snd_chip_uda1341_mixer_new(chip->card, &sa11xx_uda1341->uda1341)))
if ((err = snd_chip_uda1341_mixer_new(card, &chip->uda1341)))
goto nodev;

// PCM
Expand Down

0 comments on commit aec26d7

Please sign in to comment.