From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from relmlor4.renesas.com ([210.160.252.174]:25419 "EHLO relmlie3.idc.renesas.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1750925AbdFTC2W (ORCPT ); Mon, 19 Jun 2017 22:28:22 -0400 Message-ID: <877f079z49.wl%kuninori.morimoto.gx@renesas.com> From: Kuninori Morimoto Subject: [RFC][PATCH 5/x] ASoC: remove platform related things To: Mark Brown , Lars-Peter CC: Simon , Linux-Renesas , Linux-ALSA In-Reply-To: <87efuf9z8u.wl%kuninori.morimoto.gx@renesas.com> References: <87efuf9z8u.wl%kuninori.morimoto.gx@renesas.com> MIME-Version: 1.0 (generated by SEMI-EPG 1.14.7 - "Harue") Content-Type: text/plain; charset="US-ASCII" Date: Tue, 20 Jun 2017 02:28:16 +0000 Sender: linux-renesas-soc-owner@vger.kernel.org List-ID: Now, all platform code are replaced to component. This patch removes all platform code. platform_list_read_file() is replaced to component_list_read_file(), and snd_soc_lookup_platform() is replaced to snd_soc_lookup_component() Signed-off-by: Kuninori Morimoto --- include/sound/soc.h | 101 +--------------------- sound/soc/soc-compress.c | 78 +---------------- sound/soc/soc-core.c | 220 +++++------------------------------------------ sound/soc/soc-devres.c | 35 -------- sound/soc/soc-io.c | 21 ----- sound/soc/soc-pcm.c | 68 ++------------- 6 files changed, 34 insertions(+), 489 deletions(-) diff --git a/include/sound/soc.h b/include/sound/soc.h index 8ebfb53..78a23f9 100644 --- a/include/sound/soc.h +++ b/include/sound/soc.h @@ -401,9 +401,7 @@ enum snd_soc_bias_level { struct snd_soc_pcm_runtime; struct snd_soc_dai; struct snd_soc_dai_driver; -struct snd_soc_platform; struct snd_soc_dai_link; -struct snd_soc_platform_driver; struct snd_soc_codec; struct snd_soc_codec_driver; struct snd_soc_component; @@ -455,15 +453,7 @@ static inline int snd_soc_resume(struct device *dev) } #endif int snd_soc_poweroff(struct device *dev); -int snd_soc_register_platform(struct device *dev, - const struct snd_soc_platform_driver *platform_drv); -int devm_snd_soc_register_platform(struct device *dev, - const struct snd_soc_platform_driver *platform_drv); -void snd_soc_unregister_platform(struct device *dev); -int snd_soc_add_platform(struct device *dev, struct snd_soc_platform *platform, - const struct snd_soc_platform_driver *platform_drv); -void snd_soc_remove_platform(struct snd_soc_platform *platform); -struct snd_soc_platform *snd_soc_lookup_platform(struct device *dev); + int snd_soc_register_codec(struct device *dev, const struct snd_soc_codec_driver *codec_drv, struct snd_soc_dai_driver *dai_drv, int num_dai); @@ -475,13 +465,10 @@ int devm_snd_soc_register_component(struct device *dev, const struct snd_soc_component_driver *cmpnt_drv, struct snd_soc_dai_driver *dai_drv, int num_dai); void snd_soc_unregister_component(struct device *dev); +struct snd_soc_component *snd_soc_lookup_component(struct device *dev); int snd_soc_cache_init(struct snd_soc_codec *codec); int snd_soc_cache_exit(struct snd_soc_codec *codec); -int snd_soc_platform_read(struct snd_soc_platform *platform, - unsigned int reg); -int snd_soc_platform_write(struct snd_soc_platform *platform, - unsigned int reg, unsigned int val); int soc_new_pcm(struct snd_soc_pcm_runtime *rtd, int num); #ifdef CONFIG_SND_SOC_COMPRESS int snd_soc_new_compress(struct snd_soc_pcm_runtime *rtd, int num); @@ -612,8 +599,6 @@ int snd_soc_add_component_controls(struct snd_soc_component *component, const struct snd_kcontrol_new *controls, unsigned int num_controls); int snd_soc_add_codec_controls(struct snd_soc_codec *codec, const struct snd_kcontrol_new *controls, unsigned int num_controls); -int snd_soc_add_platform_controls(struct snd_soc_platform *platform, - const struct snd_kcontrol_new *controls, unsigned int num_controls); int snd_soc_add_card_controls(struct snd_soc_card *soc_card, const struct snd_kcontrol_new *controls, int num_controls); int snd_soc_add_dai_controls(struct snd_soc_dai *dai, @@ -877,8 +862,6 @@ struct snd_soc_component { void (*remove)(struct snd_soc_component *); int (*suspend)(struct snd_soc_component *); int (*resume)(struct snd_soc_component *); - int (*pcm_new)(struct snd_soc_pcm_runtime *); - void (*pcm_free)(struct snd_pcm *); /* machine specific init */ int (*init)(struct snd_soc_component *component); @@ -952,39 +935,12 @@ struct snd_soc_codec_driver { bool ignore_pmdown_time; /* Doesn't benefit from pmdown delay */ }; -/* SoC platform interface */ -struct snd_soc_platform_driver { - - int (*probe)(struct snd_soc_platform *); - int (*remove)(struct snd_soc_platform *); - struct snd_soc_component_driver component_driver; - - /* pcm creation and destruction */ - int (*pcm_new)(struct snd_soc_pcm_runtime *); - void (*pcm_free)(struct snd_pcm *); - - /* platform stream pcm ops */ - const struct snd_pcm_ops *ops; - - /* platform stream compress ops */ - const struct snd_compr_ops *compr_ops; -}; - struct snd_soc_dai_link_component { const char *name; struct device_node *of_node; const char *dai_name; }; -struct snd_soc_platform { - struct device *dev; - const struct snd_soc_platform_driver *driver; - - struct list_head list; - - struct snd_soc_component component; -}; - struct snd_soc_dai_link { /* config - must be set by machine driver */ const char *name; /* Codec name */ @@ -1233,7 +1189,6 @@ struct snd_soc_pcm_runtime { struct snd_pcm *pcm; struct snd_compr *compr; struct snd_soc_codec *codec; - struct snd_soc_platform *platform; /* will be removed */ struct snd_soc_component *platform_com; struct snd_soc_dai *codec_dai; struct snd_soc_dai *cpu_dai; @@ -1316,19 +1271,6 @@ static inline struct snd_soc_codec *snd_soc_component_to_codec( } /** - * snd_soc_component_to_platform() - Casts a component to the platform it is embedded in - * @component: The component to cast to a platform - * - * This function must only be used on components that are known to be platforms. - * Otherwise the behavior is undefined. - */ -static inline struct snd_soc_platform *snd_soc_component_to_platform( - struct snd_soc_component *component) -{ - return container_of(component, struct snd_soc_platform, component); -} - -/** * snd_soc_dapm_to_component() - Casts a DAPM context to the component it is * embedded in * @dapm: The DAPM context to cast to the component @@ -1357,20 +1299,6 @@ static inline struct snd_soc_codec *snd_soc_dapm_to_codec( } /** - * snd_soc_dapm_to_platform() - Casts a DAPM context to the platform it is - * embedded in - * @dapm: The DAPM context to cast to the platform. - * - * This function must only be used on DAPM contexts that are known to be part of - * a platform (e.g. in a platform driver). Otherwise the behavior is undefined. - */ -static inline struct snd_soc_platform *snd_soc_dapm_to_platform( - struct snd_soc_dapm_context *dapm) -{ - return snd_soc_component_to_platform(snd_soc_dapm_to_component(dapm)); -} - -/** * snd_soc_component_get_dapm() - Returns the DAPM context associated with a * component * @component: The component for which to get the DAPM context @@ -1549,17 +1477,6 @@ static inline void *snd_soc_codec_get_drvdata(struct snd_soc_codec *codec) return snd_soc_component_get_drvdata(&codec->component); } -static inline void snd_soc_platform_set_drvdata(struct snd_soc_platform *platform, - void *data) -{ - snd_soc_component_set_drvdata(&platform->component, data); -} - -static inline void *snd_soc_platform_get_drvdata(struct snd_soc_platform *platform) -{ - return snd_soc_component_get_drvdata(&platform->component); -} - static inline void snd_soc_initialize_card_lists(struct snd_soc_card *card) { INIT_LIST_HEAD(&card->widgets); @@ -1646,20 +1563,6 @@ static inline struct snd_soc_codec *snd_soc_kcontrol_codec( return snd_soc_component_to_codec(snd_soc_kcontrol_component(kcontrol)); } -/** - * snd_soc_kcontrol_platform() - Returns the platform that registered the control - * @kcontrol: The control for which to get the platform - * - * Note: This function will only work correctly if the control has been - * registered with snd_soc_add_platform_controls() or via table based setup of - * a snd_soc_platform_driver. Otherwise the behavior is undefined. - */ -static inline struct snd_soc_platform *snd_soc_kcontrol_platform( - struct snd_kcontrol *kcontrol) -{ - return snd_soc_component_to_platform(snd_soc_kcontrol_component(kcontrol)); -} - int snd_soc_util_init(void); void snd_soc_util_exit(void); diff --git a/sound/soc/soc-compress.c b/sound/soc/soc-compress.c index 61ebc1e..18f5fe9 100644 --- a/sound/soc/soc-compress.c +++ b/sound/soc/soc-compress.c @@ -29,7 +29,6 @@ static int soc_compr_open(struct snd_compr_stream *cstream) { struct snd_soc_pcm_runtime *rtd = cstream->private_data; - struct snd_soc_platform *platform = rtd->platform; struct snd_soc_component *platform_com = rtd->platform_com; struct snd_soc_dai *cpu_dai = rtd->cpu_dai; int ret = 0; @@ -52,13 +51,6 @@ static int soc_compr_open(struct snd_compr_stream *cstream) platform_com->name); goto plat_err; } - } else if (platform->driver->compr_ops && platform->driver->compr_ops->open) { - ret = platform->driver->compr_ops->open(cstream); - if (ret < 0) { - pr_err("compress asoc: can't open platform %s\n", - platform->component.name); - goto plat_err; - } } if (rtd->dai_link->compr_ops && rtd->dai_link->compr_ops->startup) { @@ -78,8 +70,6 @@ static int soc_compr_open(struct snd_compr_stream *cstream) machine_err: if (platform_com->driver->compr_ops && platform_com->driver->compr_ops->free) platform_com->driver->compr_ops->free(cstream); - else if (platform->driver->compr_ops && platform->driver->compr_ops->free) - platform->driver->compr_ops->free(cstream); plat_err: if (cpu_dai->driver->cops && cpu_dai->driver->cops->shutdown) cpu_dai->driver->cops->shutdown(cstream, cpu_dai); @@ -92,7 +82,6 @@ static int soc_compr_open_fe(struct snd_compr_stream *cstream) { struct snd_soc_pcm_runtime *fe = cstream->private_data; struct snd_pcm_substream *fe_substream = fe->pcm->streams[0].substream; - struct snd_soc_platform *platform = fe->platform; struct snd_soc_component *platform_com = fe->platform_com; struct snd_soc_dai *cpu_dai = fe->cpu_dai; struct snd_soc_dpcm *dpcm; @@ -124,13 +113,6 @@ static int soc_compr_open_fe(struct snd_compr_stream *cstream) platform_com->name); goto plat_err; } - } else if (platform->driver->compr_ops && platform->driver->compr_ops->open) { - ret = platform->driver->compr_ops->open(cstream); - if (ret < 0) { - pr_err("compress asoc: can't open platform %s\n", - platform->component.name); - goto plat_err; - } } if (fe->dai_link->compr_ops && fe->dai_link->compr_ops->startup) { @@ -186,8 +168,6 @@ static int soc_compr_open_fe(struct snd_compr_stream *cstream) machine_err: if (platform_com->driver->compr_ops && platform_com->driver->compr_ops->free) platform_com->driver->compr_ops->free(cstream); - else if (platform->driver->compr_ops && platform->driver->compr_ops->free) - platform->driver->compr_ops->free(cstream); plat_err: if (cpu_dai->driver->cops && cpu_dai->driver->cops->shutdown) cpu_dai->driver->cops->shutdown(cstream, cpu_dai); @@ -228,7 +208,6 @@ static void close_delayed_work(struct work_struct *work) static int soc_compr_free(struct snd_compr_stream *cstream) { struct snd_soc_pcm_runtime *rtd = cstream->private_data; - struct snd_soc_platform *platform = rtd->platform; struct snd_soc_component *platform_com = rtd->platform_com; struct snd_soc_dai *cpu_dai = rtd->cpu_dai; struct snd_soc_dai *codec_dai = rtd->codec_dai; @@ -257,8 +236,6 @@ static int soc_compr_free(struct snd_compr_stream *cstream) if (platform_com->driver->compr_ops && platform_com->driver->compr_ops->free) platform_com->driver->compr_ops->free(cstream); - else if (platform->driver->compr_ops && platform->driver->compr_ops->free) - platform->driver->compr_ops->free(cstream); if (cpu_dai->driver->cops && cpu_dai->driver->cops->shutdown) cpu_dai->driver->cops->shutdown(cstream, cpu_dai); @@ -288,7 +265,6 @@ static int soc_compr_free(struct snd_compr_stream *cstream) static int soc_compr_free_fe(struct snd_compr_stream *cstream) { struct snd_soc_pcm_runtime *fe = cstream->private_data; - struct snd_soc_platform *platform = fe->platform; struct snd_soc_component *platform_com = fe->platform_com; struct snd_soc_dai *cpu_dai = fe->cpu_dai; struct snd_soc_dpcm *dpcm; @@ -329,8 +305,6 @@ static int soc_compr_free_fe(struct snd_compr_stream *cstream) if (platform_com->driver->compr_ops && platform_com->driver->compr_ops->free) platform_com->driver->compr_ops->free(cstream); - else if (platform->driver->compr_ops && platform->driver->compr_ops->free) - platform->driver->compr_ops->free(cstream); if (cpu_dai->driver->cops && cpu_dai->driver->cops->shutdown) cpu_dai->driver->cops->shutdown(cstream, cpu_dai); @@ -343,7 +317,6 @@ static int soc_compr_trigger(struct snd_compr_stream *cstream, int cmd) { struct snd_soc_pcm_runtime *rtd = cstream->private_data; - struct snd_soc_platform *platform = rtd->platform; struct snd_soc_component *platform_com = rtd->platform_com; struct snd_soc_dai *codec_dai = rtd->codec_dai; struct snd_soc_dai *cpu_dai = rtd->cpu_dai; @@ -355,10 +328,6 @@ static int soc_compr_trigger(struct snd_compr_stream *cstream, int cmd) ret = platform_com->driver->compr_ops->trigger(cstream, cmd); if (ret < 0) goto out; - } else if (platform->driver->compr_ops && platform->driver->compr_ops->trigger) { - ret = platform->driver->compr_ops->trigger(cstream, cmd); - if (ret < 0) - goto out; } if (cpu_dai->driver->cops && cpu_dai->driver->cops->trigger) @@ -382,7 +351,6 @@ static int soc_compr_trigger(struct snd_compr_stream *cstream, int cmd) static int soc_compr_trigger_fe(struct snd_compr_stream *cstream, int cmd) { struct snd_soc_pcm_runtime *fe = cstream->private_data; - struct snd_soc_platform *platform = fe->platform; struct snd_soc_component *platform_com = fe->platform_com; struct snd_soc_dai *cpu_dai = fe->cpu_dai; int ret = 0, stream; @@ -394,10 +362,6 @@ static int soc_compr_trigger_fe(struct snd_compr_stream *cstream, int cmd) platform_com->driver->compr_ops->trigger) return platform_com->driver->compr_ops->trigger(cstream, cmd); - else if (platform->driver->compr_ops && - platform->driver->compr_ops->trigger) - return platform->driver->compr_ops->trigger(cstream, - cmd); } if (cstream->direction == SND_COMPRESS_PLAYBACK) @@ -418,10 +382,6 @@ static int soc_compr_trigger_fe(struct snd_compr_stream *cstream, int cmd) ret = platform_com->driver->compr_ops->trigger(cstream, cmd); if (ret < 0) goto out; - } else if (platform->driver->compr_ops && platform->driver->compr_ops->trigger) { - ret = platform->driver->compr_ops->trigger(cstream, cmd); - if (ret < 0) - goto out; } fe->dpcm[stream].runtime_update = SND_SOC_DPCM_UPDATE_FE; @@ -453,7 +413,6 @@ static int soc_compr_set_params(struct snd_compr_stream *cstream, struct snd_compr_params *params) { struct snd_soc_pcm_runtime *rtd = cstream->private_data; - struct snd_soc_platform *platform = rtd->platform; struct snd_soc_component *platform_com = rtd->platform_com; struct snd_soc_dai *cpu_dai = rtd->cpu_dai; int ret = 0; @@ -476,10 +435,6 @@ static int soc_compr_set_params(struct snd_compr_stream *cstream, ret = platform_com->driver->compr_ops->set_params(cstream, params); if (ret < 0) goto err; - } else if (platform->driver->compr_ops && platform->driver->compr_ops->set_params) { - ret = platform->driver->compr_ops->set_params(cstream, params); - if (ret < 0) - goto err; } if (rtd->dai_link->compr_ops && rtd->dai_link->compr_ops->set_params) { @@ -513,7 +468,6 @@ static int soc_compr_set_params_fe(struct snd_compr_stream *cstream, { struct snd_soc_pcm_runtime *fe = cstream->private_data; struct snd_pcm_substream *fe_substream = fe->pcm->streams[0].substream; - struct snd_soc_platform *platform = fe->platform; struct snd_soc_component *platform_com = fe->platform_com; struct snd_soc_dai *cpu_dai = fe->cpu_dai; int ret = 0, stream; @@ -535,10 +489,6 @@ static int soc_compr_set_params_fe(struct snd_compr_stream *cstream, ret = platform_com->driver->compr_ops->set_params(cstream, params); if (ret < 0) goto out; - } else if (platform->driver->compr_ops && platform->driver->compr_ops->set_params) { - ret = platform->driver->compr_ops->set_params(cstream, params); - if (ret < 0) - goto out; } if (fe->dai_link->compr_ops && fe->dai_link->compr_ops->set_params) { @@ -578,7 +528,6 @@ static int soc_compr_get_params(struct snd_compr_stream *cstream, struct snd_codec *params) { struct snd_soc_pcm_runtime *rtd = cstream->private_data; - struct snd_soc_platform *platform = rtd->platform; struct snd_soc_component *platform_com = rtd->platform_com; struct snd_soc_dai *cpu_dai = rtd->cpu_dai; int ret = 0; @@ -593,8 +542,6 @@ static int soc_compr_get_params(struct snd_compr_stream *cstream, if (platform_com->driver->compr_ops && platform_com->driver->compr_ops->get_params) ret = platform_com->driver->compr_ops->get_params(cstream, params); - else if (platform->driver->compr_ops && platform->driver->compr_ops->get_params) - ret = platform->driver->compr_ops->get_params(cstream, params); err: mutex_unlock(&rtd->pcm_mutex); @@ -605,7 +552,6 @@ static int soc_compr_get_caps(struct snd_compr_stream *cstream, struct snd_compr_caps *caps) { struct snd_soc_pcm_runtime *rtd = cstream->private_data; - struct snd_soc_platform *platform = rtd->platform; struct snd_soc_component *platform_com = rtd->platform_com; int ret = 0; @@ -613,8 +559,6 @@ static int soc_compr_get_caps(struct snd_compr_stream *cstream, if (platform_com->driver->compr_ops && platform_com->driver->compr_ops->get_caps) ret = platform_com->driver->compr_ops->get_caps(cstream, caps); - else if (platform->driver->compr_ops && platform->driver->compr_ops->get_caps) - ret = platform->driver->compr_ops->get_caps(cstream, caps); mutex_unlock(&rtd->pcm_mutex); return ret; @@ -624,7 +568,6 @@ static int soc_compr_get_codec_caps(struct snd_compr_stream *cstream, struct snd_compr_codec_caps *codec) { struct snd_soc_pcm_runtime *rtd = cstream->private_data; - struct snd_soc_platform *platform = rtd->platform; struct snd_soc_component *platform_com = rtd->platform_com; int ret = 0; @@ -632,8 +575,6 @@ static int soc_compr_get_codec_caps(struct snd_compr_stream *cstream, if (platform_com->driver->compr_ops && platform_com->driver->compr_ops->get_codec_caps) ret = platform_com->driver->compr_ops->get_codec_caps(cstream, codec); - else if (platform->driver->compr_ops && platform->driver->compr_ops->get_codec_caps) - ret = platform->driver->compr_ops->get_codec_caps(cstream, codec); mutex_unlock(&rtd->pcm_mutex); return ret; @@ -642,7 +583,6 @@ static int soc_compr_get_codec_caps(struct snd_compr_stream *cstream, static int soc_compr_ack(struct snd_compr_stream *cstream, size_t bytes) { struct snd_soc_pcm_runtime *rtd = cstream->private_data; - struct snd_soc_platform *platform = rtd->platform; struct snd_soc_component *platform_com = rtd->platform_com; struct snd_soc_dai *cpu_dai = rtd->cpu_dai; int ret = 0; @@ -657,8 +597,6 @@ static int soc_compr_ack(struct snd_compr_stream *cstream, size_t bytes) if (platform_com->driver->compr_ops && platform_com->driver->compr_ops->ack) ret = platform_com->driver->compr_ops->ack(cstream, bytes); - else if (platform->driver->compr_ops && platform->driver->compr_ops->ack) - ret = platform->driver->compr_ops->ack(cstream, bytes); err: mutex_unlock(&rtd->pcm_mutex); @@ -669,7 +607,6 @@ static int soc_compr_pointer(struct snd_compr_stream *cstream, struct snd_compr_tstamp *tstamp) { struct snd_soc_pcm_runtime *rtd = cstream->private_data; - struct snd_soc_platform *platform = rtd->platform; struct snd_soc_component *platform_com = rtd->platform_com; int ret = 0; struct snd_soc_dai *cpu_dai = rtd->cpu_dai; @@ -681,8 +618,6 @@ static int soc_compr_pointer(struct snd_compr_stream *cstream, if (platform_com->driver->compr_ops && platform_com->driver->compr_ops->pointer) ret = platform_com->driver->compr_ops->pointer(cstream, tstamp); - else if (platform->driver->compr_ops && platform->driver->compr_ops->pointer) - ret = platform->driver->compr_ops->pointer(cstream, tstamp); mutex_unlock(&rtd->pcm_mutex); return ret; @@ -692,7 +627,6 @@ static int soc_compr_copy(struct snd_compr_stream *cstream, char __user *buf, size_t count) { struct snd_soc_pcm_runtime *rtd = cstream->private_data; - struct snd_soc_platform *platform = rtd->platform; struct snd_soc_component *platform_com = rtd->platform_com; int ret = 0; @@ -700,8 +634,6 @@ static int soc_compr_copy(struct snd_compr_stream *cstream, if (platform_com->driver->compr_ops && platform_com->driver->compr_ops->copy) ret = platform_com->driver->compr_ops->copy(cstream, buf, count); - else if (platform->driver->compr_ops && platform->driver->compr_ops->copy) - ret = platform->driver->compr_ops->copy(cstream, buf, count); mutex_unlock(&rtd->pcm_mutex); return ret; @@ -711,7 +643,6 @@ static int soc_compr_set_metadata(struct snd_compr_stream *cstream, struct snd_compr_metadata *metadata) { struct snd_soc_pcm_runtime *rtd = cstream->private_data; - struct snd_soc_platform *platform = rtd->platform; struct snd_soc_component *platform_com = rtd->platform_com; struct snd_soc_dai *cpu_dai = rtd->cpu_dai; int ret = 0; @@ -724,8 +655,6 @@ static int soc_compr_set_metadata(struct snd_compr_stream *cstream, if (platform_com->driver->compr_ops && platform_com->driver->compr_ops->set_metadata) ret = platform_com->driver->compr_ops->set_metadata(cstream, metadata); - else if (platform->driver->compr_ops && platform->driver->compr_ops->set_metadata) - ret = platform->driver->compr_ops->set_metadata(cstream, metadata); return ret; } @@ -734,7 +663,6 @@ static int soc_compr_get_metadata(struct snd_compr_stream *cstream, struct snd_compr_metadata *metadata) { struct snd_soc_pcm_runtime *rtd = cstream->private_data; - struct snd_soc_platform *platform = rtd->platform; struct snd_soc_component *platform_com = rtd->platform_com; struct snd_soc_dai *cpu_dai = rtd->cpu_dai; int ret = 0; @@ -747,8 +675,6 @@ static int soc_compr_get_metadata(struct snd_compr_stream *cstream, if (platform_com->driver->compr_ops && platform_com->driver->compr_ops->get_metadata) ret = platform_com->driver->compr_ops->get_metadata(cstream, metadata); - else if (platform->driver->compr_ops && platform->driver->compr_ops->get_metadata) - ret = platform->driver->compr_ops->get_metadata(cstream, metadata); return ret; } @@ -794,7 +720,6 @@ static int soc_compr_get_metadata(struct snd_compr_stream *cstream, int snd_soc_new_compress(struct snd_soc_pcm_runtime *rtd, int num) { struct snd_soc_codec *codec = rtd->codec; - struct snd_soc_platform *platform = rtd->platform; struct snd_soc_component *platform_com = rtd->platform_com; struct snd_soc_dai *codec_dai = rtd->codec_dai; struct snd_soc_dai *cpu_dai = rtd->cpu_dai; @@ -874,8 +799,7 @@ int snd_soc_new_compress(struct snd_soc_pcm_runtime *rtd, int num) memcpy(compr->ops, &soc_compr_ops, sizeof(soc_compr_ops)); /* Add copy callback for not memory mapped DSPs */ - if ((platform_com->driver->compr_ops && platform_com->driver->compr_ops->copy) || - (platform->driver->compr_ops && platform->driver->compr_ops->copy)) + if (platform_com->driver->compr_ops && platform_com->driver->compr_ops->copy) compr->ops->copy = soc_compr_copy; mutex_init(&compr->lock); diff --git a/sound/soc/soc-core.c b/sound/soc/soc-core.c index 95ab9f6..5588a0d 100644 --- a/sound/soc/soc-core.c +++ b/sound/soc/soc-core.c @@ -56,7 +56,6 @@ #endif static DEFINE_MUTEX(client_mutex); -static LIST_HEAD(platform_list); static LIST_HEAD(codec_list); static LIST_HEAD(component_list); @@ -412,22 +411,22 @@ static ssize_t dai_list_read_file(struct file *file, char __user *user_buf, .llseek = default_llseek,/* read accesses f_pos */ }; -static ssize_t platform_list_read_file(struct file *file, +static ssize_t component_list_read_file(struct file *file, char __user *user_buf, size_t count, loff_t *ppos) { char *buf = kmalloc(PAGE_SIZE, GFP_KERNEL); ssize_t len, ret = 0; - struct snd_soc_platform *platform; + struct snd_soc_component *component; if (!buf) return -ENOMEM; mutex_lock(&client_mutex); - list_for_each_entry(platform, &platform_list, list) { + list_for_each_entry(component, &component_list, list) { len = snprintf(buf + ret, PAGE_SIZE - ret, "%s\n", - platform->component.name); + component->name); if (len >= 0) ret += len; if (ret > PAGE_SIZE) { @@ -445,8 +444,8 @@ static ssize_t platform_list_read_file(struct file *file, return ret; } -static const struct file_operations platform_list_fops = { - .read = platform_list_read_file, +static const struct file_operations component_list_fops = { + .read = component_list_read_file, .llseek = default_llseek,/* read accesses f_pos */ }; @@ -494,8 +493,8 @@ static void snd_soc_debugfs_init(void) &dai_list_fops)) pr_warn("ASoC: Failed to create DAI list debugfs file\n"); - if (!debugfs_create_file("platforms", 0444, snd_soc_debugfs_root, NULL, - &platform_list_fops)) + if (!debugfs_create_file("component", 0444, snd_soc_debugfs_root, NULL, + &component_list_fops)) pr_warn("ASoC: Failed to create platform list debugfs file\n"); } @@ -1036,7 +1035,7 @@ static int soc_bind_dai_link(struct snd_soc_card *card, struct snd_soc_dai_link_component *codecs = dai_link->codecs; struct snd_soc_dai_link_component cpu_dai_component; struct snd_soc_dai **codec_dais; - struct snd_soc_platform *platform; + struct snd_soc_component *component; struct device_node *platform_of_node; const char *platform_name; int i; @@ -1086,23 +1085,22 @@ static int soc_bind_dai_link(struct snd_soc_card *card, platform_name = "snd-soc-dummy"; /* find one from the set of registered platforms */ - list_for_each_entry(platform, &platform_list, list) { - platform_of_node = platform->dev->of_node; - if (!platform_of_node && platform->dev->parent->of_node) - platform_of_node = platform->dev->parent->of_node; + list_for_each_entry(component, &component_list, list) { + platform_of_node = component->dev->of_node; + if (!platform_of_node && component->dev->parent->of_node) + platform_of_node = component->dev->parent->of_node; if (dai_link->platform_of_node) { if (platform_of_node != dai_link->platform_of_node) continue; } else { - if (strcmp(platform->component.name, platform_name)) + if (strcmp(component->name, platform_name)) continue; } - rtd->platform = platform; - rtd->platform_com = &platform->component; + rtd->platform_com = component; } - if (!rtd->platform) { + if (!rtd->platform_com) { dev_err(card->dev, "ASoC: platform %s not registered\n", dai_link->platform_name); goto _err_defer; @@ -1172,7 +1170,6 @@ static void soc_remove_link_components(struct snd_soc_card *card, struct snd_soc_pcm_runtime *rtd, int order) { struct snd_soc_dai *cpu_dai = rtd->cpu_dai; - struct snd_soc_platform *platform = rtd->platform; struct snd_soc_component *platform_com = rtd->platform_com; struct snd_soc_component *component; int i; @@ -1180,8 +1177,6 @@ static void soc_remove_link_components(struct snd_soc_card *card, /* remove the platform */ if (platform_com && platform_com->driver->remove_order == order) soc_remove_component(platform_com); - else if (platform && platform->component.driver->remove_order == order) - soc_remove_component(&platform->component); /* remove the CODEC-side CODEC */ for (i = 0; i < rtd->num_codecs; i++) { @@ -1546,7 +1541,6 @@ static int soc_probe_link_components(struct snd_soc_card *card, struct snd_soc_pcm_runtime *rtd, int order) { - struct snd_soc_platform *platform = rtd->platform; struct snd_soc_component *platform_com = rtd->platform_com; struct snd_soc_component *component; int i, ret; @@ -1574,10 +1568,6 @@ static int soc_probe_link_components(struct snd_soc_card *card, ret = soc_probe_component(card, platform_com); if (ret < 0) return ret; - } else if (platform->component.driver->probe_order == order) { - ret = soc_probe_component(card, &platform->component); - if (ret < 0) - return ret; } return 0; @@ -2494,24 +2484,6 @@ int snd_soc_add_codec_controls(struct snd_soc_codec *codec, EXPORT_SYMBOL_GPL(snd_soc_add_codec_controls); /** - * snd_soc_add_platform_controls - add an array of controls to a platform. - * Convenience function to add a list of controls. - * - * @platform: platform to add controls to - * @controls: array of controls to add - * @num_controls: number of elements in the array - * - * Return 0 for success, else error. - */ -int snd_soc_add_platform_controls(struct snd_soc_platform *platform, - const struct snd_kcontrol_new *controls, unsigned int num_controls) -{ - return snd_soc_add_component_controls(&platform->component, controls, - num_controls); -} -EXPORT_SYMBOL_GPL(snd_soc_add_platform_controls); - -/** * snd_soc_add_card_controls - add an array of controls to a SoC card. * Convenience function to add a list of controls. * @@ -3149,8 +3121,6 @@ static int snd_soc_component_initialize(struct snd_soc_component *component, component->remove = component->driver->remove; component->suspend = component->driver->suspend; component->resume = component->driver->resume; - component->pcm_new = component->driver->pcm_new; - component->pcm_free = component->driver->pcm_free; dapm = &component->dapm; dapm->dev = dev; @@ -3324,168 +3294,22 @@ void snd_soc_unregister_component(struct device *dev) } EXPORT_SYMBOL_GPL(snd_soc_unregister_component); -static int snd_soc_platform_drv_probe(struct snd_soc_component *component) -{ - struct snd_soc_platform *platform = snd_soc_component_to_platform(component); - - return platform->driver->probe(platform); -} - -static void snd_soc_platform_drv_remove(struct snd_soc_component *component) -{ - struct snd_soc_platform *platform = snd_soc_component_to_platform(component); - - platform->driver->remove(platform); -} - -static int snd_soc_platform_drv_pcm_new(struct snd_soc_pcm_runtime *rtd) -{ - struct snd_soc_platform *platform = rtd->platform; - struct snd_soc_component *platform_com = rtd->platform_com; - - if (platform_com->driver->pcm_new) - return platform_com->driver->pcm_new(rtd); - else if (platform->driver->pcm_new) - return platform->driver->pcm_new(rtd); - else - return 0; -} - -static void snd_soc_platform_drv_pcm_free(struct snd_pcm *pcm) -{ - struct snd_soc_pcm_runtime *rtd = pcm->private_data; - struct snd_soc_platform *platform = rtd->platform; - struct snd_soc_component *platform_com = rtd->platform_com; - - if (platform_com->driver->pcm_free) - platform_com->driver->pcm_free(pcm); - else if (platform->driver->pcm_free) - platform->driver->pcm_free(pcm); -} - -/** - * snd_soc_add_platform - Add a platform to the ASoC core - * @dev: The parent device for the platform - * @platform: The platform to add - * @platform_drv: The driver for the platform - */ -int snd_soc_add_platform(struct device *dev, struct snd_soc_platform *platform, - const struct snd_soc_platform_driver *platform_drv) +struct snd_soc_component *snd_soc_lookup_component(struct device *dev) { - int ret; - - ret = snd_soc_component_initialize(&platform->component, - &platform_drv->component_driver, dev); - if (ret) - return ret; - - platform->dev = dev; - platform->driver = platform_drv; - - if (platform_drv->probe) - platform->component.probe = snd_soc_platform_drv_probe; - if (platform_drv->remove) - platform->component.remove = snd_soc_platform_drv_remove; - if (platform_drv->pcm_new) - platform->component.pcm_new = snd_soc_platform_drv_pcm_new; - if (platform_drv->pcm_free) - platform->component.pcm_free = snd_soc_platform_drv_pcm_free; - -#ifdef CONFIG_DEBUG_FS - platform->component.debugfs_prefix = "platform"; -#endif - - mutex_lock(&client_mutex); - snd_soc_component_add_unlocked(&platform->component); - list_add(&platform->list, &platform_list); - mutex_unlock(&client_mutex); - - dev_dbg(dev, "ASoC: Registered platform '%s'\n", - platform->component.name); - - return 0; -} -EXPORT_SYMBOL_GPL(snd_soc_add_platform); - -/** - * snd_soc_register_platform - Register a platform with the ASoC core - * - * @dev: The device for the platform - * @platform_drv: The driver for the platform - */ -int snd_soc_register_platform(struct device *dev, - const struct snd_soc_platform_driver *platform_drv) -{ - struct snd_soc_platform *platform; - int ret; - - dev_dbg(dev, "ASoC: platform register %s\n", dev_name(dev)); - - platform = kzalloc(sizeof(struct snd_soc_platform), GFP_KERNEL); - if (platform == NULL) - return -ENOMEM; - - ret = snd_soc_add_platform(dev, platform, platform_drv); - if (ret) - kfree(platform); - - return ret; -} -EXPORT_SYMBOL_GPL(snd_soc_register_platform); - -/** - * snd_soc_remove_platform - Remove a platform from the ASoC core - * @platform: the platform to remove - */ -void snd_soc_remove_platform(struct snd_soc_platform *platform) -{ - - mutex_lock(&client_mutex); - list_del(&platform->list); - snd_soc_component_del_unlocked(&platform->component); - mutex_unlock(&client_mutex); - - dev_dbg(platform->dev, "ASoC: Unregistered platform '%s'\n", - platform->component.name); - - snd_soc_component_cleanup(&platform->component); -} -EXPORT_SYMBOL_GPL(snd_soc_remove_platform); - -struct snd_soc_platform *snd_soc_lookup_platform(struct device *dev) -{ - struct snd_soc_platform *platform; + struct snd_soc_component *component; mutex_lock(&client_mutex); - list_for_each_entry(platform, &platform_list, list) { - if (dev == platform->dev) { + list_for_each_entry(component, &component_list, list) { + if (dev == component->dev) { mutex_unlock(&client_mutex); - return platform; + return component; } } mutex_unlock(&client_mutex); return NULL; } -EXPORT_SYMBOL_GPL(snd_soc_lookup_platform); - -/** - * snd_soc_unregister_platform - Unregister a platform from the ASoC core - * - * @dev: platform to unregister - */ -void snd_soc_unregister_platform(struct device *dev) -{ - struct snd_soc_platform *platform; - - platform = snd_soc_lookup_platform(dev); - if (!platform) - return; - - snd_soc_remove_platform(platform); - kfree(platform); -} -EXPORT_SYMBOL_GPL(snd_soc_unregister_platform); +EXPORT_SYMBOL_GPL(snd_soc_lookup_component); static u64 codec_format_map[] = { SNDRV_PCM_FMTBIT_S16_LE | SNDRV_PCM_FMTBIT_S16_BE, diff --git a/sound/soc/soc-devres.c b/sound/soc/soc-devres.c index a57921e..7ac745d 100644 --- a/sound/soc/soc-devres.c +++ b/sound/soc/soc-devres.c @@ -52,41 +52,6 @@ int devm_snd_soc_register_component(struct device *dev, } EXPORT_SYMBOL_GPL(devm_snd_soc_register_component); -static void devm_platform_release(struct device *dev, void *res) -{ - snd_soc_unregister_platform(*(struct device **)res); -} - -/** - * devm_snd_soc_register_platform - resource managed platform registration - * @dev: Device used to manage platform - * @platform_drv: platform to register - * - * Register a platform driver with automatic unregistration when the device is - * unregistered. - */ -int devm_snd_soc_register_platform(struct device *dev, - const struct snd_soc_platform_driver *platform_drv) -{ - struct device **ptr; - int ret; - - ptr = devres_alloc(devm_platform_release, sizeof(*ptr), GFP_KERNEL); - if (!ptr) - return -ENOMEM; - - ret = snd_soc_register_platform(dev, platform_drv); - if (ret == 0) { - *ptr = dev; - devres_add(dev, ptr); - } else { - devres_free(ptr); - } - - return ret; -} -EXPORT_SYMBOL_GPL(devm_snd_soc_register_platform); - static void devm_card_release(struct device *dev, void *res) { snd_soc_unregister_card(*(struct snd_soc_card **)res); diff --git a/sound/soc/soc-io.c b/sound/soc/soc-io.c index 9b39390..c909330 100644 --- a/sound/soc/soc-io.c +++ b/sound/soc/soc-io.c @@ -250,24 +250,3 @@ int snd_soc_test_bits(struct snd_soc_codec *codec, unsigned int reg, return snd_soc_component_test_bits(&codec->component, reg, mask, value); } EXPORT_SYMBOL_GPL(snd_soc_test_bits); - -int snd_soc_platform_read(struct snd_soc_platform *platform, - unsigned int reg) -{ - unsigned int val; - int ret; - - ret = snd_soc_component_read(&platform->component, reg, &val); - if (ret < 0) - return -1; - - return val; -} -EXPORT_SYMBOL_GPL(snd_soc_platform_read); - -int snd_soc_platform_write(struct snd_soc_platform *platform, - unsigned int reg, unsigned int val) -{ - return snd_soc_component_write(&platform->component, reg, val); -} -EXPORT_SYMBOL_GPL(snd_soc_platform_write); diff --git a/sound/soc/soc-pcm.c b/sound/soc/soc-pcm.c index 6d919e6..9f9a117 100644 --- a/sound/soc/soc-pcm.c +++ b/sound/soc/soc-pcm.c @@ -449,7 +449,6 @@ static int soc_pcm_open(struct snd_pcm_substream *substream) { struct snd_soc_pcm_runtime *rtd = substream->private_data; struct snd_pcm_runtime *runtime = substream->runtime; - struct snd_soc_platform *platform = rtd->platform; struct snd_soc_component *platform_com = rtd->platform_com; struct snd_soc_dai *cpu_dai = rtd->cpu_dai; struct snd_soc_dai *codec_dai; @@ -462,7 +461,7 @@ static int soc_pcm_open(struct snd_pcm_substream *substream) pm_runtime_get_sync(cpu_dai->dev); for (i = 0; i < rtd->num_codecs; i++) pm_runtime_get_sync(rtd->codec_dais[i]->dev); - pm_runtime_get_sync(platform->dev); + pm_runtime_get_sync(platform_com->dev); mutex_lock_nested(&rtd->pcm_mutex, rtd->pcm_subclass); @@ -483,13 +482,6 @@ static int soc_pcm_open(struct snd_pcm_substream *substream) " %s: %d\n", platform_com->name, ret); goto platform_err; } - } else if (platform->driver->ops && platform->driver->ops->open) { - ret = platform->driver->ops->open(substream); - if (ret < 0) { - dev_err(platform->dev, "ASoC: can't open platform" - " %s: %d\n", platform->component.name, ret); - goto platform_err; - } } for (i = 0; i < rtd->num_codecs; i++) { @@ -600,8 +592,6 @@ static int soc_pcm_open(struct snd_pcm_substream *substream) if (platform_com->driver->ops && platform_com->driver->ops->close) platform_com->driver->ops->close(substream); - else if (platform->driver->ops && platform->driver->ops->close) - platform->driver->ops->close(substream); platform_err: if (cpu_dai->driver->ops->shutdown) @@ -609,8 +599,8 @@ static int soc_pcm_open(struct snd_pcm_substream *substream) out: mutex_unlock(&rtd->pcm_mutex); - pm_runtime_mark_last_busy(platform->dev); - pm_runtime_put_autosuspend(platform->dev); + pm_runtime_mark_last_busy(platform_com->dev); + pm_runtime_put_autosuspend(platform_com->dev); for (i = 0; i < rtd->num_codecs; i++) { pm_runtime_mark_last_busy(rtd->codec_dais[i]->dev); pm_runtime_put_autosuspend(rtd->codec_dais[i]->dev); @@ -664,7 +654,6 @@ static void close_delayed_work(struct work_struct *work) static int soc_pcm_close(struct snd_pcm_substream *substream) { struct snd_soc_pcm_runtime *rtd = substream->private_data; - struct snd_soc_platform *platform = rtd->platform; struct snd_soc_component *platform_com = rtd->platform_com; struct snd_soc_dai *cpu_dai = rtd->cpu_dai; struct snd_soc_dai *codec_dai; @@ -700,8 +689,6 @@ static int soc_pcm_close(struct snd_pcm_substream *substream) if (platform_com->driver->ops && platform_com->driver->ops->close) platform_com->driver->ops->close(substream); - else if (platform->driver->ops && platform->driver->ops->close) - platform->driver->ops->close(substream); if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK) { if (snd_soc_runtime_ignore_pmdown_time(rtd)) { @@ -724,8 +711,8 @@ static int soc_pcm_close(struct snd_pcm_substream *substream) mutex_unlock(&rtd->pcm_mutex); - pm_runtime_mark_last_busy(platform->dev); - pm_runtime_put_autosuspend(platform->dev); + pm_runtime_mark_last_busy(platform_com->dev); + pm_runtime_put_autosuspend(platform_com->dev); for (i = 0; i < rtd->num_codecs; i++) { pm_runtime_mark_last_busy(rtd->codec_dais[i]->dev); @@ -753,7 +740,6 @@ static int soc_pcm_close(struct snd_pcm_substream *substream) static int soc_pcm_prepare(struct snd_pcm_substream *substream) { struct snd_soc_pcm_runtime *rtd = substream->private_data; - struct snd_soc_platform *platform = rtd->platform; struct snd_soc_component *platform_com = rtd->platform_com; struct snd_soc_dai *cpu_dai = rtd->cpu_dai; struct snd_soc_dai *codec_dai; @@ -777,13 +763,6 @@ static int soc_pcm_prepare(struct snd_pcm_substream *substream) " %d\n", ret); goto out; } - } else if (platform->driver->ops && platform->driver->ops->prepare) { - ret = platform->driver->ops->prepare(substream); - if (ret < 0) { - dev_err(platform->dev, "ASoC: platform prepare error:" - " %d\n", ret); - goto out; - } } for (i = 0; i < rtd->num_codecs; i++) { @@ -867,7 +846,6 @@ static int soc_pcm_hw_params(struct snd_pcm_substream *substream, struct snd_pcm_hw_params *params) { struct snd_soc_pcm_runtime *rtd = substream->private_data; - struct snd_soc_platform *platform = rtd->platform; struct snd_soc_component *platform_com = rtd->platform_com; struct snd_soc_dai *cpu_dai = rtd->cpu_dai; int i, ret = 0; @@ -940,13 +918,6 @@ static int soc_pcm_hw_params(struct snd_pcm_substream *substream, platform_com->name, ret); goto platform_err; } - } else if (platform->driver->ops && platform->driver->ops->hw_params) { - ret = platform->driver->ops->hw_params(substream, params); - if (ret < 0) { - dev_err(platform->dev, "ASoC: %s hw params failed: %d\n", - platform->component.name, ret); - goto platform_err; - } } /* store the parameters for each DAIs */ @@ -987,7 +958,6 @@ static int soc_pcm_hw_params(struct snd_pcm_substream *substream, static int soc_pcm_hw_free(struct snd_pcm_substream *substream) { struct snd_soc_pcm_runtime *rtd = substream->private_data; - struct snd_soc_platform *platform = rtd->platform; struct snd_soc_component *platform_com = rtd->platform_com; struct snd_soc_dai *cpu_dai = rtd->cpu_dai; struct snd_soc_dai *codec_dai; @@ -1027,8 +997,6 @@ static int soc_pcm_hw_free(struct snd_pcm_substream *substream) /* free any DMA resources */ if (platform_com->driver->ops && platform_com->driver->ops->hw_free) platform_com->driver->ops->hw_free(substream); - else if (platform->driver->ops && platform->driver->ops->hw_free) - platform->driver->ops->hw_free(substream); /* now free hw params for the DAIs */ for (i = 0; i < rtd->num_codecs; i++) { @@ -1047,7 +1015,6 @@ static int soc_pcm_hw_free(struct snd_pcm_substream *substream) static int soc_pcm_trigger(struct snd_pcm_substream *substream, int cmd) { struct snd_soc_pcm_runtime *rtd = substream->private_data; - struct snd_soc_platform *platform = rtd->platform; struct snd_soc_component *platform_com = rtd->platform_com; struct snd_soc_dai *cpu_dai = rtd->cpu_dai; struct snd_soc_dai *codec_dai; @@ -1067,10 +1034,6 @@ static int soc_pcm_trigger(struct snd_pcm_substream *substream, int cmd) ret = platform_com->driver->ops->trigger(substream, cmd); if (ret < 0) return ret; - } else if (platform->driver->ops && platform->driver->ops->trigger) { - ret = platform->driver->ops->trigger(substream, cmd); - if (ret < 0) - return ret; } if (cpu_dai->driver->ops && cpu_dai->driver->ops->trigger) { @@ -1122,7 +1085,6 @@ static int soc_pcm_bespoke_trigger(struct snd_pcm_substream *substream, static snd_pcm_uframes_t soc_pcm_pointer(struct snd_pcm_substream *substream) { struct snd_soc_pcm_runtime *rtd = substream->private_data; - struct snd_soc_platform *platform = rtd->platform; struct snd_soc_component *platform_com = rtd->platform_com; struct snd_soc_dai *cpu_dai = rtd->cpu_dai; struct snd_soc_dai *codec_dai; @@ -1134,8 +1096,6 @@ static snd_pcm_uframes_t soc_pcm_pointer(struct snd_pcm_substream *substream) if (platform_com->driver->ops && platform_com->driver->ops->pointer) offset = platform_com->driver->ops->pointer(substream); - else if (platform->driver->ops && platform->driver->ops->pointer) - offset = platform->driver->ops->pointer(substream); if (cpu_dai->driver->ops && cpu_dai->driver->ops->delay) delay += cpu_dai->driver->ops->delay(substream, cpu_dai); @@ -2320,13 +2280,10 @@ static int soc_pcm_ioctl(struct snd_pcm_substream *substream, unsigned int cmd, void *arg) { struct snd_soc_pcm_runtime *rtd = substream->private_data; - struct snd_soc_platform *platform = rtd->platform; struct snd_soc_component *platform_com = rtd->platform_com; if (platform_com->driver->ops && platform_com->driver->ops->ioctl) return platform_com->driver->ops->ioctl(substream, cmd, arg); - else if (platform->driver->ops && platform->driver->ops->ioctl) - return platform->driver->ops->ioctl(substream, cmd, arg); return snd_pcm_lib_ioctl(substream, cmd, arg); } @@ -2679,15 +2636,14 @@ static void soc_pcm_free(struct snd_pcm *pcm) list_for_each_entry(component, &rtd->card->component_dev_list, card_list) { - if (component->pcm_free) - component->pcm_free(pcm); + if (component->driver->pcm_free) + component->driver->pcm_free(pcm); } } /* create a new pcm */ int soc_new_pcm(struct snd_soc_pcm_runtime *rtd, int num) { - struct snd_soc_platform *platform = rtd->platform; struct snd_soc_component *platform_com = rtd->platform_com; struct snd_soc_dai *codec_dai; struct snd_soc_dai *cpu_dai = rtd->cpu_dai; @@ -2792,12 +2748,6 @@ int soc_new_pcm(struct snd_soc_pcm_runtime *rtd, int num) rtd->ops.silence = platform_com->driver->ops->silence; rtd->ops.page = platform_com->driver->ops->page; rtd->ops.mmap = platform_com->driver->ops->mmap; - } else if (platform->driver->ops) { - rtd->ops.ack = platform->driver->ops->ack; - rtd->ops.copy = platform->driver->ops->copy; - rtd->ops.silence = platform->driver->ops->silence; - rtd->ops.page = platform->driver->ops->page; - rtd->ops.mmap = platform->driver->ops->mmap; } if (playback) @@ -2807,8 +2757,8 @@ int soc_new_pcm(struct snd_soc_pcm_runtime *rtd, int num) snd_pcm_set_ops(pcm, SNDRV_PCM_STREAM_CAPTURE, &rtd->ops); list_for_each_entry(component, &rtd->card->component_dev_list, card_list) { - if (component->pcm_new) { - ret = component->pcm_new(rtd); + if (component->driver->pcm_new) { + ret = component->driver->pcm_new(rtd); if (ret < 0) { dev_err(component->dev, "ASoC: pcm constructor failed: %d\n", -- 1.9.1