mbox series

[V2,0/4] soc: imx: add i.MX BLK-CTL support

Message ID 20210430052746.10815-1-peng.fan@oss.nxp.com (mailing list archive)
Headers show
Series soc: imx: add i.MX BLK-CTL support | expand

Message

Peng Fan (OSS) April 30, 2021, 5:27 a.m. UTC
From: Peng Fan <peng.fan@nxp.com>

V2:
 Fix yaml check failure

Previously there is an effort from Abel that take BLK-CTL as clock
provider, but it turns out that there is A/B lock issue and we are
not able resolve that.

Per discuss with Lucas and Jacky, we made an agreement that take BLK-CTL
as a power domain provider and use GPC's domain as parent, the consumer
node take BLK-CTL as power domain input.

This patchset has been tested on i.MX8MM EVK board, but one hack
is not included in the patchset is that the DISPMIX BLK-CTL MIPI_M/S_RESET
not implemented. Per Lucas, we will finally have a MIPI DPHY driver,
so fine to leave it.

Thanks for Lucas's suggestion, Frieder Schrempf for collecting
all the patches, Abel's previous BLK-CTL work, Jacky Bai on help
debug issues.

Peng Fan (4):
  dt-bindings: power: Add defines for i.MX8MM BLK-CTL power domains
  Documentation: bindings: clk: Add bindings for i.MX BLK_CTL
  soc: imx: Add generic blk-ctl driver
  soc: imx: Add blk-ctl driver for i.MX8MM

 .../bindings/soc/imx/fsl,imx-blk-ctl.yaml     |  73 +++++
 drivers/soc/imx/Makefile                      |   2 +-
 drivers/soc/imx/blk-ctl-imx8mm.c              | 138 ++++++++
 drivers/soc/imx/blk-ctl.c                     | 303 ++++++++++++++++++
 drivers/soc/imx/blk-ctl.h                     |  76 +++++
 include/dt-bindings/power/imx8mm-power.h      |  11 +
 6 files changed, 602 insertions(+), 1 deletion(-)
 create mode 100644 Documentation/devicetree/bindings/soc/imx/fsl,imx-blk-ctl.yaml
 create mode 100644 drivers/soc/imx/blk-ctl-imx8mm.c
 create mode 100644 drivers/soc/imx/blk-ctl.c
 create mode 100644 drivers/soc/imx/blk-ctl.h

Comments

Peng Fan April 30, 2021, 6:19 a.m. UTC | #1
> Subject: [PATCH V2 0/4] soc: imx: add i.MX BLK-CTL support
> 
> From: Peng Fan <peng.fan@nxp.com>
> 
> V2:
>  Fix yaml check failure

Forget the address Jacky's comments on patch 3,4 in V1.
Will send V3 to add fix.

Thanks,
Peng.

> 
> Previously there is an effort from Abel that take BLK-CTL as clock provider, but
> it turns out that there is A/B lock issue and we are not able resolve that.
> 
> Per discuss with Lucas and Jacky, we made an agreement that take BLK-CTL
> as a power domain provider and use GPC's domain as parent, the consumer
> node take BLK-CTL as power domain input.
> 
> This patchset has been tested on i.MX8MM EVK board, but one hack is not
> included in the patchset is that the DISPMIX BLK-CTL MIPI_M/S_RESET not
> implemented. Per Lucas, we will finally have a MIPI DPHY driver, so fine to
> leave it.
> 
> Thanks for Lucas's suggestion, Frieder Schrempf for collecting all the patches,
> Abel's previous BLK-CTL work, Jacky Bai on help debug issues.
> 
> Peng Fan (4):
>   dt-bindings: power: Add defines for i.MX8MM BLK-CTL power domains
>   Documentation: bindings: clk: Add bindings for i.MX BLK_CTL
>   soc: imx: Add generic blk-ctl driver
>   soc: imx: Add blk-ctl driver for i.MX8MM
> 
>  .../bindings/soc/imx/fsl,imx-blk-ctl.yaml     |  73 +++++
>  drivers/soc/imx/Makefile                      |   2 +-
>  drivers/soc/imx/blk-ctl-imx8mm.c              | 138 ++++++++
>  drivers/soc/imx/blk-ctl.c                     | 303
> ++++++++++++++++++
>  drivers/soc/imx/blk-ctl.h                     |  76 +++++
>  include/dt-bindings/power/imx8mm-power.h      |  11 +
>  6 files changed, 602 insertions(+), 1 deletion(-)  create mode 100644
> Documentation/devicetree/bindings/soc/imx/fsl,imx-blk-ctl.yaml
>  create mode 100644 drivers/soc/imx/blk-ctl-imx8mm.c  create mode
> 100644 drivers/soc/imx/blk-ctl.c  create mode 100644
> drivers/soc/imx/blk-ctl.h
> 
> --
> 2.30.0
Frieder Schrempf May 3, 2021, 2:57 p.m. UTC | #2
Hi Peng,

