ALSA: emu10k1: clarify various fx8010.*_mask fields
authorOswald Buddenhagen <oswald.buddenhagen@gmx.de>
Fri, 21 Apr 2023 14:10:06 +0000 (16:10 +0200)
committerTakashi Iwai <tiwai@suse.de>
Fri, 21 Apr 2023 15:07:54 +0000 (17:07 +0200)
extin_mask and extout_mask are used only by the SbLive! microcode, so
they have no effect on Audigy.

Eliminate fxbus_mask entirely, as it wasn't actually used for anything.

As a drive-by, remove the pointless pad1 field from struct
snd_emu10k1_fx8010 - it is not visible to user space, so it has no
binary compatibility constraints.

Signed-off-by: Oswald Buddenhagen <oswald.buddenhagen@gmx.de>
Link: https://lore.kernel.org/r/20230421141006.1005509-1-oswald.buddenhagen@gmx.de
Signed-off-by: Takashi Iwai <tiwai@suse.de>
include/sound/emu10k1.h
sound/pci/emu10k1/emu10k1_main.c
sound/pci/emu10k1/emufx.c

index 39787fe..3407ca4 100644 (file)
@@ -1599,10 +1599,8 @@ struct snd_emu10k1_fx8010_pcm {
 };
 
 struct snd_emu10k1_fx8010 {
-       unsigned short fxbus_mask;      /* used FX buses (bitmask) */
-       unsigned short extin_mask;      /* used external inputs (bitmask) */
-       unsigned short extout_mask;     /* used external outputs (bitmask) */
-       unsigned short pad1;
+       unsigned short extin_mask;      /* used external inputs (bitmask); not used for Audigy */
+       unsigned short extout_mask;     /* used external outputs (bitmask); not used for Audigy */
        unsigned int itram_size;        /* internal TRAM size in samples */
        struct snd_dma_buffer etram_pages; /* external TRAM pages and size */
        unsigned int dbg;               /* FX debugger register */
index 3880f35..65fd6b6 100644 (file)
@@ -1901,11 +1901,12 @@ int snd_emu10k1_create(struct snd_card *card,
 
        pci_set_master(pci);
 
-       emu->fx8010.fxbus_mask = 0x303f;
+       // The masks are not used for Audigy.
+       // FIXME: these should come from the card_capabilites table.
        if (extin_mask == 0)
-               extin_mask = 0x3fcf;
+               extin_mask = 0x3fcf;  // EXTIN_*
        if (extout_mask == 0)
-               extout_mask = 0x7fff;
+               extout_mask = 0x7fff;  // EXTOUT_*
        emu->fx8010.extin_mask = extin_mask;
        emu->fx8010.extout_mask = extout_mask;
        emu->enable_ir = enable_ir;
index 6cf7c8b..c74e66e 100644 (file)
@@ -2523,7 +2523,7 @@ static void snd_emu10k1_fx8010_info(struct snd_emu10k1 *emu,
                                   struct snd_emu10k1_fx8010_info *info)
 {
        const char * const *fxbus, * const *extin, * const *extout;
-       unsigned short fxbus_mask, extin_mask, extout_mask;
+       unsigned short extin_mask, extout_mask;
        int res;
 
        info->internal_tram_size = emu->fx8010.itram_size;
@@ -2531,11 +2531,10 @@ static void snd_emu10k1_fx8010_info(struct snd_emu10k1 *emu,
        fxbus = fxbuses;
        extin = emu->audigy ? audigy_ins : creative_ins;
        extout = emu->audigy ? audigy_outs : creative_outs;
-       fxbus_mask = emu->fx8010.fxbus_mask;
-       extin_mask = emu->fx8010.extin_mask;
-       extout_mask = emu->fx8010.extout_mask;
+       extin_mask = emu->audigy ? ~0 : emu->fx8010.extin_mask;
+       extout_mask = emu->audigy ? ~0 : emu->fx8010.extout_mask;
        for (res = 0; res < 16; res++, fxbus++, extin++, extout++) {
-               copy_string(info->fxbus_names[res], fxbus_mask & (1 << res) ? *fxbus : NULL, "FXBUS", res);
+               copy_string(info->fxbus_names[res], *fxbus, "FXBUS", res);
                copy_string(info->extin_names[res], extin_mask & (1 << res) ? *extin : NULL, "Unused", res);
                copy_string(info->extout_names[res], extout_mask & (1 << res) ? *extout : NULL, "Unused", res);
        }