Skip to content

Commit

Permalink
ASoC: fsl: remove helper fsl_asoc_get_codec_dev_name
Browse files Browse the repository at this point in the history
The ASoC core now can support matching codec with device node besides
name, so we can save helper function fsl_asoc_get_codec_dev_name.

Signed-off-by: Shawn Guo <shawn.guo@linaro.org>
Acked-by: Sascha Hauer <s.hauer@pengutronix.de>
Acked-by: Timur Tabi <timur@freescale.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
  • Loading branch information
Shawn Guo authored and Mark Brown committed Apr 1, 2012
1 parent 60aae8d commit 8f549d7
Show file tree
Hide file tree
Showing 4 changed files with 4 additions and 67 deletions.
44 changes: 0 additions & 44 deletions sound/soc/fsl/fsl_utils.c
Original file line number Diff line number Diff line change
Expand Up @@ -12,54 +12,10 @@

#include <linux/module.h>
#include <linux/of_address.h>
#include <linux/of_i2c.h>
#include <sound/soc.h>

#include "fsl_utils.h"

/**
* fsl_asoc_get_codec_dev_name - determine the dev_name for a codec node
*
* @np: pointer to the I2C device tree node
* @buf: buffer to be filled with the dev_name of the I2C device
* @len: the length of the buffer
*
* This function determines the dev_name for an I2C node. This is the name
* that would be returned by dev_name() if this device_node were part of a
* 'struct device' It's ugly and hackish, but it works.
*
* The dev_name for such devices include the bus number and I2C address. For
* example, "cs4270.0-004f".
*/
int fsl_asoc_get_codec_dev_name(struct device_node *np, char *buf, size_t len)
{
const u32 *iprop;
u32 addr;
char temp[DAI_NAME_SIZE];
struct i2c_client *i2c;

of_modalias_node(np, temp, DAI_NAME_SIZE);

iprop = of_get_property(np, "reg", NULL);
if (!iprop)
return -EINVAL;

addr = be32_to_cpup(iprop);

/* We need the adapter number */
i2c = of_find_i2c_device_by_node(np);
if (!i2c) {
put_device(&i2c->dev);
return -ENODEV;
}

snprintf(buf, len, "%s.%u-%04x", temp, i2c->adapter->nr, addr);
put_device(&i2c->dev);

return 0;
}
EXPORT_SYMBOL(fsl_asoc_get_codec_dev_name);

/**
* fsl_asoc_get_dma_channel - determine the dma channel for a SSI node
*
Expand Down
1 change: 0 additions & 1 deletion sound/soc/fsl/fsl_utils.h
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,6 @@
struct snd_soc_dai_link;
struct device_node;

int fsl_asoc_get_codec_dev_name(struct device_node *np, char *buf, size_t len);
int fsl_asoc_get_dma_channel(struct device_node *ssi_np, const char *name,
struct snd_soc_dai_link *dai,
unsigned int *dma_channel_id,
Expand Down
13 changes: 2 additions & 11 deletions sound/soc/fsl/mpc8610_hpcd.c
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,6 @@ struct mpc8610_hpcd_data {
unsigned int dma_id[2]; /* 0 = DMA1, 1 = DMA2, etc */
unsigned int dma_channel_id[2]; /* 0 = ch 0, 1 = ch 1, etc*/
char codec_dai_name[DAI_NAME_SIZE];
char codec_name[DAI_NAME_SIZE];
char platform_name[2][DAI_NAME_SIZE]; /* One for each DMA channel */
};

Expand Down Expand Up @@ -215,16 +214,8 @@ static int mpc8610_hpcd_probe(struct platform_device *pdev)
machine_data->dai[0].cpu_dai_name = dev_name(&ssi_pdev->dev);
machine_data->dai[0].ops = &mpc8610_hpcd_ops;

/* Determine the codec name, it will be used as the codec DAI name */
ret = fsl_asoc_get_codec_dev_name(codec_np, machine_data->codec_name,
DAI_NAME_SIZE);
if (ret) {
dev_err(&pdev->dev, "invalid codec node %s\n",
codec_np->full_name);
ret = -EINVAL;
goto error;
}
machine_data->dai[0].codec_name = machine_data->codec_name;
/* ASoC core can match codec with device node */
machine_data->dai[0].codec_of_node = codec_np;

/* The DAI name from the codec (snd_soc_dai_driver.name) */
machine_data->dai[0].codec_dai_name = "cs4270-hifi";
Expand Down
13 changes: 2 additions & 11 deletions sound/soc/fsl/p1022_ds.c
Original file line number Diff line number Diff line change
Expand Up @@ -73,7 +73,6 @@ struct machine_data {
unsigned int ssi_id; /* 0 = SSI1, 1 = SSI2, etc */
unsigned int dma_id[2]; /* 0 = DMA1, 1 = DMA2, etc */
unsigned int dma_channel_id[2]; /* 0 = ch 0, 1 = ch 1, etc*/
char codec_name[DAI_NAME_SIZE];
char platform_name[2][DAI_NAME_SIZE]; /* One for each DMA channel */
};

Expand Down Expand Up @@ -225,16 +224,8 @@ static int p1022_ds_probe(struct platform_device *pdev)
mdata->dai[0].cpu_dai_name = dev_name(&ssi_pdev->dev);
mdata->dai[0].ops = &p1022_ds_ops;

/* Determine the codec name, it will be used as the codec DAI name */
ret = fsl_asoc_get_codec_dev_name(codec_np, mdata->codec_name,
DAI_NAME_SIZE);
if (ret) {
dev_err(&pdev->dev, "invalid codec node %s\n",
codec_np->full_name);
ret = -EINVAL;
goto error;
}
mdata->dai[0].codec_name = mdata->codec_name;
/* ASoC core can match codec with device node */
mdata->dai[0].codec_of_node = codec_np;

/* We register two DAIs per SSI, one for playback and the other for
* capture. We support codecs that have separate DAIs for both playback
Expand Down

0 comments on commit 8f549d7

Please sign in to comment.