• Pankaj Dubey's avatar
    mfd: syscon: Decouple syscon interface from platform devices · bdb0066d
    Pankaj Dubey authored
    Currently a syscon entity can be only registered directly through a
    platform device that binds to a dedicated syscon driver. However in
    certain use cases it is desirable to make a device used with another
    driver a syscon interface provider.
    
    For example, certain SoCs (e.g. Exynos) contain system controller
    blocks which perform various functions such as power domain control,
    CPU power management, low power mode control, but in addition contain
    certain IP integration glue, such as various signal masks,
    coprocessor power control, etc. In such case, there is a need to have
    a dedicated driver for such system controller but also share registers
    with other drivers. The latter is where the syscon interface is helpful.
    
    In case of DT based platforms, this patch decouples syscon object from
    syscon platform driver, and allows to create syscon objects first time
    when it is required by calling of syscon_regmap_lookup_by APIs and keep
    a list of such syscon objects along with syscon provider device_nodes
    and regmap handles.
    
    For non-DT based platforms, this patch keeps syscon platform driver
    structure so that syscon can be probed and such non-DT based drivers
    can use syscon_regmap_lookup_by_pdev API and access regmap handles.
    Once all users of "syscon_regmap_lookup_by_pdev" migrated to DT based,
    we can completely remove platform driver of syscon, and keep only helper
    functions to get regmap handles.
    Suggested-by: default avatarArnd Bergmann <arnd@arndb.de>
    Suggested-by: default avatarTomasz Figa <tomasz.figa@gmail.com>
    Tested-by: default avatarVivek Gautam <gautam.vivek@samsung.com>
    Tested-by: default avatarJavier Martinez Canillas <javier.martinez@collabora.co.uk>
    Signed-off-by: default avatarPankaj Dubey <pankaj.dubey@samsung.com>
    Reviewed-by: default avatarArnd Bergmann <arnd@arndb.de>
    Tested-by: default avatarHeiko Stuebner <heiko@sntech.de>
    Reviewed-by: default avatarHeiko Stuebner <heiko@sntech.de>
    Signed-off-by: default avatarLee Jones <lee.jones@linaro.org>
    bdb0066d
syscon.c 5.33 KB