linuxppc-dev.lists.ozlabs.org archive mirror
 help / color / mirror / Atom feed
From: Johannes Berg <johannes@sipsolutions.net>
To: alsa-devel@alsa-project.org
Cc: linuxppc-dev@ozlabs.org, netstar@gatheringofgray.com
Subject: [RFC 08/12] snd-aoa: add toonie codec
Date: Wed, 07 Jun 2006 15:09:17 +0200	[thread overview]
Message-ID: <20060607130915.761442000@sipsolutions.net> (raw)
In-Reply-To: 20060607130909.584205000@sipsolutions.net

This adds support for the 'toonie' codec which is just a codec
without any mixer/volume control functionality and is used on
the mac mini.

--- /dev/null
+++ b/sound/aoa/codecs/snd-aoa-codec-toonie.c
@@ -0,0 +1,140 @@
+/*
+ * Apple Onboard Audio driver for Toonie codec
+ *
+ * Copyright 2006 Johannes Berg <johannes@sipsolutions.net>
+ *
+ * GPL v2, can be found in COPYING.
+ *
+ *
+ * This is a driver for the toonie codec chip. This chip is present
+ * on the Mac Mini and is nothing but a DAC.
+ */
+#include <linux/delay.h>
+#include <linux/module.h>
+MODULE_AUTHOR("Johannes Berg <johannes@sipsolutions.net>");
+MODULE_LICENSE("GPL");
+MODULE_DESCRIPTION("toonie codec driver for snd-aoa");
+
+#include "../aoa.h"
+#include "../soundbus/soundbus.h"
+
+
+#define PFX "snd-aoa-codec-toonie: "
+
+struct toonie {
+	struct aoa_codec	codec;
+};
+#define codec_to_toonie(c) container_of(c, struct toonie, codec)
+
+static int toonie_dev_register(struct snd_device *dev)
+{
+	return 0;
+}
+
+static struct snd_device_ops ops = {
+	.dev_register = toonie_dev_register,
+};
+
+static struct transfer_info toonie_transfers[] = {
+	/* This thing *only* has analog output,
+	 * the rates are taken from Info.plist
+	 * from Darwin. */
+	{
+		.formats = SNDRV_PCM_FMTBIT_S16_BE |
+			   SNDRV_PCM_FMTBIT_S24_BE,
+		.rates = SNDRV_PCM_RATE_32000 |
+			 SNDRV_PCM_RATE_44100 |
+			 SNDRV_PCM_RATE_48000 |
+			 SNDRV_PCM_RATE_88200 |
+			 SNDRV_PCM_RATE_96000,
+	},
+	{}
+};
+
+#ifdef CONFIG_PM
+static int toonie_suspend(struct codec_info_item *cii, pm_message_t state)
+{
+	/* can we turn it off somehow? */
+	return 0;
+}
+
+static int toonie_resume(struct codec_info_item *cii)
+{
+	return 0;
+}
+#endif /* CONFIG_PM */
+
+static struct codec_info toonie_codec_info = {
+	.transfers = toonie_transfers,
+	.sysclock_factor = 256,
+	.bus_factor = 64,
+	.owner = THIS_MODULE,
+#ifdef CONFIG_PM
+	.suspend = toonie_suspend,
+	.resume = toonie_resume,
+#endif
+};
+
+static int toonie_init_codec(struct aoa_codec *codec)
+{
+	struct toonie *toonie = codec_to_toonie(codec);
+
+	if (aoa_snd_device_new(SNDRV_DEV_LOWLEVEL, toonie, &ops)) {
+		printk(KERN_ERR PFX "failed to create toonie snd device!\n");
+		return -ENODEV;
+	}
+
+	/* nothing connected? what a joke! */
+	if (toonie->codec.connected != 1)
+		return -ENOTCONN;
+
+	if (toonie->codec.soundbus_dev->attach_codec(toonie->codec.soundbus_dev,
+						     aoa_get_card(),
+						     &toonie_codec_info, toonie)) {
+		printk(KERN_ERR PFX "error creating toonie pcm\n");
+		return -ENODEV;
+	}
+
+	return 0;
+}
+
+static void toonie_exit_codec(struct aoa_codec *codec)
+{
+	struct toonie *toonie = codec_to_toonie(codec);
+
+	if (!toonie->codec.soundbus_dev) {
+		printk(KERN_ERR PFX "toonie_exit_codec called without soundbus_dev!\n");
+		return;
+	}
+	toonie->codec.soundbus_dev->detach_codec(toonie->codec.soundbus_dev, toonie);
+}
+
+static struct toonie *toonie;
+
+static int __init toonie_init(void)
+{
+	toonie = kzalloc(sizeof(struct toonie), GFP_KERNEL);
+
+	if (!toonie)
+		return -ENOMEM;
+
+	strlcpy(toonie->codec.name, "toonie", sizeof(toonie->codec.name));
+	toonie->codec.owner = THIS_MODULE;
+	toonie->codec.init = toonie_init_codec;
+	toonie->codec.exit = toonie_exit_codec;
+                                        
+	if (aoa_codec_register(&toonie->codec)) {
+		kfree(toonie);
+		return -EINVAL;
+	}
+
+	return 0;
+}
+
+static void __exit toonie_exit(void)
+{
+	kfree(toonie);
+}
+
+module_init(toonie_init);
+module_exit(toonie_exit);

