ALSA: hda - Introduce get_wcaps_type() macro
authorTakashi Iwai <tiwai@suse.de>
Mon, 27 Jul 2009 10:54:26 +0000 (12:54 +0200)
committerTakashi Iwai <tiwai@suse.de>
Mon, 27 Jul 2009 10:54:26 +0000 (12:54 +0200)
Add a helper macro to retrieve the widget type from wiget cap bits.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
sound/pci/hda/hda_codec.c
sound/pci/hda/hda_generic.c
sound/pci/hda/hda_local.h
sound/pci/hda/hda_proc.c
sound/pci/hda/patch_ca0110.c
sound/pci/hda/patch_realtek.c
sound/pci/hda/patch_sigmatel.c
sound/pci/hda/patch_via.c

index aa5540786111657f88609cedd0b9b388f25d3cb3..b8c656c21feb35599af0cba73dcc5a3846a1046b 100644 (file)
@@ -748,8 +748,7 @@ static int read_pin_defaults(struct hda_codec *codec)
        for (i = 0; i < codec->num_nodes; i++, nid++) {
                struct hda_pincfg *pin;
                unsigned int wcaps = get_wcaps(codec, nid);
-               unsigned int wid_type = (wcaps & AC_WCAP_TYPE) >>
-                               AC_WCAP_TYPE_SHIFT;
+               unsigned int wid_type = get_wcaps_type(wcaps);
                if (wid_type != AC_WID_PIN)
                        continue;
                pin = snd_array_new(&codec->init_pins);
@@ -2386,8 +2385,7 @@ static void hda_set_power_state(struct hda_codec *codec, hda_nid_t fg,
        for (i = 0; i < codec->num_nodes; i++, nid++) {
                unsigned int wcaps = get_wcaps(codec, nid);
                if (wcaps & AC_WCAP_POWER) {
-                       unsigned int wid_type = (wcaps & AC_WCAP_TYPE) >>
-                               AC_WCAP_TYPE_SHIFT;
+                       unsigned int wid_type = get_wcaps_type(wcaps);
                        if (power_state == AC_PWRST_D3 &&
                            wid_type == AC_WID_PIN) {
                                unsigned int pincap;
@@ -3678,8 +3676,7 @@ int snd_hda_parse_pin_def_config(struct hda_codec *codec,
        end_nid = codec->start_nid + codec->num_nodes;
        for (nid = codec->start_nid; nid < end_nid; nid++) {
                unsigned int wid_caps = get_wcaps(codec, nid);
-               unsigned int wid_type =
-                       (wid_caps & AC_WCAP_TYPE) >> AC_WCAP_TYPE_SHIFT;
+               unsigned int wid_type = get_wcaps_type(wid_caps);
                unsigned int def_conf;
                short assoc, loc;
 
index bccb62a643ca8680207f3f758e3001ab7e450fb9..b36f6c5a92dfa1f4a9cead04c369f0d88249d725 100644 (file)
@@ -122,7 +122,7 @@ static int add_new_node(struct hda_codec *codec, struct hda_gspec *spec, hda_nid
                return -ENOMEM;
        node->nid = nid;
        node->wid_caps = get_wcaps(codec, nid);
-       node->type = (node->wid_caps & AC_WCAP_TYPE) >> AC_WCAP_TYPE_SHIFT;
+       node->type = get_wcaps_type(node->wid_caps);
        if (node->wid_caps & AC_WCAP_CONN_LIST) {
                nconns = snd_hda_get_connections(codec, nid, conn_list,
                                                 HDA_MAX_CONNECTIONS);
index 75aa3785212f42af44c6b6fd08c58188b035eccf..fa57cb93b44318ab90d108dba7d7c64bb8f507a3 100644 (file)
@@ -407,6 +407,9 @@ static inline u32 get_wcaps(struct hda_codec *codec, hda_nid_t nid)
        return codec->wcaps[nid - codec->start_nid];
 }
 
+/* get the widget type from widget capability bits */
+#define get_wcaps_type(wcaps) (((wcaps) & AC_WCAP_TYPE) >> AC_WCAP_TYPE_SHIFT)
+
 u32 query_amp_caps(struct hda_codec *codec, hda_nid_t nid, int direction);
 int snd_hda_override_amp_caps(struct hda_codec *codec, hda_nid_t nid, int dir,
                              unsigned int caps);
index 418c5d1badaa56a8ea8c1d64b79bb986c6b2ff10..a721eb08a290e29e0e468d84ebdc5eb69593e1fa 100644 (file)
@@ -508,8 +508,7 @@ static void print_codec_info(struct snd_info_entry *entry,
                unsigned int wid_caps =
                        snd_hda_param_read(codec, nid,
                                           AC_PAR_AUDIO_WIDGET_CAP);
-               unsigned int wid_type =
-                       (wid_caps & AC_WCAP_TYPE) >> AC_WCAP_TYPE_SHIFT;
+               unsigned int wid_type = get_wcaps_type(wid_caps);
                hda_nid_t conn[HDA_MAX_CONNECTIONS];
                int conn_len = 0;
 
index 019ca7cb56d7d54631a425cb8f079099ef2ef11a..d08353d3bb7f7c8f82e41cc2c10a56afe7dbfe34 100644 (file)
@@ -459,8 +459,7 @@ static void parse_input(struct hda_codec *codec)
        nid = codec->start_nid;
        for (i = 0; i < codec->num_nodes; i++, nid++) {
                unsigned int wcaps = get_wcaps(codec, nid);
-               unsigned int type = (wcaps & AC_WCAP_TYPE) >>
-                       AC_WCAP_TYPE_SHIFT;
+               unsigned int type = get_wcaps_type(wcaps);
                if (type != AC_WID_AUD_IN)
                        continue;
                if (snd_hda_get_connections(codec, nid, &pin, 1) != 1)
index e1563f48243fd77e4ff5e1e771adfe9d31880799..df87c01e27ddf02cb94b013624c2792a18dd79b0 100644 (file)
@@ -415,7 +415,7 @@ static int alc_mux_enum_put(struct snd_kcontrol *kcontrol,
        mux_idx = adc_idx >= spec->num_mux_defs ? 0 : adc_idx;
        imux = &spec->input_mux[mux_idx];
 
-       type = (get_wcaps(codec, nid) & AC_WCAP_TYPE) >> AC_WCAP_TYPE_SHIFT;
+       type = get_wcaps_type(get_wcaps(codec, nid));
        if (type == AC_WID_AUD_MIX) {
                /* Matrix-mixer style (e.g. ALC882) */
                unsigned int *cur_val = &spec->cur_mux[adc_idx];
@@ -4623,7 +4623,7 @@ static int patch_alc880(struct hda_codec *codec)
                /* check whether NID 0x07 is valid */
                unsigned int wcap = get_wcaps(codec, alc880_adc_nids[0]);
                /* get type */
-               wcap = (wcap & AC_WCAP_TYPE) >> AC_WCAP_TYPE_SHIFT;
+               wcap = get_wcaps_type(wcap);
                if (wcap != AC_WID_AUD_IN) {
                        spec->adc_nids = alc880_adc_nids_alt;
                        spec->num_adc_nids = ARRAY_SIZE(alc880_adc_nids_alt);
@@ -6266,7 +6266,7 @@ static int patch_alc260(struct hda_codec *codec)
        if (!spec->adc_nids && spec->input_mux) {
                /* check whether NID 0x04 is valid */
                unsigned int wcap = get_wcaps(codec, 0x04);
-               wcap = (wcap & AC_WCAP_TYPE) >> AC_WCAP_TYPE_SHIFT;
+               wcap = get_wcaps_type(wcap);
                /* get type */
                if (wcap != AC_WID_AUD_IN || spec->input_mux->num_items == 1) {
                        spec->adc_nids = alc260_adc_nids_alt;
@@ -9460,7 +9460,7 @@ static int alc882_parse_auto_config(struct hda_codec *codec)
        spec->init_verbs[0] = alc883_auto_init_verbs;
        /* if ADC 0x07 is available, initialize it, too */
        wcap = get_wcaps(codec, 0x07);
-       wcap = (wcap & AC_WCAP_TYPE) >> AC_WCAP_TYPE_SHIFT;
+       wcap = get_wcaps_type(wcap);
        if (wcap == AC_WID_AUD_IN)
                add_verb(spec, alc882_adc1_init_verbs);
 
@@ -9577,7 +9577,7 @@ static int patch_alc882(struct hda_codec *codec)
                        hda_nid_t nid = alc882_adc_nids[i];
                        unsigned int wcap = get_wcaps(codec, nid);
                        /* get type */
-                       wcap = (wcap & AC_WCAP_TYPE) >> AC_WCAP_TYPE_SHIFT;
+                       wcap = get_wcaps_type(wcap);
                        if (wcap != AC_WID_AUD_IN)
                                continue;
                        spec->private_adc_nids[spec->num_adc_nids] = nid;
@@ -11460,7 +11460,7 @@ static int patch_alc262(struct hda_codec *codec)
                        unsigned int wcap = get_wcaps(codec, 0x07);
 
                        /* get type */
-                       wcap = (wcap & AC_WCAP_TYPE) >> AC_WCAP_TYPE_SHIFT;
+                       wcap = get_wcaps_type(wcap);
                        if (wcap != AC_WID_AUD_IN) {
                                spec->adc_nids = alc262_adc_nids_alt;
                                spec->num_adc_nids =
@@ -12536,7 +12536,7 @@ static int patch_alc268(struct hda_codec *codec)
                int i;
 
                /* get type */
-               wcap = (wcap & AC_WCAP_TYPE) >> AC_WCAP_TYPE_SHIFT;
+               wcap = get_wcaps_type(wcap);
                if (wcap != AC_WID_AUD_IN || spec->input_mux->num_items == 1) {
                        spec->adc_nids = alc268_adc_nids_alt;
                        spec->num_adc_nids = ARRAY_SIZE(alc268_adc_nids_alt);
@@ -13991,8 +13991,7 @@ static hda_nid_t alc861_look_for_dac(struct hda_codec *codec, hda_nid_t pin)
                return 0;
        for (i = 0; i < num; i++) {
                unsigned int type;
-               type = (get_wcaps(codec, srcs[i]) & AC_WCAP_TYPE)
-                       >> AC_WCAP_TYPE_SHIFT;
+               type = get_wcaps_type(get_wcaps(codec, srcs[i]));
                if (type != AC_WID_AUD_OUT)
                        continue;
                for (j = 0; j < spec->multiout.num_dacs; j++)
index 8c48f868d9932d7d162b2652226ce370c82165e8..9de97f306999e3afb155b4789f80b74f634215b7 100644 (file)
@@ -3058,7 +3058,7 @@ static hda_nid_t get_unassigned_dac(struct hda_codec *codec, hda_nid_t nid)
                                           HDA_MAX_CONNECTIONS);
        for (j = 0; j < conn_len; j++) {
                wcaps = get_wcaps(codec, conn[j]);
-               wtype = (wcaps & AC_WCAP_TYPE) >> AC_WCAP_TYPE_SHIFT;
+               wtype = get_wcaps_type(wcaps);
                /* we check only analog outputs */
                if (wtype != AC_WID_AUD_OUT || (wcaps & AC_WCAP_DIGITAL))
                        continue;
@@ -3746,8 +3746,7 @@ static int stac92xx_parse_auto_config(struct hda_codec *codec, hda_nid_t dig_out
                                conn_list, 1) > 0) {
 
                                int wcaps = get_wcaps(codec, conn_list[0]);
-                               int wid_type = (wcaps & AC_WCAP_TYPE)
-                                       >> AC_WCAP_TYPE_SHIFT;
+                               int wid_type = get_wcaps_type(wcaps);
                                /* LR swap check, some stac925x have a mux that
                                 * changes the DACs output path instead of the
                                 * mono-mux path.
@@ -4753,8 +4752,7 @@ static int stac92xx_suspend(struct hda_codec *codec, pm_message_t state)
        nid = codec->start_nid;
        for (i = 0; i < codec->num_nodes; i++, nid++) {
                unsigned int wcaps = get_wcaps(codec, nid);
-               unsigned int wid_type = (wcaps & AC_WCAP_TYPE) >>
-                       AC_WCAP_TYPE_SHIFT;
+               unsigned int wid_type = get_wcaps_type(wcaps);
                if (wid_type == AC_WID_PIN)
                        snd_hda_codec_read(codec, nid, 0,
                                AC_VERB_SET_PIN_WIDGET_CONTROL, 0);
index 9008b4b013aa7a6feddf45d52e55a8c994a5a45e..ab90abb04ccddb7c7229522c88d31aa6f50f5982 100644 (file)
@@ -1339,8 +1339,7 @@ static int get_mux_nids(struct hda_codec *codec)
        for (i = 0; i < spec->num_adc_nids; i++) {
                nid = spec->adc_nids[i];
                while (nid) {
-                       type = (get_wcaps(codec, nid) & AC_WCAP_TYPE)
-                               >> AC_WCAP_TYPE_SHIFT;
+                       type = get_wcaps_type(get_wcaps(codec, nid));
                        if (type == AC_WID_PIN)
                                break;
                        n = snd_hda_get_connections(codec, nid, conn,