Subject: [linux-sunxi] Re: [PATCH v3 3/3] ARM: dts: sun4i: gemei-g9: Enable sun4i audio codec support

From: [email-masked] (Hans de Goede)
Date: Fri, 20 Nov 2015 09:23:05 +0100

Hi,

On 20-11-15 03:56, Chen-Yu Tsai wrote:
> On Fri, Nov 20, 2015 at 12:09 AM, Maxime Ripard
> <[email-masked]> wrote:
>> Hi,
>>
>> On Thu, Nov 12, 2015 at 08:53:19PM +0200, Priit Laes wrote:
>>> On Mon, 2015-11-09 at 11:59 +0800, Chen-Yu Tsai wrote:
>>>> On Sat, Nov 7, 2015 at 1:54 AM, Priit Laes <[email-masked]> wrote:
>>>>> Gemei G9 has internal speakers and headphone jack. Audio switching
>>>>> from internal speakers to headphones is automatically handled by
>>>>> extra FT2012Q audio amplifier chip that works out of the box.
>>>>
>>>> Nice that it works out of the box. The FEX file does mention:
>>>>
>>>> audio_pa_ctrl   = port:PH15<1><default><default><0>
>>>
>>> Nice catch.
>>>
>>> Setting it low mutes audio, and setting it back high unmutes.
>>
>> Then you just volunteered yourself to fix the FIXME in the driver ;)
>>
>
> Hans seems to have a patch for this in his sunxi-wip branch.
> I haven't looked at it though.

Right, I needed support for the pa pin on one of my own tablets, and
there things just did not work without it.

Note this patch is ready for upstream submission, I just did not get
around to submitting it yet (I wrote it Tuesday evening).

Regards,

Hans

>
> ChenYu
>
>>>> So either it is floating or pulled up by default? Since it works
>>>> now I don't see any reason to block it. On the other hand once
>>>> that binding is introduced it would be nice to add it for power
>>>> management reasons.
>>>
>>> Should I just add comment about it or do something like this:
>>>
>>> &codec {
>>>    status = "okay";
>>>    /*
>>>     * TODO: Add codec_ext_pwr_pin to turn off external audio AMP
>>>     &pio {
>>>       codec_ext_pwr_pin: codec_ext_pwr_pin at 0 {
>>>         allwinner,pins = "PH15";
>>>         allwinner,function = "gpio_out";
>>>         allwinner,drive = <SUN4I_PINCTRL_10_MA>;
>>>         allwinner,pull = <SUN4I_PINCTRL_PULL_UP>;
>>>       }
>>>     }
>>>     */
>>> }
>>
>> More like
>>
>> &pio {
>>          codec_ext_pwr_pin: codec_ext_pwr_pin at 0 {
>>                  allwinner,pins = "PH15";
>>                  allwinner,function = "gpio_out";
>>                  allwinner,drive = <SUN4I_PINCTRL_10_MA>;
>>                  allwinner,pull = <SUN4I_PINCTRL_PULL_UP>;
>>          };
>> };
>>
>> &codec {
>>          /* This pin is used to turn off the GPIO amp pin */
>>          pinctrl-names = "default";
>>          pinctrl-0 <&codec_ext_pwr_pin>;
>>          status = "okay";
>> };
>>
>> Of course, that's a temporary measure, and you should actually use
>> that GPIO to enable / disable the Amplifier when you are playing
>> sound. It shouldn't be that hard with ASoC.
>>
>> Maxime
>>
>> --
>> Maxime Ripard, Free Electrons
>> Embedded Linux, Kernel and Android engineering
>> http://free-electrons.com