On 5/10/2016 12:35 AM, Mark Brown wrote:
On Mon, May 09, 2016 at 10:57:43AM +0800, John Hsu wrote:
On 5/7/2016 2:18 AM, Mark Brown wrote:
I'm not sure I fully follow the above explanation. I appreciate that power consumption is not going to be optimal when the clock is provided and the chip is idle but does it actually stop anything working?
The conditional check for the situation is limited. Only when jack dis- connect, the clock id just will be restricted. Do you think it is better to control by machine driver and codec driver not to add any restriction?
Well, the machine driver has to cope anyway. What's not clear to me is if the device *has* to use the internal clock when doing accessory detection or if it's just lower power.
If the codec only does accessory insertion detection, the driver can setup it and doesn't need any clock. That can make lower power. But if the codec wants to do advanced jack detection like mic or impedance, the driver needs the internal clock to setup auto detection. Thus, when no headset connected yet, we use the solution without internal clock for power saving. When we want to do advanced detection, we use the solution with internal clock.
I don't see how the probe function can handle the fact that the resume function is unconditionally calling enable_irq()?
Maybe I'm not very clear about what the probe function means. Could you
The probe function is the function that runs on device probe, usually with probe() in the name. The relevant one here is nau8825_i2c_probe().
I see. Thank you.
tell me more detail? The codec resumption recovers the interruption func- tion because the function turns off when suspension. The interruption is managed in resume setup function after resumption. The driver will enable the insertion and ejection interruptions here. Let the codec to detect the event and do report instead of manual check the jack status.
There may not *be* an interrupt.
For the condition, the driver makes setup to detect insertion or ejection only, and triggers detection manually. The codec can detect the accessory status and send the interruption out.