mbox series

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

Message ID 20210629072941.7980-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) June 29, 2021, 7:29 a.m. UTC
From: Peng Fan <peng.fan@nxp.com>

V8:
Revert one change in v7, force goto disable_clk for handshake when power on in patch 3
One minor update to use if{} else {}, not if{}; if{}; in patch 3
Typo Hankshake->Handshake

V7:
 patch 2: update patch title per Shawn 
 Patch 3: Addressed several comments from Shawn

V6:
 Thanks for Adam's report on V5.
 Resolve the error message dump, it is the child device reuse
 the parent device node and matches the parent driver.
 Filled the remove function for child device.
 A diff dts file for upstream:
 https://gist.github.com/MrVan/d73888d8273c43ea4a3b28fa668ca1d0

V5:
 Rework the blk-ctl driver to let sub-PGC use blk-ctl as parent power
 domain to fix the potential handshake issue.
 I still keep R-b/A-b tag for Patch 1,2,4, since very minor changes
 I only drop R-b tag for Patch 3, since it has big change.
 An example, the pgc_mipi not take pgc_dispmix as parent:

	pgc_dispmix: power-domain@10 {
		#power-domain-cells = <0>;
		reg = <IMX8MM_POWER_DOMAIN_DISPMIX>;
		clocks = <&clk IMX8MM_CLK_DISP_ROOT>,
			 <&clk IMX8MM_CLK_DISP_AXI_ROOT>,
			 <&clk IMX8MM_CLK_DISP_APB_ROOT>;
	};

	pgc_mipi: power-domain@11 {
		#power-domain-cells = <0>;
		reg = <IMX8MM_POWER_DOMAIN_MIPI>;
		power-domains = <&dispmix_blk_ctl IMX8MM_BLK_CTL_PD_DISPMIX_BUS>;
	};

	dispmix_blk_ctl: clock-controller@32e28000 {
		compatible = "fsl,imx8mm-dispmix-blk-ctl", "syscon";
		reg = <0x32e28000 0x100>;
		#power-domain-cells = <1>;
		power-domains = <&pgc_dispmix>, <&pgc_mipi>;
		power-domain-names = "dispmix", "mipi";
		clocks = <&clk IMX8MM_CLK_DISP_ROOT>, <&clk IMX8MM_CLK_DISP_AXI_ROOT>,
			 <&clk IMX8MM_CLK_DISP_APB_ROOT>;
	};

V4:
 Add R-b tag
 Typo fix
 Update the power domain macro names Per Abel and Frieder

V3:
 Add explaination for not listing items in patch 2 commit log Per Rob.
 Addressed comments from Lucas and Frieder on patch [3,4].
 A few comments from Jacky was ignored, because following gpcv2
 coding style.

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
  dt-bindings: soc: imx: 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     |  66 ++++
 drivers/soc/imx/Makefile                      |   2 +-
 drivers/soc/imx/blk-ctl-imx8mm.c              | 139 ++++++++
 drivers/soc/imx/blk-ctl.c                     | 324 ++++++++++++++++++
 drivers/soc/imx/blk-ctl.h                     |  85 +++++
 include/dt-bindings/power/imx8mm-power.h      |  13 +
 6 files changed, 628 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

Adam Ford June 29, 2021, 1:26 p.m. UTC | #1
On Tue, Jun 29, 2021 at 1:56 AM Peng Fan (OSS) <peng.fan@oss.nxp.com> wrote:
>
> From: Peng Fan <peng.fan@nxp.com>
>
> V8:
> Revert one change in v7, force goto disable_clk for handshake when power on in patch 3
> One minor update to use if{} else {}, not if{}; if{}; in patch 3
> Typo Hankshake->Handshake
>
I am using ATF, branch lf_v2.4, from the NXP code aurora repo with
U-Boot v2021.07-rc5

I applied this patch against linux-next, I applied the pgc patches
[1], and the suggested power-domains to the otg1 and otg2 nodes.
I am able to boot the device and use USB, but with this applied, I
cannot wake from sleep.  If I revert this, the system wakes from sleep
again.

[1] - https://patchwork.kernel.org/project/linux-arm-kernel/patch/20210604111005.6804-1-peng.fan@oss.nxp.com/

I have not enabled video, GPU, VPU nor CSI.

Just in case there might be a power-domain dependency missing, here is
my power-domain dump:

root@beacon-imx8mm-kit:~# cat /sys/kernel/debug/pm_genpd/pm_genpd_summary
domain                          status          children
            performance
    /device                                             runtime status
----------------------------------------------------------------------------------------------
vpu-h1                          off-0
            0
                                                VPU_BLK_CTL_H1
    /devices/genpd:3:imx-vpumix-blk-ctl.2               suspended
            0
vpu-g2                          off-0
            0
                                                VPU_BLK_CTL_G2
    /devices/genpd:2:imx-vpumix-blk-ctl.0               suspended
            0
vpu-g1                          off-0
            0
                                                VPU_BLK_CTL_G1
    /devices/genpd:1:imx-vpumix-blk-ctl.1               suspended
            0
mipi                            off-0
            0
                                                MIPI_DSI, MIPI_CSI
    /devices/genpd:1:imx-dispmix-blk-ctl.2              suspended
            0
    /devices/genpd:1:imx-dispmix-blk-ctl.3              suspended
            0
vpumix                          off-0
            0
                                                VPU_BLK_CTL_BUS
    /devices/genpd:0:imx-vpumix-blk-ctl.3               suspended
            0
gpu                             off-0
            0
VPU_BLK_CTL_BUS                 off-0
            0
    /devices/platform/soc@0/30000000.bus/303a0000.gpc/imx-pgc-domain.7
 suspended                  0
    /devices/platform/soc@0/30000000.bus/303a0000.gpc/imx-pgc-domain.8
 suspended                  0
    /devices/platform/soc@0/30000000.bus/303a0000.gpc/imx-pgc-domain.9
 suspended                  0
VPU_BLK_CTL_H1                  off-0
            0
VPU_BLK_CTL_G1                  off-0
            0
VPU_BLK_CTL_G2                  off-0
            0
DISPMIX_BUS                     off-0
            0
                                                CSI_BRIDGE, LCDIF
    /devices/platform/soc@0/30000000.bus/303a0000.gpc/imx-pgc-domain.11
 suspended                  0
