[RFC,05/10] ALSA: hda - make some of the functions externally visible
diff mbox

Message ID 1512119648-2700-6-git-send-email-rakesh.a.ughreja@intel.com
State New
Headers show

Commit Message

Ughreja, Rakesh A Dec. 1, 2017, 9:14 a.m. UTC
Mark some functions with EXPORT_SYMBOL_GPL so that it can be called by
other kernel modules. These APIs would be called by ASoC based HDA codec
driver which will be added in the later patches.

Signed-off-by: Rakesh Ughreja <rakesh.a.ughreja@intel.com>
---
 sound/pci/hda/hda_codec.c | 9 +++++++--
 sound/pci/hda/hda_codec.h | 4 +++-
 2 files changed, 10 insertions(+), 3 deletions(-)

Comments

Pierre-Louis Bossart Dec. 1, 2017, 7:26 p.m. UTC | #1
On 12/1/17 3:14 AM, Rakesh Ughreja wrote:
> Mark some functions with EXPORT_SYMBOL_GPL so that it can be called by
> other kernel modules. These APIs would be called by ASoC based HDA codec
> driver which will be added in the later patches.

Looks ok. Just wondering from a code maintenance perspective if those 
functions would need to be part of a library, and if this means that to 
compile the ASoC based HDAudio codec support you still need to enable 
the legacy support - and if this leads to potential conflicts on which 
driver gets probed?

