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

Adam Ford aford173 at gmail.com
Tue Jun 29 06:26:20 PDT 2021


On Tue, Jun 29, 2021 at 1:56 AM Peng Fan (OSS) <peng.fan at oss.nxp.com> wrote:
>
> From: Peng Fan <peng.fan at 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 at 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 at 0/30000000.bus/303a0000.gpc/imx-pgc-domain.7
 suspended                  0
    /devices/platform/soc at 0/30000000.bus/303a0000.gpc/imx-pgc-domain.8
 suspended                  0
    /devices/platform/soc at 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 at 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 at 0/30000000.bus/303a0000.gpc/imx-pgc-domain.5
 suspended                  0
usb-otg2                        on
            0
    /devices/platform/soc at 0/32c00000.bus/32e50000.usb   active
            0
usb-otg1                        on
            0
    /devices/platform/soc at 0/32c00000.bus/32e40000.usb   active
            0
pcie                            off-0
            0
hsiomix                         on
            0
    /devices/platform/soc at 0/30000000.bus/303a0000.gpc/imx-pgc-domain.1
 suspended                  0
    /devices/platform/soc at 0/30000000.bus/303a0000.gpc/imx-pgc-domain.2
 active                     0
    /devices/platform/soc at 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 at 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 at 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 at 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
>



More information about the linux-arm-kernel mailing list