MIPI_CSI                        off-0
            0
MIPI_DSI                        off-0
            0
LCDIF                           off-0
            0
CSI_BRIDGE                      off-0
            0
dispmix                         off-0
            0
                                                DISPMIX_BUS
    /devices/genpd:0:imx-dispmix-blk-ctl.4              suspended
            0
gpumix                          off-0
            0
    /devices/platform/soc@0/30000000.bus/303a0000.gpc/imx-pgc-domain.5
 suspended                  0
usb-otg2                        on
            0
    /devices/platform/soc@0/32c00000.bus/32e50000.usb   active
            0
usb-otg1                        on
            0
    /devices/platform/soc@0/32c00000.bus/32e40000.usb   active
            0
pcie                            off-0
            0
hsiomix                         on
            0
    /devices/platform/soc@0/30000000.bus/303a0000.gpc/imx-pgc-domain.1
 suspended                  0
    /devices/platform/soc@0/30000000.bus/303a0000.gpc/imx-pgc-domain.2
 active                     0
    /devices/platform/soc@0/30000000.bus/303a0000.gpc/imx-pgc-domain.3
 active                     0



> V7:
>  patch 2: update patch title per Shawn
>  Patch 3: Addressed several comments from Shawn
>
> V6:
>  Thanks for Adam's report on V5.
>  Resolve the error message dump, it is the child device reuse
>  the parent device node and matches the parent driver.
>  Filled the remove function for child device.
>  A diff dts file for upstream:
>  https://gist.github.com/MrVan/d73888d8273c43ea4a3b28fa668ca1d0
>
> V5:
>  Rework the blk-ctl driver to let sub-PGC use blk-ctl as parent power
>  domain to fix the potential handshake issue.
>  I still keep R-b/A-b tag for Patch 1,2,4, since very minor changes
>  I only drop R-b tag for Patch 3, since it has big change.
>  An example, the pgc_mipi not take pgc_dispmix as parent:
>
>         pgc_dispmix: power-domain@10 {
>                 #power-domain-cells = <0>;
>                 reg = <IMX8MM_POWER_DOMAIN_DISPMIX>;
>                 clocks = <&clk IMX8MM_CLK_DISP_ROOT>,
>                          <&clk IMX8MM_CLK_DISP_AXI_ROOT>,
>                          <&clk IMX8MM_CLK_DISP_APB_ROOT>;
>         };
>
>         pgc_mipi: power-domain@11 {
>                 #power-domain-cells = <0>;
>                 reg = <IMX8MM_POWER_DOMAIN_MIPI>;
>                 power-domains = <&dispmix_blk_ctl IMX8MM_BLK_CTL_PD_DISPMIX_BUS>;
>         };
>
>         dispmix_blk_ctl: clock-controller@32e28000 {
>                 compatible = "fsl,imx8mm-dispmix-blk-ctl", "syscon";
>                 reg = <0x32e28000 0x100>;
>                 #power-domain-cells = <1>;
>                 power-domains = <&pgc_dispmix>, <&pgc_mipi>;
>                 power-domain-names = "dispmix", "mipi";
>                 clocks = <&clk IMX8MM_CLK_DISP_ROOT>, <&clk IMX8MM_CLK_DISP_AXI_ROOT>,
>                          <&clk IMX8MM_CLK_DISP_APB_ROOT>;
>         };
>
> V4:
>  Add R-b tag
>  Typo fix
>  Update the power domain macro names Per Abel and Frieder
>
> V3:
>  Add explaination for not listing items in patch 2 commit log Per Rob.
>  Addressed comments from Lucas and Frieder on patch [3,4].
>  A few comments from Jacky was ignored, because following gpcv2
>  coding style.
>
> 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
>   dt-bindings: soc: imx: 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     |  66 ++++
>  drivers/soc/imx/Makefile                      |   2 +-
>  drivers/soc/imx/blk-ctl-imx8mm.c              | 139 ++++++++
>  drivers/soc/imx/blk-ctl.c                     | 324 ++++++++++++++++++
>  drivers/soc/imx/blk-ctl.h                     |  85 +++++
>  include/dt-bindings/power/imx8mm-power.h      |  13 +
>  6 files changed, 628 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
>
Peng Fan (OSS) June 30, 2021, 9:34 a.m. UTC | #2
> Subject: Re: [PATCH V8 0/4] soc: imx: add i.MX BLK-CTL support
> 
> On Tue, Jun 29, 2021 at 1:56 AM Peng Fan (OSS) <peng.fan@oss.nxp.com>
> wrote:
> >
> > From: Peng Fan <peng.fan@nxp.com>
> >
> > V8:
> > Revert one change in v7, force goto disable_clk for handshake when
> > power on in patch 3 One minor update to use if{} else {}, not if{};
> > if{}; in patch 3 Typo Hankshake->Handshake
> >
> I am using ATF, branch lf_v2.4, from the NXP code aurora repo with U-Boot
> v2021.07-rc5
> 
> I applied this patch against linux-next, I applied the pgc patches [1], and the
> suggested power-domains to the otg1 and otg2 nodes.
> I am able to boot the device and use USB, but with this applied, I cannot wake
> from sleep.  If I revert this, the system wakes from sleep again.

I just tried linux-next without this patch on iMX8MM EVK, suspend/resume
not work. Per my last test, it works before. Not sure what changed in kernel.

Which kernel are you using, any commit or git repo? I could try on imx8mm
evk and debug the issue you see.

Thanks,
Peng.

