mirror of
https://github.com/openwrt/openwrt.git
synced 2024-12-22 06:57:57 +00:00
b5f32064ed
Qualcomm Atheros IPQ807x is a modern WiSoC featuring: * Quad Core ARMv8 Cortex A-53 * @ 2.2 GHz (IPQ8072A/4A/6A/8A) Codename Hawkeye * @ 1.4 GHz (IPQ8070A/1A) Codename Acorn * Dual Band simultaneaous IEEE 802.11ax * 5G: 8x8/80 or 4x4/160MHz (IPQ8074A/8A) * 5G: 4x4/80 or 2x2/160MHz (IPQ8071A/2A/6A) * 5G: 2x2/80MHz (IPQ8070A) * 2G: 4x4/40MHz (IPQ8072A/4A/6A/8A) * 2G: 2x2/40MHz (IPQ8070A/1A) * 1x PSGMII via QCA8072/5 (Max 5x 1GbE ports) * 2x SGMII/USXGMII (1/2.5/5/10 GbE) on Hawkeye * 2x SGMII/USXGMII (1/2.5/5 GbE) on Acorn * DDR3L/4 32/16 bit up to 2400MT/s * SDIO 3.0/SD card 3.0/eMMC 5.1 * Dual USB 3.0 * One PCIe Gen2.1 and one PCIe Gen3.0 port (Single lane) * Parallel NAND (ONFI)/LCD * 6x QUP BLSP SPI/I2C/UART * I2S, PCM, and TDMA * HW PWM * 1.8V configurable GPIO * Companion PMP8074 PMIC via SPMI (GPIOS, RTC etc) Note that only v2 SOC models aka the ones ending with A suffix are supported, v1 models do not comply to the final 802.11ax and have lower clocks, lack the Gen3 PCIe etc. SoC itself has two UBI32 cores for the NSS offloading system, however currently no offloading is supported. Signed-off-by: Robert Marko <robimarko@gmail.com>
64 lines
2.2 KiB
Diff
64 lines
2.2 KiB
Diff
From 6b9d5ecd2913758780a0529f9b95392f330b721b Mon Sep 17 00:00:00 2001
|
|
From: Robert Marko <robimarko@gmail.com>
|
|
Date: Fri, 19 Aug 2022 00:06:21 +0200
|
|
Subject: [PATCH] clk: qcom: apss-ipq6018: fix apcs_alias0_clk_src
|
|
|
|
While working on IPQ8074 APSS driver it was discovered that IPQ6018 and
|
|
IPQ8074 use almost the same PLL and APSS clocks, however APSS driver is
|
|
currently broken.
|
|
|
|
More precisely apcs_alias0_clk_src is broken, it was added as regmap_mux
|
|
clock.
|
|
However after debugging why it was always stuck at 800Mhz, it was figured
|
|
out that its not regmap_mux compatible at all.
|
|
It is a simple mux but it uses RCG2 register layout and control bits, so
|
|
utilize the new clk_rcg2_mux_closest_ops to correctly drive it while not
|
|
having to provide a dummy frequency table.
|
|
|
|
While we are here, use ARRAY_SIZE for number of parents.
|
|
|
|
Tested on IPQ6018-CP01-C1 reference board and multiple IPQ8074 boards.
|
|
|
|
Fixes: 5e77b4ef1b19 ("clk: qcom: Add ipq6018 apss clock controller")
|
|
Signed-off-by: Robert Marko <robimarko@gmail.com>
|
|
Reviewed-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
|
|
Signed-off-by: Bjorn Andersson <andersson@kernel.org>
|
|
Link: https://lore.kernel.org/r/20220818220628.339366-2-robimarko@gmail.com
|
|
---
|
|
drivers/clk/qcom/apss-ipq6018.c | 13 ++++++-------
|
|
1 file changed, 6 insertions(+), 7 deletions(-)
|
|
|
|
--- a/drivers/clk/qcom/apss-ipq6018.c
|
|
+++ b/drivers/clk/qcom/apss-ipq6018.c
|
|
@@ -16,7 +16,7 @@
|
|
#include "clk-regmap.h"
|
|
#include "clk-branch.h"
|
|
#include "clk-alpha-pll.h"
|
|
-#include "clk-regmap-mux.h"
|
|
+#include "clk-rcg.h"
|
|
|
|
enum {
|
|
P_XO,
|
|
@@ -33,16 +33,15 @@ static const struct parent_map parents_a
|
|
{ P_APSS_PLL_EARLY, 5 },
|
|
};
|
|
|
|
-static struct clk_regmap_mux apcs_alias0_clk_src = {
|
|
- .reg = 0x0050,
|
|
- .width = 3,
|
|
- .shift = 7,
|
|
+static struct clk_rcg2 apcs_alias0_clk_src = {
|
|
+ .cmd_rcgr = 0x0050,
|
|
+ .hid_width = 5,
|
|
.parent_map = parents_apcs_alias0_clk_src_map,
|
|
.clkr.hw.init = &(struct clk_init_data){
|
|
.name = "apcs_alias0_clk_src",
|
|
.parent_data = parents_apcs_alias0_clk_src,
|
|
- .num_parents = 2,
|
|
- .ops = &clk_regmap_mux_closest_ops,
|
|
+ .num_parents = ARRAY_SIZE(parents_apcs_alias0_clk_src),
|
|
+ .ops = &clk_rcg2_mux_closest_ops,
|
|
.flags = CLK_SET_RATE_PARENT,
|
|
},
|
|
};
|