Add a helper macro to retrieve the widget type from wiget cap bits.
Signed-off-by: Takashi Iwai <tiwai@suse.de>
        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);
        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;
        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;
 
 
                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);
 
        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);
 
                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;
 
 
        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)
 
        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];
                /* 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);
        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;
        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);
 
                        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;
                        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 =
                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);
                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++)
 
                                           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;
                                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.
        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);
 
        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,