> 
> [1] -
> https://eur01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fpatch
> work.kernel.org%2Fproject%2Flinux-arm-kernel%2Fpatch%2F202106041110
> 05.6804-1-peng.fan%40oss.nxp.com%2F&amp;data=04%7C01%7Cpeng.fan%
> 40nxp.com%7Caccded5458c049d67fa308d93b0182d9%7C686ea1d3bc2b4c6
> fa92cd99c5c301635%7C0%7C0%7C637605699944911752%7CUnknown%7C
> TWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiL
> CJXVCI6Mn0%3D%7C1000&amp;sdata=Kf6orRXmScWHDTgD2FOV8OBsgG0p
> GVs1byVZTHT0gVI%3D&amp;reserved=0
> 
> I have not enabled video, GPU, VPU nor CSI.
> 
> Just in case there might be a power-domain dependency missing, here is my
> power-domain dump:
> 
> root@beacon-imx8mm-kit:~# cat
> /sys/kernel/debug/pm_genpd/pm_genpd_summary
> domain                          status          children
>             performance
>     /device                                             runtime
> status
> ---------------------------------------------------------------------------------------------
> -
> vpu-h1                          off-0
>             0
> 
> VPU_BLK_CTL_H1
>     /devices/genpd:3:imx-vpumix-blk-ctl.2               suspended
>             0
> vpu-g2                          off-0
>             0
> 
> VPU_BLK_CTL_G2
>     /devices/genpd:2:imx-vpumix-blk-ctl.0               suspended
>             0
> vpu-g1                          off-0
>             0
> 
> VPU_BLK_CTL_G1
>     /devices/genpd:1:imx-vpumix-blk-ctl.1               suspended
>             0
> mipi                            off-0
>             0
>                                                 MIPI_DSI,
> MIPI_CSI
>     /devices/genpd:1:imx-dispmix-blk-ctl.2              suspended
>             0
>     /devices/genpd:1:imx-dispmix-blk-ctl.3              suspended
>             0
> vpumix                          off-0
>             0
> 
> VPU_BLK_CTL_BUS
>     /devices/genpd:0:imx-vpumix-blk-ctl.3               suspended
>             0
> gpu                             off-0
>             0
> VPU_BLK_CTL_BUS                 off-0
>             0
> 
> /devices/platform/soc@0/30000000.bus/303a0000.gpc/imx-pgc-domain.7
>  suspended                  0
> 
> /devices/platform/soc@0/30000000.bus/303a0000.gpc/imx-pgc-domain.8
>  suspended                  0
> 
> /devices/platform/soc@0/30000000.bus/303a0000.gpc/imx-pgc-domain.9
>  suspended                  0
> VPU_BLK_CTL_H1                  off-0
>             0
> VPU_BLK_CTL_G1                  off-0
>             0
> VPU_BLK_CTL_G2                  off-0
>             0
> DISPMIX_BUS                     off-0
>             0
>                                                 CSI_BRIDGE,
> LCDIF
> 
> /devices/platform/soc@0/30000000.bus/303a0000.gpc/imx-pgc-domain.11
>  suspended                  0
> MIPI_CSI                        off-0
>             0
> MIPI_DSI                        off-0
>             0
> LCDIF                           off-0
>             0
> CSI_BRIDGE                      off-0
>             0
> dispmix                         off-0
>             0
>                                                 DISPMIX_BUS
>     /devices/genpd:0:imx-dispmix-blk-ctl.4              suspended
>             0
> gpumix                          off-0
>             0
> 
> /devices/platform/soc@0/30000000.bus/303a0000.gpc/imx-pgc-domain.5
>  suspended                  0
> usb-otg2                        on
>             0
>     /devices/platform/soc@0/32c00000.bus/32e50000.usb   active
>             0
> usb-otg1                        on
>             0
>     /devices/platform/soc@0/32c00000.bus/32e40000.usb   active
>             0
> pcie                            off-0
>             0
> hsiomix                         on
>             0
> 
> /devices/platform/soc@0/30000000.bus/303a0000.gpc/imx-pgc-domain.1
>  suspended                  0
> 
> /devices/platform/soc@0/30000000.bus/303a0000.gpc/imx-pgc-domain.2
>  active                     0
> 
> /devices/platform/soc@0/30000000.bus/303a0000.gpc/imx-pgc-domain.3
>  active                     0
> 
> 
> 
> > V7:
> >  patch 2: update patch title per Shawn  Patch 3: Addressed several
> > comments from Shawn
> >
> > V6:
> >  Thanks for Adam's report on V5.
> >  Resolve the error message dump, it is the child device reuse  the
> > parent device node and matches the parent driver.
> >  Filled the remove function for child device.
> >  A diff dts file for upstream:
> >
> > https://eur01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgist
> > .github.com%2FMrVan%2Fd73888d8273c43ea4a3b28fa668ca1d0&amp;dat
> a=04%7C0
> >
> 1%7Cpeng.fan%40nxp.com%7Caccded5458c049d67fa308d93b0182d9%7C68
> 6ea1d3bc
> >
> 2b4c6fa92cd99c5c301635%7C0%7C0%7C637605699944911752%7CUnknow
> n%7CTWFpbG
> >
> Zsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6
> Mn0%
> >
> 3D%7C1000&amp;sdata=9FcnPd4nwmdjOqrQCTz0YNgUmVQ9UzTHpfh33LKI
> 7cs%3D&amp
> > ;reserved=0
> >
> > V5:
> >  Rework the blk-ctl driver to let sub-PGC use blk-ctl as parent power
> > domain to fix the potential handshake issue.
> >  I still keep R-b/A-b tag for Patch 1,2,4, since very minor changes  I
> > only drop R-b tag for Patch 3, since it has big change.
> >  An example, the pgc_mipi not take pgc_dispmix as parent:
> >
> >         pgc_dispmix: power-domain@10 {
> >                 #power-domain-cells = <0>;
> >                 reg = <IMX8MM_POWER_DOMAIN_DISPMIX>;
> >                 clocks = <&clk IMX8MM_CLK_DISP_ROOT>,
> >                          <&clk IMX8MM_CLK_DISP_AXI_ROOT>,
> >                          <&clk IMX8MM_CLK_DISP_APB_ROOT>;
> >         };
> >
> >         pgc_mipi: power-domain@11 {
> >                 #power-domain-cells = <0>;
> >                 reg = <IMX8MM_POWER_DOMAIN_MIPI>;
> >                 power-domains = <&dispmix_blk_ctl
> IMX8MM_BLK_CTL_PD_DISPMIX_BUS>;
> >         };
> >
> >         dispmix_blk_ctl: clock-controller@32e28000 {
> >                 compatible = "fsl,imx8mm-dispmix-blk-ctl", "syscon";
> >                 reg = <0x32e28000 0x100>;
> >                 #power-domain-cells = <1>;
> >                 power-domains = <&pgc_dispmix>, <&pgc_mipi>;
> >                 power-domain-names = "dispmix", "mipi";
> >                 clocks = <&clk IMX8MM_CLK_DISP_ROOT>, <&clk
> IMX8MM_CLK_DISP_AXI_ROOT>,
> >                          <&clk IMX8MM_CLK_DISP_APB_ROOT>;
> >         };
> >
> > V4:
> >  Add R-b tag
> >  Typo fix
> >  Update the power domain macro names Per Abel and Frieder
> >
> > V3:
> >  Add explaination for not listing items in patch 2 commit log Per Rob.
> >  Addressed comments from Lucas and Frieder on patch [3,4].
> >  A few comments from Jacky was ignored, because following gpcv2
> > coding style.
> >
> > 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
> >   dt-bindings: soc: imx: 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     |  66 ++++
> >  drivers/soc/imx/Makefile                      |   2 +-
> >  drivers/soc/imx/blk-ctl-imx8mm.c              | 139 ++++++++
> >  drivers/soc/imx/blk-ctl.c                     | 324
> ++++++++++++++++++
> >  drivers/soc/imx/blk-ctl.h                     |  85 +++++
> >  include/dt-bindings/power/imx8mm-power.h      |  13 +
> >  6 files changed, 628 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
> >
Adam Ford June 30, 2021, 12:09 p.m. UTC | #3
On Wed, Jun 30, 2021 at 4:34 AM Peng Fan (OSS) <peng.fan@oss.nxp.com> wrote:
>
> > Subject: Re: [PATCH V8 0/4] soc: imx: add i.MX BLK-CTL support
> >
> > On Tue, Jun 29, 2021 at 1:56 AM Peng Fan (OSS) <peng.fan@oss.nxp.com>
> > wrote:
> > >
> > > From: Peng Fan <peng.fan@nxp.com>
> > >
> > > V8:
> > > Revert one change in v7, force goto disable_clk for handshake when
> > > power on in patch 3 One minor update to use if{} else {}, not if{};
> > > if{}; in patch 3 Typo Hankshake->Handshake
> > >
> > I am using ATF, branch lf_v2.4, from the NXP code aurora repo with U-Boot
> > v2021.07-rc5
> >
> > I applied this patch against linux-next, I applied the pgc patches [1], and the
> > suggested power-domains to the otg1 and otg2 nodes.
> > I am able to boot the device and use USB, but with this applied, I cannot wake
> > from sleep.  If I revert this, the system wakes from sleep again.
>
> I just tried linux-next without this patch on iMX8MM EVK, suspend/resume
> not work. Per my last test, it works before. Not sure what changed in kernel.
>
> Which kernel are you using, any commit or git repo? I could try on imx8mm
> evk and debug the issue you see.

