lkml.org 
[lkml]   [2021]   [Mar]   [15]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 5.11 163/306] clk: qcom: gpucc-msm8998: Add resets, cxc, fix flags on gpu_gx_gdsc
    Date
    From: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

    From: AngeloGioacchino Del Regno <angelogioacchino.delregno@somainline.org>

    [ Upstream commit a59c16c80bd791878cf81d1d5aae508eeb2e73f1 ]

    The GPU GX GDSC has GPU_GX_BCR reset and gfx3d_clk CXC, as stated
    on downstream kernels (and as verified upstream, because otherwise
    random lockups happen).
    Also, add PWRSTS_RET and NO_RET_PERIPH: also as found downstream,
    and also as verified here, to avoid GPU related lockups it is
    necessary to force retain mem, but *not* peripheral when enabling
    this GDSC (and, of course, the inverse on disablement).

    With this change, the GPU finally works flawlessly on my four
    different MSM8998 devices from two different manufacturers.

    Signed-off-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@somainline.org>
    Link: https://lore.kernel.org/r/20210114221059.483390-11-angelogioacchino.delregno@somainline.org
    Signed-off-by: Stephen Boyd <sboyd@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    drivers/clk/qcom/gpucc-msm8998.c | 8 ++++++--
    1 file changed, 6 insertions(+), 2 deletions(-)

    diff --git a/drivers/clk/qcom/gpucc-msm8998.c b/drivers/clk/qcom/gpucc-msm8998.c
    index 9b3923af02a1..1a518c4915b4 100644
    --- a/drivers/clk/qcom/gpucc-msm8998.c
    +++ b/drivers/clk/qcom/gpucc-msm8998.c
    @@ -253,12 +253,16 @@ static struct gdsc gpu_cx_gdsc = {
    static struct gdsc gpu_gx_gdsc = {
    .gdscr = 0x1094,
    .clamp_io_ctrl = 0x130,
    + .resets = (unsigned int []){ GPU_GX_BCR },
    + .reset_count = 1,
    + .cxcs = (unsigned int []){ 0x1098 },
    + .cxc_count = 1,
    .pd = {
    .name = "gpu_gx",
    },
    .parent = &gpu_cx_gdsc.pd,
    - .pwrsts = PWRSTS_OFF_ON,
    - .flags = CLAMP_IO | AON_RESET,
    + .pwrsts = PWRSTS_OFF_ON | PWRSTS_RET,
    + .flags = CLAMP_IO | SW_RESET | AON_RESET | NO_RET_PERIPH,
    };

    static struct clk_regmap *gpucc_msm8998_clocks[] = {
    --
    2.30.1


    \
     
     \ /
      Last update: 2021-03-15 15:39    [W:2.740 / U:0.184 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site