From: Pavel Machek <pavel@ucw.cz>
To: Charles Keepax <ckeepax@opensource.wolfsonmicro.com>
Cc: alsa-devel@alsa-project.org, tiwai@suse.de,
linux-kernel@vger.kernel.org,
patches@opensource.wolfsonmicro.com, lgirdwood@gmail.com,
broonie@kernel.org
Subject: multi-card support for arizona-core
Date: Mon, 30 Nov 2015 12:37:17 +0100 [thread overview]
Message-ID: <20151130113717.GB32172@amd> (raw)
In-Reply-To: <20151012113702.GC8805@ck-lbox>
Hi!
Add support for than one arizona. We introduce codec_num and fill it
based on device tree. If there's better way, let me know. (For v4.2,
but I believe nothing changed there. And yes, I'd need to document the
dt binding. Will do if the rest of patch is ok.)
Signed-off-by: Pavel Machek <pavel@denx.de>
diff --git a/drivers/mfd/arizona-core.c b/drivers/mfd/arizona-core.c
index a72ddb2..4f9dbd8 100644
--- a/drivers/mfd/arizona-core.c
+++ b/drivers/mfd/arizona-core.c
@@ -755,7 +755,15 @@ static int arizona_of_get_core_pdata(struct arizona *arizona)
int ret, i;
int count = 0;
+ ret = of_property_read_u32(arizona->dev->of_node,
+ "wlf,codec-number", &arizona->pdata.codec_num);
+ if (ret < 0) {
+ dev_info(arizona->dev, "No codec-number property in DT => single-codec mode\n");
+ arizona->pdata.codec_num = -1;
+ } else {
+ dev_info(arizona->dev, "codec-number from DT: %d\n", arizona->pdata.codec_num);
+ }
ret = of_property_read_u32_array(arizona->dev->of_node,
"wlf,gpio-defaults",
arizona->pdata.gpio_defaults,
@@ -925,7 +952,7 @@ int arizona_dev_init(struct arizona *arizona)
/* Mark DCVDD as external, LDO1 driver will clear if internal */
arizona->external_dcvdd = true;
- ret = mfd_add_devices(arizona->dev, -1, early_devs,
+ ret = mfd_add_devices(arizona->dev, arizona->pdata.codec_num, early_devs,
ARRAY_SIZE(early_devs), NULL, 0, NULL);
if (ret != 0) {
dev_err(dev, "Failed to add early children: %d\n", ret);
@@ -1259,9 +1286,12 @@ int arizona_dev_init(struct arizona *arizona)
arizona_request_irq(arizona, ARIZONA_IRQ_UNDERCLOCKED, "Underclocked",
arizona_underclocked, arizona);
+ // FIXME: multiple codec handling only added for WM5102
switch (arizona->type) {
case WM5102:
- ret = mfd_add_devices(arizona->dev, -1, wm5102_devs,
+ printk("arizona: wm5102, working with device %d\n", arizona->pdata.codec_num);
+
+ ret = mfd_add_devices(arizona->dev, arizona->pdata.codec_num, wm5102_devs,
ARRAY_SIZE(wm5102_devs), NULL, 0, NULL);
break;
case WM5110:
diff --git a/include/linux/mfd/arizona/pdata.h b/include/linux/mfd/arizona/pdata.h
index 43db4fa..b36a750 100644
--- a/include/linux/mfd/arizona/pdata.h
+++ b/include/linux/mfd/arizona/pdata.h
@@ -75,6 +75,8 @@ struct arizona_micd_range {
};
struct arizona_pdata {
+ int codec_num; // -1: n/a (=> single codec only) ; 1 or 2: codec #1 or #2 (=> two codecs)
+
int reset; /** GPIO controlling /RESET, if any */
int ldoena; /** GPIO controlling LODENA, if any */
--
(english) http://www.livejournal.com/~pavelmachek
(cesky, pictures) http://atrey.karlin.mff.cuni.cz/~pavel/picture/horses/blog.html
WARNING: multiple messages have this Message-ID (diff)
From: Pavel Machek <pavel@ucw.cz>
To: Charles Keepax <ckeepax@opensource.wolfsonmicro.com>
Cc: lgirdwood@gmail.com, broonie@kernel.org, perex@perex.cz,
tiwai@suse.de, patches@opensource.wolfsonmicro.com,
alsa-devel@alsa-project.org, linux-kernel@vger.kernel.org
Subject: multi-card support for arizona-core
Date: Mon, 30 Nov 2015 12:37:17 +0100 [thread overview]
Message-ID: <20151130113717.GB32172@amd> (raw)
In-Reply-To: <20151012113702.GC8805@ck-lbox>
Hi!
Add support for than one arizona. We introduce codec_num and fill it
based on device tree. If there's better way, let me know. (For v4.2,
but I believe nothing changed there. And yes, I'd need to document the
dt binding. Will do if the rest of patch is ok.)
Signed-off-by: Pavel Machek <pavel@denx.de>
diff --git a/drivers/mfd/arizona-core.c b/drivers/mfd/arizona-core.c
index a72ddb2..4f9dbd8 100644
--- a/drivers/mfd/arizona-core.c
+++ b/drivers/mfd/arizona-core.c
@@ -755,7 +755,15 @@ static int arizona_of_get_core_pdata(struct arizona *arizona)
int ret, i;
int count = 0;
+ ret = of_property_read_u32(arizona->dev->of_node,
+ "wlf,codec-number", &arizona->pdata.codec_num);
+ if (ret < 0) {
+ dev_info(arizona->dev, "No codec-number property in DT => single-codec mode\n");
+ arizona->pdata.codec_num = -1;
+ } else {
+ dev_info(arizona->dev, "codec-number from DT: %d\n", arizona->pdata.codec_num);
+ }
ret = of_property_read_u32_array(arizona->dev->of_node,
"wlf,gpio-defaults",
arizona->pdata.gpio_defaults,
@@ -925,7 +952,7 @@ int arizona_dev_init(struct arizona *arizona)
/* Mark DCVDD as external, LDO1 driver will clear if internal */
arizona->external_dcvdd = true;
- ret = mfd_add_devices(arizona->dev, -1, early_devs,
+ ret = mfd_add_devices(arizona->dev, arizona->pdata.codec_num, early_devs,
ARRAY_SIZE(early_devs), NULL, 0, NULL);
if (ret != 0) {
dev_err(dev, "Failed to add early children: %d\n", ret);
@@ -1259,9 +1286,12 @@ int arizona_dev_init(struct arizona *arizona)
arizona_request_irq(arizona, ARIZONA_IRQ_UNDERCLOCKED, "Underclocked",
arizona_underclocked, arizona);
+ // FIXME: multiple codec handling only added for WM5102
switch (arizona->type) {
case WM5102:
- ret = mfd_add_devices(arizona->dev, -1, wm5102_devs,
+ printk("arizona: wm5102, working with device %d\n", arizona->pdata.codec_num);
+
+ ret = mfd_add_devices(arizona->dev, arizona->pdata.codec_num, wm5102_devs,
ARRAY_SIZE(wm5102_devs), NULL, 0, NULL);
break;
case WM5110:
diff --git a/include/linux/mfd/arizona/pdata.h b/include/linux/mfd/arizona/pdata.h
index 43db4fa..b36a750 100644
--- a/include/linux/mfd/arizona/pdata.h
+++ b/include/linux/mfd/arizona/pdata.h
@@ -75,6 +75,8 @@ struct arizona_micd_range {
};
struct arizona_pdata {
+ int codec_num; // -1: n/a (=> single codec only) ; 1 or 2: codec #1 or #2 (=> two codecs)
+
int reset; /** GPIO controlling /RESET, if any */
int ldoena; /** GPIO controlling LODENA, if any */
--
(english) http://www.livejournal.com/~pavelmachek
(cesky, pictures) http://atrey.karlin.mff.cuni.cz/~pavel/picture/horses/blog.html
next prev parent reply other threads:[~2015-11-30 11:37 UTC|newest]
Thread overview: 65+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-09-14 11:54 System with multiple arizona (wm5102) codecs Pavel Machek
2015-09-14 11:52 ` Charles Keepax
2015-09-14 11:52 ` Charles Keepax
2015-09-14 13:31 ` Charles Keepax
2015-09-14 13:31 ` Charles Keepax
2015-09-14 20:11 ` Pavel Machek
2015-09-15 6:18 ` Pavel Machek
2015-09-15 8:06 ` Charles Keepax
2015-09-15 8:06 ` Charles Keepax
2015-09-15 8:35 ` Pavel Machek
2015-09-15 13:56 ` Caleb Crome
2015-09-15 13:56 ` [alsa-devel] " Caleb Crome
2015-09-15 14:09 ` Mark Brown
2015-09-15 14:09 ` [alsa-devel] " Mark Brown
2015-09-15 15:26 ` Caleb Crome
2015-09-19 18:21 ` Mark Brown
2015-09-21 12:36 ` Pavel Machek
2015-10-12 9:00 ` multi-codec support for arizona-ldo1 was " Pavel Machek
2015-10-12 11:37 ` Charles Keepax
2015-10-12 11:37 ` Charles Keepax
2015-11-30 11:33 ` multi-card support for davinci-evm Pavel Machek
2015-11-30 11:37 ` Pavel Machek [this message]
2015-11-30 11:37 ` multi-card support for arizona-core Pavel Machek
2015-11-30 11:54 ` Mark Brown
2015-10-12 15:47 ` multi-codec support for arizona-ldo1 was Re: System with multiple arizona (wm5102) codecs Mark Brown
2015-10-12 20:11 ` Pavel Machek
2015-10-13 11:53 ` Mark Brown
2015-10-13 11:53 ` Mark Brown
2015-11-13 21:58 ` Pavel Machek
2015-11-13 22:53 ` Mark Brown
2015-11-14 7:44 ` Pavel Machek
2015-11-14 7:44 ` Pavel Machek
2015-11-14 12:39 ` Mark Brown
2015-11-14 17:59 ` Pavel Machek
2015-11-14 17:59 ` Pavel Machek
2015-11-14 18:49 ` Mark Brown
2015-11-14 21:16 ` Pavel Machek
2015-11-14 21:16 ` Pavel Machek
2015-11-15 0:14 ` Mark Brown
2015-11-15 0:14 ` Mark Brown
2015-11-16 7:45 ` Pavel Machek
2015-11-16 10:50 ` Mark Brown
2015-11-16 12:29 ` Pavel Machek
2015-11-16 12:29 ` Pavel Machek
2015-11-16 13:57 ` Charles Keepax
2015-11-16 13:57 ` Charles Keepax
2015-11-16 14:28 ` Charles Keepax
2015-11-16 14:28 ` Charles Keepax
2015-11-16 17:33 ` Mark Brown
2015-11-16 14:11 ` Charles Keepax
2015-11-16 14:11 ` Charles Keepax
2015-11-22 6:51 ` Pavel Machek
2015-11-22 6:51 ` Pavel Machek
2015-11-23 8:18 ` Lee Jones
2015-11-23 8:18 ` Lee Jones
2015-11-23 10:11 ` Pavel Machek
2015-11-23 10:25 ` Richard Fitzgerald
2015-11-23 10:25 ` Richard Fitzgerald
2015-11-23 11:30 ` Mark Brown
2015-11-23 11:46 ` Charles Keepax
2015-11-23 11:46 ` Charles Keepax
2015-11-23 14:31 ` Lee Jones
2015-11-23 15:00 ` Pavel Machek
2015-11-16 14:05 ` Charles Keepax
2015-11-16 14:05 ` Charles Keepax
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=20151130113717.GB32172@amd \
--to=pavel@ucw.cz \
--cc=alsa-devel@alsa-project.org \
--cc=broonie@kernel.org \
--cc=ckeepax@opensource.wolfsonmicro.com \
--cc=lgirdwood@gmail.com \
--cc=linux-kernel@vger.kernel.org \
--cc=patches@opensource.wolfsonmicro.com \
--cc=tiwai@suse.de \
/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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.