I used kernel-next,
git://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git
commit 889bab4c367a0ef58208fd80fafa74bb6e2dca26 (tag: next-20210621)

I then applied the GPCv2 patch that Marek sent.  You were CC'd on the
e-mail from Marek, but I can forward the patch to you if you can't
find it.
I tested his patch and I was able to suspend-to-RAM and resume.
Once I was comfortable that it worked, I then applied your patch
series for the blk-ctl.
With the blk-ctl series applied, the suspend-resume stopped working.

adam
>
> Thanks,
> Peng.
>
> >
> > [1] -
> > https://eur01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fpatch
> > work.kernel.org%2Fproject%2Flinux-arm-kernel%2Fpatch%2F202106041110
> > 05.6804-1-peng.fan%40oss.nxp.com%2F&amp;data=04%7C01%7Cpeng.fan%
> > 40nxp.com%7Caccded5458c049d67fa308d93b0182d9%7C686ea1d3bc2b4c6
> > fa92cd99c5c301635%7C0%7C0%7C637605699944911752%7CUnknown%7C
> > TWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiL
> > CJXVCI6Mn0%3D%7C1000&amp;sdata=Kf6orRXmScWHDTgD2FOV8OBsgG0p
> > GVs1byVZTHT0gVI%3D&amp;reserved=0
> >
> > I have not enabled video, GPU, VPU nor CSI.
> >
> > Just in case there might be a power-domain dependency missing, here is my
> > power-domain dump:
> >
> > root@beacon-imx8mm-kit:~# cat
> > /sys/kernel/debug/pm_genpd/pm_genpd_summary
> > domain                          status          children
> >             performance
> >     /device                                             runtime
> > status
> > ---------------------------------------------------------------------------------------------
> > -
> > vpu-h1                          off-0
> >             0
> >
> > VPU_BLK_CTL_H1
> >     /devices/genpd:3:imx-vpumix-blk-ctl.2               suspended
> >             0
> > vpu-g2                          off-0
> >             0
> >
> > VPU_BLK_CTL_G2
> >     /devices/genpd:2:imx-vpumix-blk-ctl.0               suspended
> >             0
> > vpu-g1                          off-0
> >             0
> >
> > VPU_BLK_CTL_G1
> >     /devices/genpd:1:imx-vpumix-blk-ctl.1               suspended
> >             0
> > mipi                            off-0
> >             0
> >                                                 MIPI_DSI,
> > MIPI_CSI
> >     /devices/genpd:1:imx-dispmix-blk-ctl.2              suspended
> >             0
> >     /devices/genpd:1:imx-dispmix-blk-ctl.3              suspended
> >             0
> > vpumix                          off-0
> >             0
> >
> > VPU_BLK_CTL_BUS
> >     /devices/genpd:0:imx-vpumix-blk-ctl.3               suspended
> >             0
> > gpu                             off-0
> >             0
> > VPU_BLK_CTL_BUS                 off-0
> >             0
> >
> > /devices/platform/soc@0/30000000.bus/303a0000.gpc/imx-pgc-domain.7
> >  suspended                  0
> >
> > /devices/platform/soc@0/30000000.bus/303a0000.gpc/imx-pgc-domain.8
> >  suspended                  0
> >
> > /devices/platform/soc@0/30000000.bus/303a0000.gpc/imx-pgc-domain.9
> >  suspended                  0
> > VPU_BLK_CTL_H1                  off-0
> >             0
> > VPU_BLK_CTL_G1                  off-0
> >             0
> > VPU_BLK_CTL_G2                  off-0
> >             0
> > DISPMIX_BUS                     off-0
> >             0
> >                                                 CSI_BRIDGE,
> > LCDIF
> >
> > /devices/platform/soc@0/30000000.bus/303a0000.gpc/imx-pgc-domain.11
> >  suspended                  0
> > MIPI_CSI                        off-0
> >             0
> > MIPI_DSI                        off-0
> >             0
> > LCDIF                           off-0
> >             0
> > CSI_BRIDGE                      off-0
> >             0
> > dispmix                         off-0
> >             0
> >                                                 DISPMIX_BUS
> >     /devices/genpd:0:imx-dispmix-blk-ctl.4              suspended
> >             0
> > gpumix                          off-0
> >             0
> >
> > /devices/platform/soc@0/30000000.bus/303a0000.gpc/imx-pgc-domain.5
> >  suspended                  0
> > usb-otg2                        on
> >             0
> >     /devices/platform/soc@0/32c00000.bus/32e50000.usb   active
> >             0
> > usb-otg1                        on
> >             0
> >     /devices/platform/soc@0/32c00000.bus/32e40000.usb   active
> >             0
> > pcie                            off-0
> >             0
> > hsiomix                         on
> >             0
> >
> > /devices/platform/soc@0/30000000.bus/303a0000.gpc/imx-pgc-domain.1
> >  suspended                  0
> >
> > /devices/platform/soc@0/30000000.bus/303a0000.gpc/imx-pgc-domain.2
> >  active                     0
> >
> > /devices/platform/soc@0/30000000.bus/303a0000.gpc/imx-pgc-domain.3
> >  active                     0
> >
> >
> >
> > > V7:
> > >  patch 2: update patch title per Shawn  Patch 3: Addressed several
> > > comments from Shawn
> > >
> > > V6:
> > >  Thanks for Adam's report on V5.
> > >  Resolve the error message dump, it is the child device reuse  the
> > > parent device node and matches the parent driver.
> > >  Filled the remove function for child device.
> > >  A diff dts file for upstream:
> > >
> > > https://eur01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgist
> > > .github.com%2FMrVan%2Fd73888d8273c43ea4a3b28fa668ca1d0&amp;dat
> > a=04%7C0
> > >
> > 1%7Cpeng.fan%40nxp.com%7Caccded5458c049d67fa308d93b0182d9%7C68
> > 6ea1d3bc
> > >
> > 2b4c6fa92cd99c5c301635%7C0%7C0%7C637605699944911752%7CUnknow
> > n%7CTWFpbG
> > >
> > Zsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6
> > Mn0%
> > >
> > 3D%7C1000&amp;sdata=9FcnPd4nwmdjOqrQCTz0YNgUmVQ9UzTHpfh33LKI
> > 7cs%3D&amp
> > > ;reserved=0
> > >
> > > V5:
> > >  Rework the blk-ctl driver to let sub-PGC use blk-ctl as parent power
> > > domain to fix the potential handshake issue.
> > >  I still keep R-b/A-b tag for Patch 1,2,4, since very minor changes  I
> > > only drop R-b tag for Patch 3, since it has big change.
> > >  An example, the pgc_mipi not take pgc_dispmix as parent:
> > >
> > >         pgc_dispmix: power-domain@10 {
> > >                 #power-domain-cells = <0>;
> > >                 reg = <IMX8MM_POWER_DOMAIN_DISPMIX>;
> > >                 clocks = <&clk IMX8MM_CLK_DISP_ROOT>,
> > >                          <&clk IMX8MM_CLK_DISP_AXI_ROOT>,
> > >                          <&clk IMX8MM_CLK_DISP_APB_ROOT>;
> > >         };
> > >
> > >         pgc_mipi: power-domain@11 {
> > >                 #power-domain-cells = <0>;
> > >                 reg = <IMX8MM_POWER_DOMAIN_MIPI>;
> > >                 power-domains = <&dispmix_blk_ctl
> > IMX8MM_BLK_CTL_PD_DISPMIX_BUS>;
> > >         };
> > >
> > >         dispmix_blk_ctl: clock-controller@32e28000 {
> > >                 compatible = "fsl,imx8mm-dispmix-blk-ctl", "syscon";
> > >                 reg = <0x32e28000 0x100>;
> > >                 #power-domain-cells = <1>;
> > >                 power-domains = <&pgc_dispmix>, <&pgc_mipi>;
> > >                 power-domain-names = "dispmix", "mipi";
> > >                 clocks = <&clk IMX8MM_CLK_DISP_ROOT>, <&clk
> > IMX8MM_CLK_DISP_AXI_ROOT>,
> > >                          <&clk IMX8MM_CLK_DISP_APB_ROOT>;
> > >         };
> > >
> > > V4:
> > >  Add R-b tag
> > >  Typo fix
> > >  Update the power domain macro names Per Abel and Frieder
> > >
> > > V3:
> > >  Add explaination for not listing items in patch 2 commit log Per Rob.
> > >  Addressed comments from Lucas and Frieder on patch [3,4].
> > >  A few comments from Jacky was ignored, because following gpcv2
> > > coding style.
> > >
> > > 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
> > >   dt-bindings: soc: imx: 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     |  66 ++++
> > >  drivers/soc/imx/Makefile                      |   2 +-
> > >  drivers/soc/imx/blk-ctl-imx8mm.c              | 139 ++++++++
> > >  drivers/soc/imx/blk-ctl.c                     | 324
> > ++++++++++++++++++
> > >  drivers/soc/imx/blk-ctl.h                     |  85 +++++
> > >  include/dt-bindings/power/imx8mm-power.h      |  13 +
> > >  6 files changed, 628 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 June 30, 2021, 2:46 p.m. UTC | #4
On 30.06.21 14:09, Adam Ford wrote:
> On Wed, Jun 30, 2021 at 4:34 AM Peng Fan (OSS) <peng.fan@oss.nxp.com> wrote:
>>
>>> Subject: Re: [PATCH V8 0/4] soc: imx: add i.MX BLK-CTL support
>>>
>>> On Tue, Jun 29, 2021 at 1:56 AM Peng Fan (OSS) <peng.fan@oss.nxp.com>
>>> wrote:
>>>>
>>>> From: Peng Fan <peng.fan@nxp.com>
>>>>
>>>> V8:
>>>> Revert one change in v7, force goto disable_clk for handshake when
>>>> power on in patch 3 One minor update to use if{} else {}, not if{};
>>>> if{}; in patch 3 Typo Hankshake->Handshake
>>>>
>>> I am using ATF, branch lf_v2.4, from the NXP code aurora repo with U-Boot
>>> v2021.07-rc5
>>>
>>> I applied this patch against linux-next, I applied the pgc patches [1], and the
>>> suggested power-domains to the otg1 and otg2 nodes.
>>> I am able to boot the device and use USB, but with this applied, I cannot wake
>>> from sleep.  If I revert this, the system wakes from sleep again.
>>
>> I just tried linux-next without this patch on iMX8MM EVK, suspend/resume
>> not work. Per my last test, it works before. Not sure what changed in kernel.
>>
>> Which kernel are you using, any commit or git repo? I could try on imx8mm
>> evk and debug the issue you see.
> 
> I used kernel-next,
> git://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git
> commit 889bab4c367a0ef58208fd80fafa74bb6e2dca26 (tag: next-20210621)
> 
> I then applied the GPCv2 patch that Marek sent.  You were CC'd on the
> e-mail from Marek, but I can forward the patch to you if you can't
> find it.
> I tested his patch and I was able to suspend-to-RAM and resume.
> Once I was comfortable that it worked, I then applied your patch
> series for the blk-ctl.
> With the blk-ctl series applied, the suspend-resume stopped working.