> 
> Signed-off-by: Rakesh Ughreja <rakesh.a.ughreja@intel.com>
> ---
>   sound/pci/hda/hda_codec.c | 9 +++++++--
>   sound/pci/hda/hda_codec.h | 4 +++-
>   2 files changed, 10 insertions(+), 3 deletions(-)
> 
> diff --git a/sound/pci/hda/hda_codec.c b/sound/pci/hda/hda_codec.c
> index e018ecb..085fd9e 100644
> --- a/sound/pci/hda/hda_codec.c
> +++ b/sound/pci/hda/hda_codec.c
> @@ -2903,7 +2903,7 @@ static void hda_call_codec_resume(struct hda_codec *codec)
>   	atomic_dec(&codec->core.in_pm);
>   }
>   
> -static int hda_codec_runtime_suspend(struct device *dev)
> +int hda_codec_runtime_suspend(struct device *dev)
>   {
>   	struct hda_codec *codec = dev_to_hda_codec(dev);
>   	struct hda_pcm *pcm;
> @@ -2919,8 +2919,9 @@ static int hda_codec_runtime_suspend(struct device *dev)
>   	snd_hdac_link_power(&codec->core, false);
>   	return 0;
>   }
> +EXPORT_SYMBOL_GPL(hda_codec_runtime_suspend);
>   
> -static int hda_codec_runtime_resume(struct device *dev)
> +int hda_codec_runtime_resume(struct device *dev)
>   {
>   	struct hda_codec *codec = dev_to_hda_codec(dev);
>   
> @@ -2930,6 +2931,7 @@ static int hda_codec_runtime_resume(struct device *dev)
>   	pm_runtime_mark_last_busy(dev);
>   	return 0;
>   }
> +EXPORT_SYMBOL_GPL(hda_codec_runtime_resume);
>   #endif /* CONFIG_PM */
>   
>   /* referred in hda_bind.c */
> @@ -3005,6 +3007,7 @@ int snd_hda_codec_build_controls(struct hda_codec *codec)
>   	sync_power_up_states(codec);
>   	return 0;
>   }
> +EXPORT_SYMBOL_GPL(snd_hda_codec_build_controls);
>   
>   /*
>    * PCM stuff
> @@ -3210,6 +3213,7 @@ int snd_hda_codec_parse_pcms(struct hda_codec *codec)
>   
>   	return 0;
>   }
> +EXPORT_SYMBOL_GPL(snd_hda_codec_parse_pcms);
>   
>   /* assign all PCMs of the given codec */
>   int snd_hda_codec_build_pcms(struct hda_codec *codec)
> @@ -3246,6 +3250,7 @@ int snd_hda_codec_build_pcms(struct hda_codec *codec)
>   
>   	return 0;
>   }
> +EXPORT_SYMBOL_GPL(snd_hda_codec_build_pcms);
>   
>   /**
>    * snd_hda_add_new_ctls - create controls from the array
> diff --git a/sound/pci/hda/hda_codec.h b/sound/pci/hda/hda_codec.h
> index 681c360..2d02d02 100644
> --- a/sound/pci/hda/hda_codec.h
> +++ b/sound/pci/hda/hda_codec.h
> @@ -83,7 +83,7 @@ struct hda_bus {
>    * better than the generic parser.
>    */
>   typedef int (*hda_codec_patch_t)(struct hda_codec *);
> -	
> +
>   #define HDA_CODEC_ID_GENERIC_HDMI	0x00000101
>   #define HDA_CODEC_ID_GENERIC		0x00000201
>   
> @@ -497,6 +497,8 @@ int hda_call_check_power_status(struct hda_codec *codec, hda_nid_t nid)
>   #ifdef CONFIG_PM
>   void snd_hda_set_power_save(struct hda_bus *bus, int delay);
>   void snd_hda_update_power_acct(struct hda_codec *codec);
> +int hda_codec_runtime_suspend(struct device *dev);
> +int hda_codec_runtime_resume(struct device *dev);
>   #else
>   static inline void snd_hda_set_power_save(struct hda_bus *bus, int delay) {}
>   #endif
>
Ughreja, Rakesh A Dec. 4, 2017, 3:43 p.m. UTC | #2
>-----Original Message-----
>From: Pierre-Louis Bossart [mailto:pierre-louis.bossart@linux.intel.com]
>Sent: Saturday, December 2, 2017 12:57 AM
>To: Ughreja, Rakesh A <rakesh.a.ughreja@intel.com>; alsa-devel@alsa-
>project.org; broonie@kernel.org; tiwai@suse.de; liam.r.girdwood@linux.intel.com
>Cc: Koul, Vinod <vinod.koul@intel.com>; Patches Audio
><patches.audio@intel.com>
>Subject: Re: [alsa-devel] [RFC 05/10] ALSA: hda - make some of the functions
>externally visible
>
>On 12/1/17 3:14 AM, Rakesh Ughreja wrote:
>> Mark some functions with EXPORT_SYMBOL_GPL so that it can be called by
>> other kernel modules. These APIs would be called by ASoC based HDA codec
>> driver which will be added in the later patches.
>
>Looks ok. Just wondering from a code maintenance perspective if those
>functions would need to be part of a library, and if this means that to
>compile the ASoC based HDAudio codec support you still need to enable
>the legacy support - and if this leads to potential conflicts on which
>driver gets probed?

Yes, I think these functions are already part of library.
These are part of file hda_codec.c, which looks like a library to me.

Takashi is that correct understanding ?
Takashi Iwai Dec. 4, 2017, 4:23 p.m. UTC | #3
On Mon, 04 Dec 2017 16:43:45 +0100,
Ughreja, Rakesh A wrote:
> 
> 
> 
> >-----Original Message-----
> >From: Pierre-Louis Bossart [mailto:pierre-louis.bossart@linux.intel.com]
> >Sent: Saturday, December 2, 2017 12:57 AM
> >To: Ughreja, Rakesh A <rakesh.a.ughreja@intel.com>; alsa-devel@alsa-
> >project.org; broonie@kernel.org; tiwai@suse.de; liam.r.girdwood@linux.intel.com
> >Cc: Koul, Vinod <vinod.koul@intel.com>; Patches Audio
> ><patches.audio@intel.com>
> >Subject: Re: [alsa-devel] [RFC 05/10] ALSA: hda - make some of the functions
> >externally visible
> >
> >On 12/1/17 3:14 AM, Rakesh Ughreja wrote:
> >> Mark some functions with EXPORT_SYMBOL_GPL so that it can be called by
> >> other kernel modules. These APIs would be called by ASoC based HDA codec
> >> driver which will be added in the later patches.
> >
> >Looks ok. Just wondering from a code maintenance perspective if those
> >functions would need to be part of a library, and if this means that to
> >compile the ASoC based HDAudio codec support you still need to enable
> >the legacy support - and if this leads to potential conflicts on which
> >driver gets probed?
> 
> Yes, I think these functions are already part of library.
> These are part of file hda_codec.c, which looks like a library to me.
> 
> Takashi is that correct understanding ?

