ALSA: hda - Handle a few verbs as read-only
authorTakashi Iwai <tiwai@suse.de>
Thu, 26 Mar 2015 13:18:34 +0000 (14:18 +0100)
committerTakashi Iwai <tiwai@suse.de>
Thu, 26 Mar 2015 13:18:34 +0000 (14:18 +0100)
Although they can be written, handle a few verbs as read-only in
regmap interface: CONFIG_DEFAULT, CONV and CVT_CHAN_COUNT.  These are
either updated in PCM or HDMI management code in a volatile manner, or
just needed only as parameter, thus they don't need to be written at
resume sync.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
sound/hda/hdac_regmap.c

index e1dcf104d273bd0f3637395665872011cc764854..d401e5c69fe3b627132c803d868e6474c05c07aa 100644 (file)
@@ -88,7 +88,6 @@ static bool hda_writeable_reg(struct device *dev, unsigned int reg)
        switch (verb) {
        case AC_VERB_GET_CONNECT_SEL:
        case AC_VERB_GET_SDI_SELECT:
-       case AC_VERB_GET_CONV:
        case AC_VERB_GET_PIN_WIDGET_CONTROL:
        case AC_VERB_GET_UNSOLICITED_RESPONSE: /* only as SET_UNSOLICITED_ENABLE */
        case AC_VERB_GET_BEEP_CONTROL:
@@ -96,14 +95,12 @@ static bool hda_writeable_reg(struct device *dev, unsigned int reg)
        case AC_VERB_GET_DIGI_CONVERT_1:
        case AC_VERB_GET_DIGI_CONVERT_2: /* only for beep control */
        case AC_VERB_GET_VOLUME_KNOB_CONTROL:
-       case AC_VERB_GET_CONFIG_DEFAULT:
        case AC_VERB_GET_GPIO_MASK:
        case AC_VERB_GET_GPIO_DIRECTION:
        case AC_VERB_GET_GPIO_DATA: /* not for volatile read */
        case AC_VERB_GET_GPIO_WAKE_MASK:
        case AC_VERB_GET_GPIO_UNSOLICITED_RSP_MASK:
        case AC_VERB_GET_GPIO_STICKY_MASK:
-       case AC_VERB_GET_CVT_CHAN_COUNT:
                return true;
        }
 
@@ -123,6 +120,13 @@ static bool hda_readable_reg(struct device *dev, unsigned int reg)
        case AC_VERB_GET_CONNECT_LIST:
        case AC_VERB_GET_SUBSYSTEM_ID:
                return true;
+       /* below are basically writable, but disabled for reducing unnecessary
+        * writes at sync
+        */
+       case AC_VERB_GET_CONFIG_DEFAULT: /* usually just read */
+       case AC_VERB_GET_CONV: /* managed in PCM code */
+       case AC_VERB_GET_CVT_CHAN_COUNT: /* managed in HDMI CA code */
+               return true;
        }
 
        return hda_writeable_reg(dev, reg);