Same here. I tested with linux-next-20210629 and as soon as I add the BLK-CTL driver and devicetree nodes, the resume after suspend causes a lockup each time.
Marek Vasut June 30, 2021, 4:28 p.m. UTC | #5
On 6/30/21 4:46 PM, Frieder Schrempf wrote:
> On 30.06.21 14:09, Adam Ford wrote:
>> On Wed, Jun 30, 2021 at 4:34 AM Peng Fan (OSS) <peng.fan@oss.nxp.com> wrote:
>>>
>>>> Subject: Re: [PATCH V8 0/4] soc: imx: add i.MX BLK-CTL support
>>>>
>>>> On Tue, Jun 29, 2021 at 1:56 AM Peng Fan (OSS) <peng.fan@oss.nxp.com>
>>>> wrote:
>>>>>
>>>>> From: Peng Fan <peng.fan@nxp.com>
>>>>>
>>>>> V8:
>>>>> Revert one change in v7, force goto disable_clk for handshake when
>>>>> power on in patch 3 One minor update to use if{} else {}, not if{};
>>>>> if{}; in patch 3 Typo Hankshake->Handshake
>>>>>
>>>> I am using ATF, branch lf_v2.4, from the NXP code aurora repo with U-Boot
>>>> v2021.07-rc5
>>>>
>>>> I applied this patch against linux-next, I applied the pgc patches [1], and the
>>>> suggested power-domains to the otg1 and otg2 nodes.
>>>> I am able to boot the device and use USB, but with this applied, I cannot wake
>>>> from sleep.  If I revert this, the system wakes from sleep again.
>>>
>>> I just tried linux-next without this patch on iMX8MM EVK, suspend/resume
>>> not work. Per my last test, it works before. Not sure what changed in kernel.
>>>
>>> Which kernel are you using, any commit or git repo? I could try on imx8mm
>>> evk and debug the issue you see.
>>
>> I used kernel-next,
>> git://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git
>> commit 889bab4c367a0ef58208fd80fafa74bb6e2dca26 (tag: next-20210621)
>>
>> I then applied the GPCv2 patch that Marek sent.  You were CC'd on the
>> e-mail from Marek, but I can forward the patch to you if you can't
>> find it.
>> I tested his patch and I was able to suspend-to-RAM and resume.
>> Once I was comfortable that it worked, I then applied your patch
>> series for the blk-ctl.
>> With the blk-ctl series applied, the suspend-resume stopped working.
> 
> Same here. I tested with linux-next-20210629 and as soon as I add the BLK-CTL driver and devicetree nodes, the resume after suspend causes a lockup each time.

