lkml.org 
[lkml]   [2020]   [Oct]   [27]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 5.8 450/633] clk: at91: clk-main: update key before writing AT91_CKGR_MOR
    Date
    From: Claudiu Beznea <claudiu.beznea@microchip.com>

    [ Upstream commit 85d071e7f19a6a9abf30476b90b3819642568756 ]

    SAMA5D2 datasheet specifies on chapter 33.22.8 (PMC Clock Generator
    Main Oscillator Register) that writing any value other than
    0x37 on KEY field aborts the write operation. Use the key when
    selecting main clock parent.

    Fixes: 27cb1c2083373 ("clk: at91: rework main clk implementation")
    Signed-off-by: Claudiu Beznea <claudiu.beznea@microchip.com>
    Reviewed-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
    Link: https://lore.kernel.org/r/1598338751-20607-3-git-send-email-claudiu.beznea@microchip.com
    Signed-off-by: Stephen Boyd <sboyd@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    drivers/clk/at91/clk-main.c | 11 ++++++++---
    1 file changed, 8 insertions(+), 3 deletions(-)

    diff --git a/drivers/clk/at91/clk-main.c b/drivers/clk/at91/clk-main.c
    index 37c22667e8319..4313ecb2af5b2 100644
    --- a/drivers/clk/at91/clk-main.c
    +++ b/drivers/clk/at91/clk-main.c
    @@ -437,12 +437,17 @@ static int clk_sam9x5_main_set_parent(struct clk_hw *hw, u8 index)
    return -EINVAL;

    regmap_read(regmap, AT91_CKGR_MOR, &tmp);
    - tmp &= ~MOR_KEY_MASK;

    if (index && !(tmp & AT91_PMC_MOSCSEL))
    - regmap_write(regmap, AT91_CKGR_MOR, tmp | AT91_PMC_MOSCSEL);
    + tmp = AT91_PMC_MOSCSEL;
    else if (!index && (tmp & AT91_PMC_MOSCSEL))
    - regmap_write(regmap, AT91_CKGR_MOR, tmp & ~AT91_PMC_MOSCSEL);
    + tmp = 0;
    + else
    + return 0;
    +
    + regmap_update_bits(regmap, AT91_CKGR_MOR,
    + AT91_PMC_MOSCSEL | MOR_KEY_MASK,
    + tmp | AT91_PMC_KEY);

    while (!clk_sam9x5_main_ready(regmap))
    cpu_relax();
    --
    2.25.1


    \
     
     \ /
      Last update: 2020-10-27 17:58    [W:4.101 / U:0.232 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site