Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 8837
b: refs/heads/master
c: ec9e1c5
h: refs/heads/master
i:
  8835: 74acdd7
v: v3
  • Loading branch information
Takashi Iwai authored and Jaroslav Kysela committed Sep 12, 2005
1 parent 0c54a12 commit 645a48c
Show file tree
Hide file tree
Showing 5 changed files with 31 additions and 4 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: 821690cdc82e4090ef6f91947f76a231fad5cbb1
refs/heads/master: ec9e1c5c9c7350cc8214f8b9c529f9678036d9a8
1 change: 1 addition & 0 deletions trunk/sound/pci/hda/hda_codec.h
Original file line number Diff line number Diff line change
Expand Up @@ -505,6 +505,7 @@ struct hda_pcm_stream {
struct hda_pcm {
char *name;
struct hda_pcm_stream stream[2];
unsigned int is_modem; /* modem codec? */
};

/* codec information */
Expand Down
29 changes: 26 additions & 3 deletions trunk/sound/pci/hda/hda_intel.c
Original file line number Diff line number Diff line change
Expand Up @@ -164,7 +164,9 @@ enum { SDI0, SDI1, SDI2, SDI3, SDO0, SDO1, SDO2, SDO3 };
/* max buffer size - no h/w limit, you can increase as you like */
#define AZX_MAX_BUF_SIZE (1024*1024*1024)
/* max number of PCM devics per card */
#define AZX_MAX_PCMS 8
#define AZX_MAX_AUDIO_PCMS 6
#define AZX_MAX_MODEM_PCMS 2
#define AZX_MAX_PCMS (AZX_MAX_AUDIO_PCMS + AZX_MAX_MODEM_PCMS)

/* RIRB int mask: overrun[2], response[0] */
#define RIRB_INT_RESPONSE 0x01
Expand Down Expand Up @@ -1225,12 +1227,33 @@ static int __devinit azx_pcm_create(azx_t *chip)
if ((err = snd_hda_build_pcms(chip->bus)) < 0)
return err;

/* create audio PCMs */
pcm_dev = 0;
list_for_each(p, &chip->bus->codec_list) {
codec = list_entry(p, struct hda_codec, list);
for (c = 0; c < codec->num_pcms; c++) {
if (pcm_dev >= AZX_MAX_PCMS) {
snd_printk(KERN_ERR SFX "Too many PCMs\n");
if (codec->pcm_info[c].is_modem)
continue; /* create later */
if (pcm_dev >= AZX_MAX_AUDIO_PCMS) {
snd_printk(KERN_ERR SFX "Too many audio PCMs\n");
return -EINVAL;
}
err = create_codec_pcm(chip, codec, &codec->pcm_info[c], pcm_dev);
if (err < 0)
return err;
pcm_dev++;
}
}

/* create modem PCMs */
pcm_dev = AZX_MAX_AUDIO_PCMS;
list_for_each(p, &chip->bus->codec_list) {
codec = list_entry(p, struct hda_codec, list);
for (c = 0; c < codec->num_pcms; c++) {
if (! codec->pcm_info[c].is_modem)
continue; /* already created */
if (pcm_dev >= AZX_MAX_MODEM_PCMS) {
snd_printk(KERN_ERR SFX "Too many modem PCMs\n");
return -EINVAL;
}
err = create_codec_pcm(chip, codec, &codec->pcm_info[c], pcm_dev);
Expand Down
2 changes: 2 additions & 0 deletions trunk/sound/pci/hda/hda_proc.c
Original file line number Diff line number Diff line change
Expand Up @@ -207,6 +207,8 @@ static void print_codec_info(snd_info_entry_t *entry, snd_info_buffer_t *buffer)
snd_iprintf(buffer, "Vendor Id: 0x%x\n", codec->vendor_id);
snd_iprintf(buffer, "Subsystem Id: 0x%x\n", codec->subsystem_id);
snd_iprintf(buffer, "Revision Id: 0x%x\n", codec->revision_id);
if (! codec->afg)
return;
snd_iprintf(buffer, "Default PCM: ");
print_pcm_caps(buffer, codec, codec->afg);
snd_iprintf(buffer, "Default Amp-In caps: ");
Expand Down
1 change: 1 addition & 0 deletions trunk/sound/pci/hda/patch_si3054.c
Original file line number Diff line number Diff line change
Expand Up @@ -214,6 +214,7 @@ static int si3054_build_pcms(struct hda_codec *codec)
info->name = "Si3054 Modem";
info->stream[SNDRV_PCM_STREAM_PLAYBACK] = si3054_pcm;
info->stream[SNDRV_PCM_STREAM_CAPTURE] = si3054_pcm;
info->is_modem = 1;
return 0;
}

Expand Down

0 comments on commit 645a48c

Please sign in to comment.