Re: [PATCH 01/14] mfd: arizona: Add jack pointer to struct arizona

From: Richard Fitzgerald
Date: Wed Dec 30 2020 - 06:27:21 EST


On 30/12/2020 11:04, Hans de Goede wrote:
Hi,

On 12/29/20 5:51 PM, Richard Fitzgerald wrote:


On 29/12/2020 15:40, Hans de Goede wrote:
Hi,

On 12/29/20 4:15 PM, Mark Brown wrote:
On Tue, Dec 29, 2020 at 03:06:35PM +0000, Charles Keepax wrote:

There is maybe more argument for porting the Arizona code across
anyways, since for a long time Android didn't properly support extcon
either. It supported the earlier out of tree switch stuff, extcon

Completely moving the driver doesn't cause the same problems as the
current proposal (unless it drops functionality I guess, there were
issues with adding new detection types into the input layer but I can't
remember if this hardware was impacted by that or not).

The input-layer supports the following switches:

SW_HEADPHONE_INSERT
SW_MICROPHONE_INSERT
SW_LINEOUT_INSERT
SW_JACK_PHYSICAL_INSERT

Which is a 1:1 mapping with the cable-types currently exported by
extcon-arizona.c .

I'm fine with fully moving extcon-arizona.c over to only using
sound/core/jack.c functionality and it no longer exporting an
extcon device.

I guess we should move it out of drivers/extcon then though.
I suggest using: sound/soc/cirrus/arizona-jack-detect.c
Note that sound/soc/cirrus is a new dir here. Would that work
for you ?

Shouldn't it be sound/soc/codecs/arizona-jack.c so that it is with all
the other code for those codecs?

The arizona codecs use the MFD framework and there is a separate
platform-device instantiated for the jack-detect functionality, so this

That is because it is an extcon driver. It is a different subsystem to
the other child drivers so has to be a separate child.

(mostly) a standalone platform-driver which has very little interaction
with the rest of the codec code.

It is not a codec driver, or code shared between the codec drivers,
so putting it under sound/soc/codecs would be a bit weird.


In fact it is tied into the codec driver. The code in arizona.c that
handles HP OUT has to synchronize with the jack detection to avoid one
driver trashing the state of the other. But because they are currently
separate drivers they have to communicate through hp_ena and
hp_clamp in the parent mfd data. See arizona_hp_ev().

With that said I have no strong preference for putting it under
a new sound/soc/cirrus dir, if everyone is ok with putting it under
sound/soc/codecs then that works for me.

Regards,

Hans