• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /netgear-WNDR4500v2-V1.0.0.60_1.0.38/src/linux/linux-2.6/sound/pci/

Lines Matching refs:es

823 			struct esschan *es = list_entry(p, struct esschan, list);
824 if (max_freq < es->bob_freq)
825 max_freq = es->bob_freq;
836 snd_es1968_calc_bob_rate(struct es1968 *chip, struct esschan *es,
841 if (es->fmt & ESS_FMT_STEREO)
843 if (es->fmt & ESS_FMT_16BIT)
845 freq /= es->frag_size;
866 snd_es1968_get_dma_ptr(struct es1968 *chip, struct esschan *es)
870 offset = apu_get_register(chip, es->apu[0], 5);
872 offset -= es->base[0];
894 static void snd_es1968_pcm_start(struct es1968 *chip, struct esschan *es)
897 __apu_set_register(chip, es->apu[0], 5, es->base[0]);
898 snd_es1968_trigger_apu(chip, es->apu[0], es->apu_mode[0]);
899 if (es->mode == ESM_MODE_CAPTURE) {
900 __apu_set_register(chip, es->apu[2], 5, es->base[2]);
901 snd_es1968_trigger_apu(chip, es->apu[2], es->apu_mode[2]);
903 if (es->fmt & ESS_FMT_STEREO) {
904 __apu_set_register(chip, es->apu[1], 5, es->base[1]);
905 snd_es1968_trigger_apu(chip, es->apu[1], es->apu_mode[1]);
906 if (es->mode == ESM_MODE_CAPTURE) {
907 __apu_set_register(chip, es->apu[3], 5, es->base[3]);
908 snd_es1968_trigger_apu(chip, es->apu[3], es->apu_mode[3]);
914 static void snd_es1968_pcm_stop(struct es1968 *chip, struct esschan *es)
917 snd_es1968_trigger_apu(chip, es->apu[0], 0);
918 snd_es1968_trigger_apu(chip, es->apu[1], 0);
919 if (es->mode == ESM_MODE_CAPTURE) {
920 snd_es1968_trigger_apu(chip, es->apu[2], 0);
921 snd_es1968_trigger_apu(chip, es->apu[3], 0);
927 static void snd_es1968_program_wavecache(struct es1968 *chip, struct esschan *es,
933 if (!(es->fmt & ESS_FMT_16BIT))
935 if (es->fmt & ESS_FMT_STEREO)
940 wave_set_register(chip, es->apu[channel] << 3, tmpval);
943 es->wc_map[channel] = tmpval;
948 static void snd_es1968_playback_setup(struct es1968 *chip, struct esschan *es,
958 size = es->dma_size >> es->wav_shift;
960 if (es->fmt & ESS_FMT_STEREO)
964 apu = es->apu[channel];
966 snd_es1968_program_wavecache(chip, es, channel, es->memory->buf.addr, 0);
969 pa = es->memory->buf.addr;
975 if (es->fmt & ESS_FMT_STEREO) {
979 if (es->fmt & ESS_FMT_16BIT)
985 es->base[channel] = pa & 0xFFFF;
1007 if (es->fmt & ESS_FMT_16BIT)
1008 es->apu_mode[channel] = ESM_APU_16BITLINEAR;
1010 es->apu_mode[channel] = ESM_APU_8BITLINEAR;
1012 if (es->fmt & ESS_FMT_STEREO) {
1020 es->apu_mode[channel] += 1; /* stereo */
1040 if (!(es->fmt & ESS_FMT_16BIT) && !(es->fmt & ESS_FMT_STEREO))
1046 snd_es1968_apu_set_freq(chip, es->apu[0], freq);
1047 snd_es1968_apu_set_freq(chip, es->apu[1], freq);
1051 static void init_capture_apu(struct es1968 *chip, struct esschan *es, int channel,
1055 int i, apu = es->apu[channel];
1057 es->apu_mode[channel] = mode;
1060 snd_es1968_program_wavecache(chip, es, channel, pa, 1);
1068 es->base[channel] = pa & 0xFFFF;
1096 static void snd_es1968_capture_setup(struct es1968 *chip, struct esschan *es,
1103 size = es->dma_size >> es->wav_shift;
1117 init_capture_apu(chip, es, 2,
1118 es->mixbuf->buf.addr, ESM_MIXBUF_SIZE/4, /* in words */
1121 init_capture_apu(chip, es, 0, es->memory->buf.addr, size,
1122 ESM_APU_SRCONVERTOR, es->apu[2]);
1123 if (es->fmt & ESS_FMT_STEREO) {
1125 init_capture_apu(chip, es, 3,
1126 es->mixbuf->buf.addr + ESM_MIXBUF_SIZE/2,
1130 init_capture_apu(chip, es, 1,
1131 es->memory->buf.addr + size*2, size,
1132 ESM_APU_SRCONVERTOR, es->apu[3]);
1145 snd_es1968_apu_set_freq(chip, es->apu[0], freq);
1146 snd_es1968_apu_set_freq(chip, es->apu[1], freq);
1150 snd_es1968_apu_set_freq(chip, es->apu[2], freq);
1151 snd_es1968_apu_set_freq(chip, es->apu[3], freq);
1169 struct esschan *es = runtime->private_data;
1171 es->dma_size = snd_pcm_lib_buffer_bytes(substream);
1172 es->frag_size = snd_pcm_lib_period_bytes(substream);
1174 es->wav_shift = 1; /* maestro handles always 16bit */
1175 es->fmt = 0;
1177 es->fmt |= ESS_FMT_16BIT;
1179 es->fmt |= ESS_FMT_STEREO;
1180 if (es->fmt & ESS_FMT_16BIT) /* 8bit is already word shifted */
1181 es->wav_shift++;
1183 es->bob_freq = snd_es1968_calc_bob_rate(chip, es, runtime);
1185 switch (es->mode) {
1187 snd_es1968_playback_setup(chip, es, runtime);
1190 snd_es1968_capture_setup(chip, es, runtime);
1200 struct esschan *es = substream->runtime->private_data;
1206 if (es->running)
1208 snd_es1968_bob_inc(chip, es->bob_freq);
1209 es->count = 0;
1210 es->hwptr = 0;
1211 snd_es1968_pcm_start(chip, es);
1212 es->running = 1;
1216 if (! es->running)
1218 snd_es1968_pcm_stop(chip, es);
1219 es->running = 0;
1230 struct esschan *es = substream->runtime->private_data;
1233 ptr = snd_es1968_get_dma_ptr(chip, es) << es->wav_shift;
1235 return bytes_to_frames(substream->runtime, ptr % es->dma_size);
1501 struct esschan *es;
1509 es = kzalloc(sizeof(*es), GFP_KERNEL);
1510 if (!es) {
1515 es->apu[0] = apu1;
1516 es->apu[1] = apu1 + 1;
1517 es->apu_mode[0] = 0;
1518 es->apu_mode[1] = 0;
1519 es->running = 0;
1520 es->substream = substream;
1521 es->mode = ESM_MODE_PLAY;
1523 runtime->private_data = es;
1529 list_add(&es->list, &chip->substream_list);
1539 struct esschan *es;
1551 es = kzalloc(sizeof(*es), GFP_KERNEL);
1552 if (!es) {
1558 es->apu[0] = apu1;
1559 es->apu[1] = apu1 + 1;
1560 es->apu[2] = apu2;
1561 es->apu[3] = apu2 + 1;
1562 es->apu_mode[0] = 0;
1563 es->apu_mode[1] = 0;
1564 es->apu_mode[2] = 0;
1565 es->apu_mode[3] = 0;
1566 es->running = 0;
1567 es->substream = substream;
1568 es->mode = ESM_MODE_CAPTURE;
1571 if ((es->mixbuf = snd_es1968_new_memory(chip, ESM_MIXBUF_SIZE)) == NULL) {
1574 kfree(es);
1577 memset(es->mixbuf->buf.area, 0, ESM_MIXBUF_SIZE);
1579 runtime->private_data = es;
1586 list_add(&es->list, &chip->substream_list);
1595 struct esschan *es;
1599 es = substream->runtime->private_data;
1601 list_del(&es->list);
1603 snd_es1968_free_apu_pair(chip, es->apu[0]);
1604 kfree(es);
1612 struct esschan *es;
1616 es = substream->runtime->private_data;
1618 list_del(&es->list);
1620 snd_es1968_free_memory(chip, es->mixbuf);
1621 snd_es1968_free_apu_pair(chip, es->apu[0]);
1622 snd_es1968_free_apu_pair(chip, es->apu[2]);
1623 kfree(es);
1797 static void snd_es1968_update_pcm(struct es1968 *chip, struct esschan *es)
1801 struct snd_pcm_substream *subs = es->substream;
1803 if (subs == NULL || !es->running)
1806 hwptr = snd_es1968_get_dma_ptr(chip, es) << es->wav_shift;
1807 hwptr %= es->dma_size;
1809 diff = (es->dma_size + hwptr - es->hwptr) % es->dma_size;
1811 es->hwptr = hwptr;
1812 es->count += diff;
1814 if (es->count > es->frag_size) {
1818 es->count %= es->frag_size;
1913 struct esschan *es = list_entry(p, struct esschan, list);
1914 if (es->running)
1915 snd_es1968_update_pcm(chip, es);
2312 struct esschan *es = list_entry(p, struct esschan, list);
2313 switch (es->mode) {
2315 snd_es1968_playback_setup(chip, es, es->substream->runtime);
2318 snd_es1968_capture_setup(chip, es, es->substream->runtime);