Thread (36 messages) flat view 36 messages, 9 authors, 2008-07-18

Re: [alsa-devel] [PATCH 1/3] ALSA SoC: Add OpenFirmware helper for matching bus and codec drivers

From: Grant Likely <hidden>
Date: 2008-07-03 16:34:25
Also in: alsa-devel

On Wed, Jul 02, 2008 at 11:27:17AM -0400, Jon Smirl wrote:
On 7/1/08, Grant Likely [off-list ref] wrote:
quoted
 +static struct of_snd_soc_device *
 +of_snd_soc_get_device(struct device_node *codec_node)
 +{
 +       struct of_snd_soc_device *of_soc;
 +
 +       list_for_each_entry(of_soc, &of_snd_soc_device_list, list) {
 +               if (of_soc->codec_node == codec_node)
 +                       return of_soc;
 +       }
 +
 +       of_soc = kzalloc(sizeof(struct of_snd_soc_device), GFP_KERNEL);
 +       if (!of_soc)
 +               return NULL;
 +
 +       /* Initialize the structure and add it to the global list */
 +       of_soc->codec_node = codec_node;
 +       of_soc->id = of_snd_soc_next_index++;
 +       of_soc->machine.dai_link = &of_soc->dai_link;
 +       of_soc->machine.num_links = 1;
 +       of_soc->device.machine = &of_soc->machine;
 +       of_soc->dai_link.ops = &of_snd_soc_ops;
 +       list_add(&of_soc->list, &of_snd_soc_device_list);
 +
 +       return of_soc;
 +}
Isn't this performing the same basic function as this code (except for
spi)? Should this list be maintained in alsa or should there be an
equivalent for searching the spi bus? If you follow the link to the
codec node and get it's parent you know which bus to search. But it
might be simpler to just search the buses sequentially for the node.

static int of_dev_node_match(struct device *dev, void *data)
{
        return dev->archdata.of_node == data;
}

struct i2c_client *of_find_i2c_device_by_node(struct device_node *node)
{
	struct device *dev;
	
	dev = bus_find_device(&i2c_bus_type, NULL, node,
					 of_dev_node_match);
	if (!dev)
		return NULL;
		
	return to_i2c_client(dev);
}
EXPORT_SYMBOL(of_find_i2c_device_by_node);
Yes, but you hadn't written these functions when I wrote this helper.
:-P.  I believe ASoC v2 makes all this stuff unnecessary, but I'm
waiting for v2 to hit mainline before I port forward.

g.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help