* [PATCH 1/2] ASoC: p1022ds: add support for fsl, P1022 and fsl, P1022DS model names
@ 2011-12-02 1:52 Timur Tabi
2011-12-02 1:52 ` [PATCH 2/2] ASoC: fsl/powerpc: don't rely on the cell-index property Timur Tabi
0 siblings, 1 reply; 5+ messages in thread
From: Timur Tabi @ 2011-12-02 1:52 UTC (permalink / raw)
To: broonie, lrg, alsa-devel
Commit ab827d97 ("powerpc/85xx: Rework P1022DS device tree") renamed the
the /model property of the P1022DS device tree from "fsl,P1022" to
"fsl,P1022DS". To support both old and new device trees, the ASoC
machine driver for the P1022DS needs to query the /model property and
update the platform driver object dynamically.
Signed-off-by: Timur Tabi <timur@freescale.com>
---
sound/soc/fsl/p1022_ds.c | 36 ++++++++++++++++++++++++++++--------
1 files changed, 28 insertions(+), 8 deletions(-)
diff --git a/sound/soc/fsl/p1022_ds.c b/sound/soc/fsl/p1022_ds.c
index 2c064a9..3091626 100644
--- a/sound/soc/fsl/p1022_ds.c
+++ b/sound/soc/fsl/p1022_ds.c
@@ -540,12 +540,6 @@ static struct platform_driver p1022_ds_driver = {
.probe = p1022_ds_probe,
.remove = __devexit_p(p1022_ds_remove),
.driver = {
- /* The name must match the 'model' property in the device tree,
- * in lowercase letters, but only the part after that last
- * comma. This is because some model properties have a "fsl,"
- * prefix.
- */
- .name = "snd-soc-p1022",
.owner = THIS_MODULE,
},
};
@@ -559,13 +553,39 @@ static int __init p1022_ds_init(void)
{
struct device_node *guts_np;
struct resource res;
+ const char *sprop;
+
+ /*
+ * Check if we're actually running on a P1022DS. Older device trees
+ * have a model of "fsl,P1022" and newer ones use "fsl,P1022DS", so we
+ * need to support both. The SSI driver uses that property to link to
+ * the machine driver, so have to match it.
+ */
+ sprop = of_get_property(of_find_node_by_path("/"), "model", NULL);
+ if (!sprop) {
+ pr_err("snd-soc-p1022ds: missing /model node");
+ return -ENODEV;
+ }
+
+ pr_debug("snd-soc-p1022ds: board model name is %s\n", sprop);
- pr_info("Freescale P1022 DS ALSA SoC machine driver\n");
+ /*
+ * The name of this board, taken from the device tree. Normally, this is a*
+ * fixed string, but some P1022DS device trees have a /model property of
+ * "fsl,P1022", and others have "fsl,P1022DS".
+ */
+ if (strcasecmp(sprop, "fsl,p1022ds") == 0)
+ p1022_ds_driver.driver.name = "snd-soc-p1022ds";
+ else if (strcasecmp(sprop, "fsl,p1022") == 0)
+ p1022_ds_driver.driver.name = "snd-soc-p1022";
+ else
+ return -ENODEV;
/* Get the physical address of the global utilities registers */
guts_np = of_find_compatible_node(NULL, NULL, "fsl,p1022-guts");
if (of_address_to_resource(guts_np, 0, &res)) {
- pr_err("p1022-ds: missing/invalid global utilities node\n");
+ pr_err("snd-soc-p1022ds: missing/invalid global utils node\n");
+ of_node_put(guts_np);
return -EINVAL;
}
guts_phys = res.start;
--
1.7.4.4
^ permalink raw reply related [flat|nested] 5+ messages in thread
* [PATCH 2/2] ASoC: fsl/powerpc: don't rely on the cell-index property
2011-12-02 1:52 [PATCH 1/2] ASoC: p1022ds: add support for fsl, P1022 and fsl, P1022DS model names Timur Tabi
@ 2011-12-02 1:52 ` Timur Tabi
2011-12-02 12:14 ` Tabi Timur-B04825
0 siblings, 1 reply; 5+ messages in thread
From: Timur Tabi @ 2011-12-02 1:52 UTC (permalink / raw)
To: broonie, lrg, alsa-devel
Instead of using the 'cell-index' property in the I2C adapter node to
determine the adapter number, just query the i2c_adapter object directly.
Previously, the I2C nodes always appeared in cell-index order, so the
dynamic numbering coincided with the cell-index property. With commit
ab827d97 ("powerpc/85xx: Rework P1022DS device tree"), the I2C nodes are
unintentionally reversed in the device tree, and so the machine driver
guesses the wrong I2C adapter number.
Signed-off-by: Timur Tabi <timur@freescale.com>
---
sound/soc/fsl/mpc8610_hpcd.c | 13 ++++++++-----
sound/soc/fsl/p1022_ds.c | 13 ++++++++-----
2 files changed, 16 insertions(+), 10 deletions(-)
diff --git a/sound/soc/fsl/mpc8610_hpcd.c b/sound/soc/fsl/mpc8610_hpcd.c
index 31af405..c3cbad0 100644
--- a/sound/soc/fsl/mpc8610_hpcd.c
+++ b/sound/soc/fsl/mpc8610_hpcd.c
@@ -14,6 +14,7 @@
#include <linux/interrupt.h>
#include <linux/of_device.h>
#include <linux/slab.h>
+#include <linux/of_i2c.h>
#include <sound/soc.h>
#include <asm/fsl_guts.h>
@@ -249,8 +250,9 @@ static int get_parent_cell_index(struct device_node *np)
static int codec_node_dev_name(struct device_node *np, char *buf, size_t len)
{
const u32 *iprop;
- int bus, addr;
+ int addr;
char temp[DAI_NAME_SIZE];
+ struct i2c_client *i2c;
of_modalias_node(np, temp, DAI_NAME_SIZE);
@@ -260,11 +262,12 @@ static int codec_node_dev_name(struct device_node *np, char *buf, size_t len)
addr = be32_to_cpup(iprop);
- bus = get_parent_cell_index(np);
- if (bus < 0)
- return bus;
+ /* We need the adapter number */
+ i2c = of_find_i2c_device_by_node(np);
+ if (!i2c)
+ return -ENODEV;
- snprintf(buf, len, "%s-codec.%u-%04x", temp, bus, addr);
+ snprintf(buf, len, "%s-codec.%u-%04x", temp, i2c->adapter->nr, addr);
return 0;
}
diff --git a/sound/soc/fsl/p1022_ds.c b/sound/soc/fsl/p1022_ds.c
index 3091626..a5d4e80 100644
--- a/sound/soc/fsl/p1022_ds.c
+++ b/sound/soc/fsl/p1022_ds.c
@@ -14,6 +14,7 @@
#include <linux/interrupt.h>
#include <linux/of_device.h>
#include <linux/slab.h>
+#include <linux/of_i2c.h>
#include <sound/soc.h>
#include <asm/fsl_guts.h>
@@ -252,8 +253,9 @@ static int get_parent_cell_index(struct device_node *np)
static int codec_node_dev_name(struct device_node *np, char *buf, size_t len)
{
const u32 *iprop;
- int bus, addr;
+ int addr;
char temp[DAI_NAME_SIZE];
+ struct i2c_client *i2c;
of_modalias_node(np, temp, DAI_NAME_SIZE);
@@ -263,11 +265,12 @@ static int codec_node_dev_name(struct device_node *np, char *buf, size_t len)
addr = be32_to_cpup(iprop);
- bus = get_parent_cell_index(np);
- if (bus < 0)
- return bus;
+ /* We need the adapter number */
+ i2c = of_find_i2c_device_by_node(np);
+ if (!i2c)
+ return -ENODEV;
- snprintf(buf, len, "%s.%u-%04x", temp, bus, addr);
+ snprintf(buf, len, "%s.%u-%04x", temp, i2c->adapter->nr, addr);
return 0;
}
--
1.7.4.4
^ permalink raw reply related [flat|nested] 5+ messages in thread
* Re: [PATCH 2/2] ASoC: fsl/powerpc: don't rely on the cell-index property
2011-12-02 1:52 ` [PATCH 2/2] ASoC: fsl/powerpc: don't rely on the cell-index property Timur Tabi
@ 2011-12-02 12:14 ` Tabi Timur-B04825
2011-12-02 12:18 ` Mark Brown
0 siblings, 1 reply; 5+ messages in thread
From: Tabi Timur-B04825 @ 2011-12-02 12:14 UTC (permalink / raw)
To: broonie@opensource.wolfsonmicro.com
Cc: alsa-devel@alsa-project.org, lrg@ti.com
Timur Tabi wrote:
> Instead of using the 'cell-index' property in the I2C adapter node to
> determine the adapter number, just query the i2c_adapter object directly.
>
> Previously, the I2C nodes always appeared in cell-index order, so the
> dynamic numbering coincided with the cell-index property. With commit
> ab827d97 ("powerpc/85xx: Rework P1022DS device tree"), the I2C nodes are
> unintentionally reversed in the device tree, and so the machine driver
> guesses the wrong I2C adapter number.
>
> Signed-off-by: Timur Tabi<timur@freescale.com>
Mark,
Can you hold off on applying patch #2 for the moment? I just thought of
something that I want to try first.
Patch #1 is good to go, though.
--
Timur Tabi
Linux kernel developer at Freescale
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH 2/2] ASoC: fsl/powerpc: don't rely on the cell-index property
2011-12-02 12:14 ` Tabi Timur-B04825
@ 2011-12-02 12:18 ` Mark Brown
2011-12-02 12:20 ` Tabi Timur-B04825
0 siblings, 1 reply; 5+ messages in thread
From: Mark Brown @ 2011-12-02 12:18 UTC (permalink / raw)
To: Tabi Timur-B04825; +Cc: alsa-devel@alsa-project.org, lrg@ti.com
On Fri, Dec 02, 2011 at 12:14:44PM +0000, Tabi Timur-B04825 wrote:
> Can you hold off on applying patch #2 for the moment? I just thought of
> something that I want to try first.
Sorry, I already applied it but just didnt' get round to replying to say
I did.
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH 2/2] ASoC: fsl/powerpc: don't rely on the cell-index property
2011-12-02 12:18 ` Mark Brown
@ 2011-12-02 12:20 ` Tabi Timur-B04825
0 siblings, 0 replies; 5+ messages in thread
From: Tabi Timur-B04825 @ 2011-12-02 12:20 UTC (permalink / raw)
To: Mark Brown; +Cc: alsa-devel@alsa-project.org, lrg@ti.com
Mark Brown wrote:
> Sorry, I already applied it but just didnt' get round to replying to say
> I did.
Well, it's not a bad patch, in that it does fix the problem, but it might
not be the best. I'll deal.
--
Timur Tabi
Linux kernel developer at Freescale
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2011-12-02 12:20 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2011-12-02 1:52 [PATCH 1/2] ASoC: p1022ds: add support for fsl, P1022 and fsl, P1022DS model names Timur Tabi
2011-12-02 1:52 ` [PATCH 2/2] ASoC: fsl/powerpc: don't rely on the cell-index property Timur Tabi
2011-12-02 12:14 ` Tabi Timur-B04825
2011-12-02 12:18 ` Mark Brown
2011-12-02 12:20 ` Tabi Timur-B04825
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.