[Letux-kernel] [PATCH RFC] w1: omap: disable iclk autoidle
Andreas Kemnade
andreas at kemnade.info
Wed Oct 3 20:08:29 CEST 2018
Hi Tony,
On Mon, 1 Oct 2018 07:47:45 -0700
Tony Lindgren <tony at atomide.com> wrote:
> * Andreas Kemnade <andreas at kemnade.info> [180929 22:39]:
> > + * needed to disable autoidle, if system power state is too low
> > + * hdq transactions will not work correctly, although registers
> > + * are accessible.
> > + * According to AM/DM3730 TRM p.2879 the hwmod has to way to
> > + * keep iclk running during a transfer if autoidle is enabled
>
> Sounds like hdq1w is not wake-up capable and the uart is blocking
> deeper SoC idle states. To me it seems that you should rather just
> use pm_qos in the hdq1w driver to block SoC idle for the duration
> of transfers.
>
> We had a similar problem with audio playback glitches a while
> back, see commit 9834ffd1ecc3 ("ASoC: omap-mcbsp: Add PM QoS
> support for McBSP to prevent glitches"). See how it does
> pm_qos_add_request(), pm_qos_update_request() and
> pm_qos_remove_request().
I found this interesting function:
/**
* _setup_iclk_autoidle - configure an IP block's interface clocks
* @oh: struct omap_hwmod *
*
* Set up the module's interface clocks. XXX This function is still mostly
* a stub; implementing this properly requires iclk autoidle usecounting in
* the clock code. No return value.
*/
static void __init _setup_iclk_autoidle(struct omap_hwmod *oh)
{
struct omap_hwmod_ocp_if *os;
if (oh->_state != _HWMOD_STATE_INITIALIZED)
return;
list_for_each_entry(os, &oh->slave_ports, node) {
if (!os->_clk)
continue;
if (os->flags & OCPIF_SWSUP_IDLE) {
/* XXX omap_iclk_deny_idle(c); */
} else {
/* XXX omap_iclk_allow_idle(c); */
clk_enable(os->_clk);
}
}
return;
}
So at first glance it looks like we just need to uncomment the first XXX
line here. But why the heck we need usecounting for the autoidle
stuff? How do I test it (if I would implement some counter)?
IMHO the clean solution for the hdq problem would be to fix this
function.
Regards,
Andreas
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 833 bytes
Desc: OpenPGP digital signature
URL: <http://lists.goldelico.com/pipermail/letux-kernel/attachments/20181003/b3fff7ea/attachment.asc>
More information about the Letux-kernel
mailing list