hc
2024-01-03 2f7c68cb55ecb7331f2381deb497c27155f32faf
kernel/sound/pci/emu10k1/emufx.c
....@@ -1560,14 +1560,8 @@
15601560 gpr += 2;
15611561
15621562 /* Master volume (will be renamed later) */
1563
- A_OP(icode, &ptr, iMAC0, A_GPR(playback+0+SND_EMU10K1_PLAYBACK_CHANNELS), A_C_00000000, A_GPR(gpr), A_GPR(playback+0+SND_EMU10K1_PLAYBACK_CHANNELS));
1564
- A_OP(icode, &ptr, iMAC0, A_GPR(playback+1+SND_EMU10K1_PLAYBACK_CHANNELS), A_C_00000000, A_GPR(gpr), A_GPR(playback+1+SND_EMU10K1_PLAYBACK_CHANNELS));
1565
- A_OP(icode, &ptr, iMAC0, A_GPR(playback+2+SND_EMU10K1_PLAYBACK_CHANNELS), A_C_00000000, A_GPR(gpr), A_GPR(playback+2+SND_EMU10K1_PLAYBACK_CHANNELS));
1566
- A_OP(icode, &ptr, iMAC0, A_GPR(playback+3+SND_EMU10K1_PLAYBACK_CHANNELS), A_C_00000000, A_GPR(gpr), A_GPR(playback+3+SND_EMU10K1_PLAYBACK_CHANNELS));
1567
- A_OP(icode, &ptr, iMAC0, A_GPR(playback+4+SND_EMU10K1_PLAYBACK_CHANNELS), A_C_00000000, A_GPR(gpr), A_GPR(playback+4+SND_EMU10K1_PLAYBACK_CHANNELS));
1568
- A_OP(icode, &ptr, iMAC0, A_GPR(playback+5+SND_EMU10K1_PLAYBACK_CHANNELS), A_C_00000000, A_GPR(gpr), A_GPR(playback+5+SND_EMU10K1_PLAYBACK_CHANNELS));
1569
- A_OP(icode, &ptr, iMAC0, A_GPR(playback+6+SND_EMU10K1_PLAYBACK_CHANNELS), A_C_00000000, A_GPR(gpr), A_GPR(playback+6+SND_EMU10K1_PLAYBACK_CHANNELS));
1570
- A_OP(icode, &ptr, iMAC0, A_GPR(playback+7+SND_EMU10K1_PLAYBACK_CHANNELS), A_C_00000000, A_GPR(gpr), A_GPR(playback+7+SND_EMU10K1_PLAYBACK_CHANNELS));
1563
+ for (z = 0; z < 8; z++)
1564
+ A_OP(icode, &ptr, iMAC0, A_GPR(playback+z+SND_EMU10K1_PLAYBACK_CHANNELS), A_C_00000000, A_GPR(gpr), A_GPR(playback+z+SND_EMU10K1_PLAYBACK_CHANNELS));
15711565 snd_emu10k1_init_mono_control(&controls[nctl++], "Wave Master Playback Volume", gpr, 0);
15721566 gpr += 2;
15731567
....@@ -1651,102 +1645,14 @@
16511645 dev_dbg(emu->card->dev, "emufx.c: gpr=0x%x, tmp=0x%x\n",
16521646 gpr, tmp);
16531647 */
1654
- /* For the EMU1010: How to get 32bit values from the DSP. High 16bits into L, low 16bits into R. */
1655
- /* A_P16VIN(0) is delayed by one sample,
1656
- * so all other A_P16VIN channels will need to also be delayed
1657
- */
1658
- /* Left ADC in. 1 of 2 */
16591648 snd_emu10k1_audigy_dsp_convert_32_to_2x16( icode, &ptr, tmp, bit_shifter16, A_P16VIN(0x0), A_FXBUS2(0) );
1660
- /* Right ADC in 1 of 2 */
1661
- gpr_map[gpr++] = 0x00000000;
1662
- /* Delaying by one sample: instead of copying the input
1663
- * value A_P16VIN to output A_FXBUS2 as in the first channel,
1664
- * we use an auxiliary register, delaying the value by one
1665
- * sample
1666
- */
1667
- snd_emu10k1_audigy_dsp_convert_32_to_2x16( icode, &ptr, tmp, bit_shifter16, A_GPR(gpr - 1), A_FXBUS2(2) );
1668
- A_OP(icode, &ptr, iACC3, A_GPR(gpr - 1), A_P16VIN(0x1), A_C_00000000, A_C_00000000);
1669
- gpr_map[gpr++] = 0x00000000;
1670
- snd_emu10k1_audigy_dsp_convert_32_to_2x16( icode, &ptr, tmp, bit_shifter16, A_GPR(gpr - 1), A_FXBUS2(4) );
1671
- A_OP(icode, &ptr, iACC3, A_GPR(gpr - 1), A_P16VIN(0x2), A_C_00000000, A_C_00000000);
1672
- gpr_map[gpr++] = 0x00000000;
1673
- snd_emu10k1_audigy_dsp_convert_32_to_2x16( icode, &ptr, tmp, bit_shifter16, A_GPR(gpr - 1), A_FXBUS2(6) );
1674
- A_OP(icode, &ptr, iACC3, A_GPR(gpr - 1), A_P16VIN(0x3), A_C_00000000, A_C_00000000);
1675
- /* For 96kHz mode */
1676
- /* Left ADC in. 2 of 2 */
1677
- gpr_map[gpr++] = 0x00000000;
1678
- snd_emu10k1_audigy_dsp_convert_32_to_2x16( icode, &ptr, tmp, bit_shifter16, A_GPR(gpr - 1), A_FXBUS2(0x8) );
1679
- A_OP(icode, &ptr, iACC3, A_GPR(gpr - 1), A_P16VIN(0x4), A_C_00000000, A_C_00000000);
1680
- /* Right ADC in 2 of 2 */
1681
- gpr_map[gpr++] = 0x00000000;
1682
- snd_emu10k1_audigy_dsp_convert_32_to_2x16( icode, &ptr, tmp, bit_shifter16, A_GPR(gpr - 1), A_FXBUS2(0xa) );
1683
- A_OP(icode, &ptr, iACC3, A_GPR(gpr - 1), A_P16VIN(0x5), A_C_00000000, A_C_00000000);
1684
- gpr_map[gpr++] = 0x00000000;
1685
- snd_emu10k1_audigy_dsp_convert_32_to_2x16( icode, &ptr, tmp, bit_shifter16, A_GPR(gpr - 1), A_FXBUS2(0xc) );
1686
- A_OP(icode, &ptr, iACC3, A_GPR(gpr - 1), A_P16VIN(0x6), A_C_00000000, A_C_00000000);
1687
- gpr_map[gpr++] = 0x00000000;
1688
- snd_emu10k1_audigy_dsp_convert_32_to_2x16( icode, &ptr, tmp, bit_shifter16, A_GPR(gpr - 1), A_FXBUS2(0xe) );
1689
- A_OP(icode, &ptr, iACC3, A_GPR(gpr - 1), A_P16VIN(0x7), A_C_00000000, A_C_00000000);
1690
- /* Pavel Hofman - we still have voices, A_FXBUS2s, and
1691
- * A_P16VINs available -
1692
- * let's add 8 more capture channels - total of 16
1693
- */
1694
- gpr_map[gpr++] = 0x00000000;
1695
- snd_emu10k1_audigy_dsp_convert_32_to_2x16(icode, &ptr, tmp,
1696
- bit_shifter16,
1697
- A_GPR(gpr - 1),
1698
- A_FXBUS2(0x10));
1699
- A_OP(icode, &ptr, iACC3, A_GPR(gpr - 1), A_P16VIN(0x8),
1700
- A_C_00000000, A_C_00000000);
1701
- gpr_map[gpr++] = 0x00000000;
1702
- snd_emu10k1_audigy_dsp_convert_32_to_2x16(icode, &ptr, tmp,
1703
- bit_shifter16,
1704
- A_GPR(gpr - 1),
1705
- A_FXBUS2(0x12));
1706
- A_OP(icode, &ptr, iACC3, A_GPR(gpr - 1), A_P16VIN(0x9),
1707
- A_C_00000000, A_C_00000000);
1708
- gpr_map[gpr++] = 0x00000000;
1709
- snd_emu10k1_audigy_dsp_convert_32_to_2x16(icode, &ptr, tmp,
1710
- bit_shifter16,
1711
- A_GPR(gpr - 1),
1712
- A_FXBUS2(0x14));
1713
- A_OP(icode, &ptr, iACC3, A_GPR(gpr - 1), A_P16VIN(0xa),
1714
- A_C_00000000, A_C_00000000);
1715
- gpr_map[gpr++] = 0x00000000;
1716
- snd_emu10k1_audigy_dsp_convert_32_to_2x16(icode, &ptr, tmp,
1717
- bit_shifter16,
1718
- A_GPR(gpr - 1),
1719
- A_FXBUS2(0x16));
1720
- A_OP(icode, &ptr, iACC3, A_GPR(gpr - 1), A_P16VIN(0xb),
1721
- A_C_00000000, A_C_00000000);
1722
- gpr_map[gpr++] = 0x00000000;
1723
- snd_emu10k1_audigy_dsp_convert_32_to_2x16(icode, &ptr, tmp,
1724
- bit_shifter16,
1725
- A_GPR(gpr - 1),
1726
- A_FXBUS2(0x18));
1727
- A_OP(icode, &ptr, iACC3, A_GPR(gpr - 1), A_P16VIN(0xc),
1728
- A_C_00000000, A_C_00000000);
1729
- gpr_map[gpr++] = 0x00000000;
1730
- snd_emu10k1_audigy_dsp_convert_32_to_2x16(icode, &ptr, tmp,
1731
- bit_shifter16,
1732
- A_GPR(gpr - 1),
1733
- A_FXBUS2(0x1a));
1734
- A_OP(icode, &ptr, iACC3, A_GPR(gpr - 1), A_P16VIN(0xd),
1735
- A_C_00000000, A_C_00000000);
1736
- gpr_map[gpr++] = 0x00000000;
1737
- snd_emu10k1_audigy_dsp_convert_32_to_2x16(icode, &ptr, tmp,
1738
- bit_shifter16,
1739
- A_GPR(gpr - 1),
1740
- A_FXBUS2(0x1c));
1741
- A_OP(icode, &ptr, iACC3, A_GPR(gpr - 1), A_P16VIN(0xe),
1742
- A_C_00000000, A_C_00000000);
1743
- gpr_map[gpr++] = 0x00000000;
1744
- snd_emu10k1_audigy_dsp_convert_32_to_2x16(icode, &ptr, tmp,
1745
- bit_shifter16,
1746
- A_GPR(gpr - 1),
1747
- A_FXBUS2(0x1e));
1748
- A_OP(icode, &ptr, iACC3, A_GPR(gpr - 1), A_P16VIN(0xf),
1749
- A_C_00000000, A_C_00000000);
1649
+ /* A_P16VIN(0) is delayed by one sample, so all other A_P16VIN channels
1650
+ * will need to also be delayed; we use an auxiliary register for that. */
1651
+ for (z = 1; z < 0x10; z++) {
1652
+ snd_emu10k1_audigy_dsp_convert_32_to_2x16( icode, &ptr, tmp, bit_shifter16, A_GPR(gpr), A_FXBUS2(z * 2) );
1653
+ A_OP(icode, &ptr, iACC3, A_GPR(gpr), A_P16VIN(z), A_C_00000000, A_C_00000000);
1654
+ gpr_map[gpr++] = 0x00000000;
1655
+ }
17501656 }
17511657
17521658 #if 0