btw do you have etnaviv enabled ?
Frieder Schrempf June 30, 2021, 5:20 p.m. UTC | #6
On 30.06.21 18:28, Marek Vasut wrote:
> On 6/30/21 4:46 PM, Frieder Schrempf wrote:
>> On 30.06.21 14:09, Adam Ford wrote:
>>> On Wed, Jun 30, 2021 at 4:34 AM Peng Fan (OSS) <peng.fan@oss.nxp.com> wrote:
>>>>
>>>>> Subject: Re: [PATCH V8 0/4] soc: imx: add i.MX BLK-CTL support
>>>>>
>>>>> On Tue, Jun 29, 2021 at 1:56 AM Peng Fan (OSS) <peng.fan@oss.nxp.com>
>>>>> wrote:
>>>>>>
>>>>>> From: Peng Fan <peng.fan@nxp.com>
>>>>>>
>>>>>> V8:
>>>>>> Revert one change in v7, force goto disable_clk for handshake when
>>>>>> power on in patch 3 One minor update to use if{} else {}, not if{};
>>>>>> if{}; in patch 3 Typo Hankshake->Handshake
>>>>>>
>>>>> I am using ATF, branch lf_v2.4, from the NXP code aurora repo with U-Boot
>>>>> v2021.07-rc5
>>>>>
>>>>> I applied this patch against linux-next, I applied the pgc patches [1], and the
>>>>> suggested power-domains to the otg1 and otg2 nodes.
>>>>> I am able to boot the device and use USB, but with this applied, I cannot wake
>>>>> from sleep.  If I revert this, the system wakes from sleep again.
>>>>
>>>> I just tried linux-next without this patch on iMX8MM EVK, suspend/resume
>>>> not work. Per my last test, it works before. Not sure what changed in kernel.
>>>>
>>>> Which kernel are you using, any commit or git repo? I could try on imx8mm
>>>> evk and debug the issue you see.
>>>
>>> I used kernel-next,
>>> git://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git
>>> commit 889bab4c367a0ef58208fd80fafa74bb6e2dca26 (tag: next-20210621)
>>>
>>> I then applied the GPCv2 patch that Marek sent.  You were CC'd on the
>>> e-mail from Marek, but I can forward the patch to you if you can't
>>> find it.
>>> I tested his patch and I was able to suspend-to-RAM and resume.
>>> Once I was comfortable that it worked, I then applied your patch
>>> series for the blk-ctl.
>>> With the blk-ctl series applied, the suspend-resume stopped working.
>>
>> Same here. I tested with linux-next-20210629 and as soon as I add the BLK-CTL driver and devicetree nodes, the resume after suspend causes a lockup each time.
> 
> btw do you have etnaviv enabled ?

