aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMark Brown <broonie@kernel.org>2016-09-26 12:32:22 -0400
committerMark Brown <broonie@kernel.org>2016-09-26 12:32:22 -0400
commit5c4341199b223a6973b7a18ed43d943a6a897685 (patch)
tree9646add60c90efa8338ec11855b80d43fd4bf4e3
parentc1d5065a0bd09bac783120b73bfa768ba6a493d9 (diff)
parent8180bd56bdd1dcade8d1b2a0b6f70b2397bec372 (diff)
Merge branch 'topic/codec-component' of git://git.kernel.org/pub/scm/linux/kernel/git/broonie/sound into asoc-sunxi
-rw-r--r--include/sound/soc.h8
-rw-r--r--sound/soc/atmel/atmel-classd.c6
-rw-r--r--sound/soc/atmel/atmel-pdmic.c6
-rw-r--r--sound/soc/codecs/88pm860x-codec.c14
-rw-r--r--sound/soc/codecs/ab8500-codec.c14
-rw-r--r--sound/soc/codecs/ac97.c10
-rw-r--r--sound/soc/codecs/ad1836.c14
-rw-r--r--sound/soc/codecs/ad193x.c14
-rw-r--r--sound/soc/codecs/ad1980.c14
-rw-r--r--sound/soc/codecs/ad73311.c10
-rw-r--r--sound/soc/codecs/adau1373.c14
-rw-r--r--sound/soc/codecs/adau1701.c15
-rw-r--r--sound/soc/codecs/adau1761.c14
-rw-r--r--sound/soc/codecs/adau1781.c14
-rw-r--r--sound/soc/codecs/adau1977.c14
-rw-r--r--sound/soc/codecs/adau7002.c10
-rw-r--r--sound/soc/codecs/adav80x.c14
-rw-r--r--sound/soc/codecs/ads117x.c10
-rw-r--r--sound/soc/codecs/ak4104.c10
-rw-r--r--sound/soc/codecs/ak4535.c14
-rw-r--r--sound/soc/codecs/ak4554.c10
-rw-r--r--sound/soc/codecs/ak4613.c14
-rw-r--r--sound/soc/codecs/ak4641.c14
-rw-r--r--sound/soc/codecs/ak4642.c14
-rw-r--r--sound/soc/codecs/ak4671.c14
-rw-r--r--sound/soc/codecs/ak5386.c10
-rw-r--r--sound/soc/codecs/alc5632.c14
-rw-r--r--sound/soc/codecs/bt-sco.c10
-rw-r--r--sound/soc/codecs/cq93vc.c6
-rw-r--r--sound/soc/codecs/cs35l32.c15
-rw-r--r--sound/soc/codecs/cs35l33.c15
-rw-r--r--sound/soc/codecs/cs4265.c15
-rw-r--r--sound/soc/codecs/cs4270.c14
-rw-r--r--sound/soc/codecs/cs4271.c14
-rw-r--r--sound/soc/codecs/cs42l51.c14
-rw-r--r--sound/soc/codecs/cs42l52.c15
-rw-r--r--sound/soc/codecs/cs42l56.c15
-rw-r--r--sound/soc/codecs/cs42l73.c15
-rw-r--r--sound/soc/codecs/cs42xx8.c14
-rw-r--r--sound/soc/codecs/cs4349.c15
-rw-r--r--sound/soc/codecs/cs47l24.c14
-rw-r--r--sound/soc/codecs/cs53l30.c15
-rw-r--r--sound/soc/codecs/cx20442.c10
-rw-r--r--sound/soc/codecs/da7210.c15
-rw-r--r--sound/soc/codecs/da7213.c15
-rw-r--r--sound/soc/codecs/da7218.c15
-rw-r--r--sound/soc/codecs/da7219.c15
-rw-r--r--sound/soc/codecs/da732x.c14
-rw-r--r--sound/soc/codecs/da9055.c15
-rw-r--r--sound/soc/codecs/dmic.c10
-rw-r--r--sound/soc/codecs/es8328.c14
-rw-r--r--sound/soc/codecs/gtm601.c10
-rw-r--r--sound/soc/codecs/hdmi-codec.c79
-rw-r--r--sound/soc/codecs/inno_rk3036.c14
-rw-r--r--sound/soc/codecs/isabelle.c14
-rw-r--r--sound/soc/codecs/jz4740.c14
-rw-r--r--sound/soc/codecs/lm49453.c14
-rw-r--r--sound/soc/codecs/max98088.c14
-rw-r--r--sound/soc/codecs/max98095.c14
-rw-r--r--sound/soc/codecs/max98357a.c10
-rw-r--r--sound/soc/codecs/max9850.c14
-rw-r--r--sound/soc/codecs/max9860.c14
-rw-r--r--sound/soc/codecs/max9867.c14
-rw-r--r--sound/soc/codecs/max98925.c14
-rw-r--r--sound/soc/codecs/max98926.c14
-rw-r--r--sound/soc/codecs/mc13783.c14
-rw-r--r--sound/soc/codecs/ml26124.c14
-rw-r--r--sound/soc/codecs/nau8825.c14
-rw-r--r--sound/soc/codecs/pcm1681.c14
-rw-r--r--sound/soc/codecs/pcm179x.c14
-rw-r--r--sound/soc/codecs/pcm3008.c10
-rw-r--r--sound/soc/codecs/pcm3168a.c14
-rw-r--r--sound/soc/codecs/pcm512x.c14
-rw-r--r--sound/soc/codecs/rt286.c14
-rw-r--r--sound/soc/codecs/rt298.c14
-rw-r--r--sound/soc/codecs/rt5514.c14
-rw-r--r--sound/soc/codecs/rt5616.c14
-rw-r--r--sound/soc/codecs/rt5631.c14
-rw-r--r--sound/soc/codecs/rt5640.c14
-rw-r--r--sound/soc/codecs/rt5645.c14
-rw-r--r--sound/soc/codecs/rt5651.c14
-rw-r--r--sound/soc/codecs/rt5659.c14
-rw-r--r--sound/soc/codecs/rt5670.c14
-rw-r--r--sound/soc/codecs/rt5677.c14
-rw-r--r--sound/soc/codecs/sgtl5000.c14
-rw-r--r--sound/soc/codecs/si476x.c10
-rw-r--r--sound/soc/codecs/sn95031.c14
-rw-r--r--sound/soc/codecs/spdif_receiver.c10
-rw-r--r--sound/soc/codecs/spdif_transmitter.c10
-rw-r--r--sound/soc/codecs/ssm2518.c14
-rw-r--r--sound/soc/codecs/ssm2602.c14
-rw-r--r--sound/soc/codecs/ssm4567.c14
-rw-r--r--sound/soc/codecs/sta32x.c14
-rw-r--r--sound/soc/codecs/sta350.c14
-rw-r--r--sound/soc/codecs/sta529.c6
-rw-r--r--sound/soc/codecs/stac9766.c6
-rw-r--r--sound/soc/codecs/sti-sas.c8
-rw-r--r--sound/soc/codecs/tas2552.c14
-rw-r--r--sound/soc/codecs/tas5086.c14
-rw-r--r--sound/soc/codecs/tas571x.c14
-rw-r--r--sound/soc/codecs/tas5720.c14
-rw-r--r--sound/soc/codecs/tfa9879.c15
-rw-r--r--sound/soc/codecs/tlv320aic23.c14
-rw-r--r--sound/soc/codecs/tlv320aic26.c14
-rw-r--r--sound/soc/codecs/tlv320aic31xx.c14
-rw-r--r--sound/soc/codecs/tlv320aic32x4.c14
-rw-r--r--sound/soc/codecs/tlv320aic3x.c14
-rw-r--r--sound/soc/codecs/tlv320dac33.c14
-rw-r--r--sound/soc/codecs/twl4030.c14
-rw-r--r--sound/soc/codecs/twl6040.c14
-rw-r--r--sound/soc/codecs/uda134x.c10
-rw-r--r--sound/soc/codecs/uda1380.c14
-rw-r--r--sound/soc/codecs/wl1273.c14
-rw-r--r--sound/soc/codecs/wm0010.c12
-rw-r--r--sound/soc/codecs/wm1250-ev1.c13
-rw-r--r--sound/soc/codecs/wm2000.c16
-rw-r--r--sound/soc/codecs/wm2200.c16
-rw-r--r--sound/soc/codecs/wm5100.c16
-rw-r--r--sound/soc/codecs/wm5102.c16
-rw-r--r--sound/soc/codecs/wm5110.c16
-rw-r--r--sound/soc/codecs/wm8350.c16
-rw-r--r--sound/soc/codecs/wm8400.c16
-rw-r--r--sound/soc/codecs/wm8510.c16
-rw-r--r--sound/soc/codecs/wm8523.c16
-rw-r--r--sound/soc/codecs/wm8580.c16
-rw-r--r--sound/soc/codecs/wm8711.c16
-rw-r--r--sound/soc/codecs/wm8727.c12
-rw-r--r--sound/soc/codecs/wm8728.c16
-rw-r--r--sound/soc/codecs/wm8731.c16
-rw-r--r--sound/soc/codecs/wm8737.c16
-rw-r--r--sound/soc/codecs/wm8741.c12
-rw-r--r--sound/soc/codecs/wm8750.c16
-rw-r--r--sound/soc/codecs/wm8753.c16
-rw-r--r--sound/soc/codecs/wm8770.c16
-rw-r--r--sound/soc/codecs/wm8776.c16
-rw-r--r--sound/soc/codecs/wm8782.c12
-rw-r--r--sound/soc/codecs/wm8804.c10
-rw-r--r--sound/soc/codecs/wm8900.c16
-rw-r--r--sound/soc/codecs/wm8903.c16
-rw-r--r--sound/soc/codecs/wm8904.c2
-rw-r--r--sound/soc/codecs/wm8940.c16
-rw-r--r--sound/soc/codecs/wm8955.c16
-rw-r--r--sound/soc/codecs/wm8960.c2
-rw-r--r--sound/soc/codecs/wm8961.c16
-rw-r--r--sound/soc/codecs/wm8962.c2
-rw-r--r--sound/soc/codecs/wm8971.c16
-rw-r--r--sound/soc/codecs/wm8974.c16
-rw-r--r--sound/soc/codecs/wm8978.c16
-rw-r--r--sound/soc/codecs/wm8983.c16
-rw-r--r--sound/soc/codecs/wm8985.c16
-rw-r--r--sound/soc/codecs/wm8988.c14
-rw-r--r--sound/soc/codecs/wm8990.c16
-rw-r--r--sound/soc/codecs/wm8991.c16
-rw-r--r--sound/soc/codecs/wm8993.c2
-rw-r--r--sound/soc/codecs/wm8994.c2
-rw-r--r--sound/soc/codecs/wm8995.c14
-rw-r--r--sound/soc/codecs/wm8996.c16
-rw-r--r--sound/soc/codecs/wm8997.c16
-rw-r--r--sound/soc/codecs/wm8998.c16
-rw-r--r--sound/soc/codecs/wm9081.c16
-rw-r--r--sound/soc/codecs/wm9090.c2
-rw-r--r--sound/soc/codecs/wm9705.c16
-rw-r--r--sound/soc/codecs/wm9712.c16
-rw-r--r--sound/soc/codecs/wm9713.c16
-rw-r--r--sound/soc/img/pistachio-internal-dac.c14
-rw-r--r--sound/soc/soc-core.c13
-rw-r--r--sound/soc/sunxi/sun4i-codec.c14
167 files changed, 1312 insertions, 974 deletions
diff --git a/include/sound/soc.h b/include/sound/soc.h
index 6144882cc96a..5eb2b38c3437 100644
--- a/include/sound/soc.h
+++ b/include/sound/soc.h
@@ -898,14 +898,6 @@ struct snd_soc_codec_driver {
898 int (*resume)(struct snd_soc_codec *); 898 int (*resume)(struct snd_soc_codec *);
899 struct snd_soc_component_driver component_driver; 899 struct snd_soc_component_driver component_driver;
900 900
901 /* Default control and setup, added after probe() is run */
902 const struct snd_kcontrol_new *controls;
903 int num_controls;
904 const struct snd_soc_dapm_widget *dapm_widgets;
905 int num_dapm_widgets;
906 const struct snd_soc_dapm_route *dapm_routes;
907 int num_dapm_routes;
908
909 /* codec wide operations */ 901 /* codec wide operations */
910 int (*set_sysclk)(struct snd_soc_codec *codec, 902 int (*set_sysclk)(struct snd_soc_codec *codec,
911 int clk_id, int source, unsigned int freq, int dir); 903 int clk_id, int source, unsigned int freq, int dir);
diff --git a/sound/soc/atmel/atmel-classd.c b/sound/soc/atmel/atmel-classd.c
index 6d9b8b44e2da..89ac5f5a93eb 100644
--- a/sound/soc/atmel/atmel-classd.c
+++ b/sound/soc/atmel/atmel-classd.c
@@ -308,9 +308,11 @@ static struct regmap *atmel_classd_codec_get_remap(struct device *dev)
308 308
309static struct snd_soc_codec_driver soc_codec_dev_classd = { 309static struct snd_soc_codec_driver soc_codec_dev_classd = {
310 .probe = atmel_classd_codec_probe, 310 .probe = atmel_classd_codec_probe,
311 .controls = atmel_classd_snd_controls,
312 .num_controls = ARRAY_SIZE(atmel_classd_snd_controls),
313 .get_regmap = atmel_classd_codec_get_remap, 311 .get_regmap = atmel_classd_codec_get_remap,
312 .component_driver = {
313 .controls = atmel_classd_snd_controls,
314 .num_controls = ARRAY_SIZE(atmel_classd_snd_controls),
315 },
314}; 316};
315 317
316/* codec dai component */ 318/* codec dai component */
diff --git a/sound/soc/atmel/atmel-pdmic.c b/sound/soc/atmel/atmel-pdmic.c
index 5f56da60c92f..2a3a41fad38d 100644
--- a/sound/soc/atmel/atmel-pdmic.c
+++ b/sound/soc/atmel/atmel-pdmic.c
@@ -357,8 +357,10 @@ static int atmel_pdmic_codec_probe(struct snd_soc_codec *codec)
357 357
358static struct snd_soc_codec_driver soc_codec_dev_pdmic = { 358static struct snd_soc_codec_driver soc_codec_dev_pdmic = {
359 .probe = atmel_pdmic_codec_probe, 359 .probe = atmel_pdmic_codec_probe,
360 .controls = atmel_pdmic_snd_controls, 360 .component_driver = {
361 .num_controls = ARRAY_SIZE(atmel_pdmic_snd_controls), 361 .controls = atmel_pdmic_snd_controls,
362 .num_controls = ARRAY_SIZE(atmel_pdmic_snd_controls),
363 },
362}; 364};
363 365
364/* codec dai component */ 366/* codec dai component */
diff --git a/sound/soc/codecs/88pm860x-codec.c b/sound/soc/codecs/88pm860x-codec.c
index e8bed6b0c9db..b013a4c62b63 100644
--- a/sound/soc/codecs/88pm860x-codec.c
+++ b/sound/soc/codecs/88pm860x-codec.c
@@ -1361,12 +1361,14 @@ static struct snd_soc_codec_driver soc_codec_dev_pm860x = {
1361 .set_bias_level = pm860x_set_bias_level, 1361 .set_bias_level = pm860x_set_bias_level,
1362 .get_regmap = pm860x_get_regmap, 1362 .get_regmap = pm860x_get_regmap,
1363 1363
1364 .controls = pm860x_snd_controls, 1364 .component_driver = {
1365 .num_controls = ARRAY_SIZE(pm860x_snd_controls), 1365 .controls = pm860x_snd_controls,
1366 .dapm_widgets = pm860x_dapm_widgets, 1366 .num_controls = ARRAY_SIZE(pm860x_snd_controls),
1367 .num_dapm_widgets = ARRAY_SIZE(pm860x_dapm_widgets), 1367 .dapm_widgets = pm860x_dapm_widgets,
1368 .dapm_routes = pm860x_dapm_routes, 1368 .num_dapm_widgets = ARRAY_SIZE(pm860x_dapm_widgets),
1369 .num_dapm_routes = ARRAY_SIZE(pm860x_dapm_routes), 1369 .dapm_routes = pm860x_dapm_routes,
1370 .num_dapm_routes = ARRAY_SIZE(pm860x_dapm_routes),
1371 },
1370}; 1372};
1371 1373
1372static int pm860x_codec_probe(struct platform_device *pdev) 1374static int pm860x_codec_probe(struct platform_device *pdev)
diff --git a/sound/soc/codecs/ab8500-codec.c b/sound/soc/codecs/ab8500-codec.c
index 2fc89155f14a..3056487ed5a9 100644
--- a/sound/soc/codecs/ab8500-codec.c
+++ b/sound/soc/codecs/ab8500-codec.c
@@ -2525,12 +2525,14 @@ static int ab8500_codec_probe(struct snd_soc_codec *codec)
2525 2525
2526static struct snd_soc_codec_driver ab8500_codec_driver = { 2526static struct snd_soc_codec_driver ab8500_codec_driver = {
2527 .probe = ab8500_codec_probe, 2527 .probe = ab8500_codec_probe,
2528 .controls = ab8500_ctrls, 2528 .component_driver = {
2529 .num_controls = ARRAY_SIZE(ab8500_ctrls), 2529 .controls = ab8500_ctrls,
2530 .dapm_widgets = ab8500_dapm_widgets, 2530 .num_controls = ARRAY_SIZE(ab8500_ctrls),
2531 .num_dapm_widgets = ARRAY_SIZE(ab8500_dapm_widgets), 2531 .dapm_widgets = ab8500_dapm_widgets,
2532 .dapm_routes = ab8500_dapm_routes, 2532 .num_dapm_widgets = ARRAY_SIZE(ab8500_dapm_widgets),
2533 .num_dapm_routes = ARRAY_SIZE(ab8500_dapm_routes), 2533 .dapm_routes = ab8500_dapm_routes,
2534 .num_dapm_routes = ARRAY_SIZE(ab8500_dapm_routes),
2535 },
2534}; 2536};
2535 2537
2536static int ab8500_codec_driver_probe(struct platform_device *pdev) 2538static int ab8500_codec_driver_probe(struct platform_device *pdev)
diff --git a/sound/soc/codecs/ac97.c b/sound/soc/codecs/ac97.c
index 5b3224c63943..f7f04c6be01e 100644
--- a/sound/soc/codecs/ac97.c
+++ b/sound/soc/codecs/ac97.c
@@ -117,10 +117,12 @@ static struct snd_soc_codec_driver soc_codec_dev_ac97 = {
117 .suspend = ac97_soc_suspend, 117 .suspend = ac97_soc_suspend,
118 .resume = ac97_soc_resume, 118 .resume = ac97_soc_resume,
119 119
120 .dapm_widgets = ac97_widgets, 120 .component_driver = {
121 .num_dapm_widgets = ARRAY_SIZE(ac97_widgets), 121 .dapm_widgets = ac97_widgets,
122 .dapm_routes = ac97_routes, 122 .num_dapm_widgets = ARRAY_SIZE(ac97_widgets),
123 .num_dapm_routes = ARRAY_SIZE(ac97_routes), 123 .dapm_routes = ac97_routes,
124 .num_dapm_routes = ARRAY_SIZE(ac97_routes),
125 },
124}; 126};
125 127
126static int ac97_probe(struct platform_device *pdev) 128static int ac97_probe(struct platform_device *pdev)
diff --git a/sound/soc/codecs/ad1836.c b/sound/soc/codecs/ad1836.c
index e2ce6c4d7ece..a478239aadac 100644
--- a/sound/soc/codecs/ad1836.c
+++ b/sound/soc/codecs/ad1836.c
@@ -327,12 +327,14 @@ static struct snd_soc_codec_driver soc_codec_dev_ad1836 = {
327 .suspend = ad1836_suspend, 327 .suspend = ad1836_suspend,
328 .resume = ad1836_resume, 328 .resume = ad1836_resume,
329 329
330 .controls = ad183x_controls, 330 .component_driver = {
331 .num_controls = ARRAY_SIZE(ad183x_controls), 331 .controls = ad183x_controls,
332 .dapm_widgets = ad183x_dapm_widgets, 332 .num_controls = ARRAY_SIZE(ad183x_controls),
333 .num_dapm_widgets = ARRAY_SIZE(ad183x_dapm_widgets), 333 .dapm_widgets = ad183x_dapm_widgets,
334 .dapm_routes = ad183x_dapm_routes, 334 .num_dapm_widgets = ARRAY_SIZE(ad183x_dapm_widgets),
335 .num_dapm_routes = ARRAY_SIZE(ad183x_dapm_routes), 335 .dapm_routes = ad183x_dapm_routes,
336 .num_dapm_routes = ARRAY_SIZE(ad183x_dapm_routes),
337 },
336}; 338};
337 339
338static const struct reg_default ad1836_reg_defaults[] = { 340static const struct reg_default ad1836_reg_defaults[] = {
diff --git a/sound/soc/codecs/ad193x.c b/sound/soc/codecs/ad193x.c
index 3a3f3f2343d7..d643557d89a7 100644
--- a/sound/soc/codecs/ad193x.c
+++ b/sound/soc/codecs/ad193x.c
@@ -410,12 +410,14 @@ static int ad193x_codec_probe(struct snd_soc_codec *codec)
410 410
411static struct snd_soc_codec_driver soc_codec_dev_ad193x = { 411static struct snd_soc_codec_driver soc_codec_dev_ad193x = {
412 .probe = ad193x_codec_probe, 412 .probe = ad193x_codec_probe,
413 .controls = ad193x_snd_controls, 413 .component_driver = {
414 .num_controls = ARRAY_SIZE(ad193x_snd_controls), 414 .controls = ad193x_snd_controls,
415 .dapm_widgets = ad193x_dapm_widgets, 415 .num_controls = ARRAY_SIZE(ad193x_snd_controls),
416 .num_dapm_widgets = ARRAY_SIZE(ad193x_dapm_widgets), 416 .dapm_widgets = ad193x_dapm_widgets,
417 .dapm_routes = audio_paths, 417 .num_dapm_widgets = ARRAY_SIZE(ad193x_dapm_widgets),
418 .num_dapm_routes = ARRAY_SIZE(audio_paths), 418 .dapm_routes = audio_paths,
419 .num_dapm_routes = ARRAY_SIZE(audio_paths),
420 },
419}; 421};
420 422
421const struct regmap_config ad193x_regmap_config = { 423const struct regmap_config ad193x_regmap_config = {
diff --git a/sound/soc/codecs/ad1980.c b/sound/soc/codecs/ad1980.c
index 9ef20dbccbe3..b7c1b9f4bf5f 100644
--- a/sound/soc/codecs/ad1980.c
+++ b/sound/soc/codecs/ad1980.c
@@ -299,12 +299,14 @@ static struct snd_soc_codec_driver soc_codec_dev_ad1980 = {
299 .probe = ad1980_soc_probe, 299 .probe = ad1980_soc_probe,
300 .remove = ad1980_soc_remove, 300 .remove = ad1980_soc_remove,
301 301
302 .controls = ad1980_snd_ac97_controls, 302 .component_driver = {
303 .num_controls = ARRAY_SIZE(ad1980_snd_ac97_controls), 303 .controls = ad1980_snd_ac97_controls,
304 .dapm_widgets = ad1980_dapm_widgets, 304 .num_controls = ARRAY_SIZE(ad1980_snd_ac97_controls),
305 .num_dapm_widgets = ARRAY_SIZE(ad1980_dapm_widgets), 305 .dapm_widgets = ad1980_dapm_widgets,
306 .dapm_routes = ad1980_dapm_routes, 306 .num_dapm_widgets = ARRAY_SIZE(ad1980_dapm_widgets),
307 .num_dapm_routes = ARRAY_SIZE(ad1980_dapm_routes), 307 .dapm_routes = ad1980_dapm_routes,
308 .num_dapm_routes = ARRAY_SIZE(ad1980_dapm_routes),
309 },
308}; 310};
309 311
310static int ad1980_probe(struct platform_device *pdev) 312static int ad1980_probe(struct platform_device *pdev)
diff --git a/sound/soc/codecs/ad73311.c b/sound/soc/codecs/ad73311.c
index a9400aef60b5..3e358a49442d 100644
--- a/sound/soc/codecs/ad73311.c
+++ b/sound/soc/codecs/ad73311.c
@@ -55,10 +55,12 @@ static struct snd_soc_dai_driver ad73311_dai = {
55}; 55};
56 56
57static struct snd_soc_codec_driver soc_codec_dev_ad73311 = { 57static struct snd_soc_codec_driver soc_codec_dev_ad73311 = {
58 .dapm_widgets = ad73311_dapm_widgets, 58 .component_driver = {
59 .num_dapm_widgets = ARRAY_SIZE(ad73311_dapm_widgets), 59 .dapm_widgets = ad73311_dapm_widgets,
60 .dapm_routes = ad73311_dapm_routes, 60 .num_dapm_widgets = ARRAY_SIZE(ad73311_dapm_widgets),
61 .num_dapm_routes = ARRAY_SIZE(ad73311_dapm_routes), 61 .dapm_routes = ad73311_dapm_routes,
62 .num_dapm_routes = ARRAY_SIZE(ad73311_dapm_routes),
63 },
62}; 64};
63 65
64static int ad73311_probe(struct platform_device *pdev) 66static int ad73311_probe(struct platform_device *pdev)
diff --git a/sound/soc/codecs/adau1373.c b/sound/soc/codecs/adau1373.c
index 1556b360fa15..8fa9045571ff 100644
--- a/sound/soc/codecs/adau1373.c
+++ b/sound/soc/codecs/adau1373.c
@@ -1466,12 +1466,14 @@ static struct snd_soc_codec_driver adau1373_codec_driver = {
1466 1466
1467 .set_pll = adau1373_set_pll, 1467 .set_pll = adau1373_set_pll,
1468 1468
1469 .controls = adau1373_controls, 1469 .component_driver = {
1470 .num_controls = ARRAY_SIZE(adau1373_controls), 1470 .controls = adau1373_controls,
1471 .dapm_widgets = adau1373_dapm_widgets, 1471 .num_controls = ARRAY_SIZE(adau1373_controls),
1472 .num_dapm_widgets = ARRAY_SIZE(adau1373_dapm_widgets), 1472 .dapm_widgets = adau1373_dapm_widgets,
1473 .dapm_routes = adau1373_dapm_routes, 1473 .num_dapm_widgets = ARRAY_SIZE(adau1373_dapm_widgets),
1474 .num_dapm_routes = ARRAY_SIZE(adau1373_dapm_routes), 1474 .dapm_routes = adau1373_dapm_routes,
1475 .num_dapm_routes = ARRAY_SIZE(adau1373_dapm_routes),
1476 },
1475}; 1477};
1476 1478
1477static int adau1373_i2c_probe(struct i2c_client *client, 1479static int adau1373_i2c_probe(struct i2c_client *client,
diff --git a/sound/soc/codecs/adau1701.c b/sound/soc/codecs/adau1701.c
index de53c0d7bf10..3bad1bc8c00a 100644
--- a/sound/soc/codecs/adau1701.c
+++ b/sound/soc/codecs/adau1701.c
@@ -765,13 +765,14 @@ static struct snd_soc_codec_driver adau1701_codec_drv = {
765 .set_bias_level = adau1701_set_bias_level, 765 .set_bias_level = adau1701_set_bias_level,
766 .idle_bias_off = true, 766 .idle_bias_off = true,
767 767
768 .controls = adau1701_controls, 768 .component_driver = {
769 .num_controls = ARRAY_SIZE(adau1701_controls), 769 .controls = adau1701_controls,
770 .dapm_widgets = adau1701_dapm_widgets, 770 .num_controls = ARRAY_SIZE(adau1701_controls),
771 .num_dapm_widgets = ARRAY_SIZE(adau1701_dapm_widgets), 771 .dapm_widgets = adau1701_dapm_widgets,
772 .dapm_routes = adau1701_dapm_routes, 772 .num_dapm_widgets = ARRAY_SIZE(adau1701_dapm_widgets),
773 .num_dapm_routes = ARRAY_SIZE(adau1701_dapm_routes), 773 .dapm_routes = adau1701_dapm_routes,
774 774 .num_dapm_routes = ARRAY_SIZE(adau1701_dapm_routes),
775 },
775 .set_sysclk = adau1701_set_sysclk, 776 .set_sysclk = adau1701_set_sysclk,
776}; 777};
777 778
diff --git a/sound/soc/codecs/adau1761.c b/sound/soc/codecs/adau1761.c
index b95d29dbd13d..3bc3cc559dde 100644
--- a/sound/soc/codecs/adau1761.c
+++ b/sound/soc/codecs/adau1761.c
@@ -719,12 +719,14 @@ static const struct snd_soc_codec_driver adau1761_codec_driver = {
719 .set_bias_level = adau1761_set_bias_level, 719 .set_bias_level = adau1761_set_bias_level,
720 .suspend_bias_off = true, 720 .suspend_bias_off = true,
721 721
722 .controls = adau1761_controls, 722 .component_driver = {
723 .num_controls = ARRAY_SIZE(adau1761_controls), 723 .controls = adau1761_controls,
724 .dapm_widgets = adau1x61_dapm_widgets, 724 .num_controls = ARRAY_SIZE(adau1761_controls),
725 .num_dapm_widgets = ARRAY_SIZE(adau1x61_dapm_widgets), 725 .dapm_widgets = adau1x61_dapm_widgets,
726 .dapm_routes = adau1x61_dapm_routes, 726 .num_dapm_widgets = ARRAY_SIZE(adau1x61_dapm_widgets),
727 .num_dapm_routes = ARRAY_SIZE(adau1x61_dapm_routes), 727 .dapm_routes = adau1x61_dapm_routes,
728 .num_dapm_routes = ARRAY_SIZE(adau1x61_dapm_routes),
729 },
728}; 730};
729 731
730#define ADAU1761_FORMATS (SNDRV_PCM_FMTBIT_S16_LE | SNDRV_PCM_FMTBIT_S24_LE | \ 732#define ADAU1761_FORMATS (SNDRV_PCM_FMTBIT_S16_LE | SNDRV_PCM_FMTBIT_S24_LE | \
diff --git a/sound/soc/codecs/adau1781.c b/sound/soc/codecs/adau1781.c
index bc1bb56dae63..546071c6c0d0 100644
--- a/sound/soc/codecs/adau1781.c
+++ b/sound/soc/codecs/adau1781.c
@@ -432,12 +432,14 @@ static const struct snd_soc_codec_driver adau1781_codec_driver = {
432 .set_bias_level = adau1781_set_bias_level, 432 .set_bias_level = adau1781_set_bias_level,
433 .suspend_bias_off = true, 433 .suspend_bias_off = true,
434 434
435 .controls = adau1781_controls, 435 .component_driver = {
436 .num_controls = ARRAY_SIZE(adau1781_controls), 436 .controls = adau1781_controls,
437 .dapm_widgets = adau1781_dapm_widgets, 437 .num_controls = ARRAY_SIZE(adau1781_controls),
438 .num_dapm_widgets = ARRAY_SIZE(adau1781_dapm_widgets), 438 .dapm_widgets = adau1781_dapm_widgets,
439 .dapm_routes = adau1781_dapm_routes, 439 .num_dapm_widgets = ARRAY_SIZE(adau1781_dapm_widgets),
440 .num_dapm_routes = ARRAY_SIZE(adau1781_dapm_routes), 440 .dapm_routes = adau1781_dapm_routes,
441 .num_dapm_routes = ARRAY_SIZE(adau1781_dapm_routes),
442 },
441}; 443};
442 444
443#define ADAU1781_FORMATS (SNDRV_PCM_FMTBIT_S16_LE | SNDRV_PCM_FMTBIT_S24_LE | \ 445#define ADAU1781_FORMATS (SNDRV_PCM_FMTBIT_S16_LE | SNDRV_PCM_FMTBIT_S24_LE | \
diff --git a/sound/soc/codecs/adau1977.c b/sound/soc/codecs/adau1977.c
index 9bdd15f408c1..b319db6a69f8 100644
--- a/sound/soc/codecs/adau1977.c
+++ b/sound/soc/codecs/adau1977.c
@@ -873,12 +873,14 @@ static struct snd_soc_codec_driver adau1977_codec_driver = {
873 .set_sysclk = adau1977_set_sysclk, 873 .set_sysclk = adau1977_set_sysclk,
874 .idle_bias_off = true, 874 .idle_bias_off = true,
875 875
876 .controls = adau1977_snd_controls, 876 .component_driver = {
877 .num_controls = ARRAY_SIZE(adau1977_snd_controls), 877 .controls = adau1977_snd_controls,
878 .dapm_widgets = adau1977_dapm_widgets, 878 .num_controls = ARRAY_SIZE(adau1977_snd_controls),
879 .num_dapm_widgets = ARRAY_SIZE(adau1977_dapm_widgets), 879 .dapm_widgets = adau1977_dapm_widgets,
880 .dapm_routes = adau1977_dapm_routes, 880 .num_dapm_widgets = ARRAY_SIZE(adau1977_dapm_widgets),
881 .num_dapm_routes = ARRAY_SIZE(adau1977_dapm_routes), 881 .dapm_routes = adau1977_dapm_routes,
882 .num_dapm_routes = ARRAY_SIZE(adau1977_dapm_routes),
883 },
882}; 884};
883 885
884static int adau1977_setup_micbias(struct adau1977 *adau1977) 886static int adau1977_setup_micbias(struct adau1977 *adau1977)
diff --git a/sound/soc/codecs/adau7002.c b/sound/soc/codecs/adau7002.c
index 9df72c6adcca..6384c5491de8 100644
--- a/sound/soc/codecs/adau7002.c
+++ b/sound/soc/codecs/adau7002.c
@@ -39,10 +39,12 @@ static struct snd_soc_dai_driver adau7002_dai = {
39}; 39};
40 40
41static const struct snd_soc_codec_driver adau7002_codec_driver = { 41static const struct snd_soc_codec_driver adau7002_codec_driver = {
42 .dapm_widgets = adau7002_widgets, 42 .component_driver = {
43 .num_dapm_widgets = ARRAY_SIZE(adau7002_widgets), 43 .dapm_widgets = adau7002_widgets,
44 .dapm_routes = adau7002_routes, 44 .num_dapm_widgets = ARRAY_SIZE(adau7002_widgets),
45 .num_dapm_routes = ARRAY_SIZE(adau7002_routes), 45 .dapm_routes = adau7002_routes,
46 .num_dapm_routes = ARRAY_SIZE(adau7002_routes),
47 },
46}; 48};
47 49
48static int adau7002_probe(struct platform_device *pdev) 50static int adau7002_probe(struct platform_device *pdev)
diff --git a/sound/soc/codecs/adav80x.c b/sound/soc/codecs/adav80x.c
index acff8d62059c..6e793ebb5883 100644
--- a/sound/soc/codecs/adav80x.c
+++ b/sound/soc/codecs/adav80x.c
@@ -834,12 +834,14 @@ static struct snd_soc_codec_driver adav80x_codec_driver = {
834 .set_pll = adav80x_set_pll, 834 .set_pll = adav80x_set_pll,
835 .set_sysclk = adav80x_set_sysclk, 835 .set_sysclk = adav80x_set_sysclk,
836 836
837 .controls = adav80x_controls, 837 .component_driver = {
838 .num_controls = ARRAY_SIZE(adav80x_controls), 838 .controls = adav80x_controls,
839 .dapm_widgets = adav80x_dapm_widgets, 839 .num_controls = ARRAY_SIZE(adav80x_controls),
840 .num_dapm_widgets = ARRAY_SIZE(adav80x_dapm_widgets), 840 .dapm_widgets = adav80x_dapm_widgets,
841 .dapm_routes = adav80x_dapm_routes, 841 .num_dapm_widgets = ARRAY_SIZE(adav80x_dapm_widgets),
842 .num_dapm_routes = ARRAY_SIZE(adav80x_dapm_routes), 842 .dapm_routes = adav80x_dapm_routes,
843 .num_dapm_routes = ARRAY_SIZE(adav80x_dapm_routes),
844 },
843}; 845};
844 846
845int adav80x_bus_probe(struct device *dev, struct regmap *regmap) 847int adav80x_bus_probe(struct device *dev, struct regmap *regmap)
diff --git a/sound/soc/codecs/ads117x.c b/sound/soc/codecs/ads117x.c
index c5be1bdc2c9a..90c756d183b4 100644
--- a/sound/soc/codecs/ads117x.c
+++ b/sound/soc/codecs/ads117x.c
@@ -59,10 +59,12 @@ static struct snd_soc_dai_driver ads117x_dai = {
59}; 59};
60 60
61static struct snd_soc_codec_driver soc_codec_dev_ads117x = { 61static struct snd_soc_codec_driver soc_codec_dev_ads117x = {
62 .dapm_widgets = ads117x_dapm_widgets, 62 .component_driver = {
63 .num_dapm_widgets = ARRAY_SIZE(ads117x_dapm_widgets), 63 .dapm_widgets = ads117x_dapm_widgets,
64 .dapm_routes = ads117x_dapm_routes, 64 .num_dapm_widgets = ARRAY_SIZE(ads117x_dapm_widgets),
65 .num_dapm_routes = ARRAY_SIZE(ads117x_dapm_routes), 65 .dapm_routes = ads117x_dapm_routes,
66 .num_dapm_routes = ARRAY_SIZE(ads117x_dapm_routes),
67 },
66}; 68};
67 69
68static int ads117x_probe(struct platform_device *pdev) 70static int ads117x_probe(struct platform_device *pdev)
diff --git a/sound/soc/codecs/ak4104.c b/sound/soc/codecs/ak4104.c
index 595d02d7602c..bdca8793e630 100644
--- a/sound/soc/codecs/ak4104.c
+++ b/sound/soc/codecs/ak4104.c
@@ -245,10 +245,12 @@ static struct snd_soc_codec_driver soc_codec_device_ak4104 = {
245 .suspend = ak4104_soc_suspend, 245 .suspend = ak4104_soc_suspend,
246 .resume = ak4104_soc_resume, 246 .resume = ak4104_soc_resume,
247 247
248 .dapm_widgets = ak4104_dapm_widgets, 248 .component_driver = {
249 .num_dapm_widgets = ARRAY_SIZE(ak4104_dapm_widgets), 249 .dapm_widgets = ak4104_dapm_widgets,
250 .dapm_routes = ak4104_dapm_routes, 250 .num_dapm_widgets = ARRAY_SIZE(ak4104_dapm_widgets),
251 .num_dapm_routes = ARRAY_SIZE(ak4104_dapm_routes), 251 .dapm_routes = ak4104_dapm_routes,
252 .num_dapm_routes = ARRAY_SIZE(ak4104_dapm_routes),
253 }
252}; 254};
253 255
254static const struct regmap_config ak4104_regmap = { 256static const struct regmap_config ak4104_regmap = {
diff --git a/sound/soc/codecs/ak4535.c b/sound/soc/codecs/ak4535.c
index 54428c64387b..66cfffde9a12 100644
--- a/sound/soc/codecs/ak4535.c
+++ b/sound/soc/codecs/ak4535.c
@@ -395,12 +395,14 @@ static struct snd_soc_codec_driver soc_codec_dev_ak4535 = {
395 .set_bias_level = ak4535_set_bias_level, 395 .set_bias_level = ak4535_set_bias_level,
396 .suspend_bias_off = true, 396 .suspend_bias_off = true,
397 397
398 .controls = ak4535_snd_controls, 398 .component_driver = {
399 .num_controls = ARRAY_SIZE(ak4535_snd_controls), 399 .controls = ak4535_snd_controls,
400 .dapm_widgets = ak4535_dapm_widgets, 400 .num_controls = ARRAY_SIZE(ak4535_snd_controls),
401 .num_dapm_widgets = ARRAY_SIZE(ak4535_dapm_widgets), 401 .dapm_widgets = ak4535_dapm_widgets,
402 .dapm_routes = ak4535_audio_map, 402 .num_dapm_widgets = ARRAY_SIZE(ak4535_dapm_widgets),
403 .num_dapm_routes = ARRAY_SIZE(ak4535_audio_map), 403 .dapm_routes = ak4535_audio_map,
404 .num_dapm_routes = ARRAY_SIZE(ak4535_audio_map),
405 },
404}; 406};
405 407
406static int ak4535_i2c_probe(struct i2c_client *i2c, 408static int ak4535_i2c_probe(struct i2c_client *i2c,
diff --git a/sound/soc/codecs/ak4554.c b/sound/soc/codecs/ak4554.c
index 298dedc05140..b92c548b9d29 100644
--- a/sound/soc/codecs/ak4554.c
+++ b/sound/soc/codecs/ak4554.c
@@ -65,10 +65,12 @@ static struct snd_soc_dai_driver ak4554_dai = {
65}; 65};
66 66
67static struct snd_soc_codec_driver soc_codec_dev_ak4554 = { 67static struct snd_soc_codec_driver soc_codec_dev_ak4554 = {
68 .dapm_widgets = ak4554_dapm_widgets, 68 .component_driver = {
69 .num_dapm_widgets = ARRAY_SIZE(ak4554_dapm_widgets), 69 .dapm_widgets = ak4554_dapm_widgets,
70 .dapm_routes = ak4554_dapm_routes, 70 .num_dapm_widgets = ARRAY_SIZE(ak4554_dapm_widgets),
71 .num_dapm_routes = ARRAY_SIZE(ak4554_dapm_routes), 71 .dapm_routes = ak4554_dapm_routes,
72 .num_dapm_routes = ARRAY_SIZE(ak4554_dapm_routes),
73 },
72}; 74};
73 75
74static int ak4554_soc_probe(struct platform_device *pdev) 76static int ak4554_soc_probe(struct platform_device *pdev)
diff --git a/sound/soc/codecs/ak4613.c b/sound/soc/codecs/ak4613.c
index 97798d250f08..e819dd8c82fd 100644
--- a/sound/soc/codecs/ak4613.c
+++ b/sound/soc/codecs/ak4613.c
@@ -458,12 +458,14 @@ static struct snd_soc_codec_driver soc_codec_dev_ak4613 = {
458 .suspend = ak4613_suspend, 458 .suspend = ak4613_suspend,
459 .resume = ak4613_resume, 459 .resume = ak4613_resume,
460 .set_bias_level = ak4613_set_bias_level, 460 .set_bias_level = ak4613_set_bias_level,
461 .controls = ak4613_snd_controls, 461 .component_driver = {
462 .num_controls = ARRAY_SIZE(ak4613_snd_controls), 462 .controls = ak4613_snd_controls,
463 .dapm_widgets = ak4613_dapm_widgets, 463 .num_controls = ARRAY_SIZE(ak4613_snd_controls),
464 .num_dapm_widgets = ARRAY_SIZE(ak4613_dapm_widgets), 464 .dapm_widgets = ak4613_dapm_widgets,
465 .dapm_routes = ak4613_intercon, 465 .num_dapm_widgets = ARRAY_SIZE(ak4613_dapm_widgets),
466 .num_dapm_routes = ARRAY_SIZE(ak4613_intercon), 466 .dapm_routes = ak4613_intercon,
467 .num_dapm_routes = ARRAY_SIZE(ak4613_intercon),
468 },
467}; 469};
468 470
469static void ak4613_parse_of(struct ak4613_priv *priv, 471static void ak4613_parse_of(struct ak4613_priv *priv,
diff --git a/sound/soc/codecs/ak4641.c b/sound/soc/codecs/ak4641.c
index b14176f8d884..c91717d08513 100644
--- a/sound/soc/codecs/ak4641.c
+++ b/sound/soc/codecs/ak4641.c
@@ -505,12 +505,14 @@ static struct snd_soc_dai_driver ak4641_dai[] = {
505}; 505};
506 506
507static struct snd_soc_codec_driver soc_codec_dev_ak4641 = { 507static struct snd_soc_codec_driver soc_codec_dev_ak4641 = {
508 .controls = ak4641_snd_controls, 508 .component_driver = {
509 .num_controls = ARRAY_SIZE(ak4641_snd_controls), 509 .controls = ak4641_snd_controls,
510 .dapm_widgets = ak4641_dapm_widgets, 510 .num_controls = ARRAY_SIZE(ak4641_snd_controls),
511 .num_dapm_widgets = ARRAY_SIZE(ak4641_dapm_widgets), 511 .dapm_widgets = ak4641_dapm_widgets,
512 .dapm_routes = ak4641_audio_map, 512 .num_dapm_widgets = ARRAY_SIZE(ak4641_dapm_widgets),
513 .num_dapm_routes = ARRAY_SIZE(ak4641_audio_map), 513 .dapm_routes = ak4641_audio_map,
514 .num_dapm_routes = ARRAY_SIZE(ak4641_audio_map),
515 },
514 .set_bias_level = ak4641_set_bias_level, 516 .set_bias_level = ak4641_set_bias_level,
515 .suspend_bias_off = true, 517 .suspend_bias_off = true,
516}; 518};
diff --git a/sound/soc/codecs/ak4642.c b/sound/soc/codecs/ak4642.c
index cc941d66ec3d..2609f95b7d19 100644
--- a/sound/soc/codecs/ak4642.c
+++ b/sound/soc/codecs/ak4642.c
@@ -555,12 +555,14 @@ static struct snd_soc_codec_driver soc_codec_dev_ak4642 = {
555 .suspend = ak4642_suspend, 555 .suspend = ak4642_suspend,
556 .resume = ak4642_resume, 556 .resume = ak4642_resume,
557 .set_bias_level = ak4642_set_bias_level, 557 .set_bias_level = ak4642_set_bias_level,
558 .controls = ak4642_snd_controls, 558 .component_driver = {
559 .num_controls = ARRAY_SIZE(ak4642_snd_controls), 559 .controls = ak4642_snd_controls,
560 .dapm_widgets = ak4642_dapm_widgets, 560 .num_controls = ARRAY_SIZE(ak4642_snd_controls),
561 .num_dapm_widgets = ARRAY_SIZE(ak4642_dapm_widgets), 561 .dapm_widgets = ak4642_dapm_widgets,
562 .dapm_routes = ak4642_intercon, 562 .num_dapm_widgets = ARRAY_SIZE(ak4642_dapm_widgets),
563 .num_dapm_routes = ARRAY_SIZE(ak4642_intercon), 563 .dapm_routes = ak4642_intercon,
564 .num_dapm_routes = ARRAY_SIZE(ak4642_intercon),
565 },
564}; 566};
565 567
566static const struct regmap_config ak4642_regmap = { 568static const struct regmap_config ak4642_regmap = {
diff --git a/sound/soc/codecs/ak4671.c b/sound/soc/codecs/ak4671.c
index c73a9f6914b6..6088afaabf62 100644
--- a/sound/soc/codecs/ak4671.c
+++ b/sound/soc/codecs/ak4671.c
@@ -612,12 +612,14 @@ static struct snd_soc_dai_driver ak4671_dai = {
612 612
613static struct snd_soc_codec_driver soc_codec_dev_ak4671 = { 613static struct snd_soc_codec_driver soc_codec_dev_ak4671 = {
614 .set_bias_level = ak4671_set_bias_level, 614 .set_bias_level = ak4671_set_bias_level,
615 .controls = ak4671_snd_controls, 615 .component_driver = {
616 .num_controls = ARRAY_SIZE(ak4671_snd_controls), 616 .controls = ak4671_snd_controls,
617 .dapm_widgets = ak4671_dapm_widgets, 617 .num_controls = ARRAY_SIZE(ak4671_snd_controls),
618 .num_dapm_widgets = ARRAY_SIZE(ak4671_dapm_widgets), 618 .dapm_widgets = ak4671_dapm_widgets,
619 .dapm_routes = ak4671_intercon, 619 .num_dapm_widgets = ARRAY_SIZE(ak4671_dapm_widgets),
620 .num_dapm_routes = ARRAY_SIZE(ak4671_intercon), 620 .dapm_routes = ak4671_intercon,
621 .num_dapm_routes = ARRAY_SIZE(ak4671_intercon),
622 },
621}; 623};
622 624
623static const struct regmap_config ak4671_regmap = { 625static const struct regmap_config ak4671_regmap = {
diff --git a/sound/soc/codecs/ak5386.c b/sound/soc/codecs/ak5386.c
index afa95360826d..0ef2df223336 100644
--- a/sound/soc/codecs/ak5386.c
+++ b/sound/soc/codecs/ak5386.c
@@ -74,10 +74,12 @@ static struct snd_soc_codec_driver soc_codec_ak5386 = {
74 .remove = ak5386_soc_remove, 74 .remove = ak5386_soc_remove,
75 .suspend = ak5386_soc_suspend, 75 .suspend = ak5386_soc_suspend,
76 .resume = ak5386_soc_resume, 76 .resume = ak5386_soc_resume,
77 .dapm_widgets = ak5386_dapm_widgets, 77 .component_driver = {
78 .num_dapm_widgets = ARRAY_SIZE(ak5386_dapm_widgets), 78 .dapm_widgets = ak5386_dapm_widgets,
79 .dapm_routes = ak5386_dapm_routes, 79 .num_dapm_widgets = ARRAY_SIZE(ak5386_dapm_widgets),
80 .num_dapm_routes = ARRAY_SIZE(ak5386_dapm_routes), 80 .dapm_routes = ak5386_dapm_routes,
81 .num_dapm_routes = ARRAY_SIZE(ak5386_dapm_routes),
82 },
81}; 83};
82 84
83static int ak5386_set_dai_fmt(struct snd_soc_dai *codec_dai, 85static int ak5386_set_dai_fmt(struct snd_soc_dai *codec_dai,
diff --git a/sound/soc/codecs/alc5632.c b/sound/soc/codecs/alc5632.c
index 4d3ba33eb6f9..adb80d8719bd 100644
--- a/sound/soc/codecs/alc5632.c
+++ b/sound/soc/codecs/alc5632.c
@@ -1072,12 +1072,14 @@ static const struct snd_soc_codec_driver soc_codec_device_alc5632 = {
1072 .set_bias_level = alc5632_set_bias_level, 1072 .set_bias_level = alc5632_set_bias_level,
1073 .suspend_bias_off = true, 1073 .suspend_bias_off = true,
1074 1074
1075 .controls = alc5632_snd_controls, 1075 .component_driver = {
1076 .num_controls = ARRAY_SIZE(alc5632_snd_controls), 1076 .controls = alc5632_snd_controls,
1077 .dapm_widgets = alc5632_dapm_widgets, 1077 .num_controls = ARRAY_SIZE(alc5632_snd_controls),
1078 .num_dapm_widgets = ARRAY_SIZE(alc5632_dapm_widgets), 1078 .dapm_widgets = alc5632_dapm_widgets,
1079 .dapm_routes = alc5632_dapm_routes, 1079 .num_dapm_widgets = ARRAY_SIZE(alc5632_dapm_widgets),
1080 .num_dapm_routes = ARRAY_SIZE(alc5632_dapm_routes), 1080 .dapm_routes = alc5632_dapm_routes,
1081 .num_dapm_routes = ARRAY_SIZE(alc5632_dapm_routes),
1082 },
1081}; 1083};
1082 1084
1083static const struct regmap_config alc5632_regmap = { 1085static const struct regmap_config alc5632_regmap = {
diff --git a/sound/soc/codecs/bt-sco.c b/sound/soc/codecs/bt-sco.c
index 2a8d0ee141d4..8014e697d540 100644
--- a/sound/soc/codecs/bt-sco.c
+++ b/sound/soc/codecs/bt-sco.c
@@ -63,10 +63,12 @@ static struct snd_soc_dai_driver bt_sco_dai[] = {
63}; 63};
64 64
65static struct snd_soc_codec_driver soc_codec_dev_bt_sco = { 65static struct snd_soc_codec_driver soc_codec_dev_bt_sco = {
66 .dapm_widgets = bt_sco_widgets, 66 .component_driver = {
67 .num_dapm_widgets = ARRAY_SIZE(bt_sco_widgets), 67 .dapm_widgets = bt_sco_widgets,
68 .dapm_routes = bt_sco_routes, 68 .num_dapm_widgets = ARRAY_SIZE(bt_sco_widgets),
69 .num_dapm_routes = ARRAY_SIZE(bt_sco_routes), 69 .dapm_routes = bt_sco_routes,
70 .num_dapm_routes = ARRAY_SIZE(bt_sco_routes),
71 },
70}; 72};
71 73
72static int bt_sco_probe(struct platform_device *pdev) 74static int bt_sco_probe(struct platform_device *pdev)
diff --git a/sound/soc/codecs/cq93vc.c b/sound/soc/codecs/cq93vc.c
index 1c895a53001d..7a2d9a2ee427 100644
--- a/sound/soc/codecs/cq93vc.c
+++ b/sound/soc/codecs/cq93vc.c
@@ -131,8 +131,10 @@ static struct regmap *cq93vc_get_regmap(struct device *dev)
131static struct snd_soc_codec_driver soc_codec_dev_cq93vc = { 131static struct snd_soc_codec_driver soc_codec_dev_cq93vc = {
132 .set_bias_level = cq93vc_set_bias_level, 132 .set_bias_level = cq93vc_set_bias_level,
133 .get_regmap = cq93vc_get_regmap, 133 .get_regmap = cq93vc_get_regmap,
134 .controls = cq93vc_snd_controls, 134 .component_driver = {
135 .num_controls = ARRAY_SIZE(cq93vc_snd_controls), 135 .controls = cq93vc_snd_controls,
136 .num_controls = ARRAY_SIZE(cq93vc_snd_controls),
137 },
136}; 138};
137 139
138static int cq93vc_platform_probe(struct platform_device *pdev) 140static int cq93vc_platform_probe(struct platform_device *pdev)
diff --git a/sound/soc/codecs/cs35l32.c b/sound/soc/codecs/cs35l32.c
index 287d13740be4..7e9806206648 100644
--- a/sound/soc/codecs/cs35l32.c
+++ b/sound/soc/codecs/cs35l32.c
@@ -231,13 +231,14 @@ static int cs35l32_codec_set_sysclk(struct snd_soc_codec *codec,
231static const struct snd_soc_codec_driver soc_codec_dev_cs35l32 = { 231static const struct snd_soc_codec_driver soc_codec_dev_cs35l32 = {
232 .set_sysclk = cs35l32_codec_set_sysclk, 232 .set_sysclk = cs35l32_codec_set_sysclk,
233 233
234 .dapm_widgets = cs35l32_dapm_widgets, 234 .component_driver = {
235 .num_dapm_widgets = ARRAY_SIZE(cs35l32_dapm_widgets), 235 .controls = cs35l32_snd_controls,
236 .dapm_routes = cs35l32_audio_map, 236 .num_controls = ARRAY_SIZE(cs35l32_snd_controls),
237 .num_dapm_routes = ARRAY_SIZE(cs35l32_audio_map), 237 .dapm_widgets = cs35l32_dapm_widgets,
238 238 .num_dapm_widgets = ARRAY_SIZE(cs35l32_dapm_widgets),
239 .controls = cs35l32_snd_controls, 239 .dapm_routes = cs35l32_audio_map,
240 .num_controls = ARRAY_SIZE(cs35l32_snd_controls), 240 .num_dapm_routes = ARRAY_SIZE(cs35l32_audio_map),
241 },
241}; 242};
242 243
243/* Current and threshold powerup sequence Pg37 in datasheet */ 244/* Current and threshold powerup sequence Pg37 in datasheet */
diff --git a/sound/soc/codecs/cs35l33.c b/sound/soc/codecs/cs35l33.c
index 6f9c1addcd7f..6df29fa30fb9 100644
--- a/sound/soc/codecs/cs35l33.c
+++ b/sound/soc/codecs/cs35l33.c
@@ -837,13 +837,14 @@ static struct snd_soc_codec_driver soc_codec_dev_cs35l33 = {
837 .set_bias_level = cs35l33_set_bias_level, 837 .set_bias_level = cs35l33_set_bias_level,
838 .set_sysclk = cs35l33_codec_set_sysclk, 838 .set_sysclk = cs35l33_codec_set_sysclk,
839 839
840 .dapm_widgets = cs35l33_dapm_widgets, 840 .component_driver = {
841 .num_dapm_widgets = ARRAY_SIZE(cs35l33_dapm_widgets), 841 .controls = cs35l33_snd_controls,
842 .dapm_routes = cs35l33_audio_map, 842 .num_controls = ARRAY_SIZE(cs35l33_snd_controls),
843 .num_dapm_routes = ARRAY_SIZE(cs35l33_audio_map), 843 .dapm_widgets = cs35l33_dapm_widgets,
844 .controls = cs35l33_snd_controls, 844 .num_dapm_widgets = ARRAY_SIZE(cs35l33_dapm_widgets),
845 .num_controls = ARRAY_SIZE(cs35l33_snd_controls), 845 .dapm_routes = cs35l33_audio_map,
846 846 .num_dapm_routes = ARRAY_SIZE(cs35l33_audio_map),
847 },
847 .idle_bias_off = true, 848 .idle_bias_off = true,
848}; 849};
849 850
diff --git a/sound/soc/codecs/cs4265.c b/sound/soc/codecs/cs4265.c
index 55db19ddc5ff..fd966bb851cb 100644
--- a/sound/soc/codecs/cs4265.c
+++ b/sound/soc/codecs/cs4265.c
@@ -547,13 +547,14 @@ static struct snd_soc_dai_driver cs4265_dai[] = {
547static const struct snd_soc_codec_driver soc_codec_cs4265 = { 547static const struct snd_soc_codec_driver soc_codec_cs4265 = {
548 .set_bias_level = cs4265_set_bias_level, 548 .set_bias_level = cs4265_set_bias_level,
549 549
550 .dapm_widgets = cs4265_dapm_widgets, 550 .component_driver = {
551 .num_dapm_widgets = ARRAY_SIZE(cs4265_dapm_widgets), 551 .controls = cs4265_snd_controls,
552 .dapm_routes = cs4265_audio_map, 552 .num_controls = ARRAY_SIZE(cs4265_snd_controls),
553 .num_dapm_routes = ARRAY_SIZE(cs4265_audio_map), 553 .dapm_widgets = cs4265_dapm_widgets,
554 554 .num_dapm_widgets = ARRAY_SIZE(cs4265_dapm_widgets),
555 .controls = cs4265_snd_controls, 555 .dapm_routes = cs4265_audio_map,
556 .num_controls = ARRAY_SIZE(cs4265_snd_controls), 556 .num_dapm_routes = ARRAY_SIZE(cs4265_audio_map),
557 },
557}; 558};
558 559
559static const struct regmap_config cs4265_regmap = { 560static const struct regmap_config cs4265_regmap = {
diff --git a/sound/soc/codecs/cs4270.c b/sound/soc/codecs/cs4270.c
index e07807d96b68..18baea2f7d65 100644
--- a/sound/soc/codecs/cs4270.c
+++ b/sound/soc/codecs/cs4270.c
@@ -617,12 +617,14 @@ static const struct snd_soc_codec_driver soc_codec_device_cs4270 = {
617 .suspend = cs4270_soc_suspend, 617 .suspend = cs4270_soc_suspend,
618 .resume = cs4270_soc_resume, 618 .resume = cs4270_soc_resume,
619 619
620 .controls = cs4270_snd_controls, 620 .component_driver = {
621 .num_controls = ARRAY_SIZE(cs4270_snd_controls), 621 .controls = cs4270_snd_controls,
622 .dapm_widgets = cs4270_dapm_widgets, 622 .num_controls = ARRAY_SIZE(cs4270_snd_controls),
623 .num_dapm_widgets = ARRAY_SIZE(cs4270_dapm_widgets), 623 .dapm_widgets = cs4270_dapm_widgets,
624 .dapm_routes = cs4270_dapm_routes, 624 .num_dapm_widgets = ARRAY_SIZE(cs4270_dapm_widgets),
625 .num_dapm_routes = ARRAY_SIZE(cs4270_dapm_routes), 625 .dapm_routes = cs4270_dapm_routes,
626 .num_dapm_routes = ARRAY_SIZE(cs4270_dapm_routes),
627 },
626}; 628};
627 629
628/* 630/*
diff --git a/sound/soc/codecs/cs4271.c b/sound/soc/codecs/cs4271.c
index 0c0010b25421..8c0f3b89b5bc 100644
--- a/sound/soc/codecs/cs4271.c
+++ b/sound/soc/codecs/cs4271.c
@@ -645,12 +645,14 @@ static struct snd_soc_codec_driver soc_codec_dev_cs4271 = {
645 .suspend = cs4271_soc_suspend, 645 .suspend = cs4271_soc_suspend,
646 .resume = cs4271_soc_resume, 646 .resume = cs4271_soc_resume,
647 647
648 .controls = cs4271_snd_controls, 648 .component_driver = {
649 .num_controls = ARRAY_SIZE(cs4271_snd_controls), 649 .controls = cs4271_snd_controls,
650 .dapm_widgets = cs4271_dapm_widgets, 650 .num_controls = ARRAY_SIZE(cs4271_snd_controls),
651 .num_dapm_widgets = ARRAY_SIZE(cs4271_dapm_widgets), 651 .dapm_widgets = cs4271_dapm_widgets,
652 .dapm_routes = cs4271_dapm_routes, 652 .num_dapm_widgets = ARRAY_SIZE(cs4271_dapm_widgets),
653 .num_dapm_routes = ARRAY_SIZE(cs4271_dapm_routes), 653 .dapm_routes = cs4271_dapm_routes,
654 .num_dapm_routes = ARRAY_SIZE(cs4271_dapm_routes),
655 },
654}; 656};
655 657
656static int cs4271_common_probe(struct device *dev, 658static int cs4271_common_probe(struct device *dev,
diff --git a/sound/soc/codecs/cs42l51.c b/sound/soc/codecs/cs42l51.c
index 35488f14e237..96cfe38943cd 100644
--- a/sound/soc/codecs/cs42l51.c
+++ b/sound/soc/codecs/cs42l51.c
@@ -507,12 +507,14 @@ static int cs42l51_codec_probe(struct snd_soc_codec *codec)
507static struct snd_soc_codec_driver soc_codec_device_cs42l51 = { 507static struct snd_soc_codec_driver soc_codec_device_cs42l51 = {
508 .probe = cs42l51_codec_probe, 508 .probe = cs42l51_codec_probe,
509 509
510 .controls = cs42l51_snd_controls, 510 .component_driver = {
511 .num_controls = ARRAY_SIZE(cs42l51_snd_controls), 511 .controls = cs42l51_snd_controls,
512 .dapm_widgets = cs42l51_dapm_widgets, 512 .num_controls = ARRAY_SIZE(cs42l51_snd_controls),
513 .num_dapm_widgets = ARRAY_SIZE(cs42l51_dapm_widgets), 513 .dapm_widgets = cs42l51_dapm_widgets,
514 .dapm_routes = cs42l51_routes, 514 .num_dapm_widgets = ARRAY_SIZE(cs42l51_dapm_widgets),
515 .num_dapm_routes = ARRAY_SIZE(cs42l51_routes), 515 .dapm_routes = cs42l51_routes,
516 .num_dapm_routes = ARRAY_SIZE(cs42l51_routes),
517 },
516}; 518};
517 519
518const struct regmap_config cs42l51_regmap = { 520const struct regmap_config cs42l51_regmap = {
diff --git a/sound/soc/codecs/cs42l52.c b/sound/soc/codecs/cs42l52.c
index 47b97fcefb0b..0d9c4a57301b 100644
--- a/sound/soc/codecs/cs42l52.c
+++ b/sound/soc/codecs/cs42l52.c
@@ -1056,13 +1056,14 @@ static const struct snd_soc_codec_driver soc_codec_dev_cs42l52 = {
1056 .set_bias_level = cs42l52_set_bias_level, 1056 .set_bias_level = cs42l52_set_bias_level,
1057 .suspend_bias_off = true, 1057 .suspend_bias_off = true,
1058 1058
1059 .dapm_widgets = cs42l52_dapm_widgets, 1059 .component_driver = {
1060 .num_dapm_widgets = ARRAY_SIZE(cs42l52_dapm_widgets), 1060 .controls = cs42l52_snd_controls,
1061 .dapm_routes = cs42l52_audio_map, 1061 .num_controls = ARRAY_SIZE(cs42l52_snd_controls),
1062 .num_dapm_routes = ARRAY_SIZE(cs42l52_audio_map), 1062 .dapm_widgets = cs42l52_dapm_widgets,
1063 1063 .num_dapm_widgets = ARRAY_SIZE(cs42l52_dapm_widgets),
1064 .controls = cs42l52_snd_controls, 1064 .dapm_routes = cs42l52_audio_map,
1065 .num_controls = ARRAY_SIZE(cs42l52_snd_controls), 1065 .num_dapm_routes = ARRAY_SIZE(cs42l52_audio_map),
1066 },
1066}; 1067};
1067 1068
1068/* Current and threshold powerup sequence Pg37 */ 1069/* Current and threshold powerup sequence Pg37 */
diff --git a/sound/soc/codecs/cs42l56.c b/sound/soc/codecs/cs42l56.c
index eec1ff853b98..54c1768bc818 100644
--- a/sound/soc/codecs/cs42l56.c
+++ b/sound/soc/codecs/cs42l56.c
@@ -1121,13 +1121,14 @@ static const struct snd_soc_codec_driver soc_codec_dev_cs42l56 = {
1121 .set_bias_level = cs42l56_set_bias_level, 1121 .set_bias_level = cs42l56_set_bias_level,
1122 .suspend_bias_off = true, 1122 .suspend_bias_off = true,
1123 1123
1124 .dapm_widgets = cs42l56_dapm_widgets, 1124 .component_driver = {
1125 .num_dapm_widgets = ARRAY_SIZE(cs42l56_dapm_widgets), 1125 .controls = cs42l56_snd_controls,
1126 .dapm_routes = cs42l56_audio_map, 1126 .num_controls = ARRAY_SIZE(cs42l56_snd_controls),
1127 .num_dapm_routes = ARRAY_SIZE(cs42l56_audio_map), 1127 .dapm_widgets = cs42l56_dapm_widgets,
1128 1128 .num_dapm_widgets = ARRAY_SIZE(cs42l56_dapm_widgets),
1129 .controls = cs42l56_snd_controls, 1129 .dapm_routes = cs42l56_audio_map,
1130 .num_controls = ARRAY_SIZE(cs42l56_snd_controls), 1130 .num_dapm_routes = ARRAY_SIZE(cs42l56_audio_map),
1131 },
1131}; 1132};
1132 1133
1133static const struct regmap_config cs42l56_regmap = { 1134static const struct regmap_config cs42l56_regmap = {
diff --git a/sound/soc/codecs/cs42l73.c b/sound/soc/codecs/cs42l73.c
index 42a8fd4e1f9b..01b573ab7036 100644
--- a/sound/soc/codecs/cs42l73.c
+++ b/sound/soc/codecs/cs42l73.c
@@ -1257,13 +1257,14 @@ static const struct snd_soc_codec_driver soc_codec_dev_cs42l73 = {
1257 .set_bias_level = cs42l73_set_bias_level, 1257 .set_bias_level = cs42l73_set_bias_level,
1258 .suspend_bias_off = true, 1258 .suspend_bias_off = true,
1259 1259
1260 .dapm_widgets = cs42l73_dapm_widgets, 1260 .component_driver = {
1261 .num_dapm_widgets = ARRAY_SIZE(cs42l73_dapm_widgets), 1261 .controls = cs42l73_snd_controls,
1262 .dapm_routes = cs42l73_audio_map, 1262 .num_controls = ARRAY_SIZE(cs42l73_snd_controls),
1263 .num_dapm_routes = ARRAY_SIZE(cs42l73_audio_map), 1263 .dapm_widgets = cs42l73_dapm_widgets,
1264 1264 .num_dapm_widgets = ARRAY_SIZE(cs42l73_dapm_widgets),
1265 .controls = cs42l73_snd_controls, 1265 .dapm_routes = cs42l73_audio_map,
1266 .num_controls = ARRAY_SIZE(cs42l73_snd_controls), 1266 .num_dapm_routes = ARRAY_SIZE(cs42l73_audio_map),
1267 },
1267}; 1268};
1268 1269
1269static const struct regmap_config cs42l73_regmap = { 1270static const struct regmap_config cs42l73_regmap = {
diff --git a/sound/soc/codecs/cs42xx8.c b/sound/soc/codecs/cs42xx8.c
index 1179101b2b05..b4d87379d2bc 100644
--- a/sound/soc/codecs/cs42xx8.c
+++ b/sound/soc/codecs/cs42xx8.c
@@ -411,12 +411,14 @@ static const struct snd_soc_codec_driver cs42xx8_driver = {
411 .probe = cs42xx8_codec_probe, 411 .probe = cs42xx8_codec_probe,
412 .idle_bias_off = true, 412 .idle_bias_off = true,
413 413
414 .controls = cs42xx8_snd_controls, 414 .component_driver = {
415 .num_controls = ARRAY_SIZE(cs42xx8_snd_controls), 415 .controls = cs42xx8_snd_controls,
416 .dapm_widgets = cs42xx8_dapm_widgets, 416 .num_controls = ARRAY_SIZE(cs42xx8_snd_controls),
417 .num_dapm_widgets = ARRAY_SIZE(cs42xx8_dapm_widgets), 417 .dapm_widgets = cs42xx8_dapm_widgets,
418 .dapm_routes = cs42xx8_dapm_routes, 418 .num_dapm_widgets = ARRAY_SIZE(cs42xx8_dapm_widgets),
419 .num_dapm_routes = ARRAY_SIZE(cs42xx8_dapm_routes), 419 .dapm_routes = cs42xx8_dapm_routes,
420 .num_dapm_routes = ARRAY_SIZE(cs42xx8_dapm_routes),
421 },
420}; 422};
421 423
422const struct cs42xx8_driver_data cs42448_data = { 424const struct cs42xx8_driver_data cs42448_data = {
diff --git a/sound/soc/codecs/cs4349.c b/sound/soc/codecs/cs4349.c
index 0ac8fc5ed4ae..231ca935cdf3 100644
--- a/sound/soc/codecs/cs4349.c
+++ b/sound/soc/codecs/cs4349.c
@@ -256,13 +256,14 @@ static struct snd_soc_dai_driver cs4349_dai = {
256}; 256};
257 257
258static struct snd_soc_codec_driver soc_codec_dev_cs4349 = { 258static struct snd_soc_codec_driver soc_codec_dev_cs4349 = {
259 .controls = cs4349_snd_controls, 259 .component_driver = {
260 .num_controls = ARRAY_SIZE(cs4349_snd_controls), 260 .controls = cs4349_snd_controls,
261 261 .num_controls = ARRAY_SIZE(cs4349_snd_controls),
262 .dapm_widgets = cs4349_dapm_widgets, 262 .dapm_widgets = cs4349_dapm_widgets,
263 .num_dapm_widgets = ARRAY_SIZE(cs4349_dapm_widgets), 263 .num_dapm_widgets = ARRAY_SIZE(cs4349_dapm_widgets),
264 .dapm_routes = cs4349_routes, 264 .dapm_routes = cs4349_routes,
265 .num_dapm_routes = ARRAY_SIZE(cs4349_routes), 265 .num_dapm_routes = ARRAY_SIZE(cs4349_routes),
266 },
266}; 267};
267 268
268static const struct regmap_config cs4349_regmap = { 269static const struct regmap_config cs4349_regmap = {
diff --git a/sound/soc/codecs/cs47l24.c b/sound/soc/codecs/cs47l24.c
index 954a4f5d3338..779a7bfff1c3 100644
--- a/sound/soc/codecs/cs47l24.c
+++ b/sound/soc/codecs/cs47l24.c
@@ -1190,12 +1190,14 @@ static struct snd_soc_codec_driver soc_codec_dev_cs47l24 = {
1190 .set_sysclk = arizona_set_sysclk, 1190 .set_sysclk = arizona_set_sysclk,
1191 .set_pll = cs47l24_set_fll, 1191 .set_pll = cs47l24_set_fll,
1192 1192
1193 .controls = cs47l24_snd_controls, 1193 .component_driver = {
1194 .num_controls = ARRAY_SIZE(cs47l24_snd_controls), 1194 .controls = cs47l24_snd_controls,
1195 .dapm_widgets = cs47l24_dapm_widgets, 1195 .num_controls = ARRAY_SIZE(cs47l24_snd_controls),
1196 .num_dapm_widgets = ARRAY_SIZE(cs47l24_dapm_widgets), 1196 .dapm_widgets = cs47l24_dapm_widgets,
1197 .dapm_routes = cs47l24_dapm_routes, 1197 .num_dapm_widgets = ARRAY_SIZE(cs47l24_dapm_widgets),
1198 .num_dapm_routes = ARRAY_SIZE(cs47l24_dapm_routes), 1198 .dapm_routes = cs47l24_dapm_routes,
1199 .num_dapm_routes = ARRAY_SIZE(cs47l24_dapm_routes),
1200 },
1199}; 1201};
1200 1202
1201static struct snd_compr_ops cs47l24_compr_ops = { 1203static struct snd_compr_ops cs47l24_compr_ops = {
diff --git a/sound/soc/codecs/cs53l30.c b/sound/soc/codecs/cs53l30.c
index 2c0d9c430a8c..e244e08b7da1 100644
--- a/sound/soc/codecs/cs53l30.c
+++ b/sound/soc/codecs/cs53l30.c
@@ -897,13 +897,14 @@ static struct snd_soc_codec_driver cs53l30_driver = {
897 .set_bias_level = cs53l30_set_bias_level, 897 .set_bias_level = cs53l30_set_bias_level,
898 .idle_bias_off = true, 898 .idle_bias_off = true,
899 899
900 .dapm_widgets = cs53l30_dapm_widgets, 900 .component_driver = {
901 .num_dapm_widgets = ARRAY_SIZE(cs53l30_dapm_widgets), 901 .controls = cs53l30_snd_controls,
902 .dapm_routes = cs53l30_dapm_routes, 902 .num_controls = ARRAY_SIZE(cs53l30_snd_controls),
903 .num_dapm_routes = ARRAY_SIZE(cs53l30_dapm_routes), 903 .dapm_widgets = cs53l30_dapm_widgets,
904 904 .num_dapm_widgets = ARRAY_SIZE(cs53l30_dapm_widgets),
905 .controls = cs53l30_snd_controls, 905 .dapm_routes = cs53l30_dapm_routes,
906 .num_controls = ARRAY_SIZE(cs53l30_snd_controls), 906 .num_dapm_routes = ARRAY_SIZE(cs53l30_dapm_routes),
907 },
907}; 908};
908 909
909static struct regmap_config cs53l30_regmap = { 910static struct regmap_config cs53l30_regmap = {
diff --git a/sound/soc/codecs/cx20442.c b/sound/soc/codecs/cx20442.c
index fb3885fe0afb..2c12471e42a6 100644
--- a/sound/soc/codecs/cx20442.c
+++ b/sound/soc/codecs/cx20442.c
@@ -407,10 +407,12 @@ static struct snd_soc_codec_driver cx20442_codec_dev = {
407 .reg_word_size = sizeof(u8), 407 .reg_word_size = sizeof(u8),
408 .read = cx20442_read_reg_cache, 408 .read = cx20442_read_reg_cache,
409 .write = cx20442_write, 409 .write = cx20442_write,
410 .dapm_widgets = cx20442_dapm_widgets, 410 .component_driver = {
411 .num_dapm_widgets = ARRAY_SIZE(cx20442_dapm_widgets), 411 .dapm_widgets = cx20442_dapm_widgets,
412 .dapm_routes = cx20442_audio_map, 412 .num_dapm_widgets = ARRAY_SIZE(cx20442_dapm_widgets),
413 .num_dapm_routes = ARRAY_SIZE(cx20442_audio_map), 413 .dapm_routes = cx20442_audio_map,
414 .num_dapm_routes = ARRAY_SIZE(cx20442_audio_map),
415 },
414}; 416};
415 417
416static int cx20442_platform_probe(struct platform_device *pdev) 418static int cx20442_platform_probe(struct platform_device *pdev)
diff --git a/sound/soc/codecs/da7210.c b/sound/soc/codecs/da7210.c
index af23a61b7b28..17053dfc94cf 100644
--- a/sound/soc/codecs/da7210.c
+++ b/sound/soc/codecs/da7210.c
@@ -1167,13 +1167,14 @@ static int da7210_probe(struct snd_soc_codec *codec)
1167static struct snd_soc_codec_driver soc_codec_dev_da7210 = { 1167static struct snd_soc_codec_driver soc_codec_dev_da7210 = {
1168 .probe = da7210_probe, 1168 .probe = da7210_probe,
1169 1169
1170 .controls = da7210_snd_controls, 1170 .component_driver = {
1171 .num_controls = ARRAY_SIZE(da7210_snd_controls), 1171 .controls = da7210_snd_controls,
1172 1172 .num_controls = ARRAY_SIZE(da7210_snd_controls),
1173 .dapm_widgets = da7210_dapm_widgets, 1173 .dapm_widgets = da7210_dapm_widgets,
1174 .num_dapm_widgets = ARRAY_SIZE(da7210_dapm_widgets), 1174 .num_dapm_widgets = ARRAY_SIZE(da7210_dapm_widgets),
1175 .dapm_routes = da7210_audio_map, 1175 .dapm_routes = da7210_audio_map,
1176 .num_dapm_routes = ARRAY_SIZE(da7210_audio_map), 1176 .num_dapm_routes = ARRAY_SIZE(da7210_audio_map),
1177 },
1177}; 1178};
1178 1179
1179#if IS_ENABLED(CONFIG_I2C) 1180#if IS_ENABLED(CONFIG_I2C)
diff --git a/sound/soc/codecs/da7213.c b/sound/soc/codecs/da7213.c
index e5527bc570ae..7cfb5da5378d 100644
--- a/sound/soc/codecs/da7213.c
+++ b/sound/soc/codecs/da7213.c
@@ -1740,13 +1740,14 @@ static struct snd_soc_codec_driver soc_codec_dev_da7213 = {
1740 .probe = da7213_probe, 1740 .probe = da7213_probe,
1741 .set_bias_level = da7213_set_bias_level, 1741 .set_bias_level = da7213_set_bias_level,
1742 1742
1743 .controls = da7213_snd_controls, 1743 .component_driver = {
1744 .num_controls = ARRAY_SIZE(da7213_snd_controls), 1744 .controls = da7213_snd_controls,
1745 1745 .num_controls = ARRAY_SIZE(da7213_snd_controls),
1746 .dapm_widgets = da7213_dapm_widgets, 1746 .dapm_widgets = da7213_dapm_widgets,
1747 .num_dapm_widgets = ARRAY_SIZE(da7213_dapm_widgets), 1747 .num_dapm_widgets = ARRAY_SIZE(da7213_dapm_widgets),
1748 .dapm_routes = da7213_audio_map, 1748 .dapm_routes = da7213_audio_map,
1749 .num_dapm_routes = ARRAY_SIZE(da7213_audio_map), 1749 .num_dapm_routes = ARRAY_SIZE(da7213_audio_map),
1750 },
1750}; 1751};
1751 1752
1752static const struct regmap_config da7213_regmap_config = { 1753static const struct regmap_config da7213_regmap_config = {
diff --git a/sound/soc/codecs/da7218.c b/sound/soc/codecs/da7218.c
index 99ce23e113bf..dcdda6c15cf7 100644
--- a/sound/soc/codecs/da7218.c
+++ b/sound/soc/codecs/da7218.c
@@ -3045,13 +3045,14 @@ static struct snd_soc_codec_driver soc_codec_dev_da7218 = {
3045 .resume = da7218_resume, 3045 .resume = da7218_resume,
3046 .set_bias_level = da7218_set_bias_level, 3046 .set_bias_level = da7218_set_bias_level,
3047 3047
3048 .controls = da7218_snd_controls, 3048 .component_driver = {
3049 .num_controls = ARRAY_SIZE(da7218_snd_controls), 3049 .controls = da7218_snd_controls,
3050 3050 .num_controls = ARRAY_SIZE(da7218_snd_controls),
3051 .dapm_widgets = da7218_dapm_widgets, 3051 .dapm_widgets = da7218_dapm_widgets,
3052 .num_dapm_widgets = ARRAY_SIZE(da7218_dapm_widgets), 3052 .num_dapm_widgets = ARRAY_SIZE(da7218_dapm_widgets),
3053 .dapm_routes = da7218_audio_map, 3053 .dapm_routes = da7218_audio_map,
3054 .num_dapm_routes = ARRAY_SIZE(da7218_audio_map), 3054 .num_dapm_routes = ARRAY_SIZE(da7218_audio_map),
3055 },
3055}; 3056};
3056 3057
3057 3058
diff --git a/sound/soc/codecs/da7219.c b/sound/soc/codecs/da7219.c
index 50ea94317cb3..b6411bd3c4f2 100644
--- a/sound/soc/codecs/da7219.c
+++ b/sound/soc/codecs/da7219.c
@@ -1767,13 +1767,14 @@ static struct snd_soc_codec_driver soc_codec_dev_da7219 = {
1767 .resume = da7219_resume, 1767 .resume = da7219_resume,
1768 .set_bias_level = da7219_set_bias_level, 1768 .set_bias_level = da7219_set_bias_level,
1769 1769
1770 .controls = da7219_snd_controls, 1770 .component_driver = {
1771 .num_controls = ARRAY_SIZE(da7219_snd_controls), 1771 .controls = da7219_snd_controls,
1772 1772 .num_controls = ARRAY_SIZE(da7219_snd_controls),
1773 .dapm_widgets = da7219_dapm_widgets, 1773 .dapm_widgets = da7219_dapm_widgets,
1774 .num_dapm_widgets = ARRAY_SIZE(da7219_dapm_widgets), 1774 .num_dapm_widgets = ARRAY_SIZE(da7219_dapm_widgets),
1775 .dapm_routes = da7219_audio_map, 1775 .dapm_routes = da7219_audio_map,
1776 .num_dapm_routes = ARRAY_SIZE(da7219_audio_map), 1776 .num_dapm_routes = ARRAY_SIZE(da7219_audio_map),
1777 },
1777}; 1778};
1778 1779
1779 1780
diff --git a/sound/soc/codecs/da732x.c b/sound/soc/codecs/da732x.c
index 461506a4ca6a..c1cc1c1c28f2 100644
--- a/sound/soc/codecs/da732x.c
+++ b/sound/soc/codecs/da732x.c
@@ -1501,12 +1501,14 @@ static int da732x_set_bias_level(struct snd_soc_codec *codec,
1501 1501
1502static struct snd_soc_codec_driver soc_codec_dev_da732x = { 1502static struct snd_soc_codec_driver soc_codec_dev_da732x = {
1503 .set_bias_level = da732x_set_bias_level, 1503 .set_bias_level = da732x_set_bias_level,
1504 .controls = da732x_snd_controls, 1504 .component_driver = {
1505 .num_controls = ARRAY_SIZE(da732x_snd_controls), 1505 .controls = da732x_snd_controls,
1506 .dapm_widgets = da732x_dapm_widgets, 1506 .num_controls = ARRAY_SIZE(da732x_snd_controls),
1507 .num_dapm_widgets = ARRAY_SIZE(da732x_dapm_widgets), 1507 .dapm_widgets = da732x_dapm_widgets,
1508 .dapm_routes = da732x_dapm_routes, 1508 .num_dapm_widgets = ARRAY_SIZE(da732x_dapm_widgets),
1509 .num_dapm_routes = ARRAY_SIZE(da732x_dapm_routes), 1509 .dapm_routes = da732x_dapm_routes,
1510 .num_dapm_routes = ARRAY_SIZE(da732x_dapm_routes),
1511 },
1510 .set_pll = da732x_set_dai_pll, 1512 .set_pll = da732x_set_dai_pll,
1511}; 1513};
1512 1514
diff --git a/sound/soc/codecs/da9055.c b/sound/soc/codecs/da9055.c
index 0b2ede8db978..4efb5f897a0c 100644
--- a/sound/soc/codecs/da9055.c
+++ b/sound/soc/codecs/da9055.c
@@ -1455,13 +1455,14 @@ static struct snd_soc_codec_driver soc_codec_dev_da9055 = {
1455 .probe = da9055_probe, 1455 .probe = da9055_probe,
1456 .set_bias_level = da9055_set_bias_level, 1456 .set_bias_level = da9055_set_bias_level,
1457 1457
1458 .controls = da9055_snd_controls, 1458 .component_driver = {
1459 .num_controls = ARRAY_SIZE(da9055_snd_controls), 1459 .controls = da9055_snd_controls,
1460 1460 .num_controls = ARRAY_SIZE(da9055_snd_controls),
1461 .dapm_widgets = da9055_dapm_widgets, 1461 .dapm_widgets = da9055_dapm_widgets,
1462 .num_dapm_widgets = ARRAY_SIZE(da9055_dapm_widgets), 1462 .num_dapm_widgets = ARRAY_SIZE(da9055_dapm_widgets),
1463 .dapm_routes = da9055_audio_map, 1463 .dapm_routes = da9055_audio_map,
1464 .num_dapm_routes = ARRAY_SIZE(da9055_audio_map), 1464 .num_dapm_routes = ARRAY_SIZE(da9055_audio_map),
1465 },
1465}; 1466};
1466 1467
1467static const struct regmap_config da9055_regmap_config = { 1468static const struct regmap_config da9055_regmap_config = {
diff --git a/sound/soc/codecs/dmic.c b/sound/soc/codecs/dmic.c
index fde53251c047..c82b9dc41e9a 100644
--- a/sound/soc/codecs/dmic.c
+++ b/sound/soc/codecs/dmic.c
@@ -51,10 +51,12 @@ static const struct snd_soc_dapm_route intercon[] = {
51}; 51};
52 52
53static struct snd_soc_codec_driver soc_dmic = { 53static struct snd_soc_codec_driver soc_dmic = {
54 .dapm_widgets = dmic_dapm_widgets, 54 .component_driver = {
55 .num_dapm_widgets = ARRAY_SIZE(dmic_dapm_widgets), 55 .dapm_widgets = dmic_dapm_widgets,
56 .dapm_routes = intercon, 56 .num_dapm_widgets = ARRAY_SIZE(dmic_dapm_widgets),
57 .num_dapm_routes = ARRAY_SIZE(intercon), 57 .dapm_routes = intercon,
58 .num_dapm_routes = ARRAY_SIZE(intercon),
59 },
58}; 60};
59 61
60static int dmic_dev_probe(struct platform_device *pdev) 62static int dmic_dev_probe(struct platform_device *pdev)
diff --git a/sound/soc/codecs/es8328.c b/sound/soc/codecs/es8328.c
index 2086d7107622..37722194b107 100644
--- a/sound/soc/codecs/es8328.c
+++ b/sound/soc/codecs/es8328.c
@@ -823,12 +823,14 @@ static struct snd_soc_codec_driver es8328_codec_driver = {
823 .set_bias_level = es8328_set_bias_level, 823 .set_bias_level = es8328_set_bias_level,
824 .suspend_bias_off = true, 824 .suspend_bias_off = true,
825 825
826 .controls = es8328_snd_controls, 826 .component_driver = {
827 .num_controls = ARRAY_SIZE(es8328_snd_controls), 827 .controls = es8328_snd_controls,
828 .dapm_widgets = es8328_dapm_widgets, 828 .num_controls = ARRAY_SIZE(es8328_snd_controls),
829 .num_dapm_widgets = ARRAY_SIZE(es8328_dapm_widgets), 829 .dapm_widgets = es8328_dapm_widgets,
830 .dapm_routes = es8328_dapm_routes, 830 .num_dapm_widgets = ARRAY_SIZE(es8328_dapm_widgets),
831 .num_dapm_routes = ARRAY_SIZE(es8328_dapm_routes), 831 .dapm_routes = es8328_dapm_routes,
832 .num_dapm_routes = ARRAY_SIZE(es8328_dapm_routes),
833 },
832}; 834};
833 835
834int es8328_probe(struct device *dev, struct regmap *regmap) 836int es8328_probe(struct device *dev, struct regmap *regmap)
diff --git a/sound/soc/codecs/gtm601.c b/sound/soc/codecs/gtm601.c
index 0b80052996d3..926b1a4e37d4 100644
--- a/sound/soc/codecs/gtm601.c
+++ b/sound/soc/codecs/gtm601.c
@@ -52,10 +52,12 @@ static struct snd_soc_dai_driver gtm601_dai = {
52}; 52};
53 53
54static const struct snd_soc_codec_driver soc_codec_dev_gtm601 = { 54static const struct snd_soc_codec_driver soc_codec_dev_gtm601 = {
55 .dapm_widgets = gtm601_dapm_widgets, 55 .component_driver = {
56 .num_dapm_widgets = ARRAY_SIZE(gtm601_dapm_widgets), 56 .dapm_widgets = gtm601_dapm_widgets,
57 .dapm_routes = gtm601_dapm_routes, 57 .num_dapm_widgets = ARRAY_SIZE(gtm601_dapm_widgets),
58 .num_dapm_routes = ARRAY_SIZE(gtm601_dapm_routes), 58 .dapm_routes = gtm601_dapm_routes,
59 .num_dapm_routes = ARRAY_SIZE(gtm601_dapm_routes),
60 },
59}; 61};
60 62
61static int gtm601_platform_probe(struct platform_device *pdev) 63static int gtm601_platform_probe(struct platform_device *pdev)
diff --git a/sound/soc/codecs/hdmi-codec.c b/sound/soc/codecs/hdmi-codec.c
index f27d115626db..b904492d7744 100644
--- a/sound/soc/codecs/hdmi-codec.c
+++ b/sound/soc/codecs/hdmi-codec.c
@@ -24,6 +24,15 @@
24 24
25#include <drm/drm_crtc.h> /* This is only to get MAX_ELD_BYTES */ 25#include <drm/drm_crtc.h> /* This is only to get MAX_ELD_BYTES */
26 26
27struct hdmi_device {
28 struct device *dev;
29 struct list_head list;
30 int cnt;
31};
32#define pos_to_hdmi_device(pos) container_of((pos), struct hdmi_device, list)
33LIST_HEAD(hdmi_device_list);
34
35#define DAI_NAME_SIZE 16
27struct hdmi_codec_priv { 36struct hdmi_codec_priv {
28 struct hdmi_codec_pdata hcd; 37 struct hdmi_codec_pdata hcd;
29 struct snd_soc_dai_driver *daidrv; 38 struct snd_soc_dai_driver *daidrv;
@@ -320,7 +329,6 @@ static const struct snd_soc_dai_ops hdmi_dai_ops = {
320 SNDRV_PCM_FMTBIT_S32_LE | SNDRV_PCM_FMTBIT_S32_BE) 329 SNDRV_PCM_FMTBIT_S32_LE | SNDRV_PCM_FMTBIT_S32_BE)
321 330
322static struct snd_soc_dai_driver hdmi_i2s_dai = { 331static struct snd_soc_dai_driver hdmi_i2s_dai = {
323 .name = "i2s-hifi",
324 .id = DAI_ID_I2S, 332 .id = DAI_ID_I2S,
325 .playback = { 333 .playback = {
326 .stream_name = "Playback", 334 .stream_name = "Playback",
@@ -334,7 +342,6 @@ static struct snd_soc_dai_driver hdmi_i2s_dai = {
334}; 342};
335 343
336static const struct snd_soc_dai_driver hdmi_spdif_dai = { 344static const struct snd_soc_dai_driver hdmi_spdif_dai = {
337 .name = "spdif-hifi",
338 .id = DAI_ID_SPDIF, 345 .id = DAI_ID_SPDIF,
339 .playback = { 346 .playback = {
340 .stream_name = "Playback", 347 .stream_name = "Playback",
@@ -346,13 +353,37 @@ static const struct snd_soc_dai_driver hdmi_spdif_dai = {
346 .ops = &hdmi_dai_ops, 353 .ops = &hdmi_dai_ops,
347}; 354};
348 355
356static char hdmi_dai_name[][DAI_NAME_SIZE] = {
357 "hdmi-hifi.0",
358 "hdmi-hifi.1",
359 "hdmi-hifi.2",
360 "hdmi-hifi.3",
361};
362
363static int hdmi_of_xlate_dai_name(struct snd_soc_component *component,
364 struct of_phandle_args *args,
365 const char **dai_name)
366{
367 int id = args->args[0];
368
369 if (id < ARRAY_SIZE(hdmi_dai_name)) {
370 *dai_name = hdmi_dai_name[id];
371 return 0;
372 }
373
374 return -EAGAIN;
375}
376
349static struct snd_soc_codec_driver hdmi_codec = { 377static struct snd_soc_codec_driver hdmi_codec = {
350 .controls = hdmi_controls, 378 .component_driver = {
351 .num_controls = ARRAY_SIZE(hdmi_controls), 379 .controls = hdmi_controls,
352 .dapm_widgets = hdmi_widgets, 380 .num_controls = ARRAY_SIZE(hdmi_controls),
353 .num_dapm_widgets = ARRAY_SIZE(hdmi_widgets), 381 .dapm_widgets = hdmi_widgets,
354 .dapm_routes = hdmi_routes, 382 .num_dapm_widgets = ARRAY_SIZE(hdmi_widgets),
355 .num_dapm_routes = ARRAY_SIZE(hdmi_routes), 383 .dapm_routes = hdmi_routes,
384 .num_dapm_routes = ARRAY_SIZE(hdmi_routes),
385 .of_xlate_dai_name = hdmi_of_xlate_dai_name,
386 },
356}; 387};
357 388
358static int hdmi_codec_probe(struct platform_device *pdev) 389static int hdmi_codec_probe(struct platform_device *pdev)
@@ -360,6 +391,8 @@ static int hdmi_codec_probe(struct platform_device *pdev)
360 struct hdmi_codec_pdata *hcd = pdev->dev.platform_data; 391 struct hdmi_codec_pdata *hcd = pdev->dev.platform_data;
361 struct device *dev = &pdev->dev; 392 struct device *dev = &pdev->dev;
362 struct hdmi_codec_priv *hcp; 393 struct hdmi_codec_priv *hcp;
394 struct hdmi_device *hd;
395 struct list_head *pos;
363 int dai_count, i = 0; 396 int dai_count, i = 0;
364 int ret; 397 int ret;
365 398
@@ -381,6 +414,31 @@ static int hdmi_codec_probe(struct platform_device *pdev)
381 if (!hcp) 414 if (!hcp)
382 return -ENOMEM; 415 return -ENOMEM;
383 416
417 hd = NULL;
418 list_for_each(pos, &hdmi_device_list) {
419 struct hdmi_device *tmp = pos_to_hdmi_device(pos);
420
421 if (tmp->dev == dev->parent) {
422 hd = tmp;
423 break;
424 }
425 }
426
427 if (!hd) {
428 hd = devm_kzalloc(dev, sizeof(*hd), GFP_KERNEL);
429 if (!hd)
430 return -ENOMEM;
431
432 hd->dev = dev->parent;
433
434 list_add_tail(&hd->list, &hdmi_device_list);
435 }
436
437 if (hd->cnt >= ARRAY_SIZE(hdmi_dai_name)) {
438 dev_err(dev, "too many hdmi codec are deteced\n");
439 return -EINVAL;
440 }
441
384 hcp->hcd = *hcd; 442 hcp->hcd = *hcd;
385 mutex_init(&hcp->current_stream_lock); 443 mutex_init(&hcp->current_stream_lock);
386 444
@@ -393,11 +451,14 @@ static int hdmi_codec_probe(struct platform_device *pdev)
393 hcp->daidrv[i] = hdmi_i2s_dai; 451 hcp->daidrv[i] = hdmi_i2s_dai;
394 hcp->daidrv[i].playback.channels_max = 452 hcp->daidrv[i].playback.channels_max =
395 hcd->max_i2s_channels; 453 hcd->max_i2s_channels;
454 hcp->daidrv[i].name = hdmi_dai_name[hd->cnt++];
396 i++; 455 i++;
397 } 456 }
398 457
399 if (hcd->spdif) 458 if (hcd->spdif) {
400 hcp->daidrv[i] = hdmi_spdif_dai; 459 hcp->daidrv[i] = hdmi_spdif_dai;
460 hcp->daidrv[i].name = hdmi_dai_name[hd->cnt++];
461 }
401 462
402 ret = snd_soc_register_codec(dev, &hdmi_codec, hcp->daidrv, 463 ret = snd_soc_register_codec(dev, &hdmi_codec, hcp->daidrv,
403 dai_count); 464 dai_count);
diff --git a/sound/soc/codecs/inno_rk3036.c b/sound/soc/codecs/inno_rk3036.c
index 9b6e8840a1b5..b918ba5c8ce5 100644
--- a/sound/soc/codecs/inno_rk3036.c
+++ b/sound/soc/codecs/inno_rk3036.c
@@ -380,12 +380,14 @@ static struct snd_soc_codec_driver rk3036_codec_driver = {
380 .probe = rk3036_codec_probe, 380 .probe = rk3036_codec_probe,
381 .remove = rk3036_codec_remove, 381 .remove = rk3036_codec_remove,
382 .set_bias_level = rk3036_codec_set_bias_level, 382 .set_bias_level = rk3036_codec_set_bias_level,
383 .controls = rk3036_codec_dapm_controls, 383 .component_driver = {
384 .num_controls = ARRAY_SIZE(rk3036_codec_dapm_controls), 384 .controls = rk3036_codec_dapm_controls,
385 .dapm_routes = rk3036_codec_dapm_routes, 385 .num_controls = ARRAY_SIZE(rk3036_codec_dapm_controls),
386 .num_dapm_routes = ARRAY_SIZE(rk3036_codec_dapm_routes), 386 .dapm_routes = rk3036_codec_dapm_routes,
387 .dapm_widgets = rk3036_codec_dapm_widgets, 387 .num_dapm_routes = ARRAY_SIZE(rk3036_codec_dapm_routes),
388 .num_dapm_widgets = ARRAY_SIZE(rk3036_codec_dapm_widgets), 388 .dapm_widgets = rk3036_codec_dapm_widgets,
389 .num_dapm_widgets = ARRAY_SIZE(rk3036_codec_dapm_widgets),
390 },
389}; 391};
390 392
391static const struct regmap_config rk3036_codec_regmap_config = { 393static const struct regmap_config rk3036_codec_regmap_config = {
diff --git a/sound/soc/codecs/isabelle.c b/sound/soc/codecs/isabelle.c
index be448373d39a..a4b0eded984a 100644
--- a/sound/soc/codecs/isabelle.c
+++ b/sound/soc/codecs/isabelle.c
@@ -1089,12 +1089,14 @@ static struct snd_soc_dai_driver isabelle_dai[] = {
1089 1089
1090static struct snd_soc_codec_driver soc_codec_dev_isabelle = { 1090static struct snd_soc_codec_driver soc_codec_dev_isabelle = {
1091 .set_bias_level = isabelle_set_bias_level, 1091 .set_bias_level = isabelle_set_bias_level,
1092 .controls = isabelle_snd_controls, 1092 .component_driver = {
1093 .num_controls = ARRAY_SIZE(isabelle_snd_controls), 1093 .controls = isabelle_snd_controls,
1094 .dapm_widgets = isabelle_dapm_widgets, 1094 .num_controls = ARRAY_SIZE(isabelle_snd_controls),
1095 .num_dapm_widgets = ARRAY_SIZE(isabelle_dapm_widgets), 1095 .dapm_widgets = isabelle_dapm_widgets,
1096 .dapm_routes = isabelle_intercon, 1096 .num_dapm_widgets = ARRAY_SIZE(isabelle_dapm_widgets),
1097 .num_dapm_routes = ARRAY_SIZE(isabelle_intercon), 1097 .dapm_routes = isabelle_intercon,
1098 .num_dapm_routes = ARRAY_SIZE(isabelle_intercon),
1099 },
1098 .idle_bias_off = true, 1100 .idle_bias_off = true,
1099}; 1101};
1100 1102
diff --git a/sound/soc/codecs/jz4740.c b/sound/soc/codecs/jz4740.c
index 1f5ab99956ed..0290fab383da 100644
--- a/sound/soc/codecs/jz4740.c
+++ b/sound/soc/codecs/jz4740.c
@@ -298,12 +298,14 @@ static struct snd_soc_codec_driver soc_codec_dev_jz4740_codec = {
298 .set_bias_level = jz4740_codec_set_bias_level, 298 .set_bias_level = jz4740_codec_set_bias_level,
299 .suspend_bias_off = true, 299 .suspend_bias_off = true,
300 300
301 .controls = jz4740_codec_controls, 301 .component_driver = {
302 .num_controls = ARRAY_SIZE(jz4740_codec_controls), 302 .controls = jz4740_codec_controls,
303 .dapm_widgets = jz4740_codec_dapm_widgets, 303 .num_controls = ARRAY_SIZE(jz4740_codec_controls),
304 .num_dapm_widgets = ARRAY_SIZE(jz4740_codec_dapm_widgets), 304 .dapm_widgets = jz4740_codec_dapm_widgets,
305 .dapm_routes = jz4740_codec_dapm_routes, 305 .num_dapm_widgets = ARRAY_SIZE(jz4740_codec_dapm_widgets),
306 .num_dapm_routes = ARRAY_SIZE(jz4740_codec_dapm_routes), 306 .dapm_routes = jz4740_codec_dapm_routes,
307 .num_dapm_routes = ARRAY_SIZE(jz4740_codec_dapm_routes),
308 },
307}; 309};
308 310
309static const struct regmap_config jz4740_codec_regmap_config = { 311static const struct regmap_config jz4740_codec_regmap_config = {
diff --git a/sound/soc/codecs/lm49453.c b/sound/soc/codecs/lm49453.c
index 9af5640e3446..8d413c2677cc 100644
--- a/sound/soc/codecs/lm49453.c
+++ b/sound/soc/codecs/lm49453.c
@@ -1391,12 +1391,14 @@ static struct snd_soc_dai_driver lm49453_dai[] = {
1391 1391
1392static struct snd_soc_codec_driver soc_codec_dev_lm49453 = { 1392static struct snd_soc_codec_driver soc_codec_dev_lm49453 = {
1393 .set_bias_level = lm49453_set_bias_level, 1393 .set_bias_level = lm49453_set_bias_level,
1394 .controls = lm49453_snd_controls, 1394 .component_driver = {
1395 .num_controls = ARRAY_SIZE(lm49453_snd_controls), 1395 .controls = lm49453_snd_controls,
1396 .dapm_widgets = lm49453_dapm_widgets, 1396 .num_controls = ARRAY_SIZE(lm49453_snd_controls),
1397 .num_dapm_widgets = ARRAY_SIZE(lm49453_dapm_widgets), 1397 .dapm_widgets = lm49453_dapm_widgets,
1398 .dapm_routes = lm49453_audio_map, 1398 .num_dapm_widgets = ARRAY_SIZE(lm49453_dapm_widgets),
1399 .num_dapm_routes = ARRAY_SIZE(lm49453_audio_map), 1399 .dapm_routes = lm49453_audio_map,
1400 .num_dapm_routes = ARRAY_SIZE(lm49453_audio_map),
1401 },
1400 .idle_bias_off = true, 1402 .idle_bias_off = true,
1401}; 1403};
1402 1404
diff --git a/sound/soc/codecs/max98088.c b/sound/soc/codecs/max98088.c
index fc22804cabc5..72f77455582e 100644
--- a/sound/soc/codecs/max98088.c
+++ b/sound/soc/codecs/max98088.c
@@ -1704,12 +1704,14 @@ static struct snd_soc_codec_driver soc_codec_dev_max98088 = {
1704 .set_bias_level = max98088_set_bias_level, 1704 .set_bias_level = max98088_set_bias_level,
1705 .suspend_bias_off = true, 1705 .suspend_bias_off = true,
1706 1706
1707 .controls = max98088_snd_controls, 1707 .component_driver = {
1708 .num_controls = ARRAY_SIZE(max98088_snd_controls), 1708 .controls = max98088_snd_controls,
1709 .dapm_widgets = max98088_dapm_widgets, 1709 .num_controls = ARRAY_SIZE(max98088_snd_controls),
1710 .num_dapm_widgets = ARRAY_SIZE(max98088_dapm_widgets), 1710 .dapm_widgets = max98088_dapm_widgets,
1711 .dapm_routes = max98088_audio_map, 1711 .num_dapm_widgets = ARRAY_SIZE(max98088_dapm_widgets),
1712 .num_dapm_routes = ARRAY_SIZE(max98088_audio_map), 1712 .dapm_routes = max98088_audio_map,
1713 .num_dapm_routes = ARRAY_SIZE(max98088_audio_map),
1714 },
1713}; 1715};
1714 1716
1715static int max98088_i2c_probe(struct i2c_client *i2c, 1717static int max98088_i2c_probe(struct i2c_client *i2c,
diff --git a/sound/soc/codecs/max98095.c b/sound/soc/codecs/max98095.c
index 3577003f39cf..6f8a757876ed 100644
--- a/sound/soc/codecs/max98095.c
+++ b/sound/soc/codecs/max98095.c
@@ -2108,12 +2108,14 @@ static struct snd_soc_codec_driver soc_codec_dev_max98095 = {
2108 .suspend = max98095_suspend, 2108 .suspend = max98095_suspend,
2109 .resume = max98095_resume, 2109 .resume = max98095_resume,
2110 .set_bias_level = max98095_set_bias_level, 2110 .set_bias_level = max98095_set_bias_level,
2111 .controls = max98095_snd_controls, 2111 .component_driver = {
2112 .num_controls = ARRAY_SIZE(max98095_snd_controls), 2112 .controls = max98095_snd_controls,
2113 .dapm_widgets = max98095_dapm_widgets, 2113 .num_controls = ARRAY_SIZE(max98095_snd_controls),
2114 .num_dapm_widgets = ARRAY_SIZE(max98095_dapm_widgets), 2114 .dapm_widgets = max98095_dapm_widgets,
2115 .dapm_routes = max98095_audio_map, 2115 .num_dapm_widgets = ARRAY_SIZE(max98095_dapm_widgets),
2116 .num_dapm_routes = ARRAY_SIZE(max98095_audio_map), 2116 .dapm_routes = max98095_audio_map,
2117 .num_dapm_routes = ARRAY_SIZE(max98095_audio_map),
2118 },
2117}; 2119};
2118 2120
2119static int max98095_i2c_probe(struct i2c_client *i2c, 2121static int max98095_i2c_probe(struct i2c_client *i2c,
diff --git a/sound/soc/codecs/max98357a.c b/sound/soc/codecs/max98357a.c
index 5b1dfb1518fb..6a6b68a4cb52 100644
--- a/sound/soc/codecs/max98357a.c
+++ b/sound/soc/codecs/max98357a.c
@@ -74,10 +74,12 @@ static int max98357a_codec_probe(struct snd_soc_codec *codec)
74 74
75static struct snd_soc_codec_driver max98357a_codec_driver = { 75static struct snd_soc_codec_driver max98357a_codec_driver = {
76 .probe = max98357a_codec_probe, 76 .probe = max98357a_codec_probe,
77 .dapm_widgets = max98357a_dapm_widgets, 77 .component_driver = {
78 .num_dapm_widgets = ARRAY_SIZE(max98357a_dapm_widgets), 78 .dapm_widgets = max98357a_dapm_widgets,
79 .dapm_routes = max98357a_dapm_routes, 79 .num_dapm_widgets = ARRAY_SIZE(max98357a_dapm_widgets),
80 .num_dapm_routes = ARRAY_SIZE(max98357a_dapm_routes), 80 .dapm_routes = max98357a_dapm_routes,
81 .num_dapm_routes = ARRAY_SIZE(max98357a_dapm_routes),
82 },
81}; 83};
82 84
83static const struct snd_soc_dai_ops max98357a_dai_ops = { 85static const struct snd_soc_dai_ops max98357a_dai_ops = {
diff --git a/sound/soc/codecs/max9850.c b/sound/soc/codecs/max9850.c
index c14a79d026a1..0610840733d1 100644
--- a/sound/soc/codecs/max9850.c
+++ b/sound/soc/codecs/max9850.c
@@ -306,12 +306,14 @@ static struct snd_soc_codec_driver soc_codec_dev_max9850 = {
306 .set_bias_level = max9850_set_bias_level, 306 .set_bias_level = max9850_set_bias_level,
307 .suspend_bias_off = true, 307 .suspend_bias_off = true,
308 308
309 .controls = max9850_controls, 309 .component_driver = {
310 .num_controls = ARRAY_SIZE(max9850_controls), 310 .controls = max9850_controls,
311 .dapm_widgets = max9850_dapm_widgets, 311 .num_controls = ARRAY_SIZE(max9850_controls),
312 .num_dapm_widgets = ARRAY_SIZE(max9850_dapm_widgets), 312 .dapm_widgets = max9850_dapm_widgets,
313 .dapm_routes = max9850_dapm_routes, 313 .num_dapm_widgets = ARRAY_SIZE(max9850_dapm_widgets),
314 .num_dapm_routes = ARRAY_SIZE(max9850_dapm_routes), 314 .dapm_routes = max9850_dapm_routes,
315 .num_dapm_routes = ARRAY_SIZE(max9850_dapm_routes),
316 },
315}; 317};
316 318
317static int max9850_i2c_probe(struct i2c_client *i2c, 319static int max9850_i2c_probe(struct i2c_client *i2c,
diff --git a/sound/soc/codecs/max9860.c b/sound/soc/codecs/max9860.c
index 68074c92a7c0..499bdbfd0a2d 100644
--- a/sound/soc/codecs/max9860.c
+++ b/sound/soc/codecs/max9860.c
@@ -538,12 +538,14 @@ static struct snd_soc_codec_driver max9860_codec_driver = {
538 .set_bias_level = max9860_set_bias_level, 538 .set_bias_level = max9860_set_bias_level,
539 .idle_bias_off = true, 539 .idle_bias_off = true,
540 540
541 .controls = max9860_controls, 541 .component_driver = {
542 .num_controls = ARRAY_SIZE(max9860_controls), 542 .controls = max9860_controls,
543 .dapm_widgets = max9860_dapm_widgets, 543 .num_controls = ARRAY_SIZE(max9860_controls),
544 .num_dapm_widgets = ARRAY_SIZE(max9860_dapm_widgets), 544 .dapm_widgets = max9860_dapm_widgets,
545 .dapm_routes = max9860_dapm_routes, 545 .num_dapm_widgets = ARRAY_SIZE(max9860_dapm_widgets),
546 .num_dapm_routes = ARRAY_SIZE(max9860_dapm_routes), 546 .dapm_routes = max9860_dapm_routes,
547 .num_dapm_routes = ARRAY_SIZE(max9860_dapm_routes),
548 },
547}; 549};
548 550
549#ifdef CONFIG_PM 551#ifdef CONFIG_PM
diff --git a/sound/soc/codecs/max9867.c b/sound/soc/codecs/max9867.c
index 2a22fddeb6af..c9673235078d 100644
--- a/sound/soc/codecs/max9867.c
+++ b/sound/soc/codecs/max9867.c
@@ -417,12 +417,14 @@ static int max9867_probe(struct snd_soc_codec *codec)
417 417
418static struct snd_soc_codec_driver max9867_codec = { 418static struct snd_soc_codec_driver max9867_codec = {
419 .probe = max9867_probe, 419 .probe = max9867_probe,
420 .controls = max9867_snd_controls, 420 .component_driver = {
421 .num_controls = ARRAY_SIZE(max9867_snd_controls), 421 .controls = max9867_snd_controls,
422 .dapm_routes = max9867_audio_map, 422 .num_controls = ARRAY_SIZE(max9867_snd_controls),
423 .num_dapm_routes = ARRAY_SIZE(max9867_audio_map), 423 .dapm_routes = max9867_audio_map,
424 .dapm_widgets = max9867_dapm_widgets, 424 .num_dapm_routes = ARRAY_SIZE(max9867_audio_map),
425 .num_dapm_widgets = ARRAY_SIZE(max9867_dapm_widgets), 425 .dapm_widgets = max9867_dapm_widgets,
426 .num_dapm_widgets = ARRAY_SIZE(max9867_dapm_widgets),
427 },
426}; 428};
427 429
428static bool max9867_volatile_register(struct device *dev, unsigned int reg) 430static bool max9867_volatile_register(struct device *dev, unsigned int reg)
diff --git a/sound/soc/codecs/max98925.c b/sound/soc/codecs/max98925.c
index 5990de317999..327eaa25c9bd 100644
--- a/sound/soc/codecs/max98925.c
+++ b/sound/soc/codecs/max98925.c
@@ -540,12 +540,14 @@ static int max98925_probe(struct snd_soc_codec *codec)
540 540
541static const struct snd_soc_codec_driver soc_codec_dev_max98925 = { 541static const struct snd_soc_codec_driver soc_codec_dev_max98925 = {
542 .probe = max98925_probe, 542 .probe = max98925_probe,
543 .controls = max98925_snd_controls, 543 .component_driver = {
544 .num_controls = ARRAY_SIZE(max98925_snd_controls), 544 .controls = max98925_snd_controls,
545 .dapm_routes = max98925_audio_map, 545 .num_controls = ARRAY_SIZE(max98925_snd_controls),
546 .num_dapm_routes = ARRAY_SIZE(max98925_audio_map), 546 .dapm_routes = max98925_audio_map,
547 .dapm_widgets = max98925_dapm_widgets, 547 .num_dapm_routes = ARRAY_SIZE(max98925_audio_map),
548 .num_dapm_widgets = ARRAY_SIZE(max98925_dapm_widgets), 548 .dapm_widgets = max98925_dapm_widgets,
549 .num_dapm_widgets = ARRAY_SIZE(max98925_dapm_widgets),
550 },
549}; 551};
550 552
551static const struct regmap_config max98925_regmap = { 553static const struct regmap_config max98925_regmap = {
diff --git a/sound/soc/codecs/max98926.c b/sound/soc/codecs/max98926.c
index 8d14adae5cc5..5830a81e535a 100644
--- a/sound/soc/codecs/max98926.c
+++ b/sound/soc/codecs/max98926.c
@@ -498,12 +498,14 @@ static int max98926_probe(struct snd_soc_codec *codec)
498 498
499static struct snd_soc_codec_driver soc_codec_dev_max98926 = { 499static struct snd_soc_codec_driver soc_codec_dev_max98926 = {
500 .probe = max98926_probe, 500 .probe = max98926_probe,
501 .controls = max98926_snd_controls, 501 .component_driver = {
502 .num_controls = ARRAY_SIZE(max98926_snd_controls), 502 .controls = max98926_snd_controls,
503 .dapm_routes = max98926_audio_map, 503 .num_controls = ARRAY_SIZE(max98926_snd_controls),
504 .num_dapm_routes = ARRAY_SIZE(max98926_audio_map), 504 .dapm_routes = max98926_audio_map,
505 .dapm_widgets = max98926_dapm_widgets, 505 .num_dapm_routes = ARRAY_SIZE(max98926_audio_map),
506 .num_dapm_widgets = ARRAY_SIZE(max98926_dapm_widgets), 506 .dapm_widgets = max98926_dapm_widgets,
507 .num_dapm_widgets = ARRAY_SIZE(max98926_dapm_widgets),
508 },
507}; 509};
508 510
509static const struct regmap_config max98926_regmap = { 511static const struct regmap_config max98926_regmap = {
diff --git a/sound/soc/codecs/mc13783.c b/sound/soc/codecs/mc13783.c
index 3e770cbe7f0f..90562703dcfd 100644
--- a/sound/soc/codecs/mc13783.c
+++ b/sound/soc/codecs/mc13783.c
@@ -737,12 +737,14 @@ static struct snd_soc_codec_driver soc_codec_dev_mc13783 = {
737 .probe = mc13783_probe, 737 .probe = mc13783_probe,
738 .remove = mc13783_remove, 738 .remove = mc13783_remove,
739 .get_regmap = mc13783_get_regmap, 739 .get_regmap = mc13783_get_regmap,
740 .controls = mc13783_control_list, 740 .component_driver = {
741 .num_controls = ARRAY_SIZE(mc13783_control_list), 741 .controls = mc13783_control_list,
742 .dapm_widgets = mc13783_dapm_widgets, 742 .num_controls = ARRAY_SIZE(mc13783_control_list),
743 .num_dapm_widgets = ARRAY_SIZE(mc13783_dapm_widgets), 743 .dapm_widgets = mc13783_dapm_widgets,
744 .dapm_routes = mc13783_routes, 744 .num_dapm_widgets = ARRAY_SIZE(mc13783_dapm_widgets),
745 .num_dapm_routes = ARRAY_SIZE(mc13783_routes), 745 .dapm_routes = mc13783_routes,
746 .num_dapm_routes = ARRAY_SIZE(mc13783_routes),
747 },
746}; 748};
747 749
748static int __init mc13783_codec_probe(struct platform_device *pdev) 750static int __init mc13783_codec_probe(struct platform_device *pdev)
diff --git a/sound/soc/codecs/ml26124.c b/sound/soc/codecs/ml26124.c
index f561c78b9e0e..69e5e18880c5 100644
--- a/sound/soc/codecs/ml26124.c
+++ b/sound/soc/codecs/ml26124.c
@@ -541,12 +541,14 @@ static struct snd_soc_codec_driver soc_codec_dev_ml26124 = {
541 .probe = ml26124_probe, 541 .probe = ml26124_probe,
542 .set_bias_level = ml26124_set_bias_level, 542 .set_bias_level = ml26124_set_bias_level,
543 .suspend_bias_off = true, 543 .suspend_bias_off = true,
544 .dapm_widgets = ml26124_dapm_widgets, 544 .component_driver = {
545 .num_dapm_widgets = ARRAY_SIZE(ml26124_dapm_widgets), 545 .controls = ml26124_snd_controls,
546 .dapm_routes = ml26124_intercon, 546 .num_controls = ARRAY_SIZE(ml26124_snd_controls),
547 .num_dapm_routes = ARRAY_SIZE(ml26124_intercon), 547 .dapm_widgets = ml26124_dapm_widgets,
548 .controls = ml26124_snd_controls, 548 .num_dapm_widgets = ARRAY_SIZE(ml26124_dapm_widgets),
549 .num_controls = ARRAY_SIZE(ml26124_snd_controls), 549 .dapm_routes = ml26124_intercon,
550 .num_dapm_routes = ARRAY_SIZE(ml26124_intercon),
551 },
550}; 552};
551 553
552static const struct regmap_config ml26124_i2c_regmap = { 554static const struct regmap_config ml26124_i2c_regmap = {
diff --git a/sound/soc/codecs/nau8825.c b/sound/soc/codecs/nau8825.c
index 5c9707ac4bbf..822791eb9574 100644
--- a/sound/soc/codecs/nau8825.c
+++ b/sound/soc/codecs/nau8825.c
@@ -2270,12 +2270,14 @@ static struct snd_soc_codec_driver nau8825_codec_driver = {
2270 .suspend = nau8825_suspend, 2270 .suspend = nau8825_suspend,
2271 .resume = nau8825_resume, 2271 .resume = nau8825_resume,
2272 2272
2273 .controls = nau8825_controls, 2273 .component_driver = {
2274 .num_controls = ARRAY_SIZE(nau8825_controls), 2274 .controls = nau8825_controls,
2275 .dapm_widgets = nau8825_dapm_widgets, 2275 .num_controls = ARRAY_SIZE(nau8825_controls),
2276 .num_dapm_widgets = ARRAY_SIZE(nau8825_dapm_widgets), 2276 .dapm_widgets = nau8825_dapm_widgets,
2277 .dapm_routes = nau8825_dapm_routes, 2277 .num_dapm_widgets = ARRAY_SIZE(nau8825_dapm_widgets),
2278 .num_dapm_routes = ARRAY_SIZE(nau8825_dapm_routes), 2278 .dapm_routes = nau8825_dapm_routes,
2279 .num_dapm_routes = ARRAY_SIZE(nau8825_dapm_routes),
2280 },
2279}; 2281};
2280 2282
2281static void nau8825_reset_chip(struct regmap *regmap) 2283static void nau8825_reset_chip(struct regmap *regmap)
diff --git a/sound/soc/codecs/pcm1681.c b/sound/soc/codecs/pcm1681.c
index 33e1fc2d1598..0b14efab6280 100644
--- a/sound/soc/codecs/pcm1681.c
+++ b/sound/soc/codecs/pcm1681.c
@@ -289,12 +289,14 @@ static const struct regmap_config pcm1681_regmap = {
289}; 289};
290 290
291static struct snd_soc_codec_driver soc_codec_dev_pcm1681 = { 291static struct snd_soc_codec_driver soc_codec_dev_pcm1681 = {
292 .controls = pcm1681_controls, 292 .component_driver = {
293 .num_controls = ARRAY_SIZE(pcm1681_controls), 293 .controls = pcm1681_controls,
294 .dapm_widgets = pcm1681_dapm_widgets, 294 .num_controls = ARRAY_SIZE(pcm1681_controls),
295 .num_dapm_widgets = ARRAY_SIZE(pcm1681_dapm_widgets), 295 .dapm_widgets = pcm1681_dapm_widgets,
296 .dapm_routes = pcm1681_dapm_routes, 296 .num_dapm_widgets = ARRAY_SIZE(pcm1681_dapm_widgets),
297 .num_dapm_routes = ARRAY_SIZE(pcm1681_dapm_routes), 297 .dapm_routes = pcm1681_dapm_routes,
298 .num_dapm_routes = ARRAY_SIZE(pcm1681_dapm_routes),
299 },
298}; 300};
299 301
300static const struct i2c_device_id pcm1681_i2c_id[] = { 302static const struct i2c_device_id pcm1681_i2c_id[] = {
diff --git a/sound/soc/codecs/pcm179x.c b/sound/soc/codecs/pcm179x.c
index 88fbdd184aa0..b813a154ddd9 100644
--- a/sound/soc/codecs/pcm179x.c
+++ b/sound/soc/codecs/pcm179x.c
@@ -206,12 +206,14 @@ const struct regmap_config pcm179x_regmap_config = {
206EXPORT_SYMBOL_GPL(pcm179x_regmap_config); 206EXPORT_SYMBOL_GPL(pcm179x_regmap_config);
207 207
208static struct snd_soc_codec_driver soc_codec_dev_pcm179x = { 208static struct snd_soc_codec_driver soc_codec_dev_pcm179x = {
209 .controls = pcm179x_controls, 209 .component_driver = {
210 .num_controls = ARRAY_SIZE(pcm179x_controls), 210 .controls = pcm179x_controls,
211 .dapm_widgets = pcm179x_dapm_widgets, 211 .num_controls = ARRAY_SIZE(pcm179x_controls),
212 .num_dapm_widgets = ARRAY_SIZE(pcm179x_dapm_widgets), 212 .dapm_widgets = pcm179x_dapm_widgets,
213 .dapm_routes = pcm179x_dapm_routes, 213 .num_dapm_widgets = ARRAY_SIZE(pcm179x_dapm_widgets),
214 .num_dapm_routes = ARRAY_SIZE(pcm179x_dapm_routes), 214 .dapm_routes = pcm179x_dapm_routes,
215 .num_dapm_routes = ARRAY_SIZE(pcm179x_dapm_routes),
216 },
215}; 217};
216 218
217int pcm179x_common_init(struct device *dev, struct regmap *regmap) 219int pcm179x_common_init(struct device *dev, struct regmap *regmap)
diff --git a/sound/soc/codecs/pcm3008.c b/sound/soc/codecs/pcm3008.c
index 8fb445f33f6f..708af05486f6 100644
--- a/sound/soc/codecs/pcm3008.c
+++ b/sound/soc/codecs/pcm3008.c
@@ -99,10 +99,12 @@ static struct snd_soc_dai_driver pcm3008_dai = {
99}; 99};
100 100
101static struct snd_soc_codec_driver soc_codec_dev_pcm3008 = { 101static struct snd_soc_codec_driver soc_codec_dev_pcm3008 = {
102 .dapm_widgets = pcm3008_dapm_widgets, 102 .component_driver = {
103 .num_dapm_widgets = ARRAY_SIZE(pcm3008_dapm_widgets), 103 .dapm_widgets = pcm3008_dapm_widgets,
104 .dapm_routes = pcm3008_dapm_routes, 104 .num_dapm_widgets = ARRAY_SIZE(pcm3008_dapm_widgets),
105 .num_dapm_routes = ARRAY_SIZE(pcm3008_dapm_routes), 105 .dapm_routes = pcm3008_dapm_routes,
106 .num_dapm_routes = ARRAY_SIZE(pcm3008_dapm_routes),
107 },
106}; 108};
107 109
108static int pcm3008_codec_probe(struct platform_device *pdev) 110static int pcm3008_codec_probe(struct platform_device *pdev)
diff --git a/sound/soc/codecs/pcm3168a.c b/sound/soc/codecs/pcm3168a.c
index 992a77edcd5d..39bc02d5bc5d 100644
--- a/sound/soc/codecs/pcm3168a.c
+++ b/sound/soc/codecs/pcm3168a.c
@@ -599,12 +599,14 @@ EXPORT_SYMBOL_GPL(pcm3168a_regmap);
599 599
600static const struct snd_soc_codec_driver pcm3168a_driver = { 600static const struct snd_soc_codec_driver pcm3168a_driver = {
601 .idle_bias_off = true, 601 .idle_bias_off = true,
602 .controls = pcm3168a_snd_controls, 602 .component_driver = {
603 .num_controls = ARRAY_SIZE(pcm3168a_snd_controls), 603 .controls = pcm3168a_snd_controls,
604 .dapm_widgets = pcm3168a_dapm_widgets, 604 .num_controls = ARRAY_SIZE(pcm3168a_snd_controls),
605 .num_dapm_widgets = ARRAY_SIZE(pcm3168a_dapm_widgets), 605 .dapm_widgets = pcm3168a_dapm_widgets,
606 .dapm_routes = pcm3168a_dapm_routes, 606 .num_dapm_widgets = ARRAY_SIZE(pcm3168a_dapm_widgets),
607 .num_dapm_routes = ARRAY_SIZE(pcm3168a_dapm_routes) 607 .dapm_routes = pcm3168a_dapm_routes,
608 .num_dapm_routes = ARRAY_SIZE(pcm3168a_dapm_routes)
609 },
608}; 610};
609 611
610int pcm3168a_probe(struct device *dev, struct regmap *regmap) 612int pcm3168a_probe(struct device *dev, struct regmap *regmap)
diff --git a/sound/soc/codecs/pcm512x.c b/sound/soc/codecs/pcm512x.c
index 047c48953a20..72b19e62f626 100644
--- a/sound/soc/codecs/pcm512x.c
+++ b/sound/soc/codecs/pcm512x.c
@@ -1348,12 +1348,14 @@ static struct snd_soc_codec_driver pcm512x_codec_driver = {
1348 .set_bias_level = pcm512x_set_bias_level, 1348 .set_bias_level = pcm512x_set_bias_level,
1349 .idle_bias_off = true, 1349 .idle_bias_off = true,
1350 1350
1351 .controls = pcm512x_controls, 1351 .component_driver = {
1352 .num_controls = ARRAY_SIZE(pcm512x_controls), 1352 .controls = pcm512x_controls,
1353 .dapm_widgets = pcm512x_dapm_widgets, 1353 .num_controls = ARRAY_SIZE(pcm512x_controls),
1354 .num_dapm_widgets = ARRAY_SIZE(pcm512x_dapm_widgets), 1354 .dapm_widgets = pcm512x_dapm_widgets,
1355 .dapm_routes = pcm512x_dapm_routes, 1355 .num_dapm_widgets = ARRAY_SIZE(pcm512x_dapm_widgets),
1356 .num_dapm_routes = ARRAY_SIZE(pcm512x_dapm_routes), 1356 .dapm_routes = pcm512x_dapm_routes,
1357 .num_dapm_routes = ARRAY_SIZE(pcm512x_dapm_routes),
1358 },
1357}; 1359};
1358 1360
1359static const struct regmap_range_cfg pcm512x_range = { 1361static const struct regmap_range_cfg pcm512x_range = {
diff --git a/sound/soc/codecs/rt286.c b/sound/soc/codecs/rt286.c
index 74c0e4eb3788..9c365a7f758d 100644
--- a/sound/soc/codecs/rt286.c
+++ b/sound/soc/codecs/rt286.c
@@ -1053,12 +1053,14 @@ static struct snd_soc_codec_driver soc_codec_dev_rt286 = {
1053 .resume = rt286_resume, 1053 .resume = rt286_resume,
1054 .set_bias_level = rt286_set_bias_level, 1054 .set_bias_level = rt286_set_bias_level,
1055 .idle_bias_off = true, 1055 .idle_bias_off = true,
1056 .controls = rt286_snd_controls, 1056 .component_driver = {
1057 .num_controls = ARRAY_SIZE(rt286_snd_controls), 1057 .controls = rt286_snd_controls,
1058 .dapm_widgets = rt286_dapm_widgets, 1058 .num_controls = ARRAY_SIZE(rt286_snd_controls),
1059 .num_dapm_widgets = ARRAY_SIZE(rt286_dapm_widgets), 1059 .dapm_widgets = rt286_dapm_widgets,
1060 .dapm_routes = rt286_dapm_routes, 1060 .num_dapm_widgets = ARRAY_SIZE(rt286_dapm_widgets),
1061 .num_dapm_routes = ARRAY_SIZE(rt286_dapm_routes), 1061 .dapm_routes = rt286_dapm_routes,
1062 .num_dapm_routes = ARRAY_SIZE(rt286_dapm_routes),
1063 },
1062}; 1064};
1063 1065
1064static const struct regmap_config rt286_regmap = { 1066static const struct regmap_config rt286_regmap = {
diff --git a/sound/soc/codecs/rt298.c b/sound/soc/codecs/rt298.c
index f80cfe4d2ef2..55558643166f 100644
--- a/sound/soc/codecs/rt298.c
+++ b/sound/soc/codecs/rt298.c
@@ -1095,12 +1095,14 @@ static struct snd_soc_codec_driver soc_codec_dev_rt298 = {
1095 .resume = rt298_resume, 1095 .resume = rt298_resume,
1096 .set_bias_level = rt298_set_bias_level, 1096 .set_bias_level = rt298_set_bias_level,
1097 .idle_bias_off = true, 1097 .idle_bias_off = true,
1098 .controls = rt298_snd_controls, 1098 .component_driver = {
1099 .num_controls = ARRAY_SIZE(rt298_snd_controls), 1099 .controls = rt298_snd_controls,
1100 .dapm_widgets = rt298_dapm_widgets, 1100 .num_controls = ARRAY_SIZE(rt298_snd_controls),
1101 .num_dapm_widgets = ARRAY_SIZE(rt298_dapm_widgets), 1101 .dapm_widgets = rt298_dapm_widgets,
1102 .dapm_routes = rt298_dapm_routes, 1102 .num_dapm_widgets = ARRAY_SIZE(rt298_dapm_widgets),
1103 .num_dapm_routes = ARRAY_SIZE(rt298_dapm_routes), 1103 .dapm_routes = rt298_dapm_routes,
1104 .num_dapm_routes = ARRAY_SIZE(rt298_dapm_routes),
1105 },
1104}; 1106};
1105 1107
1106static const struct regmap_config rt298_regmap = { 1108static const struct regmap_config rt298_regmap = {
diff --git a/sound/soc/codecs/rt5514.c b/sound/soc/codecs/rt5514.c
index 7162f05101d9..e0606a58da98 100644
--- a/sound/soc/codecs/rt5514.c
+++ b/sound/soc/codecs/rt5514.c
@@ -1023,12 +1023,14 @@ static struct snd_soc_codec_driver soc_codec_dev_rt5514 = {
1023 .probe = rt5514_probe, 1023 .probe = rt5514_probe,
1024 .idle_bias_off = true, 1024 .idle_bias_off = true,
1025 .set_bias_level = rt5514_set_bias_level, 1025 .set_bias_level = rt5514_set_bias_level,
1026 .controls = rt5514_snd_controls, 1026 .component_driver = {
1027 .num_controls = ARRAY_SIZE(rt5514_snd_controls), 1027 .controls = rt5514_snd_controls,
1028 .dapm_widgets = rt5514_dapm_widgets, 1028 .num_controls = ARRAY_SIZE(rt5514_snd_controls),
1029 .num_dapm_widgets = ARRAY_SIZE(rt5514_dapm_widgets), 1029 .dapm_widgets = rt5514_dapm_widgets,
1030 .dapm_routes = rt5514_dapm_routes, 1030 .num_dapm_widgets = ARRAY_SIZE(rt5514_dapm_widgets),
1031 .num_dapm_routes = ARRAY_SIZE(rt5514_dapm_routes), 1031 .dapm_routes = rt5514_dapm_routes,
1032 .num_dapm_routes = ARRAY_SIZE(rt5514_dapm_routes),
1033 },
1032}; 1034};
1033 1035
1034static const struct regmap_config rt5514_i2c_regmap = { 1036static const struct regmap_config rt5514_i2c_regmap = {
diff --git a/sound/soc/codecs/rt5616.c b/sound/soc/codecs/rt5616.c
index f527b5b2817b..e92a1490fa68 100644
--- a/sound/soc/codecs/rt5616.c
+++ b/sound/soc/codecs/rt5616.c
@@ -1302,12 +1302,14 @@ static struct snd_soc_codec_driver soc_codec_dev_rt5616 = {
1302 .resume = rt5616_resume, 1302 .resume = rt5616_resume,
1303 .set_bias_level = rt5616_set_bias_level, 1303 .set_bias_level = rt5616_set_bias_level,
1304 .idle_bias_off = true, 1304 .idle_bias_off = true,
1305 .controls = rt5616_snd_controls, 1305 .component_driver = {
1306 .num_controls = ARRAY_SIZE(rt5616_snd_controls), 1306 .controls = rt5616_snd_controls,
1307 .dapm_widgets = rt5616_dapm_widgets, 1307 .num_controls = ARRAY_SIZE(rt5616_snd_controls),
1308 .num_dapm_widgets = ARRAY_SIZE(rt5616_dapm_widgets), 1308 .dapm_widgets = rt5616_dapm_widgets,
1309 .dapm_routes = rt5616_dapm_routes, 1309 .num_dapm_widgets = ARRAY_SIZE(rt5616_dapm_widgets),
1310 .num_dapm_routes = ARRAY_SIZE(rt5616_dapm_routes), 1310 .dapm_routes = rt5616_dapm_routes,
1311 .num_dapm_routes = ARRAY_SIZE(rt5616_dapm_routes),
1312 },
1311}; 1313};
1312 1314
1313static const struct regmap_config rt5616_regmap = { 1315static const struct regmap_config rt5616_regmap = {
diff --git a/sound/soc/codecs/rt5631.c b/sound/soc/codecs/rt5631.c
index 1be2bab7dee3..0e418089c053 100644
--- a/sound/soc/codecs/rt5631.c
+++ b/sound/soc/codecs/rt5631.c
@@ -1657,12 +1657,14 @@ static struct snd_soc_codec_driver soc_codec_dev_rt5631 = {
1657 .probe = rt5631_probe, 1657 .probe = rt5631_probe,
1658 .set_bias_level = rt5631_set_bias_level, 1658 .set_bias_level = rt5631_set_bias_level,
1659 .suspend_bias_off = true, 1659 .suspend_bias_off = true,
1660 .controls = rt5631_snd_controls, 1660 .component_driver = {
1661 .num_controls = ARRAY_SIZE(rt5631_snd_controls), 1661 .controls = rt5631_snd_controls,
1662 .dapm_widgets = rt5631_dapm_widgets, 1662 .num_controls = ARRAY_SIZE(rt5631_snd_controls),
1663 .num_dapm_widgets = ARRAY_SIZE(rt5631_dapm_widgets), 1663 .dapm_widgets = rt5631_dapm_widgets,
1664 .dapm_routes = rt5631_dapm_routes, 1664 .num_dapm_widgets = ARRAY_SIZE(rt5631_dapm_widgets),
1665 .num_dapm_routes = ARRAY_SIZE(rt5631_dapm_routes), 1665 .dapm_routes = rt5631_dapm_routes,
1666 .num_dapm_routes = ARRAY_SIZE(rt5631_dapm_routes),
1667 },
1666}; 1668};
1667 1669
1668static const struct i2c_device_id rt5631_i2c_id[] = { 1670static const struct i2c_device_id rt5631_i2c_id[] = {
diff --git a/sound/soc/codecs/rt5640.c b/sound/soc/codecs/rt5640.c
index 09e8988bbb2d..fbe3af14bd13 100644
--- a/sound/soc/codecs/rt5640.c
+++ b/sound/soc/codecs/rt5640.c
@@ -2261,12 +2261,14 @@ static struct snd_soc_codec_driver soc_codec_dev_rt5640 = {
2261 .resume = rt5640_resume, 2261 .resume = rt5640_resume,
2262 .set_bias_level = rt5640_set_bias_level, 2262 .set_bias_level = rt5640_set_bias_level,
2263 .idle_bias_off = true, 2263 .idle_bias_off = true,
2264 .controls = rt5640_snd_controls, 2264 .component_driver = {
2265 .num_controls = ARRAY_SIZE(rt5640_snd_controls), 2265 .controls = rt5640_snd_controls,
2266 .dapm_widgets = rt5640_dapm_widgets, 2266 .num_controls = ARRAY_SIZE(rt5640_snd_controls),
2267 .num_dapm_widgets = ARRAY_SIZE(rt5640_dapm_widgets), 2267 .dapm_widgets = rt5640_dapm_widgets,
2268 .dapm_routes = rt5640_dapm_routes, 2268 .num_dapm_widgets = ARRAY_SIZE(rt5640_dapm_widgets),
2269 .num_dapm_routes = ARRAY_SIZE(rt5640_dapm_routes), 2269 .dapm_routes = rt5640_dapm_routes,
2270 .num_dapm_routes = ARRAY_SIZE(rt5640_dapm_routes),
2271 },
2270}; 2272};
2271 2273
2272static const struct regmap_config rt5640_regmap = { 2274static const struct regmap_config rt5640_regmap = {
diff --git a/sound/soc/codecs/rt5645.c b/sound/soc/codecs/rt5645.c
index 490bfe661346..10c2a564a715 100644
--- a/sound/soc/codecs/rt5645.c
+++ b/sound/soc/codecs/rt5645.c
@@ -3484,12 +3484,14 @@ static struct snd_soc_codec_driver soc_codec_dev_rt5645 = {
3484 .resume = rt5645_resume, 3484 .resume = rt5645_resume,
3485 .set_bias_level = rt5645_set_bias_level, 3485 .set_bias_level = rt5645_set_bias_level,
3486 .idle_bias_off = true, 3486 .idle_bias_off = true,
3487 .controls = rt5645_snd_controls, 3487 .component_driver = {
3488 .num_controls = ARRAY_SIZE(rt5645_snd_controls), 3488 .controls = rt5645_snd_controls,
3489 .dapm_widgets = rt5645_dapm_widgets, 3489 .num_controls = ARRAY_SIZE(rt5645_snd_controls),
3490 .num_dapm_widgets = ARRAY_SIZE(rt5645_dapm_widgets), 3490 .dapm_widgets = rt5645_dapm_widgets,
3491 .dapm_routes = rt5645_dapm_routes, 3491 .num_dapm_widgets = ARRAY_SIZE(rt5645_dapm_widgets),
3492 .num_dapm_routes = ARRAY_SIZE(rt5645_dapm_routes), 3492 .dapm_routes = rt5645_dapm_routes,
3493 .num_dapm_routes = ARRAY_SIZE(rt5645_dapm_routes),
3494 },
3493}; 3495};
3494 3496
3495static const struct regmap_config rt5645_regmap = { 3497static const struct regmap_config rt5645_regmap = {
diff --git a/sound/soc/codecs/rt5651.c b/sound/soc/codecs/rt5651.c
index 7a6197042423..f5d34153e21f 100644
--- a/sound/soc/codecs/rt5651.c
+++ b/sound/soc/codecs/rt5651.c
@@ -1712,12 +1712,14 @@ static struct snd_soc_codec_driver soc_codec_dev_rt5651 = {
1712 .resume = rt5651_resume, 1712 .resume = rt5651_resume,
1713 .set_bias_level = rt5651_set_bias_level, 1713 .set_bias_level = rt5651_set_bias_level,
1714 .idle_bias_off = true, 1714 .idle_bias_off = true,
1715 .controls = rt5651_snd_controls, 1715 .component_driver = {
1716 .num_controls = ARRAY_SIZE(rt5651_snd_controls), 1716 .controls = rt5651_snd_controls,
1717 .dapm_widgets = rt5651_dapm_widgets, 1717 .num_controls = ARRAY_SIZE(rt5651_snd_controls),
1718 .num_dapm_widgets = ARRAY_SIZE(rt5651_dapm_widgets), 1718 .dapm_widgets = rt5651_dapm_widgets,
1719 .dapm_routes = rt5651_dapm_routes, 1719 .num_dapm_widgets = ARRAY_SIZE(rt5651_dapm_widgets),
1720 .num_dapm_routes = ARRAY_SIZE(rt5651_dapm_routes), 1720 .dapm_routes = rt5651_dapm_routes,
1721 .num_dapm_routes = ARRAY_SIZE(rt5651_dapm_routes),
1722 },
1721}; 1723};
1722 1724
1723static const struct regmap_config rt5651_regmap = { 1725static const struct regmap_config rt5651_regmap = {
diff --git a/sound/soc/codecs/rt5659.c b/sound/soc/codecs/rt5659.c
index 1b30914c2d91..59ddaf34705b 100644
--- a/sound/soc/codecs/rt5659.c
+++ b/sound/soc/codecs/rt5659.c
@@ -3722,12 +3722,14 @@ static struct snd_soc_codec_driver soc_codec_dev_rt5659 = {
3722 .resume = rt5659_resume, 3722 .resume = rt5659_resume,
3723 .set_bias_level = rt5659_set_bias_level, 3723 .set_bias_level = rt5659_set_bias_level,
3724 .idle_bias_off = true, 3724 .idle_bias_off = true,
3725 .controls = rt5659_snd_controls, 3725 .component_driver = {
3726 .num_controls = ARRAY_SIZE(rt5659_snd_controls), 3726 .controls = rt5659_snd_controls,
3727 .dapm_widgets = rt5659_dapm_widgets, 3727 .num_controls = ARRAY_SIZE(rt5659_snd_controls),
3728 .num_dapm_widgets = ARRAY_SIZE(rt5659_dapm_widgets), 3728 .dapm_widgets = rt5659_dapm_widgets,
3729 .dapm_routes = rt5659_dapm_routes, 3729 .num_dapm_widgets = ARRAY_SIZE(rt5659_dapm_widgets),
3730 .num_dapm_routes = ARRAY_SIZE(rt5659_dapm_routes), 3730 .dapm_routes = rt5659_dapm_routes,
3731 .num_dapm_routes = ARRAY_SIZE(rt5659_dapm_routes),
3732 },
3731}; 3733};
3732 3734
3733 3735
diff --git a/sound/soc/codecs/rt5670.c b/sound/soc/codecs/rt5670.c
index 8ef467f64f03..49caf1393aeb 100644
--- a/sound/soc/codecs/rt5670.c
+++ b/sound/soc/codecs/rt5670.c
@@ -2777,12 +2777,14 @@ static struct snd_soc_codec_driver soc_codec_dev_rt5670 = {
2777 .resume = rt5670_resume, 2777 .resume = rt5670_resume,
2778 .set_bias_level = rt5670_set_bias_level, 2778 .set_bias_level = rt5670_set_bias_level,
2779 .idle_bias_off = true, 2779 .idle_bias_off = true,
2780 .controls = rt5670_snd_controls, 2780 .component_driver = {
2781 .num_controls = ARRAY_SIZE(rt5670_snd_controls), 2781 .controls = rt5670_snd_controls,
2782 .dapm_widgets = rt5670_dapm_widgets, 2782 .num_controls = ARRAY_SIZE(rt5670_snd_controls),
2783 .num_dapm_widgets = ARRAY_SIZE(rt5670_dapm_widgets), 2783 .dapm_widgets = rt5670_dapm_widgets,
2784 .dapm_routes = rt5670_dapm_routes, 2784 .num_dapm_widgets = ARRAY_SIZE(rt5670_dapm_widgets),
2785 .num_dapm_routes = ARRAY_SIZE(rt5670_dapm_routes), 2785 .dapm_routes = rt5670_dapm_routes,
2786 .num_dapm_routes = ARRAY_SIZE(rt5670_dapm_routes),
2787 },
2786}; 2788};
2787 2789
2788static const struct regmap_config rt5670_regmap = { 2790static const struct regmap_config rt5670_regmap = {
diff --git a/sound/soc/codecs/rt5677.c b/sound/soc/codecs/rt5677.c
index da9483c1c6fb..68268f2d68ca 100644
--- a/sound/soc/codecs/rt5677.c
+++ b/sound/soc/codecs/rt5677.c
@@ -4974,12 +4974,14 @@ static struct snd_soc_codec_driver soc_codec_dev_rt5677 = {
4974 .resume = rt5677_resume, 4974 .resume = rt5677_resume,
4975 .set_bias_level = rt5677_set_bias_level, 4975 .set_bias_level = rt5677_set_bias_level,
4976 .idle_bias_off = true, 4976 .idle_bias_off = true,
4977 .controls = rt5677_snd_controls, 4977 .component_driver = {
4978 .num_controls = ARRAY_SIZE(rt5677_snd_controls), 4978 .controls = rt5677_snd_controls,
4979 .dapm_widgets = rt5677_dapm_widgets, 4979 .num_controls = ARRAY_SIZE(rt5677_snd_controls),
4980 .num_dapm_widgets = ARRAY_SIZE(rt5677_dapm_widgets), 4980 .dapm_widgets = rt5677_dapm_widgets,
4981 .dapm_routes = rt5677_dapm_routes, 4981 .num_dapm_widgets = ARRAY_SIZE(rt5677_dapm_widgets),
4982 .num_dapm_routes = ARRAY_SIZE(rt5677_dapm_routes), 4982 .dapm_routes = rt5677_dapm_routes,
4983 .num_dapm_routes = ARRAY_SIZE(rt5677_dapm_routes),
4984 },
4983}; 4985};
4984 4986
4985static const struct regmap_config rt5677_regmap_physical = { 4987static const struct regmap_config rt5677_regmap_physical = {
diff --git a/sound/soc/codecs/sgtl5000.c b/sound/soc/codecs/sgtl5000.c
index 527b759c1562..a635bd09d637 100644
--- a/sound/soc/codecs/sgtl5000.c
+++ b/sound/soc/codecs/sgtl5000.c
@@ -1151,12 +1151,14 @@ static struct snd_soc_codec_driver sgtl5000_driver = {
1151 .remove = sgtl5000_remove, 1151 .remove = sgtl5000_remove,
1152 .set_bias_level = sgtl5000_set_bias_level, 1152 .set_bias_level = sgtl5000_set_bias_level,
1153 .suspend_bias_off = true, 1153 .suspend_bias_off = true,
1154 .controls = sgtl5000_snd_controls, 1154 .component_driver = {
1155 .num_controls = ARRAY_SIZE(sgtl5000_snd_controls), 1155 .controls = sgtl5000_snd_controls,
1156 .dapm_widgets = sgtl5000_dapm_widgets, 1156 .num_controls = ARRAY_SIZE(sgtl5000_snd_controls),
1157 .num_dapm_widgets = ARRAY_SIZE(sgtl5000_dapm_widgets), 1157 .dapm_widgets = sgtl5000_dapm_widgets,
1158 .dapm_routes = sgtl5000_dapm_routes, 1158 .num_dapm_widgets = ARRAY_SIZE(sgtl5000_dapm_widgets),
1159 .num_dapm_routes = ARRAY_SIZE(sgtl5000_dapm_routes), 1159 .dapm_routes = sgtl5000_dapm_routes,
1160 .num_dapm_routes = ARRAY_SIZE(sgtl5000_dapm_routes),
1161 },
1160}; 1162};
1161 1163
1162static const struct regmap_config sgtl5000_regmap = { 1164static const struct regmap_config sgtl5000_regmap = {
diff --git a/sound/soc/codecs/si476x.c b/sound/soc/codecs/si476x.c
index a8402d0af0ea..5344f4aa8fde 100644
--- a/sound/soc/codecs/si476x.c
+++ b/sound/soc/codecs/si476x.c
@@ -238,10 +238,12 @@ static struct regmap *si476x_get_regmap(struct device *dev)
238 238
239static struct snd_soc_codec_driver soc_codec_dev_si476x = { 239static struct snd_soc_codec_driver soc_codec_dev_si476x = {
240 .get_regmap = si476x_get_regmap, 240 .get_regmap = si476x_get_regmap,
241 .dapm_widgets = si476x_dapm_widgets, 241 .component_driver = {
242 .num_dapm_widgets = ARRAY_SIZE(si476x_dapm_widgets), 242 .dapm_widgets = si476x_dapm_widgets,
243 .dapm_routes = si476x_dapm_routes, 243 .num_dapm_widgets = ARRAY_SIZE(si476x_dapm_widgets),
244 .num_dapm_routes = ARRAY_SIZE(si476x_dapm_routes), 244 .dapm_routes = si476x_dapm_routes,
245 .num_dapm_routes = ARRAY_SIZE(si476x_dapm_routes),
246 },
245}; 247};
246 248
247static int si476x_platform_probe(struct platform_device *pdev) 249static int si476x_platform_probe(struct platform_device *pdev)
diff --git a/sound/soc/codecs/sn95031.c b/sound/soc/codecs/sn95031.c
index 3a7de0159f24..eae54c37cff9 100644
--- a/sound/soc/codecs/sn95031.c
+++ b/sound/soc/codecs/sn95031.c
@@ -888,12 +888,14 @@ static struct snd_soc_codec_driver sn95031_codec = {
888 .set_bias_level = sn95031_set_vaud_bias, 888 .set_bias_level = sn95031_set_vaud_bias,
889 .idle_bias_off = true, 889 .idle_bias_off = true,
890 890
891 .controls = sn95031_snd_controls, 891 .component_driver = {
892 .num_controls = ARRAY_SIZE(sn95031_snd_controls), 892 .controls = sn95031_snd_controls,
893 .dapm_widgets = sn95031_dapm_widgets, 893 .num_controls = ARRAY_SIZE(sn95031_snd_controls),
894 .num_dapm_widgets = ARRAY_SIZE(sn95031_dapm_widgets), 894 .dapm_widgets = sn95031_dapm_widgets,
895 .dapm_routes = sn95031_audio_map, 895 .num_dapm_widgets = ARRAY_SIZE(sn95031_dapm_widgets),
896 .num_dapm_routes = ARRAY_SIZE(sn95031_audio_map), 896 .dapm_routes = sn95031_audio_map,
897 .num_dapm_routes = ARRAY_SIZE(sn95031_audio_map),
898 },
897}; 899};
898 900
899static int sn95031_device_probe(struct platform_device *pdev) 901static int sn95031_device_probe(struct platform_device *pdev)
diff --git a/sound/soc/codecs/spdif_receiver.c b/sound/soc/codecs/spdif_receiver.c
index 3ec41ccbf4e2..234f87b54838 100644
--- a/sound/soc/codecs/spdif_receiver.c
+++ b/sound/soc/codecs/spdif_receiver.c
@@ -38,10 +38,12 @@ static const struct snd_soc_dapm_route dir_routes[] = {
38 SNDRV_PCM_FMTBIT_IEC958_SUBFRAME_LE) 38 SNDRV_PCM_FMTBIT_IEC958_SUBFRAME_LE)
39 39
40static struct snd_soc_codec_driver soc_codec_spdif_dir = { 40static struct snd_soc_codec_driver soc_codec_spdif_dir = {
41 .dapm_widgets = dir_widgets, 41 .component_driver = {
42 .num_dapm_widgets = ARRAY_SIZE(dir_widgets), 42 .dapm_widgets = dir_widgets,
43 .dapm_routes = dir_routes, 43 .num_dapm_widgets = ARRAY_SIZE(dir_widgets),
44 .num_dapm_routes = ARRAY_SIZE(dir_routes), 44 .dapm_routes = dir_routes,
45 .num_dapm_routes = ARRAY_SIZE(dir_routes),
46 },
45}; 47};
46 48
47static struct snd_soc_dai_driver dir_stub_dai = { 49static struct snd_soc_dai_driver dir_stub_dai = {
diff --git a/sound/soc/codecs/spdif_transmitter.c b/sound/soc/codecs/spdif_transmitter.c
index ef634a9ad673..ee367536a498 100644
--- a/sound/soc/codecs/spdif_transmitter.c
+++ b/sound/soc/codecs/spdif_transmitter.c
@@ -38,10 +38,12 @@ static const struct snd_soc_dapm_route dit_routes[] = {
38}; 38};
39 39
40static struct snd_soc_codec_driver soc_codec_spdif_dit = { 40static struct snd_soc_codec_driver soc_codec_spdif_dit = {
41 .dapm_widgets = dit_widgets, 41 .component_driver = {
42 .num_dapm_widgets = ARRAY_SIZE(dit_widgets), 42 .dapm_widgets = dit_widgets,
43 .dapm_routes = dit_routes, 43 .num_dapm_widgets = ARRAY_SIZE(dit_widgets),
44 .num_dapm_routes = ARRAY_SIZE(dit_routes), 44 .dapm_routes = dit_routes,
45 .num_dapm_routes = ARRAY_SIZE(dit_routes),
46 },
45}; 47};
46 48
47static struct snd_soc_dai_driver dit_stub_dai = { 49static struct snd_soc_dai_driver dit_stub_dai = {
diff --git a/sound/soc/codecs/ssm2518.c b/sound/soc/codecs/ssm2518.c
index e2e0bfa7ec20..38a85f3adc80 100644
--- a/sound/soc/codecs/ssm2518.c
+++ b/sound/soc/codecs/ssm2518.c
@@ -715,12 +715,14 @@ static struct snd_soc_codec_driver ssm2518_codec_driver = {
715 .set_sysclk = ssm2518_set_sysclk, 715 .set_sysclk = ssm2518_set_sysclk,
716 .idle_bias_off = true, 716 .idle_bias_off = true,
717 717
718 .controls = ssm2518_snd_controls, 718 .component_driver = {
719 .num_controls = ARRAY_SIZE(ssm2518_snd_controls), 719 .controls = ssm2518_snd_controls,
720 .dapm_widgets = ssm2518_dapm_widgets, 720 .num_controls = ARRAY_SIZE(ssm2518_snd_controls),
721 .num_dapm_widgets = ARRAY_SIZE(ssm2518_dapm_widgets), 721 .dapm_widgets = ssm2518_dapm_widgets,
722 .dapm_routes = ssm2518_routes, 722 .num_dapm_widgets = ARRAY_SIZE(ssm2518_dapm_widgets),
723 .num_dapm_routes = ARRAY_SIZE(ssm2518_routes), 723 .dapm_routes = ssm2518_routes,
724 .num_dapm_routes = ARRAY_SIZE(ssm2518_routes),
725 },
724}; 726};
725 727
726static const struct regmap_config ssm2518_regmap_config = { 728static const struct regmap_config ssm2518_regmap_config = {
diff --git a/sound/soc/codecs/ssm2602.c b/sound/soc/codecs/ssm2602.c
index 4452fea0b118..993bde29ca1b 100644
--- a/sound/soc/codecs/ssm2602.c
+++ b/sound/soc/codecs/ssm2602.c
@@ -597,12 +597,14 @@ static struct snd_soc_codec_driver soc_codec_dev_ssm2602 = {
597 .set_bias_level = ssm2602_set_bias_level, 597 .set_bias_level = ssm2602_set_bias_level,
598 .suspend_bias_off = true, 598 .suspend_bias_off = true,
599 599
600 .controls = ssm260x_snd_controls, 600 .component_driver = {
601 .num_controls = ARRAY_SIZE(ssm260x_snd_controls), 601 .controls = ssm260x_snd_controls,
602 .dapm_widgets = ssm260x_dapm_widgets, 602 .num_controls = ARRAY_SIZE(ssm260x_snd_controls),
603 .num_dapm_widgets = ARRAY_SIZE(ssm260x_dapm_widgets), 603 .dapm_widgets = ssm260x_dapm_widgets,
604 .dapm_routes = ssm260x_routes, 604 .num_dapm_widgets = ARRAY_SIZE(ssm260x_dapm_widgets),
605 .num_dapm_routes = ARRAY_SIZE(ssm260x_routes), 605 .dapm_routes = ssm260x_routes,
606 .num_dapm_routes = ARRAY_SIZE(ssm260x_routes),
607 },
606}; 608};
607 609
608static bool ssm2602_register_volatile(struct device *dev, unsigned int reg) 610static bool ssm2602_register_volatile(struct device *dev, unsigned int reg)
diff --git a/sound/soc/codecs/ssm4567.c b/sound/soc/codecs/ssm4567.c
index 080c78e88e10..2bb5a11c9ba1 100644
--- a/sound/soc/codecs/ssm4567.c
+++ b/sound/soc/codecs/ssm4567.c
@@ -421,12 +421,14 @@ static struct snd_soc_codec_driver ssm4567_codec_driver = {
421 .set_bias_level = ssm4567_set_bias_level, 421 .set_bias_level = ssm4567_set_bias_level,
422 .idle_bias_off = true, 422 .idle_bias_off = true,
423 423
424 .controls = ssm4567_snd_controls, 424 .component_driver = {
425 .num_controls = ARRAY_SIZE(ssm4567_snd_controls), 425 .controls = ssm4567_snd_controls,
426 .dapm_widgets = ssm4567_dapm_widgets, 426 .num_controls = ARRAY_SIZE(ssm4567_snd_controls),
427 .num_dapm_widgets = ARRAY_SIZE(ssm4567_dapm_widgets), 427 .dapm_widgets = ssm4567_dapm_widgets,
428 .dapm_routes = ssm4567_routes, 428 .num_dapm_widgets = ARRAY_SIZE(ssm4567_dapm_widgets),
429 .num_dapm_routes = ARRAY_SIZE(ssm4567_routes), 429 .dapm_routes = ssm4567_routes,
430 .num_dapm_routes = ARRAY_SIZE(ssm4567_routes),
431 },
430}; 432};
431 433
432static const struct regmap_config ssm4567_regmap_config = { 434static const struct regmap_config ssm4567_regmap_config = {
diff --git a/sound/soc/codecs/sta32x.c b/sound/soc/codecs/sta32x.c
index a9844b2ac829..0790ae8530d9 100644
--- a/sound/soc/codecs/sta32x.c
+++ b/sound/soc/codecs/sta32x.c
@@ -991,12 +991,14 @@ static const struct snd_soc_codec_driver sta32x_codec = {
991 .remove = sta32x_remove, 991 .remove = sta32x_remove,
992 .set_bias_level = sta32x_set_bias_level, 992 .set_bias_level = sta32x_set_bias_level,
993 .suspend_bias_off = true, 993 .suspend_bias_off = true,
994 .controls = sta32x_snd_controls, 994 .component_driver = {
995 .num_controls = ARRAY_SIZE(sta32x_snd_controls), 995 .controls = sta32x_snd_controls,
996 .dapm_widgets = sta32x_dapm_widgets, 996 .num_controls = ARRAY_SIZE(sta32x_snd_controls),
997 .num_dapm_widgets = ARRAY_SIZE(sta32x_dapm_widgets), 997 .dapm_widgets = sta32x_dapm_widgets,
998 .dapm_routes = sta32x_dapm_routes, 998 .num_dapm_widgets = ARRAY_SIZE(sta32x_dapm_widgets),
999 .num_dapm_routes = ARRAY_SIZE(sta32x_dapm_routes), 999 .dapm_routes = sta32x_dapm_routes,
1000 .num_dapm_routes = ARRAY_SIZE(sta32x_dapm_routes),
1001 },
1000}; 1002};
1001 1003
1002static const struct regmap_config sta32x_regmap = { 1004static const struct regmap_config sta32x_regmap = {
diff --git a/sound/soc/codecs/sta350.c b/sound/soc/codecs/sta350.c
index 33a4612f0a07..9644c20f44e3 100644
--- a/sound/soc/codecs/sta350.c
+++ b/sound/soc/codecs/sta350.c
@@ -1057,12 +1057,14 @@ static const struct snd_soc_codec_driver sta350_codec = {
1057 .remove = sta350_remove, 1057 .remove = sta350_remove,
1058 .set_bias_level = sta350_set_bias_level, 1058 .set_bias_level = sta350_set_bias_level,
1059 .suspend_bias_off = true, 1059 .suspend_bias_off = true,
1060 .controls = sta350_snd_controls, 1060 .component_driver = {
1061 .num_controls = ARRAY_SIZE(sta350_snd_controls), 1061 .controls = sta350_snd_controls,
1062 .dapm_widgets = sta350_dapm_widgets, 1062 .num_controls = ARRAY_SIZE(sta350_snd_controls),
1063 .num_dapm_widgets = ARRAY_SIZE(sta350_dapm_widgets), 1063 .dapm_widgets = sta350_dapm_widgets,
1064 .dapm_routes = sta350_dapm_routes, 1064 .num_dapm_widgets = ARRAY_SIZE(sta350_dapm_widgets),
1065 .num_dapm_routes = ARRAY_SIZE(sta350_dapm_routes), 1065 .dapm_routes = sta350_dapm_routes,
1066 .num_dapm_routes = ARRAY_SIZE(sta350_dapm_routes),
1067 },
1066}; 1068};
1067 1069
1068static const struct regmap_config sta350_regmap = { 1070static const struct regmap_config sta350_regmap = {
diff --git a/sound/soc/codecs/sta529.c b/sound/soc/codecs/sta529.c
index 2cdaca943a8c..d4b384e4b266 100644
--- a/sound/soc/codecs/sta529.c
+++ b/sound/soc/codecs/sta529.c
@@ -317,8 +317,10 @@ static const struct snd_soc_codec_driver sta529_codec_driver = {
317 .set_bias_level = sta529_set_bias_level, 317 .set_bias_level = sta529_set_bias_level,
318 .suspend_bias_off = true, 318 .suspend_bias_off = true,
319 319
320 .controls = sta529_snd_controls, 320 .component_driver = {
321 .num_controls = ARRAY_SIZE(sta529_snd_controls), 321 .controls = sta529_snd_controls,
322 .num_controls = ARRAY_SIZE(sta529_snd_controls),
323 },
322}; 324};
323 325
324static const struct regmap_config sta529_regmap = { 326static const struct regmap_config sta529_regmap = {
diff --git a/sound/soc/codecs/stac9766.c b/sound/soc/codecs/stac9766.c
index 0945c51df003..2c5941f3a234 100644
--- a/sound/soc/codecs/stac9766.c
+++ b/sound/soc/codecs/stac9766.c
@@ -320,8 +320,10 @@ static int stac9766_codec_remove(struct snd_soc_codec *codec)
320} 320}
321 321
322static struct snd_soc_codec_driver soc_codec_dev_stac9766 = { 322static struct snd_soc_codec_driver soc_codec_dev_stac9766 = {
323 .controls = stac9766_snd_ac97_controls, 323 .component_driver = {
324 .num_controls = ARRAY_SIZE(stac9766_snd_ac97_controls), 324 .controls = stac9766_snd_ac97_controls,
325 .num_controls = ARRAY_SIZE(stac9766_snd_ac97_controls),
326 },
325 .write = stac9766_ac97_write, 327 .write = stac9766_ac97_write,
326 .read = stac9766_ac97_read, 328 .read = stac9766_ac97_read,
327 .set_bias_level = stac9766_set_bias_level, 329 .set_bias_level = stac9766_set_bias_level,
diff --git a/sound/soc/codecs/sti-sas.c b/sound/soc/codecs/sti-sas.c
index 160d61a66204..7b31ee9b82bc 100644
--- a/sound/soc/codecs/sti-sas.c
+++ b/sound/soc/codecs/sti-sas.c
@@ -591,11 +591,11 @@ static int sti_sas_driver_probe(struct platform_device *pdev)
591 sti_sas_dai[STI_SAS_DAI_ANALOG_OUT].ops = drvdata->dev_data->dac_ops; 591 sti_sas_dai[STI_SAS_DAI_ANALOG_OUT].ops = drvdata->dev_data->dac_ops;
592 592
593 /* Set dapms*/ 593 /* Set dapms*/
594 sti_sas_driver.dapm_widgets = drvdata->dev_data->dapm_widgets; 594 sti_sas_driver.component_driver.dapm_widgets = drvdata->dev_data->dapm_widgets;
595 sti_sas_driver.num_dapm_widgets = drvdata->dev_data->num_dapm_widgets; 595 sti_sas_driver.component_driver.num_dapm_widgets = drvdata->dev_data->num_dapm_widgets;
596 596
597 sti_sas_driver.dapm_routes = drvdata->dev_data->dapm_routes; 597 sti_sas_driver.component_driver.dapm_routes = drvdata->dev_data->dapm_routes;
598 sti_sas_driver.num_dapm_routes = drvdata->dev_data->num_dapm_routes; 598 sti_sas_driver.component_driver.num_dapm_routes = drvdata->dev_data->num_dapm_routes;
599 599
600 /* Store context */ 600 /* Store context */
601 dev_set_drvdata(&pdev->dev, drvdata); 601 dev_set_drvdata(&pdev->dev, drvdata);
diff --git a/sound/soc/codecs/tas2552.c b/sound/soc/codecs/tas2552.c
index cc1d3981fa4b..baf455e8c2f7 100644
--- a/sound/soc/codecs/tas2552.c
+++ b/sound/soc/codecs/tas2552.c
@@ -667,12 +667,14 @@ static struct snd_soc_codec_driver soc_codec_dev_tas2552 = {
667 .resume = tas2552_resume, 667 .resume = tas2552_resume,
668 .ignore_pmdown_time = true, 668 .ignore_pmdown_time = true,
669 669
670 .controls = tas2552_snd_controls, 670 .component_driver = {
671 .num_controls = ARRAY_SIZE(tas2552_snd_controls), 671 .controls = tas2552_snd_controls,
672 .dapm_widgets = tas2552_dapm_widgets, 672 .num_controls = ARRAY_SIZE(tas2552_snd_controls),
673 .num_dapm_widgets = ARRAY_SIZE(tas2552_dapm_widgets), 673 .dapm_widgets = tas2552_dapm_widgets,
674 .dapm_routes = tas2552_audio_map, 674 .num_dapm_widgets = ARRAY_SIZE(tas2552_dapm_widgets),
675 .num_dapm_routes = ARRAY_SIZE(tas2552_audio_map), 675 .dapm_routes = tas2552_audio_map,
676 .num_dapm_routes = ARRAY_SIZE(tas2552_audio_map),
677 },
676}; 678};
677 679
678static const struct regmap_config tas2552_regmap_config = { 680static const struct regmap_config tas2552_regmap_config = {
diff --git a/sound/soc/codecs/tas5086.c b/sound/soc/codecs/tas5086.c
index d49d25d51957..c297b9fc8bf6 100644
--- a/sound/soc/codecs/tas5086.c
+++ b/sound/soc/codecs/tas5086.c
@@ -890,12 +890,14 @@ static struct snd_soc_codec_driver soc_codec_dev_tas5086 = {
890 .remove = tas5086_remove, 890 .remove = tas5086_remove,
891 .suspend = tas5086_soc_suspend, 891 .suspend = tas5086_soc_suspend,
892 .resume = tas5086_soc_resume, 892 .resume = tas5086_soc_resume,
893 .controls = tas5086_controls, 893 .component_driver = {
894 .num_controls = ARRAY_SIZE(tas5086_controls), 894 .controls = tas5086_controls,
895 .dapm_widgets = tas5086_dapm_widgets, 895 .num_controls = ARRAY_SIZE(tas5086_controls),
896 .num_dapm_widgets = ARRAY_SIZE(tas5086_dapm_widgets), 896 .dapm_widgets = tas5086_dapm_widgets,
897 .dapm_routes = tas5086_dapm_routes, 897 .num_dapm_widgets = ARRAY_SIZE(tas5086_dapm_widgets),
898 .num_dapm_routes = ARRAY_SIZE(tas5086_dapm_routes), 898 .dapm_routes = tas5086_dapm_routes,
899 .num_dapm_routes = ARRAY_SIZE(tas5086_dapm_routes),
900 },
899}; 901};
900 902
901static const struct i2c_device_id tas5086_i2c_id[] = { 903static const struct i2c_device_id tas5086_i2c_id[] = {
diff --git a/sound/soc/codecs/tas571x.c b/sound/soc/codecs/tas571x.c
index d8baca3f8413..df5e5cb33baa 100644
--- a/sound/soc/codecs/tas571x.c
+++ b/sound/soc/codecs/tas571x.c
@@ -658,10 +658,12 @@ static const struct snd_soc_codec_driver tas571x_codec = {
658 .set_bias_level = tas571x_set_bias_level, 658 .set_bias_level = tas571x_set_bias_level,
659 .idle_bias_off = true, 659 .idle_bias_off = true,
660 660
661 .dapm_widgets = tas571x_dapm_widgets, 661 .component_driver = {
662 .num_dapm_widgets = ARRAY_SIZE(tas571x_dapm_widgets), 662 .dapm_widgets = tas571x_dapm_widgets,
663 .dapm_routes = tas571x_dapm_routes, 663 .num_dapm_widgets = ARRAY_SIZE(tas571x_dapm_widgets),
664 .num_dapm_routes = ARRAY_SIZE(tas571x_dapm_routes), 664 .dapm_routes = tas571x_dapm_routes,
665 .num_dapm_routes = ARRAY_SIZE(tas571x_dapm_routes),
666 },
665}; 667};
666 668
667static struct snd_soc_dai_driver tas571x_dai = { 669static struct snd_soc_dai_driver tas571x_dai = {
@@ -754,8 +756,8 @@ static int tas571x_i2c_probe(struct i2c_client *client,
754 756
755 757
756 memcpy(&priv->codec_driver, &tas571x_codec, sizeof(priv->codec_driver)); 758 memcpy(&priv->codec_driver, &tas571x_codec, sizeof(priv->codec_driver));
757 priv->codec_driver.controls = priv->chip->controls; 759 priv->codec_driver.component_driver.controls = priv->chip->controls;
758 priv->codec_driver.num_controls = priv->chip->num_controls; 760 priv->codec_driver.component_driver.num_controls = priv->chip->num_controls;
759 761
760 if (priv->chip->vol_reg_size == 2) { 762 if (priv->chip->vol_reg_size == 2) {
761 /* 763 /*
diff --git a/sound/soc/codecs/tas5720.c b/sound/soc/codecs/tas5720.c
index f54fb46b77c2..c65b917598d2 100644
--- a/sound/soc/codecs/tas5720.c
+++ b/sound/soc/codecs/tas5720.c
@@ -489,12 +489,14 @@ static struct snd_soc_codec_driver soc_codec_dev_tas5720 = {
489 .suspend = tas5720_suspend, 489 .suspend = tas5720_suspend,
490 .resume = tas5720_resume, 490 .resume = tas5720_resume,
491 491
492 .controls = tas5720_snd_controls, 492 .component_driver = {
493 .num_controls = ARRAY_SIZE(tas5720_snd_controls), 493 .controls = tas5720_snd_controls,
494 .dapm_widgets = tas5720_dapm_widgets, 494 .num_controls = ARRAY_SIZE(tas5720_snd_controls),
495 .num_dapm_widgets = ARRAY_SIZE(tas5720_dapm_widgets), 495 .dapm_widgets = tas5720_dapm_widgets,
496 .dapm_routes = tas5720_audio_map, 496 .num_dapm_widgets = ARRAY_SIZE(tas5720_dapm_widgets),
497 .num_dapm_routes = ARRAY_SIZE(tas5720_audio_map), 497 .dapm_routes = tas5720_audio_map,
498 .num_dapm_routes = ARRAY_SIZE(tas5720_audio_map),
499 },
498}; 500};
499 501
500/* PCM rates supported by the TAS5720 driver */ 502/* PCM rates supported by the TAS5720 driver */
diff --git a/sound/soc/codecs/tfa9879.c b/sound/soc/codecs/tfa9879.c
index cb5310d89c0f..95e0a7abeb7a 100644
--- a/sound/soc/codecs/tfa9879.c
+++ b/sound/soc/codecs/tfa9879.c
@@ -231,13 +231,14 @@ static const struct snd_soc_dapm_route tfa9879_dapm_routes[] = {
231}; 231};
232 232
233static const struct snd_soc_codec_driver tfa9879_codec = { 233static const struct snd_soc_codec_driver tfa9879_codec = {
234 .controls = tfa9879_controls, 234 .component_driver = {
235 .num_controls = ARRAY_SIZE(tfa9879_controls), 235 .controls = tfa9879_controls,
236 236 .num_controls = ARRAY_SIZE(tfa9879_controls),
237 .dapm_widgets = tfa9879_dapm_widgets, 237 .dapm_widgets = tfa9879_dapm_widgets,
238 .num_dapm_widgets = ARRAY_SIZE(tfa9879_dapm_widgets), 238 .num_dapm_widgets = ARRAY_SIZE(tfa9879_dapm_widgets),
239 .dapm_routes = tfa9879_dapm_routes, 239 .dapm_routes = tfa9879_dapm_routes,
240 .num_dapm_routes = ARRAY_SIZE(tfa9879_dapm_routes), 240 .num_dapm_routes = ARRAY_SIZE(tfa9879_dapm_routes),
241 },
241}; 242};
242 243
243static const struct regmap_config tfa9879_regmap = { 244static const struct regmap_config tfa9879_regmap = {
diff --git a/sound/soc/codecs/tlv320aic23.c b/sound/soc/codecs/tlv320aic23.c
index cd8c02b6e4de..410cae0f2060 100644
--- a/sound/soc/codecs/tlv320aic23.c
+++ b/sound/soc/codecs/tlv320aic23.c
@@ -583,12 +583,14 @@ static struct snd_soc_codec_driver soc_codec_dev_tlv320aic23 = {
583 .set_bias_level = tlv320aic23_set_bias_level, 583 .set_bias_level = tlv320aic23_set_bias_level,
584 .suspend_bias_off = true, 584 .suspend_bias_off = true,
585 585
586 .controls = tlv320aic23_snd_controls, 586 .component_driver = {
587 .num_controls = ARRAY_SIZE(tlv320aic23_snd_controls), 587 .controls = tlv320aic23_snd_controls,
588 .dapm_widgets = tlv320aic23_dapm_widgets, 588 .num_controls = ARRAY_SIZE(tlv320aic23_snd_controls),
589 .num_dapm_widgets = ARRAY_SIZE(tlv320aic23_dapm_widgets), 589 .dapm_widgets = tlv320aic23_dapm_widgets,
590 .dapm_routes = tlv320aic23_intercon, 590 .num_dapm_widgets = ARRAY_SIZE(tlv320aic23_dapm_widgets),
591 .num_dapm_routes = ARRAY_SIZE(tlv320aic23_intercon), 591 .dapm_routes = tlv320aic23_intercon,
592 .num_dapm_routes = ARRAY_SIZE(tlv320aic23_intercon),
593 },
592}; 594};
593 595
594int tlv320aic23_probe(struct device *dev, struct regmap *regmap) 596int tlv320aic23_probe(struct device *dev, struct regmap *regmap)
diff --git a/sound/soc/codecs/tlv320aic26.c b/sound/soc/codecs/tlv320aic26.c
index 2c904d7150ad..14aa96d41719 100644
--- a/sound/soc/codecs/tlv320aic26.c
+++ b/sound/soc/codecs/tlv320aic26.c
@@ -321,12 +321,14 @@ static int aic26_probe(struct snd_soc_codec *codec)
321 321
322static struct snd_soc_codec_driver aic26_soc_codec_dev = { 322static struct snd_soc_codec_driver aic26_soc_codec_dev = {
323 .probe = aic26_probe, 323 .probe = aic26_probe,
324 .controls = aic26_snd_controls, 324 .component_driver = {
325 .num_controls = ARRAY_SIZE(aic26_snd_controls), 325 .controls = aic26_snd_controls,
326 .dapm_widgets = tlv320aic26_dapm_widgets, 326 .num_controls = ARRAY_SIZE(aic26_snd_controls),
327 .num_dapm_widgets = ARRAY_SIZE(tlv320aic26_dapm_widgets), 327 .dapm_widgets = tlv320aic26_dapm_widgets,
328 .dapm_routes = tlv320aic26_dapm_routes, 328 .num_dapm_widgets = ARRAY_SIZE(tlv320aic26_dapm_widgets),
329 .num_dapm_routes = ARRAY_SIZE(tlv320aic26_dapm_routes), 329 .dapm_routes = tlv320aic26_dapm_routes,
330 .num_dapm_routes = ARRAY_SIZE(tlv320aic26_dapm_routes),
331 },
330}; 332};
331 333
332static const struct regmap_config aic26_regmap = { 334static const struct regmap_config aic26_regmap = {
diff --git a/sound/soc/codecs/tlv320aic31xx.c b/sound/soc/codecs/tlv320aic31xx.c
index 3c5e1df01c19..e46fb472e48d 100644
--- a/sound/soc/codecs/tlv320aic31xx.c
+++ b/sound/soc/codecs/tlv320aic31xx.c
@@ -1114,12 +1114,14 @@ static struct snd_soc_codec_driver soc_codec_driver_aic31xx = {
1114 .set_bias_level = aic31xx_set_bias_level, 1114 .set_bias_level = aic31xx_set_bias_level,
1115 .suspend_bias_off = true, 1115 .suspend_bias_off = true,
1116 1116
1117 .controls = aic31xx_snd_controls, 1117 .component_driver = {
1118 .num_controls = ARRAY_SIZE(aic31xx_snd_controls), 1118 .controls = aic31xx_snd_controls,
1119 .dapm_widgets = aic31xx_dapm_widgets, 1119 .num_controls = ARRAY_SIZE(aic31xx_snd_controls),
1120 .num_dapm_widgets = ARRAY_SIZE(aic31xx_dapm_widgets), 1120 .dapm_widgets = aic31xx_dapm_widgets,
1121 .dapm_routes = aic31xx_audio_map, 1121 .num_dapm_widgets = ARRAY_SIZE(aic31xx_dapm_widgets),
1122 .num_dapm_routes = ARRAY_SIZE(aic31xx_audio_map), 1122 .dapm_routes = aic31xx_audio_map,
1123 .num_dapm_routes = ARRAY_SIZE(aic31xx_audio_map),
1124 },
1123}; 1125};
1124 1126
1125static const struct snd_soc_dai_ops aic31xx_dai_ops = { 1127static const struct snd_soc_dai_ops aic31xx_dai_ops = {
diff --git a/sound/soc/codecs/tlv320aic32x4.c b/sound/soc/codecs/tlv320aic32x4.c
index 85d4978d0384..28fdfc5ec544 100644
--- a/sound/soc/codecs/tlv320aic32x4.c
+++ b/sound/soc/codecs/tlv320aic32x4.c
@@ -797,12 +797,14 @@ static struct snd_soc_codec_driver soc_codec_dev_aic32x4 = {
797 .set_bias_level = aic32x4_set_bias_level, 797 .set_bias_level = aic32x4_set_bias_level,
798 .suspend_bias_off = true, 798 .suspend_bias_off = true,
799 799
800 .controls = aic32x4_snd_controls, 800 .component_driver = {
801 .num_controls = ARRAY_SIZE(aic32x4_snd_controls), 801 .controls = aic32x4_snd_controls,
802 .dapm_widgets = aic32x4_dapm_widgets, 802 .num_controls = ARRAY_SIZE(aic32x4_snd_controls),
803 .num_dapm_widgets = ARRAY_SIZE(aic32x4_dapm_widgets), 803 .dapm_widgets = aic32x4_dapm_widgets,
804 .dapm_routes = aic32x4_dapm_routes, 804 .num_dapm_widgets = ARRAY_SIZE(aic32x4_dapm_widgets),
805 .num_dapm_routes = ARRAY_SIZE(aic32x4_dapm_routes), 805 .dapm_routes = aic32x4_dapm_routes,
806 .num_dapm_routes = ARRAY_SIZE(aic32x4_dapm_routes),
807 },
806}; 808};
807 809
808static int aic32x4_parse_dt(struct aic32x4_priv *aic32x4, 810static int aic32x4_parse_dt(struct aic32x4_priv *aic32x4,
diff --git a/sound/soc/codecs/tlv320aic3x.c b/sound/soc/codecs/tlv320aic3x.c
index a564759845f9..5a8d96ec058c 100644
--- a/sound/soc/codecs/tlv320aic3x.c
+++ b/sound/soc/codecs/tlv320aic3x.c
@@ -1670,12 +1670,14 @@ static struct snd_soc_codec_driver soc_codec_dev_aic3x = {
1670 .idle_bias_off = true, 1670 .idle_bias_off = true,
1671 .probe = aic3x_probe, 1671 .probe = aic3x_probe,
1672 .remove = aic3x_remove, 1672 .remove = aic3x_remove,
1673 .controls = aic3x_snd_controls, 1673 .component_driver = {
1674 .num_controls = ARRAY_SIZE(aic3x_snd_controls), 1674 .controls = aic3x_snd_controls,
1675 .dapm_widgets = aic3x_dapm_widgets, 1675 .num_controls = ARRAY_SIZE(aic3x_snd_controls),
1676 .num_dapm_widgets = ARRAY_SIZE(aic3x_dapm_widgets), 1676 .dapm_widgets = aic3x_dapm_widgets,
1677 .dapm_routes = intercon, 1677 .num_dapm_widgets = ARRAY_SIZE(aic3x_dapm_widgets),
1678 .num_dapm_routes = ARRAY_SIZE(intercon), 1678 .dapm_routes = intercon,
1679 .num_dapm_routes = ARRAY_SIZE(intercon),
1680 },
1679}; 1681};
1680 1682
1681/* 1683/*
diff --git a/sound/soc/codecs/tlv320dac33.c b/sound/soc/codecs/tlv320dac33.c
index f7a6ce7e5fb1..d64eac74d1cc 100644
--- a/sound/soc/codecs/tlv320dac33.c
+++ b/sound/soc/codecs/tlv320dac33.c
@@ -1453,12 +1453,14 @@ static struct snd_soc_codec_driver soc_codec_dev_tlv320dac33 = {
1453 .probe = dac33_soc_probe, 1453 .probe = dac33_soc_probe,
1454 .remove = dac33_soc_remove, 1454 .remove = dac33_soc_remove,
1455 1455
1456 .controls = dac33_snd_controls, 1456 .component_driver = {
1457 .num_controls = ARRAY_SIZE(dac33_snd_controls), 1457 .controls = dac33_snd_controls,
1458 .dapm_widgets = dac33_dapm_widgets, 1458 .num_controls = ARRAY_SIZE(dac33_snd_controls),
1459 .num_dapm_widgets = ARRAY_SIZE(dac33_dapm_widgets), 1459 .dapm_widgets = dac33_dapm_widgets,
1460 .dapm_routes = audio_map, 1460 .num_dapm_widgets = ARRAY_SIZE(dac33_dapm_widgets),
1461 .num_dapm_routes = ARRAY_SIZE(audio_map), 1461 .dapm_routes = audio_map,
1462 .num_dapm_routes = ARRAY_SIZE(audio_map),
1463 },
1462}; 1464};
1463 1465
1464#define DAC33_RATES (SNDRV_PCM_RATE_44100 | \ 1466#define DAC33_RATES (SNDRV_PCM_RATE_44100 | \
diff --git a/sound/soc/codecs/twl4030.c b/sound/soc/codecs/twl4030.c
index a5a4e9f75c57..a2104d68169d 100644
--- a/sound/soc/codecs/twl4030.c
+++ b/sound/soc/codecs/twl4030.c
@@ -2199,12 +2199,14 @@ static struct snd_soc_codec_driver soc_codec_dev_twl4030 = {
2199 .set_bias_level = twl4030_set_bias_level, 2199 .set_bias_level = twl4030_set_bias_level,
2200 .idle_bias_off = true, 2200 .idle_bias_off = true,
2201 2201
2202 .controls = twl4030_snd_controls, 2202 .component_driver = {
2203 .num_controls = ARRAY_SIZE(twl4030_snd_controls), 2203 .controls = twl4030_snd_controls,
2204 .dapm_widgets = twl4030_dapm_widgets, 2204 .num_controls = ARRAY_SIZE(twl4030_snd_controls),
2205 .num_dapm_widgets = ARRAY_SIZE(twl4030_dapm_widgets), 2205 .dapm_widgets = twl4030_dapm_widgets,
2206 .dapm_routes = intercon, 2206 .num_dapm_widgets = ARRAY_SIZE(twl4030_dapm_widgets),
2207 .num_dapm_routes = ARRAY_SIZE(intercon), 2207 .dapm_routes = intercon,
2208 .num_dapm_routes = ARRAY_SIZE(intercon),
2209 },
2208}; 2210};
2209 2211
2210static int twl4030_codec_probe(struct platform_device *pdev) 2212static int twl4030_codec_probe(struct platform_device *pdev)
diff --git a/sound/soc/codecs/twl6040.c b/sound/soc/codecs/twl6040.c
index 1f7081043566..748036e851ea 100644
--- a/sound/soc/codecs/twl6040.c
+++ b/sound/soc/codecs/twl6040.c
@@ -1156,12 +1156,14 @@ static struct snd_soc_codec_driver soc_codec_dev_twl6040 = {
1156 .suspend_bias_off = true, 1156 .suspend_bias_off = true,
1157 .ignore_pmdown_time = true, 1157 .ignore_pmdown_time = true,
1158 1158
1159 .controls = twl6040_snd_controls, 1159 .component_driver = {
1160 .num_controls = ARRAY_SIZE(twl6040_snd_controls), 1160 .controls = twl6040_snd_controls,
1161 .dapm_widgets = twl6040_dapm_widgets, 1161 .num_controls = ARRAY_SIZE(twl6040_snd_controls),
1162 .num_dapm_widgets = ARRAY_SIZE(twl6040_dapm_widgets), 1162 .dapm_widgets = twl6040_dapm_widgets,
1163 .dapm_routes = intercon, 1163 .num_dapm_widgets = ARRAY_SIZE(twl6040_dapm_widgets),
1164 .num_dapm_routes = ARRAY_SIZE(intercon), 1164 .dapm_routes = intercon,
1165 .num_dapm_routes = ARRAY_SIZE(intercon),
1166 },
1165}; 1167};
1166 1168
1167static int twl6040_codec_probe(struct platform_device *pdev) 1169static int twl6040_codec_probe(struct platform_device *pdev)
diff --git a/sound/soc/codecs/uda134x.c b/sound/soc/codecs/uda134x.c
index e4c694c758b8..a4a3e9854086 100644
--- a/sound/soc/codecs/uda134x.c
+++ b/sound/soc/codecs/uda134x.c
@@ -523,10 +523,12 @@ static struct snd_soc_codec_driver soc_codec_dev_uda134x = {
523 .set_bias_level = uda134x_set_bias_level, 523 .set_bias_level = uda134x_set_bias_level,
524 .suspend_bias_off = true, 524 .suspend_bias_off = true,
525 525
526 .dapm_widgets = uda134x_dapm_widgets, 526 .component_driver = {
527 .num_dapm_widgets = ARRAY_SIZE(uda134x_dapm_widgets), 527 .dapm_widgets = uda134x_dapm_widgets,
528 .dapm_routes = uda134x_dapm_routes, 528 .num_dapm_widgets = ARRAY_SIZE(uda134x_dapm_widgets),
529 .num_dapm_routes = ARRAY_SIZE(uda134x_dapm_routes), 529 .dapm_routes = uda134x_dapm_routes,
530 .num_dapm_routes = ARRAY_SIZE(uda134x_dapm_routes),
531 },
530}; 532};
531 533
532static const struct regmap_config uda134x_regmap_config = { 534static const struct regmap_config uda134x_regmap_config = {
diff --git a/sound/soc/codecs/uda1380.c b/sound/soc/codecs/uda1380.c
index 35f0469ebb16..533e3bb444e4 100644
--- a/sound/soc/codecs/uda1380.c
+++ b/sound/soc/codecs/uda1380.c
@@ -765,12 +765,14 @@ static struct snd_soc_codec_driver soc_codec_dev_uda1380 = {
765 .reg_cache_default = uda1380_reg, 765 .reg_cache_default = uda1380_reg,
766 .reg_cache_step = 1, 766 .reg_cache_step = 1,
767 767
768 .controls = uda1380_snd_controls, 768 .component_driver = {
769 .num_controls = ARRAY_SIZE(uda1380_snd_controls), 769 .controls = uda1380_snd_controls,
770 .dapm_widgets = uda1380_dapm_widgets, 770 .num_controls = ARRAY_SIZE(uda1380_snd_controls),
771 .num_dapm_widgets = ARRAY_SIZE(uda1380_dapm_widgets), 771 .dapm_widgets = uda1380_dapm_widgets,
772 .dapm_routes = uda1380_dapm_routes, 772 .num_dapm_widgets = ARRAY_SIZE(uda1380_dapm_widgets),
773 .num_dapm_routes = ARRAY_SIZE(uda1380_dapm_routes), 773 .dapm_routes = uda1380_dapm_routes,
774 .num_dapm_routes = ARRAY_SIZE(uda1380_dapm_routes),
775 },
774}; 776};
775 777
776#if IS_ENABLED(CONFIG_I2C) 778#if IS_ENABLED(CONFIG_I2C)
diff --git a/sound/soc/codecs/wl1273.c b/sound/soc/codecs/wl1273.c
index 1b79778098d2..fcffb6e707d9 100644
--- a/sound/soc/codecs/wl1273.c
+++ b/sound/soc/codecs/wl1273.c
@@ -484,12 +484,14 @@ static struct snd_soc_codec_driver soc_codec_dev_wl1273 = {
484 .probe = wl1273_probe, 484 .probe = wl1273_probe,
485 .remove = wl1273_remove, 485 .remove = wl1273_remove,
486 486
487 .controls = wl1273_controls, 487 .component_driver = {
488 .num_controls = ARRAY_SIZE(wl1273_controls), 488 .controls = wl1273_controls,
489 .dapm_widgets = wl1273_dapm_widgets, 489 .num_controls = ARRAY_SIZE(wl1273_controls),
490 .num_dapm_widgets = ARRAY_SIZE(wl1273_dapm_widgets), 490 .dapm_widgets = wl1273_dapm_widgets,
491 .dapm_routes = wl1273_dapm_routes, 491 .num_dapm_widgets = ARRAY_SIZE(wl1273_dapm_widgets),
492 .num_dapm_routes = ARRAY_SIZE(wl1273_dapm_routes), 492 .dapm_routes = wl1273_dapm_routes,
493 .num_dapm_routes = ARRAY_SIZE(wl1273_dapm_routes),
494 },
493}; 495};
494 496
495static int wl1273_platform_probe(struct platform_device *pdev) 497static int wl1273_platform_probe(struct platform_device *pdev)
diff --git a/sound/soc/codecs/wm0010.c b/sound/soc/codecs/wm0010.c
index e3c34bdc2772..0eb5dcf4c29d 100644
--- a/sound/soc/codecs/wm0010.c
+++ b/sound/soc/codecs/wm0010.c
@@ -789,16 +789,18 @@ static int wm0010_set_sysclk(struct snd_soc_codec *codec, int source,
789 789
790static int wm0010_probe(struct snd_soc_codec *codec); 790static int wm0010_probe(struct snd_soc_codec *codec);
791 791
792static struct snd_soc_codec_driver soc_codec_dev_wm0010 = { 792static const struct snd_soc_codec_driver soc_codec_dev_wm0010 = {
793 .probe = wm0010_probe, 793 .probe = wm0010_probe,
794 .set_bias_level = wm0010_set_bias_level, 794 .set_bias_level = wm0010_set_bias_level,
795 .set_sysclk = wm0010_set_sysclk, 795 .set_sysclk = wm0010_set_sysclk,
796 .idle_bias_off = true, 796 .idle_bias_off = true,
797 797
798 .dapm_widgets = wm0010_dapm_widgets, 798 .component_driver = {
799 .num_dapm_widgets = ARRAY_SIZE(wm0010_dapm_widgets), 799 .dapm_widgets = wm0010_dapm_widgets,
800 .dapm_routes = wm0010_dapm_routes, 800 .num_dapm_widgets = ARRAY_SIZE(wm0010_dapm_widgets),
801 .num_dapm_routes = ARRAY_SIZE(wm0010_dapm_routes), 801 .dapm_routes = wm0010_dapm_routes,
802 .num_dapm_routes = ARRAY_SIZE(wm0010_dapm_routes),
803 },
802}; 804};
803 805
804#define WM0010_RATES (SNDRV_PCM_RATE_44100 | SNDRV_PCM_RATE_48000) 806#define WM0010_RATES (SNDRV_PCM_RATE_44100 | SNDRV_PCM_RATE_48000)
diff --git a/sound/soc/codecs/wm1250-ev1.c b/sound/soc/codecs/wm1250-ev1.c
index ec45c5b220b1..cf5f0580df6a 100644
--- a/sound/soc/codecs/wm1250-ev1.c
+++ b/sound/soc/codecs/wm1250-ev1.c
@@ -141,12 +141,13 @@ static struct snd_soc_dai_driver wm1250_ev1_dai = {
141 .ops = &wm1250_ev1_ops, 141 .ops = &wm1250_ev1_ops,
142}; 142};
143 143
144static struct snd_soc_codec_driver soc_codec_dev_wm1250_ev1 = { 144static const struct snd_soc_codec_driver soc_codec_dev_wm1250_ev1 = {
145 .dapm_widgets = wm1250_ev1_dapm_widgets, 145 .component_driver = {
146 .num_dapm_widgets = ARRAY_SIZE(wm1250_ev1_dapm_widgets), 146 .dapm_widgets = wm1250_ev1_dapm_widgets,
147 .dapm_routes = wm1250_ev1_dapm_routes, 147 .num_dapm_widgets = ARRAY_SIZE(wm1250_ev1_dapm_widgets),
148 .num_dapm_routes = ARRAY_SIZE(wm1250_ev1_dapm_routes), 148 .dapm_routes = wm1250_ev1_dapm_routes,
149 149 .num_dapm_routes = ARRAY_SIZE(wm1250_ev1_dapm_routes),
150 },
150 .set_bias_level = wm1250_ev1_set_bias_level, 151 .set_bias_level = wm1250_ev1_set_bias_level,
151 .idle_bias_off = true, 152 .idle_bias_off = true,
152}; 153};
diff --git a/sound/soc/codecs/wm2000.c b/sound/soc/codecs/wm2000.c
index a67ea10f41a1..e553f7fd7e63 100644
--- a/sound/soc/codecs/wm2000.c
+++ b/sound/soc/codecs/wm2000.c
@@ -799,18 +799,20 @@ static int wm2000_remove(struct snd_soc_codec *codec)
799 return wm2000_anc_transition(wm2000, ANC_OFF); 799 return wm2000_anc_transition(wm2000, ANC_OFF);
800} 800}
801 801
802static struct snd_soc_codec_driver soc_codec_dev_wm2000 = { 802static const struct snd_soc_codec_driver soc_codec_dev_wm2000 = {
803 .probe = wm2000_probe, 803 .probe = wm2000_probe,
804 .remove = wm2000_remove, 804 .remove = wm2000_remove,
805 .suspend = wm2000_suspend, 805 .suspend = wm2000_suspend,
806 .resume = wm2000_resume, 806 .resume = wm2000_resume,
807 807
808 .dapm_widgets = wm2000_dapm_widgets, 808 .component_driver = {
809 .num_dapm_widgets = ARRAY_SIZE(wm2000_dapm_widgets), 809 .controls = wm2000_controls,
810 .dapm_routes = wm2000_audio_map, 810 .num_controls = ARRAY_SIZE(wm2000_controls),
811 .num_dapm_routes = ARRAY_SIZE(wm2000_audio_map), 811 .dapm_widgets = wm2000_dapm_widgets,
812 .controls = wm2000_controls, 812 .num_dapm_widgets = ARRAY_SIZE(wm2000_dapm_widgets),
813 .num_controls = ARRAY_SIZE(wm2000_controls), 813 .dapm_routes = wm2000_audio_map,
814 .num_dapm_routes = ARRAY_SIZE(wm2000_audio_map),
815 },
814}; 816};
815 817
816static int wm2000_i2c_probe(struct i2c_client *i2c, 818static int wm2000_i2c_probe(struct i2c_client *i2c,
diff --git a/sound/soc/codecs/wm2200.c b/sound/soc/codecs/wm2200.c
index fd1439ecb50a..606bf88abfc4 100644
--- a/sound/soc/codecs/wm2200.c
+++ b/sound/soc/codecs/wm2200.c
@@ -2103,7 +2103,7 @@ static struct snd_soc_dai_driver wm2200_dai = {
2103 .ops = &wm2200_dai_ops, 2103 .ops = &wm2200_dai_ops,
2104}; 2104};
2105 2105
2106static struct snd_soc_codec_driver soc_codec_wm2200 = { 2106static const struct snd_soc_codec_driver soc_codec_wm2200 = {
2107 .probe = wm2200_probe, 2107 .probe = wm2200_probe,
2108 2108
2109 .idle_bias_off = true, 2109 .idle_bias_off = true,
@@ -2111,12 +2111,14 @@ static struct snd_soc_codec_driver soc_codec_wm2200 = {
2111 .set_sysclk = wm2200_set_sysclk, 2111 .set_sysclk = wm2200_set_sysclk,
2112 .set_pll = wm2200_set_fll, 2112 .set_pll = wm2200_set_fll,
2113 2113
2114 .controls = wm2200_snd_controls, 2114 .component_driver = {
2115 .num_controls = ARRAY_SIZE(wm2200_snd_controls), 2115 .controls = wm2200_snd_controls,
2116 .dapm_widgets = wm2200_dapm_widgets, 2116 .num_controls = ARRAY_SIZE(wm2200_snd_controls),
2117 .num_dapm_widgets = ARRAY_SIZE(wm2200_dapm_widgets), 2117 .dapm_widgets = wm2200_dapm_widgets,
2118 .dapm_routes = wm2200_dapm_routes, 2118 .num_dapm_widgets = ARRAY_SIZE(wm2200_dapm_widgets),
2119 .num_dapm_routes = ARRAY_SIZE(wm2200_dapm_routes), 2119 .dapm_routes = wm2200_dapm_routes,
2120 .num_dapm_routes = ARRAY_SIZE(wm2200_dapm_routes),
2121 },
2120}; 2122};
2121 2123
2122static irqreturn_t wm2200_irq(int irq, void *data) 2124static irqreturn_t wm2200_irq(int irq, void *data)
diff --git a/sound/soc/codecs/wm5100.c b/sound/soc/codecs/wm5100.c
index 512a9d25fe6f..278467d3b1ac 100644
--- a/sound/soc/codecs/wm5100.c
+++ b/sound/soc/codecs/wm5100.c
@@ -2381,7 +2381,7 @@ static int wm5100_remove(struct snd_soc_codec *codec)
2381 return 0; 2381 return 0;
2382} 2382}
2383 2383
2384static struct snd_soc_codec_driver soc_codec_dev_wm5100 = { 2384static const struct snd_soc_codec_driver soc_codec_dev_wm5100 = {
2385 .probe = wm5100_probe, 2385 .probe = wm5100_probe,
2386 .remove = wm5100_remove, 2386 .remove = wm5100_remove,
2387 2387
@@ -2390,12 +2390,14 @@ static struct snd_soc_codec_driver soc_codec_dev_wm5100 = {
2390 .idle_bias_off = 1, 2390 .idle_bias_off = 1,
2391 2391
2392 .seq_notifier = wm5100_seq_notifier, 2392 .seq_notifier = wm5100_seq_notifier,
2393 .controls = wm5100_snd_controls, 2393 .component_driver = {
2394 .num_controls = ARRAY_SIZE(wm5100_snd_controls), 2394 .controls = wm5100_snd_controls,
2395 .dapm_widgets = wm5100_dapm_widgets, 2395 .num_controls = ARRAY_SIZE(wm5100_snd_controls),
2396 .num_dapm_widgets = ARRAY_SIZE(wm5100_dapm_widgets), 2396 .dapm_widgets = wm5100_dapm_widgets,
2397 .dapm_routes = wm5100_dapm_routes, 2397 .num_dapm_widgets = ARRAY_SIZE(wm5100_dapm_widgets),
2398 .num_dapm_routes = ARRAY_SIZE(wm5100_dapm_routes), 2398 .dapm_routes = wm5100_dapm_routes,
2399 .num_dapm_routes = ARRAY_SIZE(wm5100_dapm_routes),
2400 },
2399}; 2401};
2400 2402
2401static const struct regmap_config wm5100_regmap = { 2403static const struct regmap_config wm5100_regmap = {
diff --git a/sound/soc/codecs/wm5102.c b/sound/soc/codecs/wm5102.c
index 846deed6af41..05bb3cb02e70 100644
--- a/sound/soc/codecs/wm5102.c
+++ b/sound/soc/codecs/wm5102.c
@@ -1990,7 +1990,7 @@ static struct regmap *wm5102_get_regmap(struct device *dev)
1990 return priv->core.arizona->regmap; 1990 return priv->core.arizona->regmap;
1991} 1991}
1992 1992
1993static struct snd_soc_codec_driver soc_codec_dev_wm5102 = { 1993static const struct snd_soc_codec_driver soc_codec_dev_wm5102 = {
1994 .probe = wm5102_codec_probe, 1994 .probe = wm5102_codec_probe,
1995 .remove = wm5102_codec_remove, 1995 .remove = wm5102_codec_remove,
1996 .get_regmap = wm5102_get_regmap, 1996 .get_regmap = wm5102_get_regmap,
@@ -2000,12 +2000,14 @@ static struct snd_soc_codec_driver soc_codec_dev_wm5102 = {
2000 .set_sysclk = arizona_set_sysclk, 2000 .set_sysclk = arizona_set_sysclk,
2001 .set_pll = wm5102_set_fll, 2001 .set_pll = wm5102_set_fll,
2002 2002
2003 .controls = wm5102_snd_controls, 2003 .component_driver = {
2004 .num_controls = ARRAY_SIZE(wm5102_snd_controls), 2004 .controls = wm5102_snd_controls,
2005 .dapm_widgets = wm5102_dapm_widgets, 2005 .num_controls = ARRAY_SIZE(wm5102_snd_controls),
2006 .num_dapm_widgets = ARRAY_SIZE(wm5102_dapm_widgets), 2006 .dapm_widgets = wm5102_dapm_widgets,
2007 .dapm_routes = wm5102_dapm_routes, 2007 .num_dapm_widgets = ARRAY_SIZE(wm5102_dapm_widgets),
2008 .num_dapm_routes = ARRAY_SIZE(wm5102_dapm_routes), 2008 .dapm_routes = wm5102_dapm_routes,
2009 .num_dapm_routes = ARRAY_SIZE(wm5102_dapm_routes),
2010 },
2009}; 2011};
2010 2012
2011static struct snd_compr_ops wm5102_compr_ops = { 2013static struct snd_compr_ops wm5102_compr_ops = {
diff --git a/sound/soc/codecs/wm5110.c b/sound/soc/codecs/wm5110.c
index 156547026a40..e22d3dcb6fd7 100644
--- a/sound/soc/codecs/wm5110.c
+++ b/sound/soc/codecs/wm5110.c
@@ -2347,7 +2347,7 @@ static struct regmap *wm5110_get_regmap(struct device *dev)
2347 return priv->core.arizona->regmap; 2347 return priv->core.arizona->regmap;
2348} 2348}
2349 2349
2350static struct snd_soc_codec_driver soc_codec_dev_wm5110 = { 2350static const struct snd_soc_codec_driver soc_codec_dev_wm5110 = {
2351 .probe = wm5110_codec_probe, 2351 .probe = wm5110_codec_probe,
2352 .remove = wm5110_codec_remove, 2352 .remove = wm5110_codec_remove,
2353 .get_regmap = wm5110_get_regmap, 2353 .get_regmap = wm5110_get_regmap,
@@ -2357,12 +2357,14 @@ static struct snd_soc_codec_driver soc_codec_dev_wm5110 = {
2357 .set_sysclk = arizona_set_sysclk, 2357 .set_sysclk = arizona_set_sysclk,
2358 .set_pll = wm5110_set_fll, 2358 .set_pll = wm5110_set_fll,
2359 2359
2360 .controls = wm5110_snd_controls, 2360 .component_driver = {
2361 .num_controls = ARRAY_SIZE(wm5110_snd_controls), 2361 .controls = wm5110_snd_controls,
2362 .dapm_widgets = wm5110_dapm_widgets, 2362 .num_controls = ARRAY_SIZE(wm5110_snd_controls),
2363 .num_dapm_widgets = ARRAY_SIZE(wm5110_dapm_widgets), 2363 .dapm_widgets = wm5110_dapm_widgets,
2364 .dapm_routes = wm5110_dapm_routes, 2364 .num_dapm_widgets = ARRAY_SIZE(wm5110_dapm_widgets),
2365 .num_dapm_routes = ARRAY_SIZE(wm5110_dapm_routes), 2365 .dapm_routes = wm5110_dapm_routes,
2366 .num_dapm_routes = ARRAY_SIZE(wm5110_dapm_routes),
2367 },
2366}; 2368};
2367 2369
2368static struct snd_compr_ops wm5110_compr_ops = { 2370static struct snd_compr_ops wm5110_compr_ops = {
diff --git a/sound/soc/codecs/wm8350.c b/sound/soc/codecs/wm8350.c
index ffbf3df8ae97..2efc5b41ad0f 100644
--- a/sound/soc/codecs/wm8350.c
+++ b/sound/soc/codecs/wm8350.c
@@ -1587,19 +1587,21 @@ static struct regmap *wm8350_get_regmap(struct device *dev)
1587 return wm8350->regmap; 1587 return wm8350->regmap;
1588} 1588}
1589 1589
1590static struct snd_soc_codec_driver soc_codec_dev_wm8350 = { 1590static const struct snd_soc_codec_driver soc_codec_dev_wm8350 = {
1591 .probe = wm8350_codec_probe, 1591 .probe = wm8350_codec_probe,
1592 .remove = wm8350_codec_remove, 1592 .remove = wm8350_codec_remove,
1593 .get_regmap = wm8350_get_regmap, 1593 .get_regmap = wm8350_get_regmap,
1594 .set_bias_level = wm8350_set_bias_level, 1594 .set_bias_level = wm8350_set_bias_level,
1595 .suspend_bias_off = true, 1595 .suspend_bias_off = true,
1596 1596
1597 .controls = wm8350_snd_controls, 1597 .component_driver = {
1598 .num_controls = ARRAY_SIZE(wm8350_snd_controls), 1598 .controls = wm8350_snd_controls,
1599 .dapm_widgets = wm8350_dapm_widgets, 1599 .num_controls = ARRAY_SIZE(wm8350_snd_controls),
1600 .num_dapm_widgets = ARRAY_SIZE(wm8350_dapm_widgets), 1600 .dapm_widgets = wm8350_dapm_widgets,
1601 .dapm_routes = wm8350_dapm_routes, 1601 .num_dapm_widgets = ARRAY_SIZE(wm8350_dapm_widgets),
1602 .num_dapm_routes = ARRAY_SIZE(wm8350_dapm_routes), 1602 .dapm_routes = wm8350_dapm_routes,
1603 .num_dapm_routes = ARRAY_SIZE(wm8350_dapm_routes),
1604 },
1603}; 1605};
1604 1606
1605static int wm8350_probe(struct platform_device *pdev) 1607static int wm8350_probe(struct platform_device *pdev)
diff --git a/sound/soc/codecs/wm8400.c b/sound/soc/codecs/wm8400.c
index b1d346aa4696..6c59fb933bd6 100644
--- a/sound/soc/codecs/wm8400.c
+++ b/sound/soc/codecs/wm8400.c
@@ -1332,19 +1332,21 @@ static struct regmap *wm8400_get_regmap(struct device *dev)
1332 return wm8400->regmap; 1332 return wm8400->regmap;
1333} 1333}
1334 1334
1335static struct snd_soc_codec_driver soc_codec_dev_wm8400 = { 1335static const struct snd_soc_codec_driver soc_codec_dev_wm8400 = {
1336 .probe = wm8400_codec_probe, 1336 .probe = wm8400_codec_probe,
1337 .remove = wm8400_codec_remove, 1337 .remove = wm8400_codec_remove,
1338 .get_regmap = wm8400_get_regmap, 1338 .get_regmap = wm8400_get_regmap,
1339 .set_bias_level = wm8400_set_bias_level, 1339 .set_bias_level = wm8400_set_bias_level,
1340 .suspend_bias_off = true, 1340 .suspend_bias_off = true,
1341 1341
1342 .controls = wm8400_snd_controls, 1342 .component_driver = {
1343 .num_controls = ARRAY_SIZE(wm8400_snd_controls), 1343 .controls = wm8400_snd_controls,
1344 .dapm_widgets = wm8400_dapm_widgets, 1344 .num_controls = ARRAY_SIZE(wm8400_snd_controls),
1345 .num_dapm_widgets = ARRAY_SIZE(wm8400_dapm_widgets), 1345 .dapm_widgets = wm8400_dapm_widgets,
1346 .dapm_routes = wm8400_dapm_routes, 1346 .num_dapm_widgets = ARRAY_SIZE(wm8400_dapm_widgets),
1347 .num_dapm_routes = ARRAY_SIZE(wm8400_dapm_routes), 1347 .dapm_routes = wm8400_dapm_routes,
1348 .num_dapm_routes = ARRAY_SIZE(wm8400_dapm_routes),
1349 },
1348}; 1350};
1349 1351
1350static int wm8400_probe(struct platform_device *pdev) 1352static int wm8400_probe(struct platform_device *pdev)
diff --git a/sound/soc/codecs/wm8510.c b/sound/soc/codecs/wm8510.c
index 99e40e629cca..119ceac684ae 100644
--- a/sound/soc/codecs/wm8510.c
+++ b/sound/soc/codecs/wm8510.c
@@ -581,17 +581,19 @@ static int wm8510_probe(struct snd_soc_codec *codec)
581 return 0; 581 return 0;
582} 582}
583 583
584static struct snd_soc_codec_driver soc_codec_dev_wm8510 = { 584static const struct snd_soc_codec_driver soc_codec_dev_wm8510 = {
585 .probe = wm8510_probe, 585 .probe = wm8510_probe,
586 .set_bias_level = wm8510_set_bias_level, 586 .set_bias_level = wm8510_set_bias_level,
587 .suspend_bias_off = true, 587 .suspend_bias_off = true,
588 588
589 .controls = wm8510_snd_controls, 589 .component_driver = {
590 .num_controls = ARRAY_SIZE(wm8510_snd_controls), 590 .controls = wm8510_snd_controls,
591 .dapm_widgets = wm8510_dapm_widgets, 591 .num_controls = ARRAY_SIZE(wm8510_snd_controls),
592 .num_dapm_widgets = ARRAY_SIZE(wm8510_dapm_widgets), 592 .dapm_widgets = wm8510_dapm_widgets,
593 .dapm_routes = wm8510_dapm_routes, 593 .num_dapm_widgets = ARRAY_SIZE(wm8510_dapm_widgets),
594 .num_dapm_routes = ARRAY_SIZE(wm8510_dapm_routes), 594 .dapm_routes = wm8510_dapm_routes,
595 .num_dapm_routes = ARRAY_SIZE(wm8510_dapm_routes),
596 },
595}; 597};
596 598
597static const struct of_device_id wm8510_of_match[] = { 599static const struct of_device_id wm8510_of_match[] = {
diff --git a/sound/soc/codecs/wm8523.c b/sound/soc/codecs/wm8523.c
index aa287a3965e7..deb2e075428e 100644
--- a/sound/soc/codecs/wm8523.c
+++ b/sound/soc/codecs/wm8523.c
@@ -413,17 +413,19 @@ static int wm8523_probe(struct snd_soc_codec *codec)
413 return 0; 413 return 0;
414} 414}
415 415
416static struct snd_soc_codec_driver soc_codec_dev_wm8523 = { 416static const struct snd_soc_codec_driver soc_codec_dev_wm8523 = {
417 .probe = wm8523_probe, 417 .probe = wm8523_probe,
418 .set_bias_level = wm8523_set_bias_level, 418 .set_bias_level = wm8523_set_bias_level,
419 .suspend_bias_off = true, 419 .suspend_bias_off = true,
420 420
421 .controls = wm8523_controls, 421 .component_driver = {
422 .num_controls = ARRAY_SIZE(wm8523_controls), 422 .controls = wm8523_controls,
423 .dapm_widgets = wm8523_dapm_widgets, 423 .num_controls = ARRAY_SIZE(wm8523_controls),
424 .num_dapm_widgets = ARRAY_SIZE(wm8523_dapm_widgets), 424 .dapm_widgets = wm8523_dapm_widgets,
425 .dapm_routes = wm8523_dapm_routes, 425 .num_dapm_widgets = ARRAY_SIZE(wm8523_dapm_widgets),
426 .num_dapm_routes = ARRAY_SIZE(wm8523_dapm_routes), 426 .dapm_routes = wm8523_dapm_routes,
427 .num_dapm_routes = ARRAY_SIZE(wm8523_dapm_routes),
428 },
427}; 429};
428 430
429static const struct of_device_id wm8523_of_match[] = { 431static const struct of_device_id wm8523_of_match[] = {
diff --git a/sound/soc/codecs/wm8580.c b/sound/soc/codecs/wm8580.c
index 66602bf02f6e..faa7287a5253 100644
--- a/sound/soc/codecs/wm8580.c
+++ b/sound/soc/codecs/wm8580.c
@@ -899,17 +899,19 @@ static int wm8580_remove(struct snd_soc_codec *codec)
899 return 0; 899 return 0;
900} 900}
901 901
902static struct snd_soc_codec_driver soc_codec_dev_wm8580 = { 902static const struct snd_soc_codec_driver soc_codec_dev_wm8580 = {
903 .probe = wm8580_probe, 903 .probe = wm8580_probe,
904 .remove = wm8580_remove, 904 .remove = wm8580_remove,
905 .set_bias_level = wm8580_set_bias_level, 905 .set_bias_level = wm8580_set_bias_level,
906 906
907 .controls = wm8580_snd_controls, 907 .component_driver = {
908 .num_controls = ARRAY_SIZE(wm8580_snd_controls), 908 .controls = wm8580_snd_controls,
909 .dapm_widgets = wm8580_dapm_widgets, 909 .num_controls = ARRAY_SIZE(wm8580_snd_controls),
910 .num_dapm_widgets = ARRAY_SIZE(wm8580_dapm_widgets), 910 .dapm_widgets = wm8580_dapm_widgets,
911 .dapm_routes = wm8580_dapm_routes, 911 .num_dapm_widgets = ARRAY_SIZE(wm8580_dapm_widgets),
912 .num_dapm_routes = ARRAY_SIZE(wm8580_dapm_routes), 912 .dapm_routes = wm8580_dapm_routes,
913 .num_dapm_routes = ARRAY_SIZE(wm8580_dapm_routes),
914 },
913}; 915};
914 916
915static const struct of_device_id wm8580_of_match[] = { 917static const struct of_device_id wm8580_of_match[] = {
diff --git a/sound/soc/codecs/wm8711.c b/sound/soc/codecs/wm8711.c
index c759ec068e97..2b376c9c99af 100644
--- a/sound/soc/codecs/wm8711.c
+++ b/sound/soc/codecs/wm8711.c
@@ -367,17 +367,19 @@ static int wm8711_probe(struct snd_soc_codec *codec)
367 367
368} 368}
369 369
370static struct snd_soc_codec_driver soc_codec_dev_wm8711 = { 370static const struct snd_soc_codec_driver soc_codec_dev_wm8711 = {
371 .probe = wm8711_probe, 371 .probe = wm8711_probe,
372 .set_bias_level = wm8711_set_bias_level, 372 .set_bias_level = wm8711_set_bias_level,
373 .suspend_bias_off = true, 373 .suspend_bias_off = true,
374 374
375 .controls = wm8711_snd_controls, 375 .component_driver = {
376 .num_controls = ARRAY_SIZE(wm8711_snd_controls), 376 .controls = wm8711_snd_controls,
377 .dapm_widgets = wm8711_dapm_widgets, 377 .num_controls = ARRAY_SIZE(wm8711_snd_controls),
378 .num_dapm_widgets = ARRAY_SIZE(wm8711_dapm_widgets), 378 .dapm_widgets = wm8711_dapm_widgets,
379 .dapm_routes = wm8711_intercon, 379 .num_dapm_widgets = ARRAY_SIZE(wm8711_dapm_widgets),
380 .num_dapm_routes = ARRAY_SIZE(wm8711_intercon), 380 .dapm_routes = wm8711_intercon,
381 .num_dapm_routes = ARRAY_SIZE(wm8711_intercon),
382 },
381}; 383};
382 384
383static const struct of_device_id wm8711_of_match[] = { 385static const struct of_device_id wm8711_of_match[] = {
diff --git a/sound/soc/codecs/wm8727.c b/sound/soc/codecs/wm8727.c
index bb25a75f92a2..7fde077a014b 100644
--- a/sound/soc/codecs/wm8727.c
+++ b/sound/soc/codecs/wm8727.c
@@ -53,11 +53,13 @@ static struct snd_soc_dai_driver wm8727_dai = {
53 }, 53 },
54}; 54};
55 55
56static struct snd_soc_codec_driver soc_codec_dev_wm8727 = { 56static const struct snd_soc_codec_driver soc_codec_dev_wm8727 = {
57 .dapm_widgets = wm8727_dapm_widgets, 57 .component_driver = {
58 .num_dapm_widgets = ARRAY_SIZE(wm8727_dapm_widgets), 58 .dapm_widgets = wm8727_dapm_widgets,
59 .dapm_routes = wm8727_dapm_routes, 59 .num_dapm_widgets = ARRAY_SIZE(wm8727_dapm_widgets),
60 .num_dapm_routes = ARRAY_SIZE(wm8727_dapm_routes), 60 .dapm_routes = wm8727_dapm_routes,
61 .num_dapm_routes = ARRAY_SIZE(wm8727_dapm_routes),
62 },
61}; 63};
62 64
63static int wm8727_probe(struct platform_device *pdev) 65static int wm8727_probe(struct platform_device *pdev)
diff --git a/sound/soc/codecs/wm8728.c b/sound/soc/codecs/wm8728.c
index 1564e6926527..797cc6e7c70f 100644
--- a/sound/soc/codecs/wm8728.c
+++ b/sound/soc/codecs/wm8728.c
@@ -211,16 +211,18 @@ static struct snd_soc_dai_driver wm8728_dai = {
211 .ops = &wm8728_dai_ops, 211 .ops = &wm8728_dai_ops,
212}; 212};
213 213
214static struct snd_soc_codec_driver soc_codec_dev_wm8728 = { 214static const struct snd_soc_codec_driver soc_codec_dev_wm8728 = {
215 .set_bias_level = wm8728_set_bias_level, 215 .set_bias_level = wm8728_set_bias_level,
216 .suspend_bias_off = true, 216 .suspend_bias_off = true,
217 217
218 .controls = wm8728_snd_controls, 218 .component_driver = {
219 .num_controls = ARRAY_SIZE(wm8728_snd_controls), 219 .controls = wm8728_snd_controls,
220 .dapm_widgets = wm8728_dapm_widgets, 220 .num_controls = ARRAY_SIZE(wm8728_snd_controls),
221 .num_dapm_widgets = ARRAY_SIZE(wm8728_dapm_widgets), 221 .dapm_widgets = wm8728_dapm_widgets,
222 .dapm_routes = wm8728_intercon, 222 .num_dapm_widgets = ARRAY_SIZE(wm8728_dapm_widgets),
223 .num_dapm_routes = ARRAY_SIZE(wm8728_intercon), 223 .dapm_routes = wm8728_intercon,
224 .num_dapm_routes = ARRAY_SIZE(wm8728_intercon),
225 },
224}; 226};
225 227
226static const struct of_device_id wm8728_of_match[] = { 228static const struct of_device_id wm8728_of_match[] = {
diff --git a/sound/soc/codecs/wm8731.c b/sound/soc/codecs/wm8731.c
index d18261a44256..4f9a1eb28120 100644
--- a/sound/soc/codecs/wm8731.c
+++ b/sound/soc/codecs/wm8731.c
@@ -628,16 +628,18 @@ err_regulator_enable:
628 return ret; 628 return ret;
629} 629}
630 630
631static struct snd_soc_codec_driver soc_codec_dev_wm8731 = { 631static const struct snd_soc_codec_driver soc_codec_dev_wm8731 = {
632 .set_bias_level = wm8731_set_bias_level, 632 .set_bias_level = wm8731_set_bias_level,
633 .suspend_bias_off = true, 633 .suspend_bias_off = true,
634 634
635 .dapm_widgets = wm8731_dapm_widgets, 635 .component_driver = {
636 .num_dapm_widgets = ARRAY_SIZE(wm8731_dapm_widgets), 636 .controls = wm8731_snd_controls,
637 .dapm_routes = wm8731_intercon, 637 .num_controls = ARRAY_SIZE(wm8731_snd_controls),
638 .num_dapm_routes = ARRAY_SIZE(wm8731_intercon), 638 .dapm_widgets = wm8731_dapm_widgets,
639 .controls = wm8731_snd_controls, 639 .num_dapm_widgets = ARRAY_SIZE(wm8731_dapm_widgets),
640 .num_controls = ARRAY_SIZE(wm8731_snd_controls), 640 .dapm_routes = wm8731_intercon,
641 .num_dapm_routes = ARRAY_SIZE(wm8731_intercon),
642 },
641}; 643};
642 644
643static const struct of_device_id wm8731_of_match[] = { 645static const struct of_device_id wm8731_of_match[] = {
diff --git a/sound/soc/codecs/wm8737.c b/sound/soc/codecs/wm8737.c
index e7807601e675..f0cb1c4afe3c 100644
--- a/sound/soc/codecs/wm8737.c
+++ b/sound/soc/codecs/wm8737.c
@@ -573,17 +573,19 @@ err_get:
573 return ret; 573 return ret;
574} 574}
575 575
576static struct snd_soc_codec_driver soc_codec_dev_wm8737 = { 576static const struct snd_soc_codec_driver soc_codec_dev_wm8737 = {
577 .probe = wm8737_probe, 577 .probe = wm8737_probe,
578 .set_bias_level = wm8737_set_bias_level, 578 .set_bias_level = wm8737_set_bias_level,
579 .suspend_bias_off = true, 579 .suspend_bias_off = true,
580 580
581 .controls = wm8737_snd_controls, 581 .component_driver = {
582 .num_controls = ARRAY_SIZE(wm8737_snd_controls), 582 .controls = wm8737_snd_controls,
583 .dapm_widgets = wm8737_dapm_widgets, 583 .num_controls = ARRAY_SIZE(wm8737_snd_controls),
584 .num_dapm_widgets = ARRAY_SIZE(wm8737_dapm_widgets), 584 .dapm_widgets = wm8737_dapm_widgets,
585 .dapm_routes = intercon, 585 .num_dapm_widgets = ARRAY_SIZE(wm8737_dapm_widgets),
586 .num_dapm_routes = ARRAY_SIZE(intercon), 586 .dapm_routes = intercon,
587 .num_dapm_routes = ARRAY_SIZE(intercon),
588 },
587}; 589};
588 590
589static const struct of_device_id wm8737_of_match[] = { 591static const struct of_device_id wm8737_of_match[] = {
diff --git a/sound/soc/codecs/wm8741.c b/sound/soc/codecs/wm8741.c
index 36ef91fe0511..565d477cd790 100644
--- a/sound/soc/codecs/wm8741.c
+++ b/sound/soc/codecs/wm8741.c
@@ -497,15 +497,17 @@ static int wm8741_remove(struct snd_soc_codec *codec)
497 return 0; 497 return 0;
498} 498}
499 499
500static struct snd_soc_codec_driver soc_codec_dev_wm8741 = { 500static const struct snd_soc_codec_driver soc_codec_dev_wm8741 = {
501 .probe = wm8741_probe, 501 .probe = wm8741_probe,
502 .remove = wm8741_remove, 502 .remove = wm8741_remove,
503 .resume = wm8741_resume, 503 .resume = wm8741_resume,
504 504
505 .dapm_widgets = wm8741_dapm_widgets, 505 .component_driver = {
506 .num_dapm_widgets = ARRAY_SIZE(wm8741_dapm_widgets), 506 .dapm_widgets = wm8741_dapm_widgets,
507 .dapm_routes = wm8741_dapm_routes, 507 .num_dapm_widgets = ARRAY_SIZE(wm8741_dapm_widgets),
508 .num_dapm_routes = ARRAY_SIZE(wm8741_dapm_routes), 508 .dapm_routes = wm8741_dapm_routes,
509 .num_dapm_routes = ARRAY_SIZE(wm8741_dapm_routes),
510 },
509}; 511};
510 512
511static const struct of_device_id wm8741_of_match[] = { 513static const struct of_device_id wm8741_of_match[] = {
diff --git a/sound/soc/codecs/wm8750.c b/sound/soc/codecs/wm8750.c
index bd9dcd2161bc..0da2bbaf06d1 100644
--- a/sound/soc/codecs/wm8750.c
+++ b/sound/soc/codecs/wm8750.c
@@ -708,17 +708,19 @@ static int wm8750_probe(struct snd_soc_codec *codec)
708 return ret; 708 return ret;
709} 709}
710 710
711static struct snd_soc_codec_driver soc_codec_dev_wm8750 = { 711static const struct snd_soc_codec_driver soc_codec_dev_wm8750 = {
712 .probe = wm8750_probe, 712 .probe = wm8750_probe,
713 .set_bias_level = wm8750_set_bias_level, 713 .set_bias_level = wm8750_set_bias_level,
714 .suspend_bias_off = true, 714 .suspend_bias_off = true,
715 715
716 .controls = wm8750_snd_controls, 716 .component_driver = {
717 .num_controls = ARRAY_SIZE(wm8750_snd_controls), 717 .controls = wm8750_snd_controls,
718 .dapm_widgets = wm8750_dapm_widgets, 718 .num_controls = ARRAY_SIZE(wm8750_snd_controls),
719 .num_dapm_widgets = ARRAY_SIZE(wm8750_dapm_widgets), 719 .dapm_widgets = wm8750_dapm_widgets,
720 .dapm_routes = wm8750_dapm_routes, 720 .num_dapm_widgets = ARRAY_SIZE(wm8750_dapm_widgets),
721 .num_dapm_routes = ARRAY_SIZE(wm8750_dapm_routes), 721 .dapm_routes = wm8750_dapm_routes,
722 .num_dapm_routes = ARRAY_SIZE(wm8750_dapm_routes),
723 },
722}; 724};
723 725
724static const struct of_device_id wm8750_of_match[] = { 726static const struct of_device_id wm8750_of_match[] = {
diff --git a/sound/soc/codecs/wm8753.c b/sound/soc/codecs/wm8753.c
index cdcc91282e8a..9bdf5447f6f6 100644
--- a/sound/soc/codecs/wm8753.c
+++ b/sound/soc/codecs/wm8753.c
@@ -1478,18 +1478,20 @@ static int wm8753_probe(struct snd_soc_codec *codec)
1478 return 0; 1478 return 0;
1479} 1479}
1480 1480
1481static struct snd_soc_codec_driver soc_codec_dev_wm8753 = { 1481static const struct snd_soc_codec_driver soc_codec_dev_wm8753 = {
1482 .probe = wm8753_probe, 1482 .probe = wm8753_probe,
1483 .resume = wm8753_resume, 1483 .resume = wm8753_resume,
1484 .set_bias_level = wm8753_set_bias_level, 1484 .set_bias_level = wm8753_set_bias_level,
1485 .suspend_bias_off = true, 1485 .suspend_bias_off = true,
1486 1486
1487 .controls = wm8753_snd_controls, 1487 .component_driver = {
1488 .num_controls = ARRAY_SIZE(wm8753_snd_controls), 1488 .controls = wm8753_snd_controls,
1489 .dapm_widgets = wm8753_dapm_widgets, 1489 .num_controls = ARRAY_SIZE(wm8753_snd_controls),
1490 .num_dapm_widgets = ARRAY_SIZE(wm8753_dapm_widgets), 1490 .dapm_widgets = wm8753_dapm_widgets,
1491 .dapm_routes = wm8753_dapm_routes, 1491 .num_dapm_widgets = ARRAY_SIZE(wm8753_dapm_widgets),
1492 .num_dapm_routes = ARRAY_SIZE(wm8753_dapm_routes), 1492 .dapm_routes = wm8753_dapm_routes,
1493 .num_dapm_routes = ARRAY_SIZE(wm8753_dapm_routes),
1494 },
1493}; 1495};
1494 1496
1495static const struct of_device_id wm8753_of_match[] = { 1497static const struct of_device_id wm8753_of_match[] = {
diff --git a/sound/soc/codecs/wm8770.c b/sound/soc/codecs/wm8770.c
index df6178464b00..d6edcbbdec12 100644
--- a/sound/soc/codecs/wm8770.c
+++ b/sound/soc/codecs/wm8770.c
@@ -608,17 +608,19 @@ err_reg_enable:
608 return ret; 608 return ret;
609} 609}
610 610
611static struct snd_soc_codec_driver soc_codec_dev_wm8770 = { 611static const struct snd_soc_codec_driver soc_codec_dev_wm8770 = {
612 .probe = wm8770_probe, 612 .probe = wm8770_probe,
613 .set_bias_level = wm8770_set_bias_level, 613 .set_bias_level = wm8770_set_bias_level,
614 .idle_bias_off = true, 614 .idle_bias_off = true,
615 615
616 .controls = wm8770_snd_controls, 616 .component_driver = {
617 .num_controls = ARRAY_SIZE(wm8770_snd_controls), 617 .controls = wm8770_snd_controls,
618 .dapm_widgets = wm8770_dapm_widgets, 618 .num_controls = ARRAY_SIZE(wm8770_snd_controls),
619 .num_dapm_widgets = ARRAY_SIZE(wm8770_dapm_widgets), 619 .dapm_widgets = wm8770_dapm_widgets,
620 .dapm_routes = wm8770_intercon, 620 .num_dapm_widgets = ARRAY_SIZE(wm8770_dapm_widgets),
621 .num_dapm_routes = ARRAY_SIZE(wm8770_intercon), 621 .dapm_routes = wm8770_intercon,
622 .num_dapm_routes = ARRAY_SIZE(wm8770_intercon),
623 },
622}; 624};
623 625
624static const struct of_device_id wm8770_of_match[] = { 626static const struct of_device_id wm8770_of_match[] = {
diff --git a/sound/soc/codecs/wm8776.c b/sound/soc/codecs/wm8776.c
index 5af44f9a8cf2..ae30480b3976 100644
--- a/sound/soc/codecs/wm8776.c
+++ b/sound/soc/codecs/wm8776.c
@@ -425,17 +425,19 @@ static int wm8776_probe(struct snd_soc_codec *codec)
425 return ret; 425 return ret;
426} 426}
427 427
428static struct snd_soc_codec_driver soc_codec_dev_wm8776 = { 428static const struct snd_soc_codec_driver soc_codec_dev_wm8776 = {
429 .probe = wm8776_probe, 429 .probe = wm8776_probe,
430 .set_bias_level = wm8776_set_bias_level, 430 .set_bias_level = wm8776_set_bias_level,
431 .suspend_bias_off = true, 431 .suspend_bias_off = true,
432 432
433 .controls = wm8776_snd_controls, 433 .component_driver = {
434 .num_controls = ARRAY_SIZE(wm8776_snd_controls), 434 .controls = wm8776_snd_controls,
435 .dapm_widgets = wm8776_dapm_widgets, 435 .num_controls = ARRAY_SIZE(wm8776_snd_controls),
436 .num_dapm_widgets = ARRAY_SIZE(wm8776_dapm_widgets), 436 .dapm_widgets = wm8776_dapm_widgets,
437 .dapm_routes = routes, 437 .num_dapm_widgets = ARRAY_SIZE(wm8776_dapm_widgets),
438 .num_dapm_routes = ARRAY_SIZE(routes), 438 .dapm_routes = routes,
439 .num_dapm_routes = ARRAY_SIZE(routes),
440 },
439}; 441};
440 442
441static const struct of_device_id wm8776_of_match[] = { 443static const struct of_device_id wm8776_of_match[] = {
diff --git a/sound/soc/codecs/wm8782.c b/sound/soc/codecs/wm8782.c
index fb55fd845d27..bcda21018505 100644
--- a/sound/soc/codecs/wm8782.c
+++ b/sound/soc/codecs/wm8782.c
@@ -50,11 +50,13 @@ static struct snd_soc_dai_driver wm8782_dai = {
50 }, 50 },
51}; 51};
52 52
53static struct snd_soc_codec_driver soc_codec_dev_wm8782 = { 53static const struct snd_soc_codec_driver soc_codec_dev_wm8782 = {
54 .dapm_widgets = wm8782_dapm_widgets, 54 .component_driver = {
55 .num_dapm_widgets = ARRAY_SIZE(wm8782_dapm_widgets), 55 .dapm_widgets = wm8782_dapm_widgets,
56 .dapm_routes = wm8782_dapm_routes, 56 .num_dapm_widgets = ARRAY_SIZE(wm8782_dapm_widgets),
57 .num_dapm_routes = ARRAY_SIZE(wm8782_dapm_routes), 57 .dapm_routes = wm8782_dapm_routes,
58 .num_dapm_routes = ARRAY_SIZE(wm8782_dapm_routes),
59 },
58}; 60};
59 61
60static int wm8782_probe(struct platform_device *pdev) 62static int wm8782_probe(struct platform_device *pdev)
diff --git a/sound/soc/codecs/wm8804.c b/sound/soc/codecs/wm8804.c
index 8d914702cae4..af95d648265b 100644
--- a/sound/soc/codecs/wm8804.c
+++ b/sound/soc/codecs/wm8804.c
@@ -545,10 +545,12 @@ static struct snd_soc_dai_driver wm8804_dai = {
545static const struct snd_soc_codec_driver soc_codec_dev_wm8804 = { 545static const struct snd_soc_codec_driver soc_codec_dev_wm8804 = {
546 .idle_bias_off = true, 546 .idle_bias_off = true,
547 547
548 .dapm_widgets = wm8804_dapm_widgets, 548 .component_driver = {
549 .num_dapm_widgets = ARRAY_SIZE(wm8804_dapm_widgets), 549 .dapm_widgets = wm8804_dapm_widgets,
550 .dapm_routes = wm8804_dapm_routes, 550 .num_dapm_widgets = ARRAY_SIZE(wm8804_dapm_widgets),
551 .num_dapm_routes = ARRAY_SIZE(wm8804_dapm_routes), 551 .dapm_routes = wm8804_dapm_routes,
552 .num_dapm_routes = ARRAY_SIZE(wm8804_dapm_routes),
553 },
552}; 554};
553 555
554const struct regmap_config wm8804_regmap_config = { 556const struct regmap_config wm8804_regmap_config = {
diff --git a/sound/soc/codecs/wm8900.c b/sound/soc/codecs/wm8900.c
index 5d8dca88d612..c77b49a29311 100644
--- a/sound/soc/codecs/wm8900.c
+++ b/sound/soc/codecs/wm8900.c
@@ -1208,18 +1208,20 @@ static int wm8900_probe(struct snd_soc_codec *codec)
1208 return 0; 1208 return 0;
1209} 1209}
1210 1210
1211static struct snd_soc_codec_driver soc_codec_dev_wm8900 = { 1211static const struct snd_soc_codec_driver soc_codec_dev_wm8900 = {
1212 .probe = wm8900_probe, 1212 .probe = wm8900_probe,
1213 .suspend = wm8900_suspend, 1213 .suspend = wm8900_suspend,
1214 .resume = wm8900_resume, 1214 .resume = wm8900_resume,
1215 .set_bias_level = wm8900_set_bias_level, 1215 .set_bias_level = wm8900_set_bias_level,
1216 1216
1217 .controls = wm8900_snd_controls, 1217 .component_driver = {
1218 .num_controls = ARRAY_SIZE(wm8900_snd_controls), 1218 .controls = wm8900_snd_controls,
1219 .dapm_widgets = wm8900_dapm_widgets, 1219 .num_controls = ARRAY_SIZE(wm8900_snd_controls),
1220 .num_dapm_widgets = ARRAY_SIZE(wm8900_dapm_widgets), 1220 .dapm_widgets = wm8900_dapm_widgets,
1221 .dapm_routes = wm8900_dapm_routes, 1221 .num_dapm_widgets = ARRAY_SIZE(wm8900_dapm_widgets),
1222 .num_dapm_routes = ARRAY_SIZE(wm8900_dapm_routes), 1222 .dapm_routes = wm8900_dapm_routes,
1223 .num_dapm_routes = ARRAY_SIZE(wm8900_dapm_routes),
1224 },
1223}; 1225};
1224 1226
1225static const struct regmap_config wm8900_regmap = { 1227static const struct regmap_config wm8900_regmap = {
diff --git a/sound/soc/codecs/wm8903.c b/sound/soc/codecs/wm8903.c
index a26ca490cf31..837c8b9f19e9 100644
--- a/sound/soc/codecs/wm8903.c
+++ b/sound/soc/codecs/wm8903.c
@@ -1874,18 +1874,20 @@ static void wm8903_free_gpio(struct wm8903_priv *wm8903)
1874} 1874}
1875#endif 1875#endif
1876 1876
1877static struct snd_soc_codec_driver soc_codec_dev_wm8903 = { 1877static const struct snd_soc_codec_driver soc_codec_dev_wm8903 = {
1878 .resume = wm8903_resume, 1878 .resume = wm8903_resume,
1879 .set_bias_level = wm8903_set_bias_level, 1879 .set_bias_level = wm8903_set_bias_level,
1880 .seq_notifier = wm8903_seq_notifier, 1880 .seq_notifier = wm8903_seq_notifier,
1881 .suspend_bias_off = true, 1881 .suspend_bias_off = true,
1882 1882
1883 .controls = wm8903_snd_controls, 1883 .component_driver = {
1884 .num_controls = ARRAY_SIZE(wm8903_snd_controls), 1884 .controls = wm8903_snd_controls,
1885 .dapm_widgets = wm8903_dapm_widgets, 1885 .num_controls = ARRAY_SIZE(wm8903_snd_controls),
1886 .num_dapm_widgets = ARRAY_SIZE(wm8903_dapm_widgets), 1886 .dapm_widgets = wm8903_dapm_widgets,
1887 .dapm_routes = wm8903_intercon, 1887 .num_dapm_widgets = ARRAY_SIZE(wm8903_dapm_widgets),
1888 .num_dapm_routes = ARRAY_SIZE(wm8903_intercon), 1888 .dapm_routes = wm8903_intercon,
1889 .num_dapm_routes = ARRAY_SIZE(wm8903_intercon),
1890 },
1889}; 1891};
1890 1892
1891static const struct regmap_config wm8903_regmap = { 1893static const struct regmap_config wm8903_regmap = {
diff --git a/sound/soc/codecs/wm8904.c b/sound/soc/codecs/wm8904.c
index edd7a7709194..4fd350e8420d 100644
--- a/sound/soc/codecs/wm8904.c
+++ b/sound/soc/codecs/wm8904.c
@@ -2086,7 +2086,7 @@ static int wm8904_remove(struct snd_soc_codec *codec)
2086 return 0; 2086 return 0;
2087} 2087}
2088 2088
2089static struct snd_soc_codec_driver soc_codec_dev_wm8904 = { 2089static const struct snd_soc_codec_driver soc_codec_dev_wm8904 = {
2090 .probe = wm8904_probe, 2090 .probe = wm8904_probe,
2091 .remove = wm8904_remove, 2091 .remove = wm8904_remove,
2092 .set_bias_level = wm8904_set_bias_level, 2092 .set_bias_level = wm8904_set_bias_level,
diff --git a/sound/soc/codecs/wm8940.c b/sound/soc/codecs/wm8940.c
index 1c600819f768..b5935625feeb 100644
--- a/sound/soc/codecs/wm8940.c
+++ b/sound/soc/codecs/wm8940.c
@@ -723,17 +723,19 @@ static int wm8940_probe(struct snd_soc_codec *codec)
723 return ret; 723 return ret;
724} 724}
725 725
726static struct snd_soc_codec_driver soc_codec_dev_wm8940 = { 726static const struct snd_soc_codec_driver soc_codec_dev_wm8940 = {
727 .probe = wm8940_probe, 727 .probe = wm8940_probe,
728 .set_bias_level = wm8940_set_bias_level, 728 .set_bias_level = wm8940_set_bias_level,
729 .suspend_bias_off = true, 729 .suspend_bias_off = true,
730 730
731 .controls = wm8940_snd_controls, 731 .component_driver = {
732 .num_controls = ARRAY_SIZE(wm8940_snd_controls), 732 .controls = wm8940_snd_controls,
733 .dapm_widgets = wm8940_dapm_widgets, 733 .num_controls = ARRAY_SIZE(wm8940_snd_controls),
734 .num_dapm_widgets = ARRAY_SIZE(wm8940_dapm_widgets), 734 .dapm_widgets = wm8940_dapm_widgets,
735 .dapm_routes = wm8940_dapm_routes, 735 .num_dapm_widgets = ARRAY_SIZE(wm8940_dapm_widgets),
736 .num_dapm_routes = ARRAY_SIZE(wm8940_dapm_routes), 736 .dapm_routes = wm8940_dapm_routes,
737 .num_dapm_routes = ARRAY_SIZE(wm8940_dapm_routes),
738 },
737}; 739};
738 740
739static const struct regmap_config wm8940_regmap = { 741static const struct regmap_config wm8940_regmap = {
diff --git a/sound/soc/codecs/wm8955.c b/sound/soc/codecs/wm8955.c
index 9db00d53abe7..1edc7b1df31d 100644
--- a/sound/soc/codecs/wm8955.c
+++ b/sound/soc/codecs/wm8955.c
@@ -940,17 +940,19 @@ err_enable:
940 return ret; 940 return ret;
941} 941}
942 942
943static struct snd_soc_codec_driver soc_codec_dev_wm8955 = { 943static const struct snd_soc_codec_driver soc_codec_dev_wm8955 = {
944 .probe = wm8955_probe, 944 .probe = wm8955_probe,
945 .set_bias_level = wm8955_set_bias_level, 945 .set_bias_level = wm8955_set_bias_level,
946 .suspend_bias_off = true, 946 .suspend_bias_off = true,
947 947
948 .controls = wm8955_snd_controls, 948 .component_driver = {
949 .num_controls = ARRAY_SIZE(wm8955_snd_controls), 949 .controls = wm8955_snd_controls,
950 .dapm_widgets = wm8955_dapm_widgets, 950 .num_controls = ARRAY_SIZE(wm8955_snd_controls),
951 .num_dapm_widgets = ARRAY_SIZE(wm8955_dapm_widgets), 951 .dapm_widgets = wm8955_dapm_widgets,
952 .dapm_routes = wm8955_dapm_routes, 952 .num_dapm_widgets = ARRAY_SIZE(wm8955_dapm_widgets),
953 .num_dapm_routes = ARRAY_SIZE(wm8955_dapm_routes), 953 .dapm_routes = wm8955_dapm_routes,
954 .num_dapm_routes = ARRAY_SIZE(wm8955_dapm_routes),
955 },
954}; 956};
955 957
956static const struct regmap_config wm8955_regmap = { 958static const struct regmap_config wm8955_regmap = {
diff --git a/sound/soc/codecs/wm8960.c b/sound/soc/codecs/wm8960.c
index d7f444f87460..be3244361210 100644
--- a/sound/soc/codecs/wm8960.c
+++ b/sound/soc/codecs/wm8960.c
@@ -1264,7 +1264,7 @@ static int wm8960_probe(struct snd_soc_codec *codec)
1264 return 0; 1264 return 0;
1265} 1265}
1266 1266
1267static struct snd_soc_codec_driver soc_codec_dev_wm8960 = { 1267static const struct snd_soc_codec_driver soc_codec_dev_wm8960 = {
1268 .probe = wm8960_probe, 1268 .probe = wm8960_probe,
1269 .set_bias_level = wm8960_set_bias_level, 1269 .set_bias_level = wm8960_set_bias_level,
1270 .suspend_bias_off = true, 1270 .suspend_bias_off = true,
diff --git a/sound/soc/codecs/wm8961.c b/sound/soc/codecs/wm8961.c
index e30446a04740..e23ceac76015 100644
--- a/sound/soc/codecs/wm8961.c
+++ b/sound/soc/codecs/wm8961.c
@@ -882,18 +882,20 @@ static int wm8961_resume(struct snd_soc_codec *codec)
882#define wm8961_resume NULL 882#define wm8961_resume NULL
883#endif 883#endif
884 884
885static struct snd_soc_codec_driver soc_codec_dev_wm8961 = { 885static const struct snd_soc_codec_driver soc_codec_dev_wm8961 = {
886 .probe = wm8961_probe, 886 .probe = wm8961_probe,
887 .resume = wm8961_resume, 887 .resume = wm8961_resume,
888 .set_bias_level = wm8961_set_bias_level, 888 .set_bias_level = wm8961_set_bias_level,
889 .suspend_bias_off = true, 889 .suspend_bias_off = true,
890 890
891 .controls = wm8961_snd_controls, 891 .component_driver = {
892 .num_controls = ARRAY_SIZE(wm8961_snd_controls), 892 .controls = wm8961_snd_controls,
893 .dapm_widgets = wm8961_dapm_widgets, 893 .num_controls = ARRAY_SIZE(wm8961_snd_controls),
894 .num_dapm_widgets = ARRAY_SIZE(wm8961_dapm_widgets), 894 .dapm_widgets = wm8961_dapm_widgets,
895 .dapm_routes = audio_paths, 895 .num_dapm_widgets = ARRAY_SIZE(wm8961_dapm_widgets),
896 .num_dapm_routes = ARRAY_SIZE(audio_paths), 896 .dapm_routes = audio_paths,
897 .num_dapm_routes = ARRAY_SIZE(audio_paths),
898 },
897}; 899};
898 900
899static const struct regmap_config wm8961_regmap = { 901static const struct regmap_config wm8961_regmap = {
diff --git a/sound/soc/codecs/wm8962.c b/sound/soc/codecs/wm8962.c
index f3109da24769..392b92067011 100644
--- a/sound/soc/codecs/wm8962.c
+++ b/sound/soc/codecs/wm8962.c
@@ -3479,7 +3479,7 @@ static int wm8962_remove(struct snd_soc_codec *codec)
3479 return 0; 3479 return 0;
3480} 3480}
3481 3481
3482static struct snd_soc_codec_driver soc_codec_dev_wm8962 = { 3482static const struct snd_soc_codec_driver soc_codec_dev_wm8962 = {
3483 .probe = wm8962_probe, 3483 .probe = wm8962_probe,
3484 .remove = wm8962_remove, 3484 .remove = wm8962_remove,
3485 .set_bias_level = wm8962_set_bias_level, 3485 .set_bias_level = wm8962_set_bias_level,
diff --git a/sound/soc/codecs/wm8971.c b/sound/soc/codecs/wm8971.c
index 2cdde32c43c6..887d31cf3945 100644
--- a/sound/soc/codecs/wm8971.c
+++ b/sound/soc/codecs/wm8971.c
@@ -649,17 +649,19 @@ static int wm8971_probe(struct snd_soc_codec *codec)
649 return 0; 649 return 0;
650} 650}
651 651
652static struct snd_soc_codec_driver soc_codec_dev_wm8971 = { 652static const struct snd_soc_codec_driver soc_codec_dev_wm8971 = {
653 .probe = wm8971_probe, 653 .probe = wm8971_probe,
654 .set_bias_level = wm8971_set_bias_level, 654 .set_bias_level = wm8971_set_bias_level,
655 .suspend_bias_off = true, 655 .suspend_bias_off = true,
656 656
657 .controls = wm8971_snd_controls, 657 .component_driver = {
658 .num_controls = ARRAY_SIZE(wm8971_snd_controls), 658 .controls = wm8971_snd_controls,
659 .dapm_widgets = wm8971_dapm_widgets, 659 .num_controls = ARRAY_SIZE(wm8971_snd_controls),
660 .num_dapm_widgets = ARRAY_SIZE(wm8971_dapm_widgets), 660 .dapm_widgets = wm8971_dapm_widgets,
661 .dapm_routes = wm8971_dapm_routes, 661 .num_dapm_widgets = ARRAY_SIZE(wm8971_dapm_widgets),
662 .num_dapm_routes = ARRAY_SIZE(wm8971_dapm_routes), 662 .dapm_routes = wm8971_dapm_routes,
663 .num_dapm_routes = ARRAY_SIZE(wm8971_dapm_routes),
664 },
663}; 665};
664 666
665static const struct regmap_config wm8971_regmap = { 667static const struct regmap_config wm8971_regmap = {
diff --git a/sound/soc/codecs/wm8974.c b/sound/soc/codecs/wm8974.c
index dc8c3b1ebb6f..d414ddd6e197 100644
--- a/sound/soc/codecs/wm8974.c
+++ b/sound/soc/codecs/wm8974.c
@@ -676,17 +676,19 @@ static int wm8974_probe(struct snd_soc_codec *codec)
676 return 0; 676 return 0;
677} 677}
678 678
679static struct snd_soc_codec_driver soc_codec_dev_wm8974 = { 679static const struct snd_soc_codec_driver soc_codec_dev_wm8974 = {
680 .probe = wm8974_probe, 680 .probe = wm8974_probe,
681 .set_bias_level = wm8974_set_bias_level, 681 .set_bias_level = wm8974_set_bias_level,
682 .suspend_bias_off = true, 682 .suspend_bias_off = true,
683 683
684 .controls = wm8974_snd_controls, 684 .component_driver = {
685 .num_controls = ARRAY_SIZE(wm8974_snd_controls), 685 .controls = wm8974_snd_controls,
686 .dapm_widgets = wm8974_dapm_widgets, 686 .num_controls = ARRAY_SIZE(wm8974_snd_controls),
687 .num_dapm_widgets = ARRAY_SIZE(wm8974_dapm_widgets), 687 .dapm_widgets = wm8974_dapm_widgets,
688 .dapm_routes = wm8974_dapm_routes, 688 .num_dapm_widgets = ARRAY_SIZE(wm8974_dapm_widgets),
689 .num_dapm_routes = ARRAY_SIZE(wm8974_dapm_routes), 689 .dapm_routes = wm8974_dapm_routes,
690 .num_dapm_routes = ARRAY_SIZE(wm8974_dapm_routes),
691 },
690}; 692};
691 693
692static int wm8974_i2c_probe(struct i2c_client *i2c, 694static int wm8974_i2c_probe(struct i2c_client *i2c,
diff --git a/sound/soc/codecs/wm8978.c b/sound/soc/codecs/wm8978.c
index d36d6001fbb7..90b2d418ef60 100644
--- a/sound/soc/codecs/wm8978.c
+++ b/sound/soc/codecs/wm8978.c
@@ -993,18 +993,20 @@ static int wm8978_probe(struct snd_soc_codec *codec)
993 return 0; 993 return 0;
994} 994}
995 995
996static struct snd_soc_codec_driver soc_codec_dev_wm8978 = { 996static const struct snd_soc_codec_driver soc_codec_dev_wm8978 = {
997 .probe = wm8978_probe, 997 .probe = wm8978_probe,
998 .suspend = wm8978_suspend, 998 .suspend = wm8978_suspend,
999 .resume = wm8978_resume, 999 .resume = wm8978_resume,
1000 .set_bias_level = wm8978_set_bias_level, 1000 .set_bias_level = wm8978_set_bias_level,
1001 1001
1002 .controls = wm8978_snd_controls, 1002 .component_driver = {
1003 .num_controls = ARRAY_SIZE(wm8978_snd_controls), 1003 .controls = wm8978_snd_controls,
1004 .dapm_widgets = wm8978_dapm_widgets, 1004 .num_controls = ARRAY_SIZE(wm8978_snd_controls),
1005 .num_dapm_widgets = ARRAY_SIZE(wm8978_dapm_widgets), 1005 .dapm_widgets = wm8978_dapm_widgets,
1006 .dapm_routes = wm8978_dapm_routes, 1006 .num_dapm_widgets = ARRAY_SIZE(wm8978_dapm_widgets),
1007 .num_dapm_routes = ARRAY_SIZE(wm8978_dapm_routes), 1007 .dapm_routes = wm8978_dapm_routes,
1008 .num_dapm_routes = ARRAY_SIZE(wm8978_dapm_routes),
1009 },
1008}; 1010};
1009 1011
1010static const struct regmap_config wm8978_regmap_config = { 1012static const struct regmap_config wm8978_regmap_config = {
diff --git a/sound/soc/codecs/wm8983.c b/sound/soc/codecs/wm8983.c
index 0c002a5712cb..bfdbe72ee687 100644
--- a/sound/soc/codecs/wm8983.c
+++ b/sound/soc/codecs/wm8983.c
@@ -976,16 +976,18 @@ static struct snd_soc_dai_driver wm8983_dai = {
976 .symmetric_rates = 1 976 .symmetric_rates = 1
977}; 977};
978 978
979static struct snd_soc_codec_driver soc_codec_dev_wm8983 = { 979static const struct snd_soc_codec_driver soc_codec_dev_wm8983 = {
980 .probe = wm8983_probe, 980 .probe = wm8983_probe,
981 .set_bias_level = wm8983_set_bias_level, 981 .set_bias_level = wm8983_set_bias_level,
982 .suspend_bias_off = true, 982 .suspend_bias_off = true,
983 .controls = wm8983_snd_controls, 983 .component_driver = {
984 .num_controls = ARRAY_SIZE(wm8983_snd_controls), 984 .controls = wm8983_snd_controls,
985 .dapm_widgets = wm8983_dapm_widgets, 985 .num_controls = ARRAY_SIZE(wm8983_snd_controls),
986 .num_dapm_widgets = ARRAY_SIZE(wm8983_dapm_widgets), 986 .dapm_widgets = wm8983_dapm_widgets,
987 .dapm_routes = wm8983_audio_map, 987 .num_dapm_widgets = ARRAY_SIZE(wm8983_dapm_widgets),
988 .num_dapm_routes = ARRAY_SIZE(wm8983_audio_map), 988 .dapm_routes = wm8983_audio_map,
989 .num_dapm_routes = ARRAY_SIZE(wm8983_audio_map),
990 },
989}; 991};
990 992
991static const struct regmap_config wm8983_regmap = { 993static const struct regmap_config wm8983_regmap = {
diff --git a/sound/soc/codecs/wm8985.c b/sound/soc/codecs/wm8985.c
index 7347abff4b2c..05344f974ff3 100644
--- a/sound/soc/codecs/wm8985.c
+++ b/sound/soc/codecs/wm8985.c
@@ -1105,17 +1105,19 @@ static struct snd_soc_dai_driver wm8985_dai = {
1105 .symmetric_rates = 1 1105 .symmetric_rates = 1
1106}; 1106};
1107 1107
1108static struct snd_soc_codec_driver soc_codec_dev_wm8985 = { 1108static const struct snd_soc_codec_driver soc_codec_dev_wm8985 = {
1109 .probe = wm8985_probe, 1109 .probe = wm8985_probe,
1110 .set_bias_level = wm8985_set_bias_level, 1110 .set_bias_level = wm8985_set_bias_level,
1111 .suspend_bias_off = true, 1111 .suspend_bias_off = true,
1112 1112
1113 .controls = wm8985_common_snd_controls, 1113 .component_driver = {
1114 .num_controls = ARRAY_SIZE(wm8985_common_snd_controls), 1114 .controls = wm8985_common_snd_controls,
1115 .dapm_widgets = wm8985_common_dapm_widgets, 1115 .num_controls = ARRAY_SIZE(wm8985_common_snd_controls),
1116 .num_dapm_widgets = ARRAY_SIZE(wm8985_common_dapm_widgets), 1116 .dapm_widgets = wm8985_common_dapm_widgets,
1117 .dapm_routes = wm8985_common_dapm_routes, 1117 .num_dapm_widgets = ARRAY_SIZE(wm8985_common_dapm_widgets),
1118 .num_dapm_routes = ARRAY_SIZE(wm8985_common_dapm_routes), 1118 .dapm_routes = wm8985_common_dapm_routes,
1119 .num_dapm_routes = ARRAY_SIZE(wm8985_common_dapm_routes),
1120 },
1119}; 1121};
1120 1122
1121static const struct regmap_config wm8985_regmap = { 1123static const struct regmap_config wm8985_regmap = {
diff --git a/sound/soc/codecs/wm8988.c b/sound/soc/codecs/wm8988.c
index 895721a256f0..b0d0219532f2 100644
--- a/sound/soc/codecs/wm8988.c
+++ b/sound/soc/codecs/wm8988.c
@@ -817,12 +817,14 @@ static const struct snd_soc_codec_driver soc_codec_dev_wm8988 = {
817 .set_bias_level = wm8988_set_bias_level, 817 .set_bias_level = wm8988_set_bias_level,
818 .suspend_bias_off = true, 818 .suspend_bias_off = true,
819 819
820 .controls = wm8988_snd_controls, 820 .component_driver = {
821 .num_controls = ARRAY_SIZE(wm8988_snd_controls), 821 .controls = wm8988_snd_controls,
822 .dapm_widgets = wm8988_dapm_widgets, 822 .num_controls = ARRAY_SIZE(wm8988_snd_controls),
823 .num_dapm_widgets = ARRAY_SIZE(wm8988_dapm_widgets), 823 .dapm_widgets = wm8988_dapm_widgets,
824 .dapm_routes = wm8988_dapm_routes, 824 .num_dapm_widgets = ARRAY_SIZE(wm8988_dapm_widgets),
825 .num_dapm_routes = ARRAY_SIZE(wm8988_dapm_routes), 825 .dapm_routes = wm8988_dapm_routes,
826 .num_dapm_routes = ARRAY_SIZE(wm8988_dapm_routes),
827 },
826}; 828};
827 829
828static const struct regmap_config wm8988_regmap = { 830static const struct regmap_config wm8988_regmap = {
diff --git a/sound/soc/codecs/wm8990.c b/sound/soc/codecs/wm8990.c
index 23ecd30d8bca..a8945001e696 100644
--- a/sound/soc/codecs/wm8990.c
+++ b/sound/soc/codecs/wm8990.c
@@ -1294,17 +1294,19 @@ static int wm8990_probe(struct snd_soc_codec *codec)
1294 return 0; 1294 return 0;
1295} 1295}
1296 1296
1297static struct snd_soc_codec_driver soc_codec_dev_wm8990 = { 1297static const struct snd_soc_codec_driver soc_codec_dev_wm8990 = {
1298 .probe = wm8990_probe, 1298 .probe = wm8990_probe,
1299 .set_bias_level = wm8990_set_bias_level, 1299 .set_bias_level = wm8990_set_bias_level,
1300 .suspend_bias_off = true, 1300 .suspend_bias_off = true,
1301 1301
1302 .controls = wm8990_snd_controls, 1302 .component_driver = {
1303 .num_controls = ARRAY_SIZE(wm8990_snd_controls), 1303 .controls = wm8990_snd_controls,
1304 .dapm_widgets = wm8990_dapm_widgets, 1304 .num_controls = ARRAY_SIZE(wm8990_snd_controls),
1305 .num_dapm_widgets = ARRAY_SIZE(wm8990_dapm_widgets), 1305 .dapm_widgets = wm8990_dapm_widgets,
1306 .dapm_routes = wm8990_dapm_routes, 1306 .num_dapm_widgets = ARRAY_SIZE(wm8990_dapm_widgets),
1307 .num_dapm_routes = ARRAY_SIZE(wm8990_dapm_routes), 1307 .dapm_routes = wm8990_dapm_routes,
1308 .num_dapm_routes = ARRAY_SIZE(wm8990_dapm_routes),
1309 },
1308}; 1310};
1309 1311
1310static const struct regmap_config wm8990_regmap = { 1312static const struct regmap_config wm8990_regmap = {
diff --git a/sound/soc/codecs/wm8991.c b/sound/soc/codecs/wm8991.c
index c9ee0ac6a654..984379040794 100644
--- a/sound/soc/codecs/wm8991.c
+++ b/sound/soc/codecs/wm8991.c
@@ -1232,16 +1232,18 @@ static struct snd_soc_dai_driver wm8991_dai = {
1232 .ops = &wm8991_ops 1232 .ops = &wm8991_ops
1233}; 1233};
1234 1234
1235static struct snd_soc_codec_driver soc_codec_dev_wm8991 = { 1235static const struct snd_soc_codec_driver soc_codec_dev_wm8991 = {
1236 .set_bias_level = wm8991_set_bias_level, 1236 .set_bias_level = wm8991_set_bias_level,
1237 .suspend_bias_off = true, 1237 .suspend_bias_off = true,
1238 1238
1239 .controls = wm8991_snd_controls, 1239 .component_driver = {
1240 .num_controls = ARRAY_SIZE(wm8991_snd_controls), 1240 .controls = wm8991_snd_controls,
1241 .dapm_widgets = wm8991_dapm_widgets, 1241 .num_controls = ARRAY_SIZE(wm8991_snd_controls),
1242 .num_dapm_widgets = ARRAY_SIZE(wm8991_dapm_widgets), 1242 .dapm_widgets = wm8991_dapm_widgets,
1243 .dapm_routes = wm8991_dapm_routes, 1243 .num_dapm_widgets = ARRAY_SIZE(wm8991_dapm_widgets),
1244 .num_dapm_routes = ARRAY_SIZE(wm8991_dapm_routes), 1244 .dapm_routes = wm8991_dapm_routes,
1245 .num_dapm_routes = ARRAY_SIZE(wm8991_dapm_routes),
1246 },
1245}; 1247};
1246 1248
1247static const struct regmap_config wm8991_regmap = { 1249static const struct regmap_config wm8991_regmap = {
diff --git a/sound/soc/codecs/wm8993.c b/sound/soc/codecs/wm8993.c
index 8668c4c391b0..195f7bf6eb22 100644
--- a/sound/soc/codecs/wm8993.c
+++ b/sound/soc/codecs/wm8993.c
@@ -1613,7 +1613,7 @@ static const struct regmap_config wm8993_regmap = {
1613 .num_reg_defaults = ARRAY_SIZE(wm8993_reg_defaults), 1613 .num_reg_defaults = ARRAY_SIZE(wm8993_reg_defaults),
1614}; 1614};
1615 1615
1616static struct snd_soc_codec_driver soc_codec_dev_wm8993 = { 1616static const struct snd_soc_codec_driver soc_codec_dev_wm8993 = {
1617 .probe = wm8993_probe, 1617 .probe = wm8993_probe,
1618 .suspend = wm8993_suspend, 1618 .suspend = wm8993_suspend,
1619 .resume = wm8993_resume, 1619 .resume = wm8993_resume,
diff --git a/sound/soc/codecs/wm8994.c b/sound/soc/codecs/wm8994.c
index a18aecb49935..3896523b71e9 100644
--- a/sound/soc/codecs/wm8994.c
+++ b/sound/soc/codecs/wm8994.c
@@ -4439,7 +4439,7 @@ static struct regmap *wm8994_get_regmap(struct device *dev)
4439 return control->regmap; 4439 return control->regmap;
4440} 4440}
4441 4441
4442static struct snd_soc_codec_driver soc_codec_dev_wm8994 = { 4442static const struct snd_soc_codec_driver soc_codec_dev_wm8994 = {
4443 .probe = wm8994_codec_probe, 4443 .probe = wm8994_codec_probe,
4444 .remove = wm8994_codec_remove, 4444 .remove = wm8994_codec_remove,
4445 .suspend = wm8994_codec_suspend, 4445 .suspend = wm8994_codec_suspend,
diff --git a/sound/soc/codecs/wm8995.c b/sound/soc/codecs/wm8995.c
index 24500bafb0a8..19b08a5cae62 100644
--- a/sound/soc/codecs/wm8995.c
+++ b/sound/soc/codecs/wm8995.c
@@ -2192,12 +2192,14 @@ static const struct snd_soc_codec_driver soc_codec_dev_wm8995 = {
2192 .set_bias_level = wm8995_set_bias_level, 2192 .set_bias_level = wm8995_set_bias_level,
2193 .idle_bias_off = true, 2193 .idle_bias_off = true,
2194 2194
2195 .controls = wm8995_snd_controls, 2195 .component_driver = {
2196 .num_controls = ARRAY_SIZE(wm8995_snd_controls), 2196 .controls = wm8995_snd_controls,
2197 .dapm_widgets = wm8995_dapm_widgets, 2197 .num_controls = ARRAY_SIZE(wm8995_snd_controls),
2198 .num_dapm_widgets = ARRAY_SIZE(wm8995_dapm_widgets), 2198 .dapm_widgets = wm8995_dapm_widgets,
2199 .dapm_routes = wm8995_intercon, 2199 .num_dapm_widgets = ARRAY_SIZE(wm8995_dapm_widgets),
2200 .num_dapm_routes = ARRAY_SIZE(wm8995_intercon), 2200 .dapm_routes = wm8995_intercon,
2201 .num_dapm_routes = ARRAY_SIZE(wm8995_intercon),
2202 },
2201}; 2203};
2202 2204
2203static const struct regmap_config wm8995_regmap = { 2205static const struct regmap_config wm8995_regmap = {
diff --git a/sound/soc/codecs/wm8996.c b/sound/soc/codecs/wm8996.c
index a73044251218..5eba8ffba427 100644
--- a/sound/soc/codecs/wm8996.c
+++ b/sound/soc/codecs/wm8996.c
@@ -2684,18 +2684,20 @@ static int wm8996_remove(struct snd_soc_codec *codec)
2684 return 0; 2684 return 0;
2685} 2685}
2686 2686
2687static struct snd_soc_codec_driver soc_codec_dev_wm8996 = { 2687static const struct snd_soc_codec_driver soc_codec_dev_wm8996 = {
2688 .probe = wm8996_probe, 2688 .probe = wm8996_probe,
2689 .remove = wm8996_remove, 2689 .remove = wm8996_remove,
2690 .set_bias_level = wm8996_set_bias_level, 2690 .set_bias_level = wm8996_set_bias_level,
2691 .idle_bias_off = true, 2691 .idle_bias_off = true,
2692 .seq_notifier = wm8996_seq_notifier, 2692 .seq_notifier = wm8996_seq_notifier,
2693 .controls = wm8996_snd_controls, 2693 .component_driver = {
2694 .num_controls = ARRAY_SIZE(wm8996_snd_controls), 2694 .controls = wm8996_snd_controls,
2695 .dapm_widgets = wm8996_dapm_widgets, 2695 .num_controls = ARRAY_SIZE(wm8996_snd_controls),
2696 .num_dapm_widgets = ARRAY_SIZE(wm8996_dapm_widgets), 2696 .dapm_widgets = wm8996_dapm_widgets,
2697 .dapm_routes = wm8996_dapm_routes, 2697 .num_dapm_widgets = ARRAY_SIZE(wm8996_dapm_widgets),
2698 .num_dapm_routes = ARRAY_SIZE(wm8996_dapm_routes), 2698 .dapm_routes = wm8996_dapm_routes,
2699 .num_dapm_routes = ARRAY_SIZE(wm8996_dapm_routes),
2700 },
2699 .set_pll = wm8996_set_fll, 2701 .set_pll = wm8996_set_fll,
2700}; 2702};
2701 2703
diff --git a/sound/soc/codecs/wm8997.c b/sound/soc/codecs/wm8997.c
index 6b0785b5a5c5..2f2821b3382f 100644
--- a/sound/soc/codecs/wm8997.c
+++ b/sound/soc/codecs/wm8997.c
@@ -1095,7 +1095,7 @@ static struct regmap *wm8997_get_regmap(struct device *dev)
1095 return priv->core.arizona->regmap; 1095 return priv->core.arizona->regmap;
1096} 1096}
1097 1097
1098static struct snd_soc_codec_driver soc_codec_dev_wm8997 = { 1098static const struct snd_soc_codec_driver soc_codec_dev_wm8997 = {
1099 .probe = wm8997_codec_probe, 1099 .probe = wm8997_codec_probe,
1100 .remove = wm8997_codec_remove, 1100 .remove = wm8997_codec_remove,
1101 .get_regmap = wm8997_get_regmap, 1101 .get_regmap = wm8997_get_regmap,
@@ -1105,12 +1105,14 @@ static struct snd_soc_codec_driver soc_codec_dev_wm8997 = {
1105 .set_sysclk = arizona_set_sysclk, 1105 .set_sysclk = arizona_set_sysclk,
1106 .set_pll = wm8997_set_fll, 1106 .set_pll = wm8997_set_fll,
1107 1107
1108 .controls = wm8997_snd_controls, 1108 .component_driver = {
1109 .num_controls = ARRAY_SIZE(wm8997_snd_controls), 1109 .controls = wm8997_snd_controls,
1110 .dapm_widgets = wm8997_dapm_widgets, 1110 .num_controls = ARRAY_SIZE(wm8997_snd_controls),
1111 .num_dapm_widgets = ARRAY_SIZE(wm8997_dapm_widgets), 1111 .dapm_widgets = wm8997_dapm_widgets,
1112 .dapm_routes = wm8997_dapm_routes, 1112 .num_dapm_widgets = ARRAY_SIZE(wm8997_dapm_widgets),
1113 .num_dapm_routes = ARRAY_SIZE(wm8997_dapm_routes), 1113 .dapm_routes = wm8997_dapm_routes,
1114 .num_dapm_routes = ARRAY_SIZE(wm8997_dapm_routes),
1115 },
1114}; 1116};
1115 1117
1116static int wm8997_probe(struct platform_device *pdev) 1118static int wm8997_probe(struct platform_device *pdev)
diff --git a/sound/soc/codecs/wm8998.c b/sound/soc/codecs/wm8998.c
index 3a5c896a2d13..f6d18d77cec2 100644
--- a/sound/soc/codecs/wm8998.c
+++ b/sound/soc/codecs/wm8998.c
@@ -1351,7 +1351,7 @@ static struct regmap *wm8998_get_regmap(struct device *dev)
1351 return priv->core.arizona->regmap; 1351 return priv->core.arizona->regmap;
1352} 1352}
1353 1353
1354static struct snd_soc_codec_driver soc_codec_dev_wm8998 = { 1354static const struct snd_soc_codec_driver soc_codec_dev_wm8998 = {
1355 .probe = wm8998_codec_probe, 1355 .probe = wm8998_codec_probe,
1356 .remove = wm8998_codec_remove, 1356 .remove = wm8998_codec_remove,
1357 .get_regmap = wm8998_get_regmap, 1357 .get_regmap = wm8998_get_regmap,
@@ -1361,12 +1361,14 @@ static struct snd_soc_codec_driver soc_codec_dev_wm8998 = {
1361 .set_sysclk = arizona_set_sysclk, 1361 .set_sysclk = arizona_set_sysclk,
1362 .set_pll = wm8998_set_fll, 1362 .set_pll = wm8998_set_fll,
1363 1363
1364 .controls = wm8998_snd_controls, 1364 .component_driver = {
1365 .num_controls = ARRAY_SIZE(wm8998_snd_controls), 1365 .controls = wm8998_snd_controls,
1366 .dapm_widgets = wm8998_dapm_widgets, 1366 .num_controls = ARRAY_SIZE(wm8998_snd_controls),
1367 .num_dapm_widgets = ARRAY_SIZE(wm8998_dapm_widgets), 1367 .dapm_widgets = wm8998_dapm_widgets,
1368 .dapm_routes = wm8998_dapm_routes, 1368 .num_dapm_widgets = ARRAY_SIZE(wm8998_dapm_widgets),
1369 .num_dapm_routes = ARRAY_SIZE(wm8998_dapm_routes), 1369 .dapm_routes = wm8998_dapm_routes,
1370 .num_dapm_routes = ARRAY_SIZE(wm8998_dapm_routes),
1371 },
1370}; 1372};
1371 1373
1372static int wm8998_probe(struct platform_device *pdev) 1374static int wm8998_probe(struct platform_device *pdev)
diff --git a/sound/soc/codecs/wm9081.c b/sound/soc/codecs/wm9081.c
index 363b3b667616..856867ec2813 100644
--- a/sound/soc/codecs/wm9081.c
+++ b/sound/soc/codecs/wm9081.c
@@ -1274,7 +1274,7 @@ static int wm9081_probe(struct snd_soc_codec *codec)
1274 return 0; 1274 return 0;
1275} 1275}
1276 1276
1277static struct snd_soc_codec_driver soc_codec_dev_wm9081 = { 1277static const struct snd_soc_codec_driver soc_codec_dev_wm9081 = {
1278 .probe = wm9081_probe, 1278 .probe = wm9081_probe,
1279 1279
1280 .set_sysclk = wm9081_set_sysclk, 1280 .set_sysclk = wm9081_set_sysclk,
@@ -1282,12 +1282,14 @@ static struct snd_soc_codec_driver soc_codec_dev_wm9081 = {
1282 1282
1283 .idle_bias_off = true, 1283 .idle_bias_off = true,
1284 1284
1285 .controls = wm9081_snd_controls, 1285 .component_driver = {
1286 .num_controls = ARRAY_SIZE(wm9081_snd_controls), 1286 .controls = wm9081_snd_controls,
1287 .dapm_widgets = wm9081_dapm_widgets, 1287 .num_controls = ARRAY_SIZE(wm9081_snd_controls),
1288 .num_dapm_widgets = ARRAY_SIZE(wm9081_dapm_widgets), 1288 .dapm_widgets = wm9081_dapm_widgets,
1289 .dapm_routes = wm9081_audio_paths, 1289 .num_dapm_widgets = ARRAY_SIZE(wm9081_dapm_widgets),
1290 .num_dapm_routes = ARRAY_SIZE(wm9081_audio_paths), 1290 .dapm_routes = wm9081_audio_paths,
1291 .num_dapm_routes = ARRAY_SIZE(wm9081_audio_paths),
1292 },
1291}; 1293};
1292 1294
1293static const struct regmap_config wm9081_regmap = { 1295static const struct regmap_config wm9081_regmap = {
diff --git a/sound/soc/codecs/wm9090.c b/sound/soc/codecs/wm9090.c
index 5d737290f547..5a131385cb2f 100644
--- a/sound/soc/codecs/wm9090.c
+++ b/sound/soc/codecs/wm9090.c
@@ -550,7 +550,7 @@ static int wm9090_probe(struct snd_soc_codec *codec)
550 return 0; 550 return 0;
551} 551}
552 552
553static struct snd_soc_codec_driver soc_codec_dev_wm9090 = { 553static const struct snd_soc_codec_driver soc_codec_dev_wm9090 = {
554 .probe = wm9090_probe, 554 .probe = wm9090_probe,
555 .set_bias_level = wm9090_set_bias_level, 555 .set_bias_level = wm9090_set_bias_level,
556 .suspend_bias_off = true, 556 .suspend_bias_off = true,
diff --git a/sound/soc/codecs/wm9705.c b/sound/soc/codecs/wm9705.c
index 744842c76a60..dcdd055db57b 100644
--- a/sound/soc/codecs/wm9705.c
+++ b/sound/soc/codecs/wm9705.c
@@ -352,7 +352,7 @@ static int wm9705_soc_remove(struct snd_soc_codec *codec)
352 return 0; 352 return 0;
353} 353}
354 354
355static struct snd_soc_codec_driver soc_codec_dev_wm9705 = { 355static const struct snd_soc_codec_driver soc_codec_dev_wm9705 = {
356 .probe = wm9705_soc_probe, 356 .probe = wm9705_soc_probe,
357 .remove = wm9705_soc_remove, 357 .remove = wm9705_soc_remove,
358 .suspend = wm9705_soc_suspend, 358 .suspend = wm9705_soc_suspend,
@@ -364,12 +364,14 @@ static struct snd_soc_codec_driver soc_codec_dev_wm9705 = {
364 .reg_cache_step = 2, 364 .reg_cache_step = 2,
365 .reg_cache_default = wm9705_reg, 365 .reg_cache_default = wm9705_reg,
366 366
367 .controls = wm9705_snd_ac97_controls, 367 .component_driver = {
368 .num_controls = ARRAY_SIZE(wm9705_snd_ac97_controls), 368 .controls = wm9705_snd_ac97_controls,
369 .dapm_widgets = wm9705_dapm_widgets, 369 .num_controls = ARRAY_SIZE(wm9705_snd_ac97_controls),
370 .num_dapm_widgets = ARRAY_SIZE(wm9705_dapm_widgets), 370 .dapm_widgets = wm9705_dapm_widgets,
371 .dapm_routes = wm9705_audio_map, 371 .num_dapm_widgets = ARRAY_SIZE(wm9705_dapm_widgets),
372 .num_dapm_routes = ARRAY_SIZE(wm9705_audio_map), 372 .dapm_routes = wm9705_audio_map,
373 .num_dapm_routes = ARRAY_SIZE(wm9705_audio_map),
374 },
373}; 375};
374 376
375static int wm9705_probe(struct platform_device *pdev) 377static int wm9705_probe(struct platform_device *pdev)
diff --git a/sound/soc/codecs/wm9712.c b/sound/soc/codecs/wm9712.c
index 488a92224249..557709eac698 100644
--- a/sound/soc/codecs/wm9712.c
+++ b/sound/soc/codecs/wm9712.c
@@ -669,7 +669,7 @@ static int wm9712_soc_remove(struct snd_soc_codec *codec)
669 return 0; 669 return 0;
670} 670}
671 671
672static struct snd_soc_codec_driver soc_codec_dev_wm9712 = { 672static const struct snd_soc_codec_driver soc_codec_dev_wm9712 = {
673 .probe = wm9712_soc_probe, 673 .probe = wm9712_soc_probe,
674 .remove = wm9712_soc_remove, 674 .remove = wm9712_soc_remove,
675 .resume = wm9712_soc_resume, 675 .resume = wm9712_soc_resume,
@@ -682,12 +682,14 @@ static struct snd_soc_codec_driver soc_codec_dev_wm9712 = {
682 .reg_cache_step = 2, 682 .reg_cache_step = 2,
683 .reg_cache_default = wm9712_reg, 683 .reg_cache_default = wm9712_reg,
684 684
685 .controls = wm9712_snd_ac97_controls, 685 .component_driver = {
686 .num_controls = ARRAY_SIZE(wm9712_snd_ac97_controls), 686 .controls = wm9712_snd_ac97_controls,
687 .dapm_widgets = wm9712_dapm_widgets, 687 .num_controls = ARRAY_SIZE(wm9712_snd_ac97_controls),
688 .num_dapm_widgets = ARRAY_SIZE(wm9712_dapm_widgets), 688 .dapm_widgets = wm9712_dapm_widgets,
689 .dapm_routes = wm9712_audio_map, 689 .num_dapm_widgets = ARRAY_SIZE(wm9712_dapm_widgets),
690 .num_dapm_routes = ARRAY_SIZE(wm9712_audio_map), 690 .dapm_routes = wm9712_audio_map,
691 .num_dapm_routes = ARRAY_SIZE(wm9712_audio_map),
692 },
691}; 693};
692 694
693static int wm9712_probe(struct platform_device *pdev) 695static int wm9712_probe(struct platform_device *pdev)
diff --git a/sound/soc/codecs/wm9713.c b/sound/soc/codecs/wm9713.c
index 9849643ef809..e4301ddb1b84 100644
--- a/sound/soc/codecs/wm9713.c
+++ b/sound/soc/codecs/wm9713.c
@@ -1235,19 +1235,21 @@ static int wm9713_soc_remove(struct snd_soc_codec *codec)
1235 return 0; 1235 return 0;
1236} 1236}
1237 1237
1238static struct snd_soc_codec_driver soc_codec_dev_wm9713 = { 1238static const struct snd_soc_codec_driver soc_codec_dev_wm9713 = {
1239 .probe = wm9713_soc_probe, 1239 .probe = wm9713_soc_probe,
1240 .remove = wm9713_soc_remove, 1240 .remove = wm9713_soc_remove,
1241 .suspend = wm9713_soc_suspend, 1241 .suspend = wm9713_soc_suspend,
1242 .resume = wm9713_soc_resume, 1242 .resume = wm9713_soc_resume,
1243 .set_bias_level = wm9713_set_bias_level, 1243 .set_bias_level = wm9713_set_bias_level,
1244 1244
1245 .controls = wm9713_snd_ac97_controls, 1245 .component_driver = {
1246 .num_controls = ARRAY_SIZE(wm9713_snd_ac97_controls), 1246 .controls = wm9713_snd_ac97_controls,
1247 .dapm_widgets = wm9713_dapm_widgets, 1247 .num_controls = ARRAY_SIZE(wm9713_snd_ac97_controls),
1248 .num_dapm_widgets = ARRAY_SIZE(wm9713_dapm_widgets), 1248 .dapm_widgets = wm9713_dapm_widgets,
1249 .dapm_routes = wm9713_audio_map, 1249 .num_dapm_widgets = ARRAY_SIZE(wm9713_dapm_widgets),
1250 .num_dapm_routes = ARRAY_SIZE(wm9713_audio_map), 1250 .dapm_routes = wm9713_audio_map,
1251 .num_dapm_routes = ARRAY_SIZE(wm9713_audio_map),
1252 },
1251}; 1253};
1252 1254
1253static int wm9713_probe(struct platform_device *pdev) 1255static int wm9713_probe(struct platform_device *pdev)
diff --git a/sound/soc/img/pistachio-internal-dac.c b/sound/soc/img/pistachio-internal-dac.c
index 162a0fd68c7b..53e11c6d4e22 100644
--- a/sound/soc/img/pistachio-internal-dac.c
+++ b/sound/soc/img/pistachio-internal-dac.c
@@ -134,12 +134,14 @@ static int pistachio_internal_dac_codec_probe(struct snd_soc_codec *codec)
134static const struct snd_soc_codec_driver pistachio_internal_dac_driver = { 134static const struct snd_soc_codec_driver pistachio_internal_dac_driver = {
135 .probe = pistachio_internal_dac_codec_probe, 135 .probe = pistachio_internal_dac_codec_probe,
136 .idle_bias_off = true, 136 .idle_bias_off = true,
137 .controls = pistachio_internal_dac_snd_controls, 137 .component_driver = {
138 .num_controls = ARRAY_SIZE(pistachio_internal_dac_snd_controls), 138 .controls = pistachio_internal_dac_snd_controls,
139 .dapm_widgets = pistachio_internal_dac_widgets, 139 .num_controls = ARRAY_SIZE(pistachio_internal_dac_snd_controls),
140 .num_dapm_widgets = ARRAY_SIZE(pistachio_internal_dac_widgets), 140 .dapm_widgets = pistachio_internal_dac_widgets,
141 .dapm_routes = pistachio_internal_dac_routes, 141 .num_dapm_widgets = ARRAY_SIZE(pistachio_internal_dac_widgets),
142 .num_dapm_routes = ARRAY_SIZE(pistachio_internal_dac_routes), 142 .dapm_routes = pistachio_internal_dac_routes,
143 .num_dapm_routes = ARRAY_SIZE(pistachio_internal_dac_routes),
144 },
143}; 145};
144 146
145static int pistachio_internal_dac_probe(struct platform_device *pdev) 147static int pistachio_internal_dac_probe(struct platform_device *pdev)
diff --git a/sound/soc/soc-core.c b/sound/soc/soc-core.c
index 16369cad4803..edba975d893e 100644
--- a/sound/soc/soc-core.c
+++ b/sound/soc/soc-core.c
@@ -3333,19 +3333,6 @@ int snd_soc_register_codec(struct device *dev,
3333 if (ret) 3333 if (ret)
3334 goto err_free; 3334 goto err_free;
3335 3335
3336 if (codec_drv->controls) {
3337 codec->component.controls = codec_drv->controls;
3338 codec->component.num_controls = codec_drv->num_controls;
3339 }
3340 if (codec_drv->dapm_widgets) {
3341 codec->component.dapm_widgets = codec_drv->dapm_widgets;
3342 codec->component.num_dapm_widgets = codec_drv->num_dapm_widgets;
3343 }
3344 if (codec_drv->dapm_routes) {
3345 codec->component.dapm_routes = codec_drv->dapm_routes;
3346 codec->component.num_dapm_routes = codec_drv->num_dapm_routes;
3347 }
3348
3349 if (codec_drv->probe) 3336 if (codec_drv->probe)
3350 codec->component.probe = snd_soc_codec_drv_probe; 3337 codec->component.probe = snd_soc_codec_drv_probe;
3351 if (codec_drv->remove) 3338 if (codec_drv->remove)
diff --git a/sound/soc/sunxi/sun4i-codec.c b/sound/soc/sunxi/sun4i-codec.c
index eb6808842208..e51f363ff786 100644
--- a/sound/soc/sunxi/sun4i-codec.c
+++ b/sound/soc/sunxi/sun4i-codec.c
@@ -628,12 +628,14 @@ static const struct snd_soc_dapm_route sun4i_codec_codec_dapm_routes[] = {
628}; 628};
629 629
630static struct snd_soc_codec_driver sun4i_codec_codec = { 630static struct snd_soc_codec_driver sun4i_codec_codec = {
631 .controls = sun4i_codec_widgets, 631 .component_driver = {
632 .num_controls = ARRAY_SIZE(sun4i_codec_widgets), 632 .controls = sun4i_codec_widgets,
633 .dapm_widgets = sun4i_codec_codec_dapm_widgets, 633 .num_controls = ARRAY_SIZE(sun4i_codec_widgets),
634 .num_dapm_widgets = ARRAY_SIZE(sun4i_codec_codec_dapm_widgets), 634 .dapm_widgets = sun4i_codec_codec_dapm_widgets,
635 .dapm_routes = sun4i_codec_codec_dapm_routes, 635 .num_dapm_widgets = ARRAY_SIZE(sun4i_codec_codec_dapm_widgets),
636 .num_dapm_routes = ARRAY_SIZE(sun4i_codec_codec_dapm_routes), 636 .dapm_routes = sun4i_codec_codec_dapm_routes,
637 .num_dapm_routes = ARRAY_SIZE(sun4i_codec_codec_dapm_routes),
638 },
637}; 639};
638 640
639static const struct snd_soc_component_driver sun4i_codec_component = { 641static const struct snd_soc_component_driver sun4i_codec_component = {