• Siddharth Vadapalli's avatar
    net: ethernet: ti: am65-cpsw/cpts: Fix CPTS release action · 4ad8766c
    Siddharth Vadapalli authored
    The am65_cpts_release() function is registered as a devm_action in the
    am65_cpts_create() function in am65-cpts driver. When the am65-cpsw driver
    invokes am65_cpts_create(), am65_cpts_release() is added in the set of devm
    actions associated with the am65-cpsw driver's device.
    
    In the event of probe failure or probe deferral, the platform_drv_probe()
    function invokes dev_pm_domain_detach() which powers off the CPSW and the
    CPSW's CPTS hardware, both of which share the same power domain. Since the
    am65_cpts_disable() function invoked by the am65_cpts_release() function
    attempts to reset the CPTS hardware by writing to its registers, the CPTS
    hardware is assumed to be powered on at this point. However, the hardware
    is powered off before the devm actions are executed.
    
    Fix this by getting rid of the devm action for am65_cpts_release() and
    invoking it directly on the cleanup and exit paths.
    
    Fixes: f6bd5952 ("net: ethernet: ti: introduce am654 common platform time sync driver")
    Signed-off-by: default avatarSiddharth Vadapalli <s-vadapalli@ti.com>
    Reviewed-by: default avatarLeon Romanovsky <leonro@nvidia.com>
    Reviewed-by: default avatarTony Nguyen <anthony.l.nguyen@intel.com>
    Reviewed-by: default avatarRoger Quadros <rogerq@kernel.org>
    Signed-off-by: default avatarPaolo Abeni <pabeni@redhat.com>
    4ad8766c
am65-cpts.c 34 KB