yes, but I can try without and see if it's related.
Frieder Schrempf July 1, 2021, 7:32 a.m. UTC | #7
On 30.06.21 19:20, Frieder Schrempf wrote:
> On 30.06.21 18:28, Marek Vasut wrote:
>> On 6/30/21 4:46 PM, Frieder Schrempf wrote:
>>> On 30.06.21 14:09, Adam Ford wrote:
>>>> On Wed, Jun 30, 2021 at 4:34 AM Peng Fan (OSS) <peng.fan@oss.nxp.com> wrote:
>>>>>
>>>>>> Subject: Re: [PATCH V8 0/4] soc: imx: add i.MX BLK-CTL support
>>>>>>
>>>>>> On Tue, Jun 29, 2021 at 1:56 AM Peng Fan (OSS) <peng.fan@oss.nxp.com>
>>>>>> wrote:
>>>>>>>
>>>>>>> From: Peng Fan <peng.fan@nxp.com>
>>>>>>>
>>>>>>> V8:
>>>>>>> Revert one change in v7, force goto disable_clk for handshake when
>>>>>>> power on in patch 3 One minor update to use if{} else {}, not if{};
>>>>>>> if{}; in patch 3 Typo Hankshake->Handshake
>>>>>>>
>>>>>> I am using ATF, branch lf_v2.4, from the NXP code aurora repo with U-Boot
>>>>>> v2021.07-rc5
>>>>>>
>>>>>> I applied this patch against linux-next, I applied the pgc patches [1], and the
>>>>>> suggested power-domains to the otg1 and otg2 nodes.
>>>>>> I am able to boot the device and use USB, but with this applied, I cannot wake
>>>>>> from sleep.  If I revert this, the system wakes from sleep again.
>>>>>
>>>>> I just tried linux-next without this patch on iMX8MM EVK, suspend/resume
>>>>> not work. Per my last test, it works before. Not sure what changed in kernel.
>>>>>
>>>>> Which kernel are you using, any commit or git repo? I could try on imx8mm
>>>>> evk and debug the issue you see.
>>>>
>>>> I used kernel-next,
>>>> git://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git
>>>> commit 889bab4c367a0ef58208fd80fafa74bb6e2dca26 (tag: next-20210621)
>>>>
>>>> I then applied the GPCv2 patch that Marek sent.  You were CC'd on the
>>>> e-mail from Marek, but I can forward the patch to you if you can't
>>>> find it.
>>>> I tested his patch and I was able to suspend-to-RAM and resume.
>>>> Once I was comfortable that it worked, I then applied your patch
>>>> series for the blk-ctl.
>>>> With the blk-ctl series applied, the suspend-resume stopped working.
>>>
>>> Same here. I tested with linux-next-20210629 and as soon as I add the BLK-CTL driver and devicetree nodes, the resume after suspend causes a lockup each time.
>>
>> btw do you have etnaviv enabled ?
> 
> yes, but I can try without and see if it's related.

It looks like the issue is not GPU-related. It appears once I add the pgc_dispmix, pgc_mipi and dispmix_blk_ctl nodes to the dt (even without any users, so lcdif and dsim are disabled). Once I remove the three nodes the issue is gone.
Peng Fan July 2, 2021, 3:24 a.m. UTC | #8
All,

> Subject: Re: [PATCH V8 0/4] soc: imx: add i.MX BLK-CTL support
> 
> On 30.06.21 19:20, Frieder Schrempf wrote:
> > On 30.06.21 18:28, Marek Vasut wrote:
> >> On 6/30/21 4:46 PM, Frieder Schrempf wrote:
> >>> On 30.06.21 14:09, Adam Ford wrote:
> >>>> On Wed, Jun 30, 2021 at 4:34 AM Peng Fan (OSS)
> <peng.fan@oss.nxp.com> wrote:
> >>>>>
> >>>>>> Subject: Re: [PATCH V8 0/4] soc: imx: add i.MX BLK-CTL support
> >>>>>>
> >>>>>> On Tue, Jun 29, 2021 at 1:56 AM Peng Fan (OSS)
> >>>>>> <peng.fan@oss.nxp.com>
> >>>>>> wrote:
> >>>>>>>
> >>>>>>> From: Peng Fan <peng.fan@nxp.com>
> >>>>>>>
> >>>>>>> V8:
> >>>>>>> Revert one change in v7, force goto disable_clk for handshake
> >>>>>>> when power on in patch 3 One minor update to use if{} else {},
> >>>>>>> not if{}; if{}; in patch 3 Typo Hankshake->Handshake
> >>>>>>>
> >>>>>> I am using ATF, branch lf_v2.4, from the NXP code aurora repo
> >>>>>> with U-Boot
> >>>>>> v2021.07-rc5
> >>>>>>
> >>>>>> I applied this patch against linux-next, I applied the pgc
> >>>>>> patches [1], and the suggested power-domains to the otg1 and otg2
> nodes.
> >>>>>> I am able to boot the device and use USB, but with this applied,
> >>>>>> I cannot wake from sleep.  If I revert this, the system wakes from
> sleep again.
> >>>>>
> >>>>> I just tried linux-next without this patch on iMX8MM EVK,
> >>>>> suspend/resume not work. Per my last test, it works before. Not sure
> what changed in kernel.
> >>>>>
> >>>>> Which kernel are you using, any commit or git repo? I could try on
> >>>>> imx8mm evk and debug the issue you see.
> >>>>
> >>>> I used kernel-next,
> >>>> git://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git
> >>>> commit 889bab4c367a0ef58208fd80fafa74bb6e2dca26 (tag:
> >>>> next-20210621)
> >>>>
> >>>> I then applied the GPCv2 patch that Marek sent.  You were CC'd on
> >>>> the e-mail from Marek, but I can forward the patch to you if you
> >>>> can't find it.
> >>>> I tested his patch and I was able to suspend-to-RAM and resume.
> >>>> Once I was comfortable that it worked, I then applied your patch
> >>>> series for the blk-ctl.
> >>>> With the blk-ctl series applied, the suspend-resume stopped working.
> >>>
> >>> Same here. I tested with linux-next-20210629 and as soon as I add the
> BLK-CTL driver and devicetree nodes, the resume after suspend causes a
> lockup each time.
> >>
> >> btw do you have etnaviv enabled ?
> >
> > yes, but I can try without and see if it's related.
> 
> It looks like the issue is not GPU-related. It appears once I add the
> pgc_dispmix, pgc_mipi and dispmix_blk_ctl nodes to the dt (even without any
> users, so lcdif and dsim are disabled). Once I remove the three nodes the
> issue is gone.


