aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/drivers/clk/microchip
diff options
context:
space:
mode:
authorConor Dooley <conor.dooley@microchip.com>2022-04-11 08:23:41 +0100
committerStephen Boyd <sboyd@kernel.org>2022-04-21 19:35:07 -0700
commit37843d0f6e7a23af19a6cbe68b9503d318fe1a29 (patch)
treefeebf27b86a97e15f1696b555301458a7e202097 /drivers/clk/microchip
parentLinux 5.18-rc1 (diff)
downloadwireguard-linux-37843d0f6e7a23af19a6cbe68b9503d318fe1a29.tar.xz
wireguard-linux-37843d0f6e7a23af19a6cbe68b9503d318fe1a29.zip
clk: microchip: mpfs: don't reset disabled peripherals
The current clock driver for PolarFire SoC puts the hardware behind "periph" clocks into reset if their clock is disabled. CONFIG_PM was recently added to the riscv defconfig and exposed issues caused by this behaviour, where the Cadence GEM was being put into reset between its bringup & the PHY bringup: https://lore.kernel.org/linux-riscv/9f4b057d-1985-5fd3-65c0-f944161c7792@microchip.com/ Fix this (for now) by removing the reset from mpfs_periph_clk_disable. Fixes: 635e5e73370e ("clk: microchip: Add driver for Microchip PolarFire SoC") Reviewed-by: Daire McNamara <daire.mcnamara@microchip.com> Signed-off-by: Conor Dooley <conor.dooley@microchip.com> Link: https://lore.kernel.org/r/20220411072340.740981-1-conor.dooley@microchip.com Signed-off-by: Stephen Boyd <sboyd@kernel.org>
Diffstat (limited to 'drivers/clk/microchip')
-rw-r--r--drivers/clk/microchip/clk-mpfs.c4
1 files changed, 0 insertions, 4 deletions
diff --git a/drivers/clk/microchip/clk-mpfs.c b/drivers/clk/microchip/clk-mpfs.c
index aa1561b773d6..744ef2ba2a0c 100644
--- a/drivers/clk/microchip/clk-mpfs.c
+++ b/drivers/clk/microchip/clk-mpfs.c
@@ -200,10 +200,6 @@ static void mpfs_periph_clk_disable(struct clk_hw *hw)
spin_lock_irqsave(&mpfs_clk_lock, flags);
- reg = readl_relaxed(base_addr + REG_SUBBLK_RESET_CR);
- val = reg | (1u << periph->shift);
- writel_relaxed(val, base_addr + REG_SUBBLK_RESET_CR);
-
reg = readl_relaxed(base_addr + REG_SUBBLK_CLOCK_CR);
val = reg & ~(1u << periph->shift);
writel_relaxed(val, base_addr + REG_SUBBLK_CLOCK_CR);