--

  parent reply	other threads:[~2006-06-07 13:12 UTC|newest]

Thread overview: 41+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2006-06-07 13:09 [RFC 00/12] snd-aoa: add snd-aoa Johannes Berg
2006-06-07 13:09 ` [RFC 01/12] snd-powermac: no longer handle anything with a layout-id property Johannes Berg
2006-06-26 20:49   ` Andreas Schwab
2006-06-27 14:29     ` [Alsa-devel] " Takashi Iwai
2006-06-27 15:32       ` Andreas Schwab
2006-06-29 21:03         ` Andreas Schwab
2006-06-29 22:26           ` Lee Revell
2006-06-29 23:16             ` Andreas Schwab
2006-06-30  9:35               ` Takashi Iwai
2006-07-07  5:38               ` Benjamin Herrenschmidt
2006-07-07  8:04                 ` Johannes Berg
2006-07-07  8:13                   ` Benjamin Herrenschmidt
2006-07-07  8:22                     ` Johannes Berg
2006-07-07  8:27                       ` Benjamin Herrenschmidt
2006-07-07  8:40                         ` Johannes Berg
2006-07-07  9:51                 ` Takashi Iwai
2006-07-07  9:55                   ` Johannes Berg
2006-06-27 17:40       ` Johannes Berg
2006-06-27 17:30     ` Johannes Berg
2006-06-07 13:09 ` [RFC 02/12] snd-aoa: add aoa header files Johannes Berg
2006-06-07 13:09 ` [RFC 03/12] snd-aoa: add aoa core Johannes Berg
2006-06-07 18:13   ` [Alsa-devel] " Takashi Iwai
2006-06-09 12:10     ` Johannes Berg
2006-06-07 13:09 ` [RFC 04/12] snd-aoa: add soundbus Johannes Berg
2006-06-07 13:09 ` [RFC 05/12] snd-aoa: add i2sbus Johannes Berg
2006-06-07 18:44   ` [Alsa-devel] " Takashi Iwai
2006-06-09 12:13     ` Johannes Berg
2006-06-09 12:23       ` Takashi Iwai
2006-06-07 13:09 ` [RFC 06/12] snd-aoa: add onyx codec Johannes Berg
2006-06-07 13:09 ` [RFC 07/12] snd-aoa: add tas codec Johannes Berg
2006-06-07 15:42   ` Johannes Berg
2006-06-07 13:09 ` Johannes Berg [this message]
2006-06-07 13:09 ` [RFC 09/12] snd-aoa: add build files for codecs Johannes Berg
2006-06-07 13:09 ` [RFC 10/12] snd-aoa: add layout-id fabric Johannes Berg
2006-06-07 13:09 ` [RFC 11/12] snd-aoa: add Kconfig and Makefile Johannes Berg
2006-06-07 18:50   ` [Alsa-devel] " Takashi Iwai
2006-06-09 12:10     ` Johannes Berg
2006-06-07 13:09 ` [RFC 12/12] snd-aoa: wire up aoa in sound/ Johannes Berg
2006-06-07 18:22 ` [Alsa-devel] [RFC 00/12] snd-aoa: add snd-aoa Takashi Iwai
2006-06-09 12:22   ` Johannes Berg
2006-06-09 12:34     ` Takashi Iwai

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20060607130915.761442000@sipsolutions.net \
    --to=johannes@sipsolutions.net \
    --cc=alsa-devel@alsa-project.org \
    --cc=linuxppc-dev@ozlabs.org \
    --cc=netstar@gatheringofgray.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).