I have an updated code here:
https://github.com/MrVan/linux/tree/linux-next-master-628-blk-ctl-test

Only have blk-ctl,gpc,pd update. Please help test with applying your
local patches with some peripherals enabled.

I tested the upper code with suspend/resume with uart wakeup,
it not hang anymore.

Thanks,
Peng.
Frieder Schrempf July 5, 2021, 10:45 a.m. UTC | #9
On 02.07.21 05:24, Peng Fan wrote:
> All,
> 
>> Subject: Re: [PATCH V8 0/4] soc: imx: add i.MX BLK-CTL support
>>
>> On 30.06.21 19:20, Frieder Schrempf wrote:
>>> On 30.06.21 18:28, Marek Vasut wrote:
>>>> On 6/30/21 4:46 PM, Frieder Schrempf wrote:
>>>>> On 30.06.21 14:09, Adam Ford wrote:
>>>>>> On Wed, Jun 30, 2021 at 4:34 AM Peng Fan (OSS)
>> <peng.fan@oss.nxp.com> wrote:
>>>>>>>
>>>>>>>> Subject: Re: [PATCH V8 0/4] soc: imx: add i.MX BLK-CTL support
>>>>>>>>
>>>>>>>> On Tue, Jun 29, 2021 at 1:56 AM Peng Fan (OSS)
>>>>>>>> <peng.fan@oss.nxp.com>
>>>>>>>> wrote:
>>>>>>>>>
>>>>>>>>> From: Peng Fan <peng.fan@nxp.com>
>>>>>>>>>
>>>>>>>>> V8:
>>>>>>>>> Revert one change in v7, force goto disable_clk for handshake
>>>>>>>>> when power on in patch 3 One minor update to use if{} else {},
>>>>>>>>> not if{}; if{}; in patch 3 Typo Hankshake->Handshake
>>>>>>>>>
>>>>>>>> I am using ATF, branch lf_v2.4, from the NXP code aurora repo
>>>>>>>> with U-Boot
>>>>>>>> v2021.07-rc5
>>>>>>>>
>>>>>>>> I applied this patch against linux-next, I applied the pgc
>>>>>>>> patches [1], and the suggested power-domains to the otg1 and otg2
>> nodes.
>>>>>>>> I am able to boot the device and use USB, but with this applied,
>>>>>>>> I cannot wake from sleep.  If I revert this, the system wakes from
>> sleep again.
>>>>>>>
>>>>>>> I just tried linux-next without this patch on iMX8MM EVK,
>>>>>>> suspend/resume not work. Per my last test, it works before. Not sure
>> what changed in kernel.
>>>>>>>
>>>>>>> Which kernel are you using, any commit or git repo? I could try on
>>>>>>> imx8mm evk and debug the issue you see.
>>>>>>
>>>>>> I used kernel-next,
>>>>>> git://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git
>>>>>> commit 889bab4c367a0ef58208fd80fafa74bb6e2dca26 (tag:
>>>>>> next-20210621)
>>>>>>
>>>>>> I then applied the GPCv2 patch that Marek sent.  You were CC'd on
>>>>>> the e-mail from Marek, but I can forward the patch to you if you
>>>>>> can't find it.
>>>>>> I tested his patch and I was able to suspend-to-RAM and resume.
>>>>>> Once I was comfortable that it worked, I then applied your patch
>>>>>> series for the blk-ctl.
>>>>>> With the blk-ctl series applied, the suspend-resume stopped working.
>>>>>
>>>>> Same here. I tested with linux-next-20210629 and as soon as I add the
>> BLK-CTL driver and devicetree nodes, the resume after suspend causes a
>> lockup each time.
>>>>
>>>> btw do you have etnaviv enabled ?
>>>
>>> yes, but I can try without and see if it's related.
>>
>> It looks like the issue is not GPU-related. It appears once I add the
>> pgc_dispmix, pgc_mipi and dispmix_blk_ctl nodes to the dt (even without any
>> users, so lcdif and dsim are disabled). Once I remove the three nodes the
>> issue is gone.
> 
> 
> I have an updated code here:
> https://eur04.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2FMrVan%2Flinux%2Ftree%2Flinux-next-master-628-blk-ctl-test&amp;data=04%7C01%7Cfrieder.schrempf%40kontron.de%7C1ff517847da04f73218f08d93d08effc%7C8c9d3c973fd941c8a2b1646f3942daf1%7C0%7C0%7C637607930865259413%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&amp;sdata=p5xGgid7lnfEpGK5TbljHrn0B1b0oF%2FO39G81UyXhyY%3D&amp;reserved=0
> 
> Only have blk-ctl,gpc,pd update. Please help test with applying your
> local patches with some peripherals enabled.
> 
> I tested the upper code with suspend/resume with uart wakeup,
> it not hang anymore.

Sorry, but in my case I can't boot this version at all. It always locks up at boot.
Benjamin Gaignard July 7, 2021, 8:11 p.m. UTC | #10
Hi Peng,

I have try to use this series to implement BLK-CTL for IMX8MQ and to test it with G1 and G2 VPUs.
You can find the code here:
https://gitlab.collabora.com/benjamin.gaignard/for-upstream/-/commits/control_block_imx8mq

It seems that IMX8MQ requires to set 'fuses' registers to enable the VPUs, I have added that in your code.

Unfortunately that doesn't work, the VPUs are blocked like if they were never reset.
Note that use syscon to manage the reset is working fine.
Since IMX8MQ control block seems lightly different than for IMX8MM, would you mind to add the support for it in your next series ?

Regards,
Benjamin