ALSA: emu10k1: make some initializer arrays less wasteful
authorOswald Buddenhagen <oswald.buddenhagen@gmx.de>
Tue, 16 May 2023 09:36:03 +0000 (11:36 +0200)
committerTakashi Iwai <tiwai@suse.de>
Wed, 17 May 2023 15:07:51 +0000 (17:07 +0200)
- Use bit fields in struct snd_emu_chip_details
- Use shorts in the E-MU routing register arrays

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

index 456af84..03850fa 100644 (file)
@@ -1612,24 +1612,24 @@ struct snd_emu_chip_details {
        u32 device;
        u32 subsystem;
        unsigned char revision;
-       unsigned char emu10k1_chip; /* Original SB Live. Not SB Live 24bit. */
-                                   /* Redundant with emu10k2_chip being unset. */
-       unsigned char emu10k2_chip; /* Audigy 1 or Audigy 2. */
-       unsigned char ca0102_chip;  /* Audigy 1 or Audigy 2. Not SB Audigy 2 Value. */
-                                   /* Redundant with ca0108_chip being unset. */
-       unsigned char ca0108_chip;  /* Audigy 2 Value */
-       unsigned char ca_cardbus_chip; /* Audigy 2 ZS Notebook */
-       unsigned char ca0151_chip;  /* P16V */
-       unsigned char spk71;        /* Has 7.1 speakers */
-       unsigned char sblive51;     /* SBLive! 5.1 - extout 0x11 -> center, 0x12 -> lfe */
-       unsigned char spdif_bug;    /* Has Spdif phasing bug */
-       unsigned char ac97_chip;    /* Has an AC97 chip: 1 = mandatory, 2 = optional */
-       unsigned char ecard;        /* APS EEPROM */
-       unsigned char emu_model;     /* EMU model type */
-       unsigned char spi_dac;      /* SPI interface for DAC; requires ca0108_chip */
-       unsigned char i2c_adc;      /* I2C interface for ADC; requires ca0108_chip */
-       unsigned char adc_1361t;    /* Use Philips 1361T ADC */
-       unsigned char invert_shared_spdif; /* analog/digital switch inverted */
+       unsigned char emu_model;        /* EMU model type */
+       unsigned int emu10k1_chip:1;    /* Original SB Live. Not SB Live 24bit. */
+                                       /* Redundant with emu10k2_chip being unset. */
+       unsigned int emu10k2_chip:1;    /* Audigy 1 or Audigy 2. */
+       unsigned int ca0102_chip:1;     /* Audigy 1 or Audigy 2. Not SB Audigy 2 Value. */
+                                       /* Redundant with ca0108_chip being unset. */
+       unsigned int ca0108_chip:1;     /* Audigy 2 Value */
+       unsigned int ca_cardbus_chip:1; /* Audigy 2 ZS Notebook */
+       unsigned int ca0151_chip:1;     /* P16V */
+       unsigned int spk71:1;           /* Has 7.1 speakers */
+       unsigned int sblive51:1;        /* SBLive! 5.1 - extout 0x11 -> center, 0x12 -> lfe */
+       unsigned int spdif_bug:1;       /* Has Spdif phasing bug */
+       unsigned int ac97_chip:2;       /* Has an AC97 chip: 1 = mandatory, 2 = optional */
+       unsigned int ecard:1;           /* APS EEPROM */
+       unsigned int spi_dac:1;         /* SPI interface for DAC; requires ca0108_chip */
+       unsigned int i2c_adc:1;         /* I2C interface for ADC; requires ca0108_chip */
+       unsigned int adc_1361t:1;       /* Use Philips 1361T ADC */
+       unsigned int invert_shared_spdif:1;  /* analog/digital switch inverted */
        const char *driver;
        const char *name;
        const char *id;         /* for backward compatibility - can be NULL if not needed */
index 1ebf161..4d28a91 100644 (file)
@@ -180,7 +180,7 @@ static const char * const emu1616_src_texts[] = {
 /*
  * List of data sources available for each destination
  */
-static const unsigned int emu1010_src_regs[] = {
+static const unsigned short emu1010_src_regs[] = {
        EMU_SRC_SILENCE,/* 0 */
        EMU_SRC_DOCK_MIC_A1, /* 1 */
        EMU_SRC_DOCK_MIC_B1, /* 2 */
@@ -237,7 +237,7 @@ static const unsigned int emu1010_src_regs[] = {
 };
 
 /* 1616(m) cardbus */
-static const unsigned int emu1616_src_regs[] = {
+static const unsigned short emu1616_src_regs[] = {
        EMU_SRC_SILENCE,
        EMU_SRC_DOCK_MIC_A1,
        EMU_SRC_DOCK_MIC_B1,
@@ -293,7 +293,7 @@ static const unsigned int emu1616_src_regs[] = {
  * Data destinations - physical EMU outputs.
  * Each destination has an enum mixer control to choose a data source
  */
-static const unsigned int emu1010_output_dst[] = {
+static const unsigned short emu1010_output_dst[] = {
        EMU_DST_DOCK_DAC1_LEFT1, /* 0 */
        EMU_DST_DOCK_DAC1_RIGHT1, /* 1 */
        EMU_DST_DOCK_DAC2_LEFT1, /* 2 */
@@ -321,7 +321,7 @@ static const unsigned int emu1010_output_dst[] = {
 };
 
 /* 1616(m) cardbus */
-static const unsigned int emu1616_output_dst[] = {
+static const unsigned short emu1616_output_dst[] = {
        EMU_DST_DOCK_DAC1_LEFT1,
        EMU_DST_DOCK_DAC1_RIGHT1,
        EMU_DST_DOCK_DAC2_LEFT1,
@@ -347,7 +347,7 @@ static const unsigned int emu1616_output_dst[] = {
  *   capture (EMU32 + I2S links)
  * Each destination has an enum mixer control to choose a data source
  */
-static const unsigned int emu1010_input_dst[] = {
+static const unsigned short emu1010_input_dst[] = {
        EMU_DST_ALICE2_EMU32_0,
        EMU_DST_ALICE2_EMU32_1,
        EMU_DST_ALICE2_EMU32_2,