• Thara Gopinath's avatar
    OMAP3: hwmod: Adding flag to prevent caching of sysconfig register. · 883edfdd
    Thara Gopinath authored
    In the current implementation the sysconfig value is read into
     _sysc_cache once and an actual update to the sysconfig register
    happens only if the new value paased is differnt from the one in _sysc_cache.
    _sysc_cache is updated only if _HWMOD_SYSCONFIG_LOADED is not set.
    This can lead to the follwing issue if off mode is enabled in modules
    which employs "always-retore" mechanism of context save and restore.
    
            a. The module sets the sysconfig register through omap_device_enable.
               Here _sysc_cache is updated with the value written to the sysconfig
               register and left.
            b. The power domain containig the module enters off mode and the
               module context is lost.
            c. The module in use becomes active and calls omap_device_enable to
               enable itself. Here a read of sysconfig register does not happen
               as _HWMOD_SYSCONFIG_LOADED flag is set. The value to be written
               to the sysconfig register will be same as the one written in step a.
               Since _sysc_cache reflects the previous written value an update
               of the sysconfig register does not happen.
    This means in modules which employs "always-restore" mechanism
    after off , the sysconfig regsiters will never get updated.
    
    This patch introduces a flag SYSC_NO_CACHE which if set ensures that the
    sysconfig register is always read into _sysc_cache before an update is
    attempted.
    
    This flags need to be set only by modules which does not do a context save
    but re-initializes the registers every time the module is accessed. This
    includes modules like i2c, smartreflex etc.
    Signed-off-by: default avatarThara Gopinath <thara@ti.com>
    [paul@pwsan.com: tweaked to apply on a different head, added flag comment]
    Signed-off-by: default avatarPaul Walmsley <paul@pwsan.com>
    883edfdd
omap_hwmod.c 38.6 KB