diff options
| author | Johannes Berg <johannes@sipsolutions.net> | 2006-07-25 10:13:37 -0400 |
|---|---|---|
| committer | Jaroslav Kysela <perex@suse.cz> | 2006-08-03 09:21:22 -0400 |
| commit | 6e8331ac6973435b1e7604c30f2ad394035b46e1 (patch) | |
| tree | 4b63bacad2644aea8770961bd08da7a84dfbbbb3 | |
| parent | 2566d36ab4f0b90141bb59a5f7342255751fbf45 (diff) | |
[ALSA] aoa: fix toonie codec
This patch fixes the toonie codec to be actually usable.
Signed-off-by: Johannes Berg <johannes@sipsolutions.net>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Signed-off-by: Jaroslav Kysela <perex@suse.cz>
| -rw-r--r-- | sound/aoa/codecs/snd-aoa-codec-toonie.c | 17 |
1 files changed, 13 insertions, 4 deletions
diff --git a/sound/aoa/codecs/snd-aoa-codec-toonie.c b/sound/aoa/codecs/snd-aoa-codec-toonie.c index bcc555647e79..3c7d1d8a9a6f 100644 --- a/sound/aoa/codecs/snd-aoa-codec-toonie.c +++ b/sound/aoa/codecs/snd-aoa-codec-toonie.c | |||
| @@ -51,6 +51,13 @@ static struct transfer_info toonie_transfers[] = { | |||
| 51 | {} | 51 | {} |
| 52 | }; | 52 | }; |
| 53 | 53 | ||
| 54 | static int toonie_usable(struct codec_info_item *cii, | ||
| 55 | struct transfer_info *ti, | ||
| 56 | struct transfer_info *out) | ||
| 57 | { | ||
| 58 | return 1; | ||
| 59 | } | ||
| 60 | |||
| 54 | #ifdef CONFIG_PM | 61 | #ifdef CONFIG_PM |
| 55 | static int toonie_suspend(struct codec_info_item *cii, pm_message_t state) | 62 | static int toonie_suspend(struct codec_info_item *cii, pm_message_t state) |
| 56 | { | 63 | { |
| @@ -69,6 +76,7 @@ static struct codec_info toonie_codec_info = { | |||
| 69 | .sysclock_factor = 256, | 76 | .sysclock_factor = 256, |
| 70 | .bus_factor = 64, | 77 | .bus_factor = 64, |
| 71 | .owner = THIS_MODULE, | 78 | .owner = THIS_MODULE, |
| 79 | .usable = toonie_usable, | ||
| 72 | #ifdef CONFIG_PM | 80 | #ifdef CONFIG_PM |
| 73 | .suspend = toonie_suspend, | 81 | .suspend = toonie_suspend, |
| 74 | .resume = toonie_resume, | 82 | .resume = toonie_resume, |
| @@ -79,19 +87,20 @@ static int toonie_init_codec(struct aoa_codec *codec) | |||
| 79 | { | 87 | { |
| 80 | struct toonie *toonie = codec_to_toonie(codec); | 88 | struct toonie *toonie = codec_to_toonie(codec); |
| 81 | 89 | ||
| 90 | /* nothing connected? what a joke! */ | ||
| 91 | if (toonie->codec.connected != 1) | ||
| 92 | return -ENOTCONN; | ||
| 93 | |||
| 82 | if (aoa_snd_device_new(SNDRV_DEV_LOWLEVEL, toonie, &ops)) { | 94 | if (aoa_snd_device_new(SNDRV_DEV_LOWLEVEL, toonie, &ops)) { |
| 83 | printk(KERN_ERR PFX "failed to create toonie snd device!\n"); | 95 | printk(KERN_ERR PFX "failed to create toonie snd device!\n"); |
| 84 | return -ENODEV; | 96 | return -ENODEV; |
| 85 | } | 97 | } |
| 86 | 98 | ||
| 87 | /* nothing connected? what a joke! */ | ||
| 88 | if (toonie->codec.connected != 1) | ||
| 89 | return -ENOTCONN; | ||
| 90 | |||
| 91 | if (toonie->codec.soundbus_dev->attach_codec(toonie->codec.soundbus_dev, | 99 | if (toonie->codec.soundbus_dev->attach_codec(toonie->codec.soundbus_dev, |
| 92 | aoa_get_card(), | 100 | aoa_get_card(), |
| 93 | &toonie_codec_info, toonie)) { | 101 | &toonie_codec_info, toonie)) { |
| 94 | printk(KERN_ERR PFX "error creating toonie pcm\n"); | 102 | printk(KERN_ERR PFX "error creating toonie pcm\n"); |
| 103 | snd_device_free(aoa_get_card(), toonie); | ||
| 95 | return -ENODEV; | 104 | return -ENODEV; |
| 96 | } | 105 | } |
| 97 | 106 | ||
