• Sumit Gupta's avatar
    firmware: tegra: Add suspend hook and reset BPMP IPC early on resume · ea608a01
    Sumit Gupta authored
    Add suspend hook and a 'suspended' field in the 'struct tegra_bpmp'
    to mark if BPMP is suspended. Also, add a 'flags' field in the
    'struct tegra_bpmp_message' whose 'TEGRA_BPMP_MESSAGE_RESET' bit can be
    set from the Tegra MC driver to signal that the reset of BPMP IPC
    channels is required before sending MRQ to the BPMP FW. Together both
    the fields allow us to handle any requests that might be sent too soon
    as they can cause hang during system resume.
    
    One case where we see BPMP requests being sent before the BPMP driver
    has resumed is the memory bandwidth requests which are triggered by
    onlining the CPUs during system resume. The CPUs are onlined before the
    BPMP has resumed and we need to reset the BPMP IPC channels to handle
    these requests.
    
    The additional check for 'flags' is done to avoid any un-intended BPMP
    IPC reset if the tegra_bpmp_transfer*() API gets called during suspend
    sequence after the BPMP driver is suspended.
    
    Fixes: f41e1442 ("cpufreq: tegra194: add OPP support and set bandwidth")
    Co-developed-by: default avatarThierry Reding <treding@nvidia.com>
    Signed-off-by: default avatarSumit Gupta <sumitg@nvidia.com>
    Acked-by: default avatarThierry Reding <treding@nvidia.com>
    Signed-off-by: default avatarThierry Reding <treding@nvidia.com>
    ea608a01
bpmp.c 20.1 KB