From patchwork Sat Aug 31 10:44:36 2013 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Markus Pargmann X-Patchwork-Id: 2852350 Return-Path: X-Original-To: patchwork-linux-arm@patchwork.kernel.org Delivered-To: patchwork-parsemail@patchwork2.web.kernel.org Received: from mail.kernel.org (mail.kernel.org [198.145.19.201]) by patchwork2.web.kernel.org (Postfix) with ESMTP id 5A332C0AB5 for ; Sat, 31 Aug 2013 10:45:36 +0000 (UTC) Received: from mail.kernel.org (localhost [127.0.0.1]) by mail.kernel.org (Postfix) with ESMTP id 5270E2016A for ; Sat, 31 Aug 2013 10:45:35 +0000 (UTC) Received: from casper.infradead.org (casper.infradead.org [85.118.1.10]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 33ED020158 for ; Sat, 31 Aug 2013 10:45:34 +0000 (UTC) Received: from merlin.infradead.org ([2001:4978:20e::2]) by casper.infradead.org with esmtps (Exim 4.80.1 #2 (Red Hat Linux)) id 1VFigC-0005YQ-AS; Sat, 31 Aug 2013 10:45:20 +0000 Received: from localhost ([::1] helo=merlin.infradead.org) by merlin.infradead.org with esmtp (Exim 4.80.1 #2 (Red Hat Linux)) id 1VFigA-0003kZ-68; Sat, 31 Aug 2013 10:45:18 +0000 Received: from metis.ext.pengutronix.de ([2001:6f8:1178:4:290:27ff:fe1d:cc33]) by merlin.infradead.org with esmtps (Exim 4.80.1 #2 (Red Hat Linux)) id 1VFig6-0003k9-5Z for linux-arm-kernel@lists.infradead.org; Sat, 31 Aug 2013 10:45:15 +0000 Received: from dude.hi.pengutronix.de ([2001:6f8:1178:2:21e:67ff:fe11:9c5c]) by metis.ext.pengutronix.de with esmtp (Exim 4.72) (envelope-from ) id 1VFifg-0003Ks-Er; Sat, 31 Aug 2013 12:44:48 +0200 Received: from mpa by dude.hi.pengutronix.de with local (Exim 4.80) (envelope-from ) id 1VFifd-0003jc-6R; Sat, 31 Aug 2013 12:44:45 +0200 From: Markus Pargmann To: linux-arm-kernel@lists.infradead.org Subject: [PATCH 1/3] ASoC: generic: simple card, use private data Date: Sat, 31 Aug 2013 12:44:36 +0200 Message-Id: <1377945878-13322-2-git-send-email-mpa@pengutronix.de> X-Mailer: git-send-email 1.8.4.rc3 In-Reply-To: <1377945878-13322-1-git-send-email-mpa@pengutronix.de> References: <1377945878-13322-1-git-send-email-mpa@pengutronix.de> X-SA-Exim-Connect-IP: 2001:6f8:1178:2:21e:67ff:fe11:9c5c X-SA-Exim-Mail-From: mpa@pengutronix.de X-SA-Exim-Scanned: No (on metis.ext.pengutronix.de); SAEximRunCond expanded to false X-PTX-Original-Recipient: linux-arm-kernel@lists.infradead.org X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20130831_064514_720647_D52BA875 X-CRM114-Status: GOOD ( 17.51 ) X-Spam-Score: -4.4 (----) Cc: devicetree@vger.kernel.org, alsa-devel@alsa-project.org, Liam Girdwood , Grant Likely , Mark Brown , Sascha Hauer , Markus Pargmann , Shawn Guo X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+patchwork-linux-arm=patchwork.kernel.org@lists.infradead.org X-Spam-Status: No, score=-6.7 required=5.0 tests=BAYES_00, RCVD_IN_DNSWL_MED, RP_MATCHES_RCVD, UNPARSEABLE_RELAY autolearn=unavailable version=3.3.1 X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on mail.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP Move snd_link and snd_card from platform data to private data. Signed-off-by: Markus Pargmann --- include/sound/simple_card.h | 4 ---- sound/soc/generic/simple-card.c | 44 ++++++++++++++++++++++++++--------------- 2 files changed, 28 insertions(+), 20 deletions(-) diff --git a/include/sound/simple_card.h b/include/sound/simple_card.h index 6c74527..e1ac996 100644 --- a/include/sound/simple_card.h +++ b/include/sound/simple_card.h @@ -29,10 +29,6 @@ struct asoc_simple_card_info { unsigned int daifmt; struct asoc_simple_dai cpu_dai; struct asoc_simple_dai codec_dai; - - /* used in simple-card.c */ - struct snd_soc_dai_link snd_link; - struct snd_soc_card snd_card; }; #endif /* __SIMPLE_CARD_H */ diff --git a/sound/soc/generic/simple-card.c b/sound/soc/generic/simple-card.c index 6cf8355..63cbf3e 100644 --- a/sound/soc/generic/simple-card.c +++ b/sound/soc/generic/simple-card.c @@ -15,6 +15,10 @@ #define asoc_simple_get_card_info(p) \ container_of(p->dai_link, struct asoc_simple_card_info, snd_link) +struct asoc_simple_card_data { + struct snd_soc_dai_link snd_link; + struct snd_soc_card snd_card; +}; static int __asoc_simple_card_dai_init(struct snd_soc_dai *dai, struct asoc_simple_dai *set, @@ -35,7 +39,8 @@ static int __asoc_simple_card_dai_init(struct snd_soc_dai *dai, static int asoc_simple_card_dai_init(struct snd_soc_pcm_runtime *rtd) { - struct asoc_simple_card_info *info = asoc_simple_get_card_info(rtd); + struct device *dev = rtd->card->dev; + struct asoc_simple_card_info *info = dev->platform_data; struct snd_soc_dai *codec = rtd->codec_dai; struct snd_soc_dai *cpu = rtd->cpu_dai; unsigned int daifmt = info->daifmt; @@ -55,6 +60,7 @@ static int asoc_simple_card_dai_init(struct snd_soc_pcm_runtime *rtd) static int asoc_simple_card_probe(struct platform_device *pdev) { struct asoc_simple_card_info *cinfo = pdev->dev.platform_data; + struct asoc_simple_card_data *priv; struct device *dev = &pdev->dev; if (!cinfo) { @@ -62,6 +68,10 @@ static int asoc_simple_card_probe(struct platform_device *pdev) return -EINVAL; } + priv = devm_kzalloc(&pdev->dev, sizeof(*priv), GFP_KERNEL); + if (!priv) + return -ENOMEM; + if (!cinfo->name || !cinfo->card || !cinfo->codec || @@ -75,31 +85,33 @@ static int asoc_simple_card_probe(struct platform_device *pdev) /* * init snd_soc_dai_link */ - cinfo->snd_link.name = cinfo->name; - cinfo->snd_link.stream_name = cinfo->name; - cinfo->snd_link.cpu_dai_name = cinfo->cpu_dai.name; - cinfo->snd_link.platform_name = cinfo->platform; - cinfo->snd_link.codec_name = cinfo->codec; - cinfo->snd_link.codec_dai_name = cinfo->codec_dai.name; - cinfo->snd_link.init = asoc_simple_card_dai_init; + priv->snd_link.name = cinfo->name; + priv->snd_link.stream_name = cinfo->name; + priv->snd_link.cpu_dai_name = cinfo->cpu_dai.name; + priv->snd_link.platform_name = cinfo->platform; + priv->snd_link.codec_name = cinfo->codec; + priv->snd_link.codec_dai_name = cinfo->codec_dai.name; + priv->snd_link.init = asoc_simple_card_dai_init; /* * init snd_soc_card */ - cinfo->snd_card.name = cinfo->card; - cinfo->snd_card.owner = THIS_MODULE; - cinfo->snd_card.dai_link = &cinfo->snd_link; - cinfo->snd_card.num_links = 1; - cinfo->snd_card.dev = &pdev->dev; + priv->snd_card.name = cinfo->card; + priv->snd_card.owner = THIS_MODULE; + priv->snd_card.dai_link = &priv->snd_link; + priv->snd_card.num_links = 1; + priv->snd_card.dev = &pdev->dev; - return snd_soc_register_card(&cinfo->snd_card); + dev_set_drvdata(&pdev->dev, priv); + + return snd_soc_register_card(&priv->snd_card); } static int asoc_simple_card_remove(struct platform_device *pdev) { - struct asoc_simple_card_info *cinfo = pdev->dev.platform_data; + struct asoc_simple_card_data *priv = dev_get_drvdata(&pdev->dev); - return snd_soc_unregister_card(&cinfo->snd_card); + return snd_soc_unregister_card(&priv->snd_card); } static struct platform_driver asoc_simple_card = {