• Jon Hunter's avatar
    soc/tegra: pmc: Don't probe PMC if early initialisation fails · a83f1fc3
    Jon Hunter authored
    Commit 0259f522 ('soc/tegra: pmc: Restore base address on probe
    failure') fixes an issue where the PMC base address pointer is not
    restored on probe failure. However, this fix creates another problem
    where if early initialisation of the PMC driver fails and an initial
    mapping for the PMC address space is not created, then when the PMC
    device is probed, the PMC base address pointer will not be valid and
    this will cause a crash when tegra_pmc_init() is called and attempts
    to access a register.
    
    Although the PMC address space is mapped a 2nd time during the probe
    and so this could be fixed by populating the base address pointer
    earlier during the probe, this adds more complexity to the code.
    Moreover, the PMC probe also assumes the the soc data pointer is also
    initialised when the device is probed and if not will also lead to a
    crash when calling tegra_pmc_init_tsense_reset(). Given that if the
    early initialisation does fail then something bad has happen, it seems
    acceptable to allow the PMC device probe to fail as well. Therefore, if
    the PMC base address pointer or soc data pointer are not valid when
    probing the PMC device, WARN and return an error.
    
    Fixes: 0259f522 ('soc/tegra: pmc: Restore base address on probe failure')
    Signed-off-by: default avatarJon Hunter <jonathanh@nvidia.com>
    Signed-off-by: default avatarThierry Reding <treding@nvidia.com>
    a83f1fc3
pmc.c 36.3 KB