Re: [alsa-devel] [PATCH 0/3] Tegra: Add internal speaker support
On Tue, Jan 18, 2011 at 04:37:36PM -0700, Stephen Warren wrote:
a) Is this the right way to expose GPIO APIs from a codec? The tlv320aic3 seems to do it this way, but wm8962.c uses the generic GPIO API. I shied away from the latter, since I wasn't sure how to name the WM8903's GPIOs in the gpio_* calls. I suppose it'd need a bunch of GPIO driver platform data to hook it all together and name GPIOs from a mach-tegra/include header file, but if this is the way to go, I need to read up on that more.
What naming is required for the GPIOs? GPIOs are referred to by number in Linux.
b) Is the WM8903 platform_data handling full fleshed out; simply by having platform_data, WM8903_WSEQ_ENA is set, whereas without any pdata, it isn't. Should this be conditional, or should I always have specified some platform data for Tegra, and I'm just getting lucky that it works without any?
Ah, your comment about the sequencer is clearer now. This is not enabling the write sequencer, that'll be done transiently when required if it's not set here. It's enabling a clock which is used by several parts of the chip including the write sequencer all the time so that the mic detection can function in the absence of any other software managing it. This is why it's conditional on microphone detection being configured, other functions can have this clock disabled most of the time.
Mark Brown wrote:
On Tue, Jan 18, 2011 at 04:37:36PM -0700, Stephen Warren wrote:
a) Is this the right way to expose GPIO APIs from a codec? The tlv320aic3 seems to do it this way, but wm8962.c uses the generic GPIO API. I shied away from the latter, since I wasn't sure how to name the WM8903's GPIOs in the gpio_* calls. I suppose it'd need a bunch of GPIO driver platform data to hook it all together and name GPIOs from a mach-tegra/include header file, but if this is the way to go, I need to read up on that more.
What naming is required for the GPIOs? GPIOs are referred to by number in Linux.
Naming/numbering mean the same thing to me; I have to pass a number to gpio_request/gpio_set_value, either by hard-coded number or name (i.e. #define referring to some number).
I'll go read up on gpiolib some more to see how those API-level numbers get mapped to a specific controller and GPIO number.
participants (2)
-
Mark Brown
-
Stephen Warren