diff --git a/sound/pci/hda/patch_realtek.c b/sound/pci/hda/patch_realtek.c
index afec6dc9f91f..30f3978df056 100644
--- a/sound/pci/hda/patch_realtek.c
+++ b/sound/pci/hda/patch_realtek.c
@@ -133,8 +133,10 @@ static int alc_read_coefex_idx(struct hda_codec *codec, hda_nid_t nid,
 {
 	unsigned int val;
 
-	snd_hda_codec_write(codec, nid, 0, AC_VERB_SET_COEF_INDEX, coef_idx);
-	val = snd_hda_codec_read(codec, nid, 0, AC_VERB_GET_PROC_COEF, 0);
+	snd_hdac_codec_write(&codec->core, nid, 0, AC_VERB_SET_COEF_INDEX,
+			     coef_idx);
+	val = snd_hdac_codec_read(&codec->core, nid, 0, AC_VERB_GET_PROC_COEF,
+				  0);
 	return val;
 }
 
@@ -144,8 +146,10 @@ static int alc_read_coefex_idx(struct hda_codec *codec, hda_nid_t nid,
 static void alc_write_coefex_idx(struct hda_codec *codec, hda_nid_t nid,
 				 unsigned int coef_idx, unsigned int coef_val)
 {
-	snd_hda_codec_write(codec, nid, 0, AC_VERB_SET_COEF_INDEX, coef_idx);
-	snd_hda_codec_write(codec, nid, 0, AC_VERB_SET_PROC_COEF, coef_val);
+	snd_hdac_codec_write(&codec->core, nid, 0, AC_VERB_SET_COEF_INDEX,
+			     coef_idx);
+	snd_hdac_codec_write(&codec->core, nid, 0, AC_VERB_SET_PROC_COEF,
+			     coef_val);
 }
 
 #define alc_write_coef_idx(codec, coef_idx, coef_val) \
@@ -276,8 +280,8 @@ static void alc_update_knob_master(struct hda_codec *codec,
 	uctl = kzalloc(sizeof(*uctl), GFP_KERNEL);
 	if (!uctl)
 		return;
-	val = snd_hda_codec_read(codec, jack->tbl->nid, 0,
-				 AC_VERB_GET_VOLUME_KNOB_CONTROL, 0);
+	val = snd_hdac_codec_read(&codec->core, jack->tbl->nid, 0,
+				  AC_VERB_GET_VOLUME_KNOB_CONTROL, 0);
 	val &= HDA_AMP_VOLMASK;
 	uctl->value.integer.value[0] = val;
 	uctl->value.integer.value[1] = val;
@@ -387,8 +391,8 @@ static void set_eapd(struct hda_codec *codec, hda_nid_t nid, int on)
 	if (get_wcaps_type(get_wcaps(codec, nid)) != AC_WID_PIN)
 		return;
 	if (snd_hda_query_pin_caps(codec, nid) & AC_PINCAP_EAPD)
-		snd_hda_codec_write(codec, nid, 0, AC_VERB_SET_EAPD_BTLENABLE,
-				    on ? 2 : 0);
+		snd_hdac_codec_write(&codec->core, nid, 0,
+				     AC_VERB_SET_EAPD_BTLENABLE, on ? 2 : 0);
 }
 
 /* turn on/off EAPD controls of the codec */
@@ -1502,8 +1506,8 @@ enum {
 static void alc260_gpio1_automute(struct hda_codec *codec)
 {
 	struct alc_spec *spec = codec->spec;
-	snd_hda_codec_write(codec, 0x01, 0, AC_VERB_SET_GPIO_DATA,
-			    spec->gen.hp_jack_present);
+	snd_hdac_codec_write(&codec->core, 0x01, 0, AC_VERB_SET_GPIO_DATA,
+			     spec->gen.hp_jack_present);
 }
 
 static void alc260_fixup_gpio1_toggle(struct hda_codec *codec,
@@ -1784,32 +1788,32 @@ static void alc882_gpio_mute(struct hda_codec *codec, int pin, int muted)
 {
 	unsigned int gpiostate, gpiomask, gpiodir;
 
-	gpiostate = snd_hda_codec_read(codec, codec->core.afg, 0,
-				       AC_VERB_GET_GPIO_DATA, 0);
+	gpiostate = snd_hdac_codec_read(&codec->core, codec->core.afg, 0,
+					AC_VERB_GET_GPIO_DATA, 0);
 
 	if (!muted)
 		gpiostate |= (1 << pin);
 	else
 		gpiostate &= ~(1 << pin);
 
-	gpiomask = snd_hda_codec_read(codec, codec->core.afg, 0,
-				      AC_VERB_GET_GPIO_MASK, 0);
+	gpiomask = snd_hdac_codec_read(&codec->core, codec->core.afg, 0,
+				       AC_VERB_GET_GPIO_MASK, 0);
 	gpiomask |= (1 << pin);
 
-	gpiodir = snd_hda_codec_read(codec, codec->core.afg, 0,
-				     AC_VERB_GET_GPIO_DIRECTION, 0);
+	gpiodir = snd_hdac_codec_read(&codec->core, codec->core.afg, 0,
+				      AC_VERB_GET_GPIO_DIRECTION, 0);
 	gpiodir |= (1 << pin);
 
 
-	snd_hda_codec_write(codec, codec->core.afg, 0,
-			    AC_VERB_SET_GPIO_MASK, gpiomask);
-	snd_hda_codec_write(codec, codec->core.afg, 0,
-			    AC_VERB_SET_GPIO_DIRECTION, gpiodir);
+	snd_hdac_codec_write(&codec->core, codec->core.afg, 0,
+			     AC_VERB_SET_GPIO_MASK, gpiomask);
+	snd_hdac_codec_write(&codec->core, codec->core.afg, 0,
+			     AC_VERB_SET_GPIO_DIRECTION, gpiodir);
 
 	msleep(1);
 
-	snd_hda_codec_write(codec, codec->core.afg, 0,
-			    AC_VERB_SET_GPIO_DATA, gpiostate);
+	snd_hdac_codec_write(&codec->core, codec->core.afg, 0,
+			     AC_VERB_SET_GPIO_DATA, gpiostate);
 }
 
 /* set up GPIO at initialization */
@@ -2675,8 +2679,8 @@ static void alc286_shutup(struct hda_codec *codec)
 		struct hda_pincfg *pin = snd_array_elem(&codec->init_pins, i);
 		/* use read here for syncing after issuing each verb */
 		if (pin->nid != mic_pin)
-			snd_hda_codec_read(codec, pin->nid, 0,
-					AC_VERB_SET_PIN_WIDGET_CONTROL, 0);
+			snd_hdac_codec_read(&codec->core, pin->nid, 0,
+					    AC_VERB_SET_PIN_WIDGET_CONTROL, 0);
 	}
 	codec->pins_shutup = 1;
 }
@@ -2758,14 +2762,14 @@ static void alc282_init(struct hda_codec *codec)
 	if (hp_pin_sense)
 		msleep(2);
 
-	snd_hda_codec_write(codec, hp_pin, 0,
-			    AC_VERB_SET_AMP_GAIN_MUTE, AMP_OUT_MUTE);
+	snd_hdac_codec_write(&codec->core, hp_pin, 0,
+			     AC_VERB_SET_AMP_GAIN_MUTE, AMP_OUT_MUTE);
 
 	if (hp_pin_sense)
 		msleep(85);
 
-	snd_hda_codec_write(codec, hp_pin, 0,
-			    AC_VERB_SET_PIN_WIDGET_CONTROL, PIN_OUT);
+	snd_hdac_codec_write(&codec->core, hp_pin, 0,
+			     AC_VERB_SET_PIN_WIDGET_CONTROL, PIN_OUT);
 
 	if (hp_pin_sense)
 		msleep(100);
@@ -2793,14 +2797,14 @@ static void alc282_shutup(struct hda_codec *codec)
 	if (hp_pin_sense)
 		msleep(2);
 
-	snd_hda_codec_write(codec, hp_pin, 0,
-			    AC_VERB_SET_AMP_GAIN_MUTE, AMP_OUT_MUTE);
+	snd_hdac_codec_write(&codec->core, hp_pin, 0,
+			     AC_VERB_SET_AMP_GAIN_MUTE, AMP_OUT_MUTE);
 
 	if (hp_pin_sense)
 		msleep(85);
 
-	snd_hda_codec_write(codec, hp_pin, 0,
-			    AC_VERB_SET_PIN_WIDGET_CONTROL, 0x0);
+	snd_hdac_codec_write(&codec->core, hp_pin, 0,
+			     AC_VERB_SET_PIN_WIDGET_CONTROL, 0x0);
 
 	if (hp_pin_sense)
 		msleep(100);
@@ -2875,14 +2879,14 @@ static void alc283_init(struct hda_codec *codec)
 	/* Headphone capless set to high power mode */
 	alc_write_coef_idx(codec, 0x43, 0x9004);
 
-	snd_hda_codec_write(codec, hp_pin, 0,
-			    AC_VERB_SET_AMP_GAIN_MUTE, AMP_OUT_MUTE);
+	snd_hdac_codec_write(&codec->core, hp_pin, 0,
+			     AC_VERB_SET_AMP_GAIN_MUTE, AMP_OUT_MUTE);
 
 	if (hp_pin_sense)
 		msleep(85);
 
-	snd_hda_codec_write(codec, hp_pin, 0,
-			    AC_VERB_SET_PIN_WIDGET_CONTROL, PIN_OUT);
+	snd_hdac_codec_write(&codec->core, hp_pin, 0,
+			     AC_VERB_SET_PIN_WIDGET_CONTROL, PIN_OUT);
 
 	if (hp_pin_sense)
 		msleep(85);
@@ -2916,14 +2920,14 @@ static void alc283_shutup(struct hda_codec *codec)
 	/*depop hp during suspend*/
 	alc_write_coef_idx(codec, 0x06, 0x2100);
 
-	snd_hda_codec_write(codec, hp_pin, 0,
-			    AC_VERB_SET_AMP_GAIN_MUTE, AMP_OUT_MUTE);
+	snd_hdac_codec_write(&codec->core, hp_pin, 0,
+			     AC_VERB_SET_AMP_GAIN_MUTE, AMP_OUT_MUTE);
 
 	if (hp_pin_sense)
 		msleep(100);
 
-	snd_hda_codec_write(codec, hp_pin, 0,
-			    AC_VERB_SET_PIN_WIDGET_CONTROL, 0x0);
+	snd_hdac_codec_write(&codec->core, hp_pin, 0,
+			     AC_VERB_SET_PIN_WIDGET_CONTROL, 0x0);
 
 	alc_update_coef_idx(codec, 0x46, 0, 3 << 12);
 
@@ -2937,19 +2941,23 @@ static void alc283_shutup(struct hda_codec *codec)
 static void alc5505_coef_set(struct hda_codec *codec, unsigned int index_reg,
 			     unsigned int val)
 {
-	snd_hda_codec_write(codec, 0x51, 0, AC_VERB_SET_COEF_INDEX, index_reg >> 1);
-	snd_hda_codec_write(codec, 0x51, 0, AC_VERB_SET_PROC_COEF, val & 0xffff); /* LSB */
-	snd_hda_codec_write(codec, 0x51, 0, AC_VERB_SET_PROC_COEF, val >> 16); /* MSB */
+	snd_hdac_codec_write(&codec->core, 0x51, 0, AC_VERB_SET_COEF_INDEX,
+			     index_reg >> 1);
+	snd_hdac_codec_write(&codec->core, 0x51, 0, AC_VERB_SET_PROC_COEF,
+			     val & 0xffff); /* LSB */
+	snd_hdac_codec_write(&codec->core, 0x51, 0, AC_VERB_SET_PROC_COEF,
+			     val >> 16); /* MSB */
 }
 
 static int alc5505_coef_get(struct hda_codec *codec, unsigned int index_reg)
 {
 	unsigned int val;
 
-	snd_hda_codec_write(codec, 0x51, 0, AC_VERB_SET_COEF_INDEX, index_reg >> 1);
-	val = snd_hda_codec_read(codec, 0x51, 0, AC_VERB_GET_PROC_COEF, 0)
+	snd_hdac_codec_write(&codec->core, 0x51, 0, AC_VERB_SET_COEF_INDEX,
+			     index_reg >> 1);
+	val = snd_hdac_codec_read(&codec->core, 0x51, 0, AC_VERB_GET_PROC_COEF, 0)
 		& 0xffff;
-	val |= snd_hda_codec_read(codec, 0x51, 0, AC_VERB_GET_PROC_COEF, 0)
+	val |= snd_hdac_codec_read(&codec->core, 0x51, 0, AC_VERB_GET_PROC_COEF, 0)
 		<< 16;
 	return val;
 }
@@ -2991,7 +2999,8 @@ static void alc5505_dsp_init(struct hda_codec *codec)
 	alc5505_coef_set(codec, 0x61b4, 0x04132b02);
 	alc5505_coef_set(codec, 0x61b8, 0x041f3300); /* PLL3 control*/
 	alc5505_coef_set(codec, 0x61b8, 0x041f3302);
-	snd_hda_codec_write(codec, 0x51, 0, AC_VERB_SET_CODEC_RESET, 0); /* Function reset */
+	snd_hdac_codec_write(&codec->core, 0x51, 0, AC_VERB_SET_CODEC_RESET,
+			     0); /* Function reset */
 	alc5505_coef_set(codec, 0x61b8, 0x041b3302);
 	alc5505_coef_set(codec, 0x61b8, 0x04173302);
 	alc5505_coef_set(codec, 0x61b8, 0x04163302);
@@ -3064,8 +3073,8 @@ static int alc269_resume(struct hda_codec *codec)
 	 * in the driver.
 	 */
 	if (spec->gpio_led)
-		snd_hda_codec_write(codec, codec->core.afg, 0, AC_VERB_SET_GPIO_DATA,
-			    spec->gpio_led);
+		snd_hdac_codec_write(&codec->core, codec->core.afg, 0,
+				     AC_VERB_SET_GPIO_DATA, spec->gpio_led);
 
 	if (spec->has_alc5505_dsp)
 		alc5505_dsp_resume(codec);
@@ -3171,11 +3180,11 @@ static void alc269_x101_hp_automute_hook(struct hda_codec *codec,
 
 	vref = spec->gen.hp_jack_present ? PIN_VREF80 : 0;
 	msleep(100);
-	snd_hda_codec_write(codec, 0x18, 0, AC_VERB_SET_PIN_WIDGET_CONTROL,
-			    vref);
+	snd_hdac_codec_write(&codec->core, 0x18, 0,
+			     AC_VERB_SET_PIN_WIDGET_CONTROL, vref);
 	msleep(500);
-	snd_hda_codec_write(codec, 0x18, 0, AC_VERB_SET_PIN_WIDGET_CONTROL,
-			    vref);
+	snd_hdac_codec_write(&codec->core, 0x18, 0,
+			     AC_VERB_SET_PIN_WIDGET_CONTROL, vref);
 }
 
 static void alc269_fixup_x101_headset_mic(struct hda_codec *codec,
@@ -3291,8 +3300,8 @@ static void alc_update_gpio_led(struct hda_codec *codec, unsigned int mask,
 	else
 		spec->gpio_led |= mask;
 	if (spec->gpio_led != oldval)
-		snd_hda_codec_write(codec, 0x01, 0, AC_VERB_SET_GPIO_DATA,
-				    spec->gpio_led);
+		snd_hdac_codec_write(&codec->core, 0x01, 0,
+				     AC_VERB_SET_GPIO_DATA, spec->gpio_led);
 }
 
 /* turn on/off mute LED via GPIO per vmaster hook */
@@ -4142,8 +4151,8 @@ static void alc288_update_headset_jack_cb(struct hda_codec *codec,
 	alc_update_headset_jack_cb(codec, jack);
 	/* Headset Mic enable or disable, only for Dell Dino */
 	present = spec->gen.hp_jack_present ? 0x40 : 0;
-	snd_hda_codec_write(codec, 0x01, 0, AC_VERB_SET_GPIO_DATA,
-				present);
+	snd_hdac_codec_write(&codec->core, 0x01, 0, AC_VERB_SET_GPIO_DATA,
+			     present);
 }
 
 static void alc_fixup_headset_mode_dell_alc288(struct hda_codec *codec,
@@ -4212,8 +4221,8 @@ static void alc_shutup_dell_xps13(struct hda_codec *codec)
 	int hp_pin = spec->gen.autocfg.hp_pins[0];
 
 	/* Prevent pop noises when headphones are plugged in */
-	snd_hda_codec_write(codec, hp_pin, 0,
-			    AC_VERB_SET_AMP_GAIN_MUTE, AMP_OUT_MUTE);
+	snd_hdac_codec_write(&codec->core, hp_pin, 0,
+			     AC_VERB_SET_AMP_GAIN_MUTE, AMP_OUT_MUTE);
 	msleep(20);
 }
 
@@ -4256,7 +4265,8 @@ static void alc_fixup_headset_mode_alc662(struct hda_codec *codec,
 
 		/* Disable boost for mic-in permanently. (This code is only called
 		   from quirks that guarantee that the headphone is at NID 0x1b.) */
-		snd_hda_codec_write(codec, 0x1b, 0, AC_VERB_SET_AMP_GAIN_MUTE, 0x7000);
+		snd_hdac_codec_write(&codec->core, 0x1b, 0,
+				     AC_VERB_SET_AMP_GAIN_MUTE, 0x7000);
 		snd_hda_override_wcaps(codec, 0x1b, get_wcaps(codec, 0x1b) & ~AC_WCAP_IN_AMP);
 	} else
 		alc_fixup_headset_mode(codec, fix, action);
@@ -4355,8 +4365,8 @@ static void alc283_hp_automute_hook(struct hda_codec *codec,
 	vref = spec->gen.hp_jack_present ? PIN_VREF80 : 0;
 
 	msleep(600);
-	snd_hda_codec_write(codec, 0x19, 0, AC_VERB_SET_PIN_WIDGET_CONTROL,
-			    vref);
+	snd_hdac_codec_write(&codec->core, 0x19, 0,
+			     AC_VERB_SET_PIN_WIDGET_CONTROL, vref);
 }
 
 static void alc283_fixup_chromebook(struct hda_codec *codec,
@@ -5742,7 +5752,7 @@ static int patch_alc269(struct hda_codec *codec)
 		break;
 	}
 
-	if (snd_hda_codec_read(codec, 0x51, 0, AC_VERB_PARAMETERS, 0) == 0x10ec5505) {
+	if (snd_hdac_codec_read(&codec->core, 0x51, 0, AC_VERB_PARAMETERS, 0) == 0x10ec5505) {
 		spec->has_alc5505_dsp = 1;
 		spec->init_hook = alc5505_dsp_init;
 	}
