On Mon, Mar 02, 2009 at 07:05:28PM -0600, Lopez Cruz, Misael wrote:
This is much better than last time, thanks! Some issues do remain, though (as well as those that Takashi mentioned):
+int snd_soc_jack_add_gpios(struct snd_soc_jack *jack, int count,
struct snd_soc_jack_gpio *gpios);
+void snd_soc_jack_free_gpios(struct snd_soc_jack *jack);
snd_soc_jack_free_gpios() shouild take the same arguments as the add...
struct snd_soc_jack { struct snd_jack *jack; struct snd_soc_card *card; struct list_head pins;
- struct snd_soc_jack_gpio *gpios;
- int gpio_count; int status;
};
...so (as previously discussed) you don't have this. The jack shouldn't need this information and it's only used to free things at the minute.
Consider how this will scale: if the jack detection method for every codec were to add back pointers to the snd_soc_jack structure then you'd rapidly find that the bulk of the structure is taken up with these back pointers.
- enable = gpio_get_value(gpio->gpio);
- if (gpio->invert)
enable != enable;
I think you mean enable = !enable here (I'm surprised the compiler doesn't warn about this).