• Paul Walmsley's avatar
    ARM: OMAP4: hwmod data: do not enable or reset the McPDM during kernel init · bc05244e
    Paul Walmsley authored
    Resolve this kernel boot message:
    
    omap_hwmod: mcpdm: cannot be enabled for reset (3)
    
    The McPDM on OMAP4 can only receive its functional clock from an
    off-chip source.  This source is not guaranteed to be present on the
    board, and when present, it is controlled by I2C.  This would
    introduce a board dependency to the early hwmod code which it was not
    designed to handle.  Also, neither the driver for this off-chip clock
    provider nor the I2C code is available early in boot when the hwmod
    code is attempting to enable and reset IP blocks.  This effectively
    makes it impossible to enable and reset this device during hwmod init.
    
    At its core, this patch is a workaround for an OMAP hardware problem.
    It should be possible to configure the OMAP to provide any IP block's
    functional clock from an on-chip source.  (This is true for almost
    every IP block on the chip.  As far as I know, McPDM is the only
    exception.)  If the kernel cannot reset and configure IP blocks, it
    cannot guarantee a sane SoC state.  Relying on an optional off-chip
    clock also creates a board dependency which is beyond the scope of the
    early hwmod code.
    
    This patch works around the issue by marking the McPDM hwmod record
    with the HWMOD_EXT_OPT_MAIN_CLK flag.  This prevents the hwmod
    code from touching the device early during boot.
    Signed-off-by: default avatarPaul Walmsley <paul@pwsan.com>
    Cc: Péter Ujfalusi <peter.ujfalusi@ti.com>
    Cc: Benoît Cousson <b-cousson@ti.com>
    Acked-by: default avatarPeter Ujfalusi <peter.ujfalusi@ti.com>
    bc05244e
omap_hwmod_44xx_data.c 160 KB