Re: [PATCH] create device symlink in snd-aoa

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Sat, 2006-12-02 at 11:15 +0100, Olaf Hering wrote:
> create sysfs device symlinks for snd-aoa in /sys/class/sound/controlC0
> This allows hald to recognize the device as sound device.
> Furthermore it allows the desktop user to actually access the sound 
> device nodes. hald and related packages will modify the acl attributes.
> 
> Fixes https://bugzilla.novell.com/show_bug.cgi?id=106294

This is probably the best solution we can come up now. I've been
pondering doing this for a while and wasn't really sure which of the
devices to use, this simply uses the i2s bus device.

Technically, this isn't really correct because the actual control is
with the i2c codec chip, but there may be multiple so this is probably
as good as we can do right now.

Acked-by: Johannes Berg <johannes@xxxxxxxxxxxxxxxx>

> Signed-off-by: Olaf Hering <olaf@xxxxxxxxx>
> 
> ---
>  sound/aoa/aoa.h                           |    2 +-
>  sound/aoa/core/snd-aoa-alsa.c             |    3 ++-
>  sound/aoa/core/snd-aoa-alsa.h             |    2 +-
>  sound/aoa/core/snd-aoa-core.c             |    4 ++--
>  sound/aoa/fabrics/snd-aoa-fabric-layout.c |    2 +-
>  5 files changed, 7 insertions(+), 6 deletions(-)
> 
> Index: linux-2.6/sound/aoa/aoa.h
> ===================================================================
> --- linux-2.6.orig/sound/aoa/aoa.h
> +++ linux-2.6/sound/aoa/aoa.h
> @@ -99,7 +99,7 @@ struct aoa_fabric {
>   * that are not assigned yet are passed to the fabric
>   * again for reconsideration. */
>  extern int
> -aoa_fabric_register(struct aoa_fabric *fabric);
> +aoa_fabric_register(struct aoa_fabric *fabric, struct device *dev);
>  
>  /* it is vital to call this when the fabric exits!
>   * When calling, the remove_codec will be called
> Index: linux-2.6/sound/aoa/fabrics/snd-aoa-fabric-layout.c
> ===================================================================
> --- linux-2.6.orig/sound/aoa/fabrics/snd-aoa-fabric-layout.c
> +++ linux-2.6/sound/aoa/fabrics/snd-aoa-fabric-layout.c
> @@ -1014,7 +1014,7 @@ static int aoa_fabric_layout_probe(struc
>  
>  	ldev->gpio.methods->init(&ldev->gpio);
>  
> -	err = aoa_fabric_register(&layout_fabric);
> +	err = aoa_fabric_register(&layout_fabric, &sdev->ofdev.dev);
>  	if (err && err != -EALREADY) {
>  		printk(KERN_INFO "snd-aoa-fabric-layout: can't use,"
>  				 " another fabric is active!\n");
> Index: linux-2.6/sound/aoa/core/snd-aoa-alsa.c
> ===================================================================
> --- linux-2.6.orig/sound/aoa/core/snd-aoa-alsa.c
> +++ linux-2.6/sound/aoa/core/snd-aoa-alsa.c
> @@ -14,7 +14,7 @@ MODULE_PARM_DESC(index, "index for AOA s
>  
>  static struct aoa_card *aoa_card;
>  
> -int aoa_alsa_init(char *name, struct module *mod)
> +int aoa_alsa_init(char *name, struct module *mod, struct device *dev)
>  {
>  	struct snd_card *alsa_card;
>  	int err;
> @@ -28,6 +28,7 @@ int aoa_alsa_init(char *name, struct mod
>  		return -ENOMEM;
>  	aoa_card = alsa_card->private_data;
>  	aoa_card->alsa_card = alsa_card;
> +	alsa_card->dev = dev;
>  	strlcpy(alsa_card->driver, "AppleOnbdAudio", sizeof(alsa_card->driver));
>  	strlcpy(alsa_card->shortname, name, sizeof(alsa_card->shortname));
>  	strlcpy(alsa_card->longname, name, sizeof(alsa_card->longname));
> Index: linux-2.6/sound/aoa/core/snd-aoa-alsa.h
> ===================================================================
> --- linux-2.6.orig/sound/aoa/core/snd-aoa-alsa.h
> +++ linux-2.6/sound/aoa/core/snd-aoa-alsa.h
> @@ -10,7 +10,7 @@
>  #define __SND_AOA_ALSA_H
>  #include "../aoa.h"
>  
> -extern int aoa_alsa_init(char *name, struct module *mod);
> +extern int aoa_alsa_init(char *name, struct module *mod, struct device *dev);
>  extern void aoa_alsa_cleanup(void);
>  
>  #endif /* __SND_AOA_ALSA_H */
> Index: linux-2.6/sound/aoa/core/snd-aoa-core.c
> ===================================================================
> --- linux-2.6.orig/sound/aoa/core/snd-aoa-core.c
> +++ linux-2.6/sound/aoa/core/snd-aoa-core.c
> @@ -82,7 +82,7 @@ void aoa_codec_unregister(struct aoa_cod
>  }
>  EXPORT_SYMBOL_GPL(aoa_codec_unregister);
>  
> -int aoa_fabric_register(struct aoa_fabric *new_fabric)
> +int aoa_fabric_register(struct aoa_fabric *new_fabric, struct device *dev)
>  {
>  	struct aoa_codec *c;
>  	int err;
> @@ -98,7 +98,7 @@ int aoa_fabric_register(struct aoa_fabri
>  	if (!new_fabric)
>  		return -EINVAL;
>  
> -	err = aoa_alsa_init(new_fabric->name, new_fabric->owner);
> +	err = aoa_alsa_init(new_fabric->name, new_fabric->owner, dev);
>  	if (err)
>  		return err;
>  
> 

Attachment: signature.asc
Description: This is a digitally signed message part

-------------------------------------------------------------------------
Take Surveys. Earn Cash. Influence the Future of IT
Join SourceForge.net's Techsay panel and you'll get the chance to share your
opinions on IT & business topics through brief surveys - and earn cash
http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
_______________________________________________
Alsa-devel mailing list
Alsa-devel@xxxxxxxxxxxxxxxxxxxxx
https://lists.sourceforge.net/lists/listinfo/alsa-devel

[Index of Archives]     [ALSA User]     [Linux Audio Users]     [Kernel Archive]     [Asterisk PBX]     [Photo Sharing]     [Linux Sound]     [Video 4 Linux]     [Gimp]     [Yosemite News]

  Powered by Linux