Re: [PATCH 1/2] ASoC: ti: omap-twl4030: drop support for platform data

Sebastian Reichel <[email protected]>
Newsgroups org.kernel.vger.linux-sound,org.kernel.vger.linux-kernel,org.kernel.vger.linux-omap
Message-ID <amQMsPAeErtOa6NU@venus>
Hi,

On Fri, Jul 24, 2026 at 04:34:29PM -0700, Dmitry Torokhov wrote:
> There are no users of omap_tw4030_pdata in the mainline kernel so
> remove support for it from the driver.
> 
> Signed-off-by: Dmitry Torokhov <[email protected]>
> ---

Reviewed-by: Sebastian Reichel <[email protected]>

Greetings,

-- Sebastian

>  include/linux/platform_data/omap-twl4030.h |  42 -------
>  sound/soc/ti/omap-twl4030.c                | 134 +++++++--------------
>  2 files changed, 44 insertions(+), 132 deletions(-)
>  delete mode 100644 include/linux/platform_data/omap-twl4030.h
> 
> diff --git a/include/linux/platform_data/omap-twl4030.h b/include/linux/platform_data/omap-twl4030.h
> deleted file mode 100644
> index 7fcb55fe21c9..000000000000
> --- a/include/linux/platform_data/omap-twl4030.h
> +++ /dev/null
> @@ -1,42 +0,0 @@
> -/* SPDX-License-Identifier: GPL-2.0-only */
> -/**
> - * omap-twl4030.h - ASoC machine driver for TI SoC based boards with twl4030
> - *		    codec, header.
> - *
> - * Copyright (C) 2012 Texas Instruments Incorporated - https://www.ti.com
> - * All rights reserved.
> - *
> - * Author: Peter Ujfalusi <[email protected]>
> - */
> -
> -#ifndef _OMAP_TWL4030_H_
> -#define _OMAP_TWL4030_H_
> -
> -/* To select if only one channel is connected in a stereo port */
> -#define OMAP_TWL4030_LEFT	(1 << 0)
> -#define OMAP_TWL4030_RIGHT	(1 << 1)
> -
> -struct omap_tw4030_pdata {
> -	const char *card_name;
> -	/* Voice port is connected to McBSP3 */
> -	bool voice_connected;
> -
> -	/* The driver will parse the connection flags if this flag is set */
> -	bool	custom_routing;
> -	/* Flags to indicate connected audio ports. */
> -	u8	has_hs;
> -	u8	has_hf;
> -	u8	has_predriv;
> -	u8	has_carkit;
> -	bool	has_ear;
> -
> -	bool	has_mainmic;
> -	bool	has_submic;
> -	bool	has_hsmic;
> -	bool	has_carkitmic;
> -	bool	has_digimic0;
> -	bool	has_digimic1;
> -	u8	has_linein;
> -};
> -
> -#endif /* _OMAP_TWL4030_H_ */
> diff --git a/sound/soc/ti/omap-twl4030.c b/sound/soc/ti/omap-twl4030.c
> index 4d80f8a7a947..950879fc7275 100644
> --- a/sound/soc/ti/omap-twl4030.c
> +++ b/sound/soc/ti/omap-twl4030.c
> @@ -17,7 +17,6 @@
>   */
>  
>  #include <linux/platform_device.h>
> -#include <linux/platform_data/omap-twl4030.h>
>  #include <linux/module.h>
>  #include <linux/of.h>
>  
> @@ -133,20 +132,12 @@ static struct snd_soc_jack_gpio hs_jack_gpios[] = {
>  	},
>  };
>  
> -static inline void twl4030_disconnect_pin(struct snd_soc_dapm_context *dapm,
> -					  int connected, char *pin)
> -{
> -	if (!connected)
> -		snd_soc_dapm_disable_pin(dapm, pin);
> -}
> -
>  static int omap_twl4030_init(struct snd_soc_pcm_runtime *rtd)
>  {
>  	struct snd_soc_card *card = rtd->card;
> -	struct snd_soc_dapm_context *dapm = snd_soc_card_to_dapm(card);
> -	struct omap_tw4030_pdata *pdata = dev_get_platdata(card->dev);
> +
>  	struct omap_twl4030 *priv = snd_soc_card_get_drvdata(card);
> -	int ret = 0;
> +	int ret;
>  
>  	/*
>  	 * This is a bit of a hack, but the GPIO is optional so we
> @@ -170,29 +161,7 @@ static int omap_twl4030_init(struct snd_soc_pcm_runtime *rtd)
>  			return ret;
>  	}
>  
> -	/*
> -	 * NULL pdata means we booted with DT. In this case the routing is
> -	 * provided and the card is fully routed, no need to mark pins.
> -	 */
> -	if (!pdata || !pdata->custom_routing)
> -		return ret;
> -
> -	/* Disable not connected paths if not used */
> -	twl4030_disconnect_pin(dapm, pdata->has_ear, "Earpiece Spk");
> -	twl4030_disconnect_pin(dapm, pdata->has_hf, "Handsfree Spk");
> -	twl4030_disconnect_pin(dapm, pdata->has_hs, "Headset Stereophone");
> -	twl4030_disconnect_pin(dapm, pdata->has_predriv, "Ext Spk");
> -	twl4030_disconnect_pin(dapm, pdata->has_carkit, "Carkit Spk");
> -
> -	twl4030_disconnect_pin(dapm, pdata->has_mainmic, "Main Mic");
> -	twl4030_disconnect_pin(dapm, pdata->has_submic, "Sub Mic");
> -	twl4030_disconnect_pin(dapm, pdata->has_hsmic, "Headset Mic");
> -	twl4030_disconnect_pin(dapm, pdata->has_carkitmic, "Carkit Mic");
> -	twl4030_disconnect_pin(dapm, pdata->has_digimic0, "Digital0 Mic");
> -	twl4030_disconnect_pin(dapm, pdata->has_digimic1, "Digital1 Mic");
> -	twl4030_disconnect_pin(dapm, pdata->has_linein, "Line In");
> -
> -	return ret;
> +	return 0;
>  }
>  
>  /* Digital audio interface glue - connects codec <--> CPU */
> @@ -237,11 +206,15 @@ static struct snd_soc_card omap_twl4030_card = {
>  
>  static int omap_twl4030_probe(struct platform_device *pdev)
>  {
> -	struct omap_tw4030_pdata *pdata = dev_get_platdata(&pdev->dev);
> -	struct device_node *node = pdev->dev.of_node;
>  	struct snd_soc_card *card = &omap_twl4030_card;
> +	struct device_node *node, *dai_node;
>  	struct omap_twl4030 *priv;
> -	int ret = 0;
> +	struct property *prop;
> +	int ret;
> +
> +	node = pdev->dev.of_node;
> +	if (!node)
> +		return -ENODEV;
>  
>  	card->dev = &pdev->dev;
>  
> @@ -249,62 +222,43 @@ static int omap_twl4030_probe(struct platform_device *pdev)
>  	if (priv == NULL)
>  		return -ENOMEM;
>  
> -	if (node) {
> -		struct device_node *dai_node;
> -		struct property *prop;
> -
> -		if (snd_soc_of_parse_card_name(card, "ti,model")) {
> -			dev_err(&pdev->dev, "Card name is not provided\n");
> -			return -ENODEV;
> -		}
> -
> -		dai_node = of_parse_phandle(node, "ti,mcbsp", 0);
> -		if (!dai_node) {
> -			dev_err(&pdev->dev, "McBSP node is not provided\n");
> -			return -EINVAL;
> -		}
> -		omap_twl4030_dai_links[0].cpus->dai_name  = NULL;
> -		omap_twl4030_dai_links[0].cpus->of_node = dai_node;
> -
> -		omap_twl4030_dai_links[0].platforms->name  = NULL;
> -		omap_twl4030_dai_links[0].platforms->of_node = dai_node;
> -
> -		dai_node = of_parse_phandle(node, "ti,mcbsp-voice", 0);
> -		if (!dai_node) {
> -			card->num_links = 1;
> -		} else {
> -			omap_twl4030_dai_links[1].cpus->dai_name  = NULL;
> -			omap_twl4030_dai_links[1].cpus->of_node = dai_node;
> -
> -			omap_twl4030_dai_links[1].platforms->name  = NULL;
> -			omap_twl4030_dai_links[1].platforms->of_node = dai_node;
> -		}
> -
> -		/* Optional: audio routing can be provided */
> -		prop = of_find_property(node, "ti,audio-routing", NULL);
> -		if (prop) {
> -			ret = snd_soc_of_parse_audio_routing(card,
> -							    "ti,audio-routing");
> -			if (ret)
> -				return ret;
> -
> -			card->fully_routed = 1;
> -		}
> -	} else if (pdata) {
> -		if (pdata->card_name) {
> -			card->name = pdata->card_name;
> -		} else {
> -			dev_err(&pdev->dev, "Card name is not provided\n");
> -			return -ENODEV;
> -		}
> -
> -		if (!pdata->voice_connected)
> -			card->num_links = 1;
> -	} else {
> -		dev_err(&pdev->dev, "Missing pdata\n");
> +	if (snd_soc_of_parse_card_name(card, "ti,model")) {
> +		dev_err(&pdev->dev, "Card name is not provided\n");
>  		return -ENODEV;
>  	}
>  
> +	dai_node = of_parse_phandle(node, "ti,mcbsp", 0);
> +	if (!dai_node) {
> +		dev_err(&pdev->dev, "McBSP node is not provided\n");
> +		return -EINVAL;
> +	}
> +	omap_twl4030_dai_links[0].cpus->dai_name  = NULL;
> +	omap_twl4030_dai_links[0].cpus->of_node = dai_node;
> +
> +	omap_twl4030_dai_links[0].platforms->name  = NULL;
> +	omap_twl4030_dai_links[0].platforms->of_node = dai_node;
> +
> +	dai_node = of_parse_phandle(node, "ti,mcbsp-voice", 0);
> +	if (!dai_node) {
> +		card->num_links = 1;
> +	} else {
> +		omap_twl4030_dai_links[1].cpus->dai_name  = NULL;
> +		omap_twl4030_dai_links[1].cpus->of_node = dai_node;
> +
> +		omap_twl4030_dai_links[1].platforms->name  = NULL;
> +		omap_twl4030_dai_links[1].platforms->of_node = dai_node;
> +	}
> +
> +	/* Optional: audio routing can be provided */
> +	prop = of_find_property(node, "ti,audio-routing", NULL);
> +	if (prop) {
> +		ret = snd_soc_of_parse_audio_routing(card, "ti,audio-routing");
> +		if (ret)
> +			return ret;
> +
> +		card->fully_routed = 1;
> +	}
> +
>  	snd_soc_card_set_drvdata(card, priv);
>  	ret = devm_snd_soc_register_card(&pdev->dev, card);
>  	if (ret) {
> -- 
> 2.55.0.229.g6434b31f56-goog
> 
>
signature.asc (application/pgp-signature, 833 B)
-----BEGIN PGP SIGNATURE-----

iQIzBAABCgAdFiEE72YNB0Y/i3JqeVQT2O7X88g7+poFAmpkDM0ACgkQ2O7X88g7
+ppQlA/9Grjih9lj61FY/M77Qhsm/xs3mjxhcl/qX+4I0aDD3ZyaNoGDnys+5kzT
xFS0e0x0pLH2Sh4haACnQlWmYqTbQSaCDrG4fkjU1VHuHErU/7EUIOEyNyLHv/UG
Ud5qoDP2BHl6XnVMK78zzhsnQmOrjipv1Wa7Pyr7VaH5Vf/3Hdl/u5Nxb0xRHRYH
FvrfResG3tzo6MdFpBcI6j3TUiFbyS9Rzmfz55rxX0/wv/4e3R/F9ONk2kVftdBw
Jf3cCbZiBkO32JGdlzF+HdmnEU+FAQ2FcPvaP1HlAuGcAlUauK3sY07Ppq6zRzyh
S/QVtuBjBA9dJ6kl99s6vlSvKN9FCHxePmBP4apNBE6F9/pytL4VFNgqtSQ2xn0x
bsTM3qnChIOJNSuNhNzswebNgc+F3slP56JDg96ad2lpfM14Ow1MuBOcn0/e7uA4
SYcqJjbjyrSh7XFmxKl3VMiSSzKbzvI4qNgBzitPgiehopYN1TFlbLDMNJjh0xBO
Of5tWyvRUew5fAro3L3/14tQlBkqfnYHF/u4p41hxfJoTs5iCVQwQ7zVAkh0I9d6
8vA/XbKoBEG9AzMpI2+xbEs/hRT8+vOdV0v9YZrl24GnzxS3DgYCq5UZIcgYlQoi
Pw6mgZ/V7gmtvvGiPXlBf8MA0n5Npd6zXrxDkdEtorjjQQc6I04=
=Weu5
-----END PGP SIGNATURE-----
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.