• Nicolin Chen's avatar
    ASoC: Add pinctrl PM to components of active DAIs · 988e8cc4
    Nicolin Chen authored
    It's quite popular that more drivers are using pinctrl PM, for example:
    (Documentation/devicetree/bindings/arm/primecell.txt). Just like what
    runtime PM does, it would deactivate and activate pin group depending
    on whether it's being used or not.
    
    And this pinctrl PM might be also beneficial to cpu dai drivers because
    they might have actual pinctrl so as to sleep their pins and wake them
    up as needed.
    
    To achieve this goal, this patch sets pins to the default state during
    resume or startup; While during suspend and shutdown, it would set pins
    to the sleep state.
    
    As pinctrl PM would return zero if there is no such pinctrl sleep state
    settings, this patch would not break current ASoC subsystem directly.
    
    [ However, there is still an exception that the patch can not handle,
    that is, when cpu dai driver does not have pinctrl property but another
    device has it. (The AUDMUX <-> SSI on Freescale i.MX6 series for example.
    SSI as a cpu dai doesn't contain pinctrl property while AUDMUX, an Audio
    Multiplexer, has it). In this case, this kind of cpu dai driver needs to
    find a way to obtain the pinctrl property as its own, by moving property
    from AUDMUX to SSI, or creating a pins link/dependency between these two
    devices, or using a more decent way after we figure it out. ]
    Signed-off-by: default avatarNicolin Chen <b42378@freescale.com>
    Signed-off-by: default avatarMark Brown <broonie@linaro.org>
    988e8cc4
soc-core.c 117 KB