Lines Matching full:apu

35  *	We only drive the APU/Wavecache as typical DACs and drive the
40 * Each APU can do a number of things, but we only really use
43 * is handed to the codec. One APU for mono, and a pair for stereo.
44 * When in stereo, the combination of smarts in the APU and Wavecache
49 * APU, through another rate converter APU, and then into memory via
72 * like the APU interface that is indirect registers gotten at through
296 /* APU Modes: reg 0x00, bit 4-7 */
319 /* APU Filtey Q Control */
397 /* APU Filter Control */
405 /* APU ATFP Type */
411 /* APU ATFP Flags */
426 /* APU use in the driver */
450 u8 apu[4];
520 /* APU states */
521 unsigned char apu[NR_APUS];
662 dev_dbg(chip->card->dev, "APU register select failed. (Timeout)\n");
674 dev_dbg(chip->card->dev, "APU register set probably failed (Timeout)!\n");
871 offset = apu_get_register(chip, es->apu[0], 5);
878 static void snd_es1968_apu_set_freq(struct es1968 *chip, int apu, int freq)
880 apu_set_register(chip, apu, 2,
881 (apu_get_register(chip, apu, 2) & 0x00FF) |
883 apu_set_register(chip, apu, 3, freq >> 8);
887 static inline void snd_es1968_trigger_apu(struct es1968 *esm, int apu, int mode)
889 /* set the APU mode */
890 __apu_set_register(esm, apu, 0,
891 (__apu_get_register(esm, apu, 0) & 0xff0f) |
898 __apu_set_register(chip, es->apu[0], 5, es->base[0]);
899 snd_es1968_trigger_apu(chip, es->apu[0], es->apu_mode[0]);
901 __apu_set_register(chip, es->apu[2], 5, es->base[2]);
902 snd_es1968_trigger_apu(chip, es->apu[2], es->apu_mode[2]);
905 __apu_set_register(chip, es->apu[1], 5, es->base[1]);
906 snd_es1968_trigger_apu(chip, es->apu[1], es->apu_mode[1]);
908 __apu_set_register(chip, es->apu[3], 5, es->base[3]);
909 snd_es1968_trigger_apu(chip, es->apu[3], es->apu_mode[3]);
917 snd_es1968_trigger_apu(chip, es->apu[0], 0);
918 snd_es1968_trigger_apu(chip, es->apu[1], 0);
920 snd_es1968_trigger_apu(chip, es->apu[2], 0);
921 snd_es1968_trigger_apu(chip, es->apu[3], 0);
939 wave_set_register(chip, es->apu[channel] << 3, tmpval);
950 int channel, apu;
960 apu = es->apu[channel];
984 apu_set_register(chip, apu, i, 0x0000);
987 apu_set_register(chip, apu, 4, ((pa >> 16) & 0xFF) << 8);
988 apu_set_register(chip, apu, 5, pa & 0xFFFF);
989 apu_set_register(chip, apu, 6, (pa + size) & 0xFFFF);
991 apu_set_register(chip, apu, 7, size);
994 apu_set_register(chip, apu, 8, 0x0000);
996 apu_set_register(chip, apu, 9, 0xD000);
999 apu_set_register(chip, apu, 11, 0x0000);
1001 apu_set_register(chip, apu, 0, 0x400F);
1013 and not the APU Regs 4-5. */
1014 apu_set_register(chip, apu, 10,
1018 apu_set_register(chip, apu, 10, 0x8F08);
1042 snd_es1968_apu_set_freq(chip, es->apu[0], freq);
1043 snd_es1968_apu_set_freq(chip, es->apu[1], freq);
1051 int i, apu = es->apu[channel];
1067 /* Begin loading the APU */
1069 apu_set_register(chip, apu, i, 0x0000);
1073 apu_set_register(chip, apu, 2, 0x8);
1076 apu_set_register(chip, apu, 4, ((pa >> 16) & 0xFF) << 8);
1077 apu_set_register(chip, apu, 5, pa & 0xFFFF);
1078 apu_set_register(chip, apu, 6, (pa + bsize) & 0xFFFF);
1079 apu_set_register(chip, apu, 7, bsize);
1081 apu_set_register(chip, apu, 8, 0x00F0);
1083 apu_set_register(chip, apu, 9, 0x0000);
1085 apu_set_register(chip, apu, 10, 0x8F08);
1087 apu_set_register(chip, apu, 11, route);
1089 apu_set_register(chip, apu, 0, 0x400F);
1100 /* APU assignments:
1106 /* data seems to flow from the codec, through an apu into
1107 the 'mixbuf' bit of page, then through the SRC apu
1115 /* SRC (left/mono); get input from inputing apu */
1117 ESM_APU_SRCONVERTOR, es->apu[2]);
1127 ESM_APU_SRCONVERTOR, es->apu[3]);
1140 snd_es1968_apu_set_freq(chip, es->apu[0], freq);
1141 snd_es1968_apu_set_freq(chip, es->apu[1], freq);
1145 snd_es1968_apu_set_freq(chip, es->apu[2], freq);
1146 snd_es1968_apu_set_freq(chip, es->apu[3], freq);
1450 * allocate APU pair
1454 int apu;
1456 for (apu = 0; apu < NR_APUS; apu += 2) {
1457 if (chip->apu[apu] == ESM_APU_FREE &&
1458 chip->apu[apu + 1] == ESM_APU_FREE) {
1459 chip->apu[apu] = chip->apu[apu + 1] = type;
1460 return apu;
1467 * release APU pair
1469 static void snd_es1968_free_apu_pair(struct es1968 *chip, int apu)
1471 chip->apu[apu] = chip->apu[apu + 1] = ESM_APU_FREE;
1497 es->apu[0] = apu1;
1498 es->apu[1] = apu1 + 1;
1539 es->apu[0] = apu1;
1540 es->apu[1] = apu1 + 1;
1541 es->apu[2] = apu2;
1542 es->apu[3] = apu2 + 1;
1586 snd_es1968_free_apu_pair(chip, es->apu[0]);
1604 snd_es1968_free_apu_pair(chip, es->apu[0]);
1605 snd_es1968_free_apu_pair(chip, es->apu[2]);
1639 int i, apu;
1648 /* search 2 APUs (although one apu is enough) */
1649 apu = snd_es1968_alloc_apu_pair(chip, ESM_APU_PCM_PLAY);
1650 if (apu < 0) {
1651 dev_err(chip->card->dev, "Hmm, cannot find empty APU pair!?\n");
1659 snd_es1968_free_apu_pair(chip, apu);
1665 wave_set_register(chip, apu << 3, (memory->buf.addr - 0x10) & 0xfff8);
1670 /* initialize apu */
1672 apu_set_register(chip, apu, i, 0x0000);
1674 apu_set_register(chip, apu, 0, 0x400f);
1675 apu_set_register(chip, apu, 4, ((pa >> 16) & 0xff) << 8);
1676 apu_set_register(chip, apu, 5, pa & 0xffff);
1677 apu_set_register(chip, apu, 6, (pa + CLOCK_MEASURE_BUFSIZE/2) & 0xffff);
1678 apu_set_register(chip, apu, 7, CLOCK_MEASURE_BUFSIZE/2);
1679 apu_set_register(chip, apu, 8, 0x0000);
1680 apu_set_register(chip, apu, 9, 0xD000);
1681 apu_set_register(chip, apu, 10, 0x8F08);
1682 apu_set_register(chip, apu, 11, 0x0000);
1688 snd_es1968_apu_set_freq(chip, apu, ((unsigned int)48000 << 16) / chip->clock); /* 48000 Hz */
1691 chip->measure_apu = apu;
1694 __apu_set_register(chip, apu, 5, pa & 0xffff);
1695 snd_es1968_trigger_apu(chip, apu, ESM_APU_16BITLINEAR);
1700 offset = __apu_get_register(chip, apu, 5);
1702 snd_es1968_trigger_apu(chip, apu, 0); /* stop */
1726 snd_es1968_free_apu_pair(chip, apu);
2290 /* Now clear the APU control ram */
2625 /* Clear Apu Map */
2627 chip->apu[i] = ESM_APU_FREE;