Re: Nokia N900 sound driver and ECI GPIOs
From: joerg Reisenweber
Date: Mon Jan 02 2017 - 11:07:42 EST
On Mon 02 January 2017 11:01:48 Jarkko Nikula wrote:
> Hi
>
> On 01/02/2017 12:36 AM, Pavel Machek wrote:
> >> Jarkko, you are listed as original author of that driver. Do you (or
> >> anybody else) remember what that rx51_set_eci_switches() function is
> >> doing? And what gpio 178 controls? I was even not able to find gpio 178
> >> in RX-51 Schematics [6].
> >>
> >> And do you know something about Nokia ECI headsets supports for Nokia
> >> N900. Looks like there is already some kernel code but support for ECI
> >> bus or multibuttons headset is missing.
>
> Multibutton ECI headset support using GPIO was planned during early in
> HW design phase but wasn't implemented for the actual product. I don't
> remember was it due no actual product requirement for it or GPIO based
> implementation was not reliable. If I remember correctly ECI protocol
> carries information by shorting mic bias to ground at some 1 kHz rate so
> trying to detect those pulses by SW won't work too well without hard
> real-time OS.
I think it's perfectly feasible with an IRQ handler that detects inbound ECI
data from edges on ECI0 pin (slightly out of spec for ECI, the Schmitt Trigger
has threshold 0.5V, for ECI it ideally had 1.1V). The IRQ handler needs to
push timestamps onto a stack for a worker thread to analyze and decode, and
provide data to userland. Even an *occasional* glitch in data is not exactly a
catastrophic failure, user can press same button again to make the intended
action happen.
ECI data-send to be implemented via TVOUT_EN while TVOUT at 0. You could even
lock IRQs during the short (only a few milliseconds) data bursts, to achieve
accurate timing.
http://neo900.org/stuff/joerg/ECI/
cheers
jOERG
>
> Even ECI is not implemented in final product the production HW still has
> two switches to route mic bias to voltage detection circuit, tv-out or
> codec. One of the switches is statically driven because only codec or
> tv-out route is needed. See commit 31164c7cf119 ("ASoC: omap: rx51: Add
> headset support")
>
> > I'd like to get detection of headset button presses to work in recent
> > kernels, but could not figure it out :-(.
>
> My vague memory doesn't tell how basic button press detection was
> implemented in Maemo kernel. Was it codec, same voltage detection
> circuit than ECI or some another GPIO? I don't even remember did we
> implement it for the MeeGo N900 developer edition :-(
--
() ascii ribbon campaign
/\
against html e-mail - against proprietary attachments
http://www.georgedillon.com/web/html_email_is_evil.shtml
http://www.nonhtmlmail.org/campaign.html
http://www.georgedillon.com/web/html_email_is_evil_still.shtml
http://www.gerstbach.at/2004/ascii/ (German)
Attachment:
signature.asc
Description: This is a digitally signed message part.