Yes, it's a library module.


Takashi

Patch
diff mbox

diff --git a/sound/pci/hda/hda_codec.c b/sound/pci/hda/hda_codec.c
index e018ecb..085fd9e 100644
--- a/sound/pci/hda/hda_codec.c
+++ b/sound/pci/hda/hda_codec.c
@@ -2903,7 +2903,7 @@  static void hda_call_codec_resume(struct hda_codec *codec)
 	atomic_dec(&codec->core.in_pm);
 }
 
-static int hda_codec_runtime_suspend(struct device *dev)
+int hda_codec_runtime_suspend(struct device *dev)
 {
 	struct hda_codec *codec = dev_to_hda_codec(dev);
 	struct hda_pcm *pcm;
@@ -2919,8 +2919,9 @@  static int hda_codec_runtime_suspend(struct device *dev)
 	snd_hdac_link_power(&codec->core, false);
 	return 0;
 }
+EXPORT_SYMBOL_GPL(hda_codec_runtime_suspend);
 
-static int hda_codec_runtime_resume(struct device *dev)
+int hda_codec_runtime_resume(struct device *dev)
 {
 	struct hda_codec *codec = dev_to_hda_codec(dev);
 
@@ -2930,6 +2931,7 @@  static int hda_codec_runtime_resume(struct device *dev)
 	pm_runtime_mark_last_busy(dev);
 	return 0;
 }
+EXPORT_SYMBOL_GPL(hda_codec_runtime_resume);
 #endif /* CONFIG_PM */
 
 /* referred in hda_bind.c */
@@ -3005,6 +3007,7 @@  int snd_hda_codec_build_controls(struct hda_codec *codec)
 	sync_power_up_states(codec);
 	return 0;
 }
+EXPORT_SYMBOL_GPL(snd_hda_codec_build_controls);
 
 /*
  * PCM stuff
@@ -3210,6 +3213,7 @@  int snd_hda_codec_parse_pcms(struct hda_codec *codec)
 
 	return 0;
 }
+EXPORT_SYMBOL_GPL(snd_hda_codec_parse_pcms);
 
 /* assign all PCMs of the given codec */
 int snd_hda_codec_build_pcms(struct hda_codec *codec)
@@ -3246,6 +3250,7 @@  int snd_hda_codec_build_pcms(struct hda_codec *codec)
 
 	return 0;
 }
+EXPORT_SYMBOL_GPL(snd_hda_codec_build_pcms);
 
 /**
  * snd_hda_add_new_ctls - create controls from the array
diff --git a/sound/pci/hda/hda_codec.h b/sound/pci/hda/hda_codec.h
index 681c360..2d02d02 100644
--- a/sound/pci/hda/hda_codec.h
+++ b/sound/pci/hda/hda_codec.h
@@ -83,7 +83,7 @@  struct hda_bus {
  * better than the generic parser.
  */
 typedef int (*hda_codec_patch_t)(struct hda_codec *);
-	
+
 #define HDA_CODEC_ID_GENERIC_HDMI	0x00000101
 #define HDA_CODEC_ID_GENERIC		0x00000201
 
@@ -497,6 +497,8 @@  int hda_call_check_power_status(struct hda_codec *codec, hda_nid_t nid)
 #ifdef CONFIG_PM
 void snd_hda_set_power_save(struct hda_bus *bus, int delay);
 void snd_hda_update_power_acct(struct hda_codec *codec);
+int hda_codec_runtime_suspend(struct device *dev);
+int hda_codec_runtime_resume(struct device *dev);
 #else
 static inline void snd_hda_set_power_save(struct hda_bus *bus, int delay) {}
 #endif