ALSA: cs5535audio: Use OLPC/Geode basic infrastructure
Subsystems (2)
PATCH 2/14 ALSA: cs5535audio: Use OLPC/Geode basic infrastructure
From: Jordan Crouse <[email protected]>
Use basic infrastructure code; geode_gpio* (rather than indexed i/o EC access), and do an OLPC machine check in olpc_quirk.
[[email protected]: don't return failure in olpc_quirks if !OLPC] [[email protected]: drop the <B2 workarounds; those machines are EOL'd]
Signed-off-by Jordan Crouse <[email protected]>
Signed-off-by Andres Salomon <[email protected]>
--- sound/pci/cs5535audio/cs5535audio_olpc.c | 16 +++++++++------- 1 files changed, 9 insertions(+), 7 deletions(-)
sound/pci/cs5535audio/cs5535audio_olpc.c +9 -7
@@ -1,9 +1,10 @@ -#include <linux/olpc.h> #include <sound/driver.h> #include <sound/core.h> #include <sound/info.h> #include <sound/control.h> #include <sound/ac97_codec.h> + +#include <asm/olpc.h> #include "cs5535audio.h" /* OLPC has an additional feature on top of regular AD1888 codec
@@ -81,13 +82,11 @@ static int snd_cs5535audio_ctl_put(struct snd_kcontrol *kcontrol,if (err <0 )snd_printk (KERN_ERR "Error updating AD_TEST2 %d\n" , err); +/* B2 and newer writes directly to a GPIO pin */ if (value) - err =write_ec_command (0x01 );/* activate MIC_AC_OFF */ -else - err =write_ec_command (0x02 );/* deactivates MIC_AC_OFF */ - -if (err <0 ) -snd_printk (KERN_ERR "Error talking to EC %d\n" , err); +geode_gpio_set (OLPC_GPIO_MIC_AC ,GPIO_OUTPUT_VAL ); +else +geode_gpio_clear (OLPC_GPIO_MIC_AC ,GPIO_OUTPUT_VAL ); cs5535au->ec_analog_input_mode = value;
@@ -106,6 +105,9 @@ static struct snd_kcontrol_new snd_cs5535audio_controls __devinitdata =int __devinit olpc_quirks (struct snd_card *card,struct snd_ac97 *ac97) { +if (!machine_is_olpc ()) +return 0 ; +/* setup callback for mixer control that does analog input mode */ return snd_ctl_add (card,snd_ctl_new1 (&snd_cs5535audio_controls, ac97->private_data));
Signature · 1 line
1.5.6.5