diff --git a/arch/arm/boot/dts/allwinner/sun8i-h3-nanopi-duo2.dts b/arch/arm/boot/dts/allwinner/sun8i-h3-nanopi-duo2.dts
index 2b0566d4b386..6301b1a78301 100644
--- a/arch/arm/boot/dts/allwinner/sun8i-h3-nanopi-duo2.dts
+++ b/arch/arm/boot/dts/allwinner/sun8i-h3-nanopi-duo2.dts
@@ -137,6 +137,14 @@ &reg_usb0_vbus {
 	status = "okay";
 };
 
+&codec {
+	status = "okay";
+	allwinner,audio-routing =
+	       "Line Out", "LINEOUT",
+	       "MIC1", "Mic",
+	       "Mic", "MBIAS";
+};
+
 &uart0 {
 	pinctrl-names = "default";
 	pinctrl-0 = <&uart0_pa_pins>;
--


I'm not sure if it's the correct solution, but setting the names of
these snd_soc_component_driver instances does seem to fix my issue:

---
 sound/soc/sunxi/sun4i-codec.c | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/sound/soc/sunxi/sun4i-codec.c b/sound/soc/sunxi/sun4i-codec.c
index 93733ff2e32a..f00537f7f97d 100644
--- a/sound/soc/sunxi/sun4i-codec.c
+++ b/sound/soc/sunxi/sun4i-codec.c
@@ -959,6 +959,7 @@ static const struct snd_soc_dapm_route sun4i_codec_codec_dapm_routes[] = {
 };
 
 static const struct snd_soc_component_driver sun4i_codec_codec = {
+	.name			= "sun4i-codec-codec",
 	.controls		= sun4i_codec_controls,
 	.num_controls		= ARRAY_SIZE(sun4i_codec_controls),
 	.dapm_widgets		= sun4i_codec_codec_dapm_widgets,
@@ -971,6 +972,7 @@ static const struct snd_soc_component_driver sun4i_codec_codec = {
 };
 
 static const struct snd_soc_component_driver sun7i_codec_codec = {
+	.name			= "sun7i-codec-codec",
 	.controls		= sun7i_codec_controls,
 	.num_controls		= ARRAY_SIZE(sun7i_codec_controls),
 	.dapm_widgets		= sun4i_codec_codec_dapm_widgets,
@@ -1278,6 +1280,7 @@ static const struct snd_soc_dapm_route sun6i_codec_codec_dapm_routes[] = {
 };
 
 static const struct snd_soc_component_driver sun6i_codec_codec = {
+	.name			= "sun6i-codec-codec",
 	.controls		= sun6i_codec_codec_widgets,
 	.num_controls		= ARRAY_SIZE(sun6i_codec_codec_widgets),
 	.dapm_widgets		= sun6i_codec_codec_dapm_widgets,
@@ -1307,6 +1310,7 @@ static const struct snd_soc_dapm_widget sun8i_a23_codec_codec_widgets[] = {
 };
 
 static const struct snd_soc_component_driver sun8i_a23_codec_codec = {
+	.name			= "sun8i-a23-codec-codec",
 	.controls		= sun8i_a23_codec_codec_controls,
 	.num_controls		= ARRAY_SIZE(sun8i_a23_codec_codec_controls),
 	.dapm_widgets		= sun8i_a23_codec_codec_widgets,
@@ -1527,6 +1531,7 @@ static const struct snd_soc_dapm_route suniv_codec_codec_dapm_routes[] = {
 };
 
 static const struct snd_soc_component_driver suniv_codec_codec = {
+	.name			= "suniv-codec-codec",
 	.controls		= suniv_codec_codec_widgets,
 	.num_controls		= ARRAY_SIZE(suniv_codec_codec_widgets),
 	.dapm_widgets		= suniv_codec_codec_dapm_widgets,
@@ -1952,6 +1957,7 @@ static const struct snd_soc_dapm_widget sun50i_h616_codec_codec_widgets[] = {
 };
 
 static const struct snd_soc_component_driver sun50i_h616_codec_codec = {
+	.name       = "sun50i-h616-codec-codec",
 	.controls   = sun50i_h616_codec_codec_controls,
 	.num_controls   = ARRAY_SIZE(sun50i_h616_codec_codec_controls),
 	.dapm_widgets   = sun50i_h616_codec_codec_widgets,