On 30.04.21 07:27, Peng Fan (OSS) wrote:
> From: Peng Fan <peng.fan@nxp.com>
> 
> V2:
>   Fix yaml check failure
> 
> Previously there is an effort from Abel that take BLK-CTL as clock
> provider, but it turns out that there is A/B lock issue and we are
> not able resolve that.
> 
> Per discuss with Lucas and Jacky, we made an agreement that take BLK-CTL
> as a power domain provider and use GPC's domain as parent, the consumer
> node take BLK-CTL as power domain input.
> 
> This patchset has been tested on i.MX8MM EVK board, but one hack
> is not included in the patchset is that the DISPMIX BLK-CTL MIPI_M/S_RESET
> not implemented. Per Lucas, we will finally have a MIPI DPHY driver,
> so fine to leave it.

Thanks for your work. I would like to test this together with the DSIM 
and PHY driver by Michael and Marek. So far the boot hangs when probing 
the DSIM, but I'm not even sure if my DT is correct.

With the DSIM PHY driver (see [1]) in place, the GPR_MIPI_M_RESETN 
should be set correctly, right?

Would you mind sharing your imx8mm.dtsi, that you used for testing?

Thanks
Frieder

[1] 
https://patchwork.kernel.org/project/linux-samsung-soc/patch/20201003225020.164358-1-marex@denx.de/
Frieder Schrempf May 4, 2021, 8:55 a.m. UTC | #3
On 03.05.21 16:57, Frieder Schrempf wrote:
> Hi Peng,
> 
> On 30.04.21 07:27, Peng Fan (OSS) wrote:
>> From: Peng Fan <peng.fan@nxp.com>
>>
>> V2:
>>   Fix yaml check failure
>>
>> Previously there is an effort from Abel that take BLK-CTL as clock
>> provider, but it turns out that there is A/B lock issue and we are
>> not able resolve that.
>>
>> Per discuss with Lucas and Jacky, we made an agreement that take BLK-CTL
>> as a power domain provider and use GPC's domain as parent, the consumer
>> node take BLK-CTL as power domain input.
>>
>> This patchset has been tested on i.MX8MM EVK board, but one hack
>> is not included in the patchset is that the DISPMIX BLK-CTL 
>> MIPI_M/S_RESET
>> not implemented. Per Lucas, we will finally have a MIPI DPHY driver,
>> so fine to leave it.
> 
> Thanks for your work. I would like to test this together with the DSIM 
> and PHY driver by Michael and Marek. So far the boot hangs when probing 
> the DSIM, but I'm not even sure if my DT is correct.
> 
> With the DSIM PHY driver (see [1]) in place, the GPR_MIPI_M_RESETN 
> should be set correctly, right?

So I found out, that with the hack below applied (taken from Marek's WIP 
patches for DSIM support) it seems to work properly.

Therefore I guess this is an issue with the DSIM driver, that somehow 
needs to make sure that the proper clocks are enabled at probe time.

diff --git a/drivers/soc/imx/gpcv2.c b/drivers/soc/imx/gpcv2.c
index 04564017bfe9..5a9bca805b0c 100644
--- a/drivers/soc/imx/gpcv2.c
+++ b/drivers/soc/imx/gpcv2.c
@@ -9,6 +9,7 @@
   */

  #include <linux/clk.h>
+#include <linux/clk-provider.h>
  #include <linux/of_device.h>
  #include <linux/platform_device.h>
  #include <linux/pm_domain.h>
@@ -193,6 +194,7 @@ to_imx_pgc_domain(struct generic_pm_domain *genpd)
  static int imx_pgc_power_up(struct generic_pm_domain *genpd)
  {
         struct imx_pgc_domain *domain = to_imx_pgc_domain(genpd);
+       unsigned int i;
         u32 reg_val;
         int ret;

@@ -254,7 +256,14 @@ static int imx_pgc_power_up(struct 
generic_pm_domain *genpd)
         }

         /* Disable reset clocks for all devices in the domain */
-       clk_bulk_disable_unprepare(domain->num_clks, domain->clks);
+       //clk_bulk_disable_unprepare(domain->num_clks, domain->clks);
+       for (i = 0; i < domain->num_clks; i++) {
+               /* Keep the DISPMIX active, it is needed by both LCDIF 
and MIPI */
+               if (strcmp(__clk_get_name(domain->clks[i].clk), 
"disp_root_clk") &&
+                   strcmp(__clk_get_name(domain->clks[i].clk), 
"disp_axi_root_clk") &&
+                   strcmp(__clk_get_name(domain->clks[i].clk), 
"disp_apb_root_clk"))
+                       clk_disable_unprepare(domain->clks[i].clk);
+       }

         return 0;