From 7236822677ce949d0005bdc852aafb1f7a400cb3 Mon Sep 17 00:00:00 2001 From: Siddartha Mohanadoss Date: Thu, 3 Dec 2020 17:58:59 -0800 Subject: [PATCH 1/4] msm: pcie-ep: Add PCIe reference clock source The reference clock source is used when switching the pipe clock mux to XO before turning off gdsc. Change-Id: I7861c1ae6dded2cc79e796b22e766c54aef1d461 Signed-off-by: Siddartha Mohanadoss --- drivers/platform/msm/ep_pcie/ep_pcie_com.h | 2 +- drivers/platform/msm/ep_pcie/ep_pcie_core.c | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/drivers/platform/msm/ep_pcie/ep_pcie_com.h b/drivers/platform/msm/ep_pcie/ep_pcie_com.h index e880a5af8177..9ac4e334d59b 100644 --- a/drivers/platform/msm/ep_pcie/ep_pcie_com.h +++ b/drivers/platform/msm/ep_pcie/ep_pcie_com.h @@ -177,7 +177,7 @@ #define EP_PCIE_LOG_PAGES 50 #define EP_PCIE_MAX_VREG 3 -#define EP_PCIE_MAX_CLK 9 +#define EP_PCIE_MAX_CLK 10 #define EP_PCIE_MAX_PIPE_CLK 1 #define EP_PCIE_MAX_RESET 2 diff --git a/drivers/platform/msm/ep_pcie/ep_pcie_core.c b/drivers/platform/msm/ep_pcie/ep_pcie_core.c index 09558633aee7..0795bf51c52f 100644 --- a/drivers/platform/msm/ep_pcie/ep_pcie_core.c +++ b/drivers/platform/msm/ep_pcie/ep_pcie_core.c @@ -75,6 +75,7 @@ static struct ep_pcie_clk_info_t {NULL, "pcie_slv_q2a_axi_clk", 0, false}, {NULL, "pcie_pipe_clk_mux", 0, false}, {NULL, "pcie_pipe_clk_ext_src", 0, false}, + {NULL, "pcie_0_ref_clk_src", 0, false}, }; static struct ep_pcie_clk_info_t From e1ff02ca28e9325d89c5bd6216bd4a3a3321d96d Mon Sep 17 00:00:00 2001 From: Siddartha Mohanadoss Date: Thu, 3 Dec 2020 18:01:40 -0800 Subject: [PATCH 2/4] msm: pcie-ep: Correct PCIe regulator labels for sdxlemur The regulator labels for PCIe EP are mismatched and is not allowing the driver to get the correct info to set the voltage and enable regulators. Correct the PCIe EP regulator labels for sdxlemur. Change-Id: I366f97419c45c700310e5c1ee2049e5b1eb40ace Signed-off-by: Siddartha Mohanadoss --- drivers/platform/msm/ep_pcie/ep_pcie_core.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/drivers/platform/msm/ep_pcie/ep_pcie_core.c b/drivers/platform/msm/ep_pcie/ep_pcie_core.c index 0795bf51c52f..27b859aff5a4 100644 --- a/drivers/platform/msm/ep_pcie/ep_pcie_core.c +++ b/drivers/platform/msm/ep_pcie/ep_pcie_core.c @@ -52,8 +52,8 @@ static u32 clkreq_irq; struct ep_pcie_dev_t ep_pcie_dev = {0}; static struct ep_pcie_vreg_info_t ep_pcie_vreg_info[EP_PCIE_MAX_VREG] = { - {NULL, "vreg-1.8", 1800000, 1800000, 14000, true}, - {NULL, "vreg-0.9", 1000000, 1000000, 40000, true}, + {NULL, "vreg-1p8", 1200000, 1200000, 3000, true}, + {NULL, "vreg-0p9", 912000, 912000, 132000, true}, {NULL, "vreg-cx", 0, 0, 0, false} }; From 731b23e6fb56d3e846c3f671e3b29da8199d4f12 Mon Sep 17 00:00:00 2001 From: Siddartha Mohanadoss Date: Thu, 3 Dec 2020 18:03:19 -0800 Subject: [PATCH 3/4] msm: pcie-ep: Update PCIe pipe clock mux init PCIe pipe clock mux is dependent on the reference clocks being on. The pipe clock mux initialization code was being called before the reference clocks were initialized. Move the pipe clock mux init until after the reference clocks have safely switched on. Change-Id: I6403aa1f208c518793caefb3e3c550cd50577ee0 Signed-off-by: Siddartha Mohanadoss --- drivers/platform/msm/ep_pcie/ep_pcie_core.c | 35 ++++++++++++--------- 1 file changed, 20 insertions(+), 15 deletions(-) diff --git a/drivers/platform/msm/ep_pcie/ep_pcie_core.c b/drivers/platform/msm/ep_pcie/ep_pcie_core.c index 27b859aff5a4..56f3474a853e 100644 --- a/drivers/platform/msm/ep_pcie/ep_pcie_core.c +++ b/drivers/platform/msm/ep_pcie/ep_pcie_core.c @@ -456,24 +456,9 @@ static int ep_pcie_pipe_clk_init(struct ep_pcie_dev_t *dev) { int i, rc = 0; struct ep_pcie_clk_info_t *info; - char ref_clk_src[MAX_PROP_SIZE]; EP_PCIE_DBG(dev, "PCIe V%d\n", dev->rev); - dev->pipe_clk_mux = devm_clk_get(&dev->pdev->dev, "pcie_pipe_clk_mux"); - if (IS_ERR(dev->pipe_clk_mux)) - dev->pipe_clk_mux = NULL; - - dev->pipe_clk_ext_src = devm_clk_get(&dev->pdev->dev, - "pcie_pipe_clk_ext_src"); - if (IS_ERR(dev->pipe_clk_ext_src)) - dev->pipe_clk_ext_src = NULL; - - scnprintf(ref_clk_src, MAX_PROP_SIZE, "pcie_0_ref_clk_src"); - dev->ref_clk_src = devm_clk_get(&dev->pdev->dev, ref_clk_src); - if (IS_ERR(dev->ref_clk_src)) - dev->ref_clk_src = NULL; - for (i = 0; i < EP_PCIE_MAX_PIPE_CLK; i++) { info = &dev->pipeclk[i]; @@ -1059,6 +1044,7 @@ static int ep_pcie_get_resources(struct ep_pcie_dev_t *dev, const __be32 *prop; u32 *clkfreq = NULL; bool map; + char ref_clk_src[MAX_PROP_SIZE]; EP_PCIE_DBG(dev, "PCIe V%d\n", dev->rev); @@ -1176,6 +1162,25 @@ static int ep_pcie_get_resources(struct ep_pcie_dev_t *dev, } } + dev->pipe_clk_mux = devm_clk_get(&dev->pdev->dev, "pcie_pipe_clk_mux"); + if (IS_ERR(dev->pipe_clk_mux)) { + EP_PCIE_ERR(dev, "PCIe V%d: Failed to get pcie_pipe_clk_mux\n", dev->rev); + dev->pipe_clk_mux = NULL; + } + + dev->pipe_clk_ext_src = devm_clk_get(&dev->pdev->dev, "pcie_pipe_clk_ext_src"); + if (IS_ERR(dev->pipe_clk_ext_src)) { + EP_PCIE_ERR(dev, "PCIe V%d: Failed to get pipe_ext_src\n", dev->rev); + dev->pipe_clk_ext_src = NULL; + } + + scnprintf(ref_clk_src, MAX_PROP_SIZE, "pcie_0_ref_clk_src"); + dev->ref_clk_src = devm_clk_get(&dev->pdev->dev, ref_clk_src); + if (IS_ERR(dev->ref_clk_src)) { + EP_PCIE_ERR(dev, "PCIe V%d: Failed to get ref_clk_src\n", dev->rev); + dev->ref_clk_src = NULL; + } + for (i = 0; i < EP_PCIE_MAX_CLK; i++) { clk_info = &dev->clk[i]; From 237179eb364b9c59c35f4302b4f6a81f4feb3159 Mon Sep 17 00:00:00 2001 From: Siddartha Mohanadoss Date: Thu, 3 Dec 2020 18:04:36 -0800 Subject: [PATCH 4/4] msm: pcie-ep: Update AOSS reset name Change the aoss reset string to aoss_cc_reset to avoid errors in string compare. Change-Id: I06c7d31328c2d0589107407ccfa4c2e4700756b5 Signed-off-by: Siddartha Mohanadoss --- drivers/platform/msm/ep_pcie/ep_pcie_core.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/platform/msm/ep_pcie/ep_pcie_core.c b/drivers/platform/msm/ep_pcie/ep_pcie_core.c index 56f3474a853e..7c50a643b135 100644 --- a/drivers/platform/msm/ep_pcie/ep_pcie_core.c +++ b/drivers/platform/msm/ep_pcie/ep_pcie_core.c @@ -1279,7 +1279,7 @@ static int ep_pcie_get_resources(struct ep_pcie_dev_t *dev, "PCIe V%d: can't get resource for %s\n", dev->rev, res_info->name); if (!strcmp(res_info->name, "tcsr_pcie_perst_en") || - (!strcmp(res_info->name, "aoss_reset_perst_raw"))) { + (!strcmp(res_info->name, "aoss_cc_reset"))) { if (!dev->tcsr_not_supported && !dev->aoss_rst_clear) { ret = -ENOMEM; goto out;