From patchwork Wed Jan 1 16:31:34 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Michael Nazzareno Trimarchi X-Patchwork-Id: 1003 Return-Path: X-Original-To: linux-amarula@patchwork.amarulasolutions.com Delivered-To: linux-amarula@patchwork.amarulasolutions.com Received: from mail-wr1-f72.google.com (mail-wr1-f72.google.com [209.85.221.72]) by ganimede.amarulasolutions.com (Postfix) with ESMTPS id CB7893F1C9 for ; Wed, 1 Jan 2020 17:31:40 +0100 (CET) Received: by mail-wr1-f72.google.com with SMTP id z10sf16325226wrt.21 for ; Wed, 01 Jan 2020 08:31:40 -0800 (PST) ARC-Seal: i=2; a=rsa-sha256; t=1577896300; cv=pass; d=google.com; s=arc-20160816; b=s6kGPKvZiIzEZ9xfsM8NY35udI9yB+JE9Vo3EEv4WjhLM9mgbvm464maavmGEIzry2 3nzIIBFNHeSIbpR/77Rsgg+A7st6ipSbCxPoGG5PoQz+fO+MpbE6IgcxQkAHJdqv0XCZ nkNRDLnz1z/Zt0mmAH19xh2zaiy40wYxeQ953jjWEhL5ljnKjMIqCIoYxYM8l6JcPSF1 QUbMuBXsNrLJQjcI/gVfYqNcqJyhq2Fp0FHqT1PTae14L9fvED9zWexgZjA4DsP11Hya ZvoxSgje5ohhUsZ/s5Ry3ogIzd0ynGAJFYFB23GzaJdDSlWrrmXKnnlaVU/0/fhG8EMZ i4GQ== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-unsubscribe:list-archive:list-help:list-post:list-id :mailing-list:precedence:references:in-reply-to:message-id:date :subject:cc:to:from:mime-version:dkim-signature; bh=LiDYQeTXEA0yO1RVK5Kx+jrjyuSYj4KwjmAMrV7XBTU=; b=puqJeQEECoaAVfoAVqsi/d862Za5zmESF0jO4QPlLBTiBdJdTFuu5vIwnnHCav29XS SIbCjJxqsGo5l05Up9aCs328mtsSBrKq/ZbX9CdpkdLq/7/6xei06qibOKI7DwvLGzHq bGNPMnYZ8dZ1zESdCDncDpOBAI8ocxCIeOaGd/xNjv/Tdp8EjayYSjN/gAhW+vV4sS1T 1D65IsAqVKeBuQyQEkts81kT9cUcQfTOrqFlfjZ6p31zqF0UQ0H2Bmz/2qUhB0l7DVbs gqL9cRhcwlEMWchIj09FiZLcZKrywTiJWMnlh6DwP+Wv68OvIZ3b68GQ5+cpDcn/NXay n5nw== ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@amarulasolutions.com header.s=google header.b=XrhJoKJb; spf=pass (google.com: domain of michael@amarulasolutions.com designates 209.85.220.65 as permitted sender) smtp.mailfrom=michael@amarulasolutions.com DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amarulasolutions.com; s=google; h=mime-version:from:to:cc:subject:date:message-id:in-reply-to :references:x-original-sender:x-original-authentication-results :precedence:mailing-list:list-id:list-post:list-help:list-archive :list-unsubscribe; bh=LiDYQeTXEA0yO1RVK5Kx+jrjyuSYj4KwjmAMrV7XBTU=; b=cyvjCIXbXRpxnBTKX3Jfe4H/GarH8EPQXeKFFPfWL+On0O9XQ1dYkg2chzT6d1rRSI 1mn4rcWGhU0CyT2qHRvP11TNx4X3P1WU9hOV8dOf8z3huKMQ6HwyBBir/OtVBLu4Qj5n wxGj+Tj7b63B0Vuc068weSAL+5SU9pgYewJtY= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:from:to:cc:subject:date:message-id :in-reply-to:references:x-original-sender :x-original-authentication-results:precedence:mailing-list:list-id :x-spam-checked-in-group:list-post:list-help:list-archive :list-unsubscribe; bh=LiDYQeTXEA0yO1RVK5Kx+jrjyuSYj4KwjmAMrV7XBTU=; b=WrDPXhBx24FFf2TyXXSFk7qrOC2xnDblp4r2g71Y8uh1CXFlSy9NoTDxoNSCrAp268 /g5/RaZ8e2e/akZ5rTw8Qc5kJoQBRHtgWvzLzkHq9q8JV29Ek8hRDKmIFdQTZsxryOau 5oaacuE1kctHMjIf2bVUS5lUjm7jb6mAK5/SdaKCvjJdMBkw1PoPvmsXOmPaLqZaSpsx +96O3ApOVY0K+U0/HXsoU1+podCiWDWglKnQTCzkA77kniPV7HmIKXtDyxo+ma4eTz8V bqWJDABXjyImTthFGeeN27gy7/IjlkHg8MhVVh8+MYir7Mj4CBu+YZBkQGx8aZIG+ctY r1DA== X-Gm-Message-State: APjAAAUWGUcWp9uejQyQNVVWwTEetKwgfKPY3hjPtp82o98dpa6OAfHr ce3zYhkwea7xnHlsIT16klfR5zNA X-Google-Smtp-Source: APXvYqxIEYi9B9OHYKKMkDZ4CPYVczNB0g50c6AJehWo2uQtZ8Y/cMksnO+GmX0xMiUTalqgIE79Bw== X-Received: by 2002:a1c:3dc3:: with SMTP id k186mr9724067wma.95.1577896300558; Wed, 01 Jan 2020 08:31:40 -0800 (PST) MIME-Version: 1.0 X-BeenThere: linux-amarula@amarulasolutions.com Received: by 2002:adf:eb4c:: with SMTP id u12ls9669152wrn.6.gmail; Wed, 01 Jan 2020 08:31:40 -0800 (PST) X-Received: by 2002:adf:f6c1:: with SMTP id y1mr83840631wrp.17.1577896299883; Wed, 01 Jan 2020 08:31:39 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1577896299; cv=none; d=google.com; s=arc-20160816; b=ToLuwz65NqEk6JU5/ayKhhSuVtYbdEOU6sjAmfDHqW7v13DIlHa6XCEG4qF7vSYK+w UlyY//18YcgeqZg1HAAdXuJkr0driO0YT5LK9x6csUoYtq48KhEGcjIP+RgvGZ2uI1pF 5Xo0Cnb1cIk3GFKAXVyWCAGOBhllzU+GWQRcYXTVkp/yMt6MYkc84KIOhjAtLT8blXlI sodq8Ptnq3bwcXbAiHI8KBJw+RA3D2SNL4dplnlpzp8gvp4IT0lcVlovMlyWZhfNtlgb C+DLxHOWxhwFASws3Ib6eTHyk7iApUWazM0n7dXpg34SQ/K60oJeiX9wdTtn9rXfV6P7 Lzug== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=P5gcp8jIwlMlhfhGOxLkJPAb88nDGX2ujZMaHgP9/W0=; b=uaAM03J/UOurFuZj3AtyKWdEwaLBD0VlAiUGjwJZuoi4YCeiZ288teyWuI++NpMS7w 9nnqwSfv92nte0wBmjoikfXbkT1XxihN9OH3nv1Vqu1+1uC4cKbolYHUffjQgBpYwLVm 6R1E/ODfBjyIhtc7OPFo3Z9KHyrE0RmLYF+45aX6AJpI19b7ubkT2WYzz9yAsdDKIOqq i8LtDp+VH0RdVDqXXSQhkWSAH8qE0Gs4QYjPZ3WYbN5EqYAqCGm3it+LaYRqk8lkR12w kacABBv0lMgRfoOHRDUnE7EX8rbITHzCBSguUuWu948h2ktA2hzx2oRc/t15Oycuprl5 7aNw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@amarulasolutions.com header.s=google header.b=XrhJoKJb; spf=pass (google.com: domain of michael@amarulasolutions.com designates 209.85.220.65 as permitted sender) smtp.mailfrom=michael@amarulasolutions.com Received: from mail-sor-f65.google.com (mail-sor-f65.google.com. [209.85.220.65]) by mx.google.com with SMTPS id a20sor2488192wmj.24.2020.01.01.08.31.39 for (Google Transport Security); Wed, 01 Jan 2020 08:31:39 -0800 (PST) Received-SPF: pass (google.com: domain of michael@amarulasolutions.com designates 209.85.220.65 as permitted sender) client-ip=209.85.220.65; X-Received: by 2002:a1c:740b:: with SMTP id p11mr10763156wmc.78.1577896299551; Wed, 01 Jan 2020 08:31:39 -0800 (PST) Received: from panicking.lan (93-46-124-24.ip107.fastwebnet.it. [93.46.124.24]) by smtp.gmail.com with ESMTPSA id u13sm6108580wmd.36.2020.01.01.08.31.38 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 01 Jan 2020 08:31:39 -0800 (PST) From: Michael Trimarchi To: Shawn Guo Cc: Sascha Hauer , Pengutronix Kernel Team , NXP Linux Team , linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, Fabio Estevam , Rob Herring , Mark Rutland , linux-amarula@amarulasolutions.com Subject: [PATCH 1/3] soc: imx: gpcv2: add support for i.MX8MM SoC Date: Wed, 1 Jan 2020 17:31:34 +0100 Message-Id: <20200101163136.1586-2-michael@amarulasolutions.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20200101163136.1586-1-michael@amarulasolutions.com> References: <20200101163136.1586-1-michael@amarulasolutions.com> X-Original-Sender: michael@amarulasolutions.com X-Original-Authentication-Results: mx.google.com; dkim=pass header.i=@amarulasolutions.com header.s=google header.b=XrhJoKJb; spf=pass (google.com: domain of michael@amarulasolutions.com designates 209.85.220.65 as permitted sender) smtp.mailfrom=michael@amarulasolutions.com Content-Type: text/plain; charset="UTF-8" Precedence: list Mailing-list: list linux-amarula@amarulasolutions.com; contact linux-amarula+owners@amarulasolutions.com List-ID: X-Spam-Checked-In-Group: linux-amarula@amarulasolutions.com X-Google-Group-Id: 476853432473 List-Post: , List-Help: , List-Archive: List-Unsubscribe: , The GPCv2 on the Freescale i.MX8MM SoC works in the same way as the GPCv2 on the i.MX8MQ, with a slight different mapping. Signed-off-by: Michael Trimarchi Reported-by: kbuild test robot --- .../bindings/power/fsl,imx-gpcv2.txt | 4 +- drivers/soc/imx/gpcv2.c | 110 ++++++++++++++++++ 2 files changed, 113 insertions(+), 1 deletion(-) diff --git a/Documentation/devicetree/bindings/power/fsl,imx-gpcv2.txt b/Documentation/devicetree/bindings/power/fsl,imx-gpcv2.txt index 61649202f6f5..fde651cd06d0 100644 --- a/Documentation/devicetree/bindings/power/fsl,imx-gpcv2.txt +++ b/Documentation/devicetree/bindings/power/fsl,imx-gpcv2.txt @@ -9,6 +9,7 @@ Required properties: - compatible: Should be one of: - "fsl,imx7d-gpc" - "fsl,imx8mq-gpc" + - "fsl,imx8mm-gpc" - reg: should be register base and length as documented in the datasheet @@ -25,7 +26,8 @@ Required properties: - reg: Power domain index. Valid values are defined in include/dt-bindings/power/imx7-power.h for fsl,imx7d-gpc and - include/dt-bindings/power/imx8m-power.h for fsl,imx8mq-gpc + include/dt-bindings/power/imx8m-power.h for fsl,imx8mq-gpc and + include/dt-bindings/power/imx8mm-power.h for fsl,imx8mm-gpc - #power-domain-cells: Should be 0 diff --git a/drivers/soc/imx/gpcv2.c b/drivers/soc/imx/gpcv2.c index b0dffb06c05d..d3c012a61c11 100644 --- a/drivers/soc/imx/gpcv2.c +++ b/drivers/soc/imx/gpcv2.c @@ -16,6 +16,7 @@ #include #include #include +#include #define GPC_LPCR_A_CORE_BSC 0x000 @@ -41,6 +42,20 @@ #define IMX8M_PCIE1_A53_DOMAIN BIT(3) #define IMX8M_MIPI_A53_DOMAIN BIT(2) +#define IMX8MM_VPU_H1_A53_DOMAIN BIT(15) +#define IMX8MM_VPU_G2_A53_DOMAIN BIT(14) +#define IMX8MM_VPU_G1_A53_DOMAIN BIT(13) +#define IMX8MM_DISPMIX_A53_DOMAIN BIT(12) +#define IMX8MM_GPU_3D_A53_DOMAIN BIT(11) +#define IMX8MM_VPUMIX_A53_DOMAIN BIT(10) +#define IMX8MM_GPUMIX_A53_DOMAIN BIT(9) +#define IMX8MM_GPU_2D_A53_DOMAIN BIT(8) +#define IMX8MM_DDR1_A53_DOMAIN BIT(7) +#define IMX8MM_OTG2_A53_DOMAIN BIT(5) +#define IMX8MM_OTG1_A53_DOMAIN BIT(4) +#define IMX8MM_PCIE1_A53_DOMAIN BIT(3) +#define IMX8MM_MIPI_A53_DOMAIN BIT(2) + #define GPC_PU_PGC_SW_PUP_REQ 0x0f8 #define GPC_PU_PGC_SW_PDN_REQ 0x104 @@ -64,6 +79,20 @@ #define IMX8M_PCIE1_SW_Pxx_REQ BIT(1) #define IMX8M_MIPI_SW_Pxx_REQ BIT(0) +#define IMX8MM_VPU_H1_SW_Pxx_REQ BIT(13) +#define IMX8MN_VPU_G2_SW_Pxx_REQ BIT(12) +#define IMX8MN_VPU_G1_SW_Pxx_REQ BIT(11) +#define IMX8MM_DISPMIX_SW_Pxx_REQ BIT(10) +#define IMX8MM_GPU_3D_SW_Pxx_REQ BIT(9) +#define IMX8MM_VPUMIX_SW_Pxx_REQ BIT(8) +#define IMX8MM_GPUMIX_SW_Pxx_REQ BIT(7) +#define IMX8MM_GPU_2D_SW_Pxx_REQ BIT(6) +#define IMX8MM_DDR1_SW_Pxx_REQ BIT(5) +#define IMX8MM_OTG2_SW_Pxx_REQ BIT(3) +#define IMX8MM_OTG1_SW_Pxx_REQ BIT(2) +#define IMX8MM_PCIE1_SW_Pxx_REQ BIT(1) +#define IMX8MM_MIPI_SW_Pxx_REQ BIT(0) + #define GPC_M4_PU_PDN_FLG 0x1bc #define GPC_PU_PWRHSK 0x1fc @@ -94,6 +123,20 @@ #define IMX8M_PGC_MIPI_CSI2 28 #define IMX8M_PGC_PCIE2 29 +#define IMX8MM_PGC_MIPI 16 +#define IMX8MM_PGC_PCIE1 17 +#define IMX8MM_PGC_OTG1 18 +#define IMX8MM_PGC_OTG2 19 +#define IMX8MM_PGC_DDR1 21 +#define IMX8MM_PGC_GPU_2D 22 +#define IMX8MM_PGC_GPUMIX 17 +#define IMX8MM_PGC_VPUMIX 18 +#define IMX8MM_PGC_GPU_3D 19 +#define IMX8MM_PGC_DSPMIX 20 +#define IMX8MM_PGC_VPU_G1 21 +#define IMX8MM_PGC_VPU_G2 22 +#define IMX8MM_PGC_VPU_H1 22 + #define GPC_PGC_CTRL(n) (0x800 + (n) * 0x40) #define GPC_PGC_SR(n) (GPC_PGC_CTRL(n) + 0xc) @@ -442,6 +485,72 @@ static const struct imx_pgc_domain_data imx8m_pgc_domain_data = { .reg_access_table = &imx8m_access_table, }; +static const struct imx_pgc_domain imx8mm_pgc_domains[] = { + [IMX8MM_POWER_DOMAIN_USB_OTG1] = { + .genpd = { + .name = "usb-otg1", + }, + .bits = { + .pxx = IMX8MM_OTG1_SW_Pxx_REQ, + .map = IMX8MM_OTG1_A53_DOMAIN, + }, + .pgc = IMX8MM_PGC_OTG1, + }, + + [IMX8MM_POWER_DOMAIN_USB_OTG2] = { + .genpd = { + .name = "usb-otg2", + }, + .bits = { + .pxx = IMX8MM_OTG2_SW_Pxx_REQ, + .map = IMX8MM_OTG2_A53_DOMAIN, + }, + .pgc = IMX8MM_PGC_OTG2, + }, +}; + +static const struct regmap_range imx8mm_yes_ranges[] = { + regmap_reg_range(GPC_LPCR_A_CORE_BSC, + GPC_PU_PWRHSK), + regmap_reg_range(GPC_PGC_CTRL(IMX8MM_PGC_MIPI), + GPC_PGC_SR(IMX8MM_PGC_MIPI)), + regmap_reg_range(GPC_PGC_CTRL(IMX8MM_PGC_PCIE1), + GPC_PGC_SR(IMX8MM_PGC_PCIE1)), + regmap_reg_range(GPC_PGC_CTRL(IMX8MM_PGC_OTG1), + GPC_PGC_SR(IMX8MM_PGC_OTG1)), + regmap_reg_range(GPC_PGC_CTRL(IMX8MM_PGC_OTG2), + GPC_PGC_SR(IMX8MM_PGC_OTG2)), + regmap_reg_range(GPC_PGC_CTRL(IMX8MM_PGC_DDR1), + GPC_PGC_SR(IMX8MM_PGC_DDR1)), + regmap_reg_range(GPC_PGC_CTRL(IMX8MM_PGC_GPU_2D), + GPC_PGC_SR(IMX8MM_PGC_GPU_2D)), + regmap_reg_range(GPC_PGC_CTRL(IMX8MM_PGC_GPUMIX), + GPC_PGC_SR(IMX8MM_PGC_GPUMIX)), + regmap_reg_range(GPC_PGC_CTRL(IMX8MM_PGC_VPUMIX), + GPC_PGC_SR(IMX8MM_PGC_VPUMIX)), + regmap_reg_range(GPC_PGC_CTRL(IMX8MM_PGC_GPU_3D), + GPC_PGC_SR(IMX8MM_PGC_GPU_3D)), + regmap_reg_range(GPC_PGC_CTRL(IMX8MM_PGC_DSPMIX), + GPC_PGC_SR(IMX8MM_PGC_DSPMIX)), + regmap_reg_range(GPC_PGC_CTRL(IMX8MM_PGC_VPU_G1), + GPC_PGC_SR(IMX8MM_PGC_VPU_G1)), + regmap_reg_range(GPC_PGC_CTRL(IMX8MM_PGC_VPU_G2), + GPC_PGC_SR(IMX8MM_PGC_VPU_G2)), + regmap_reg_range(GPC_PGC_CTRL(IMX8MM_PGC_VPU_H1), + GPC_PGC_SR(IMX8MM_PGC_VPU_H1)), +}; + +static const struct regmap_access_table imx8mm_access_table = { + .yes_ranges = imx8mm_yes_ranges, + .n_yes_ranges = ARRAY_SIZE(imx8mm_yes_ranges), +}; + +static const struct imx_pgc_domain_data imx8mm_pgc_domain_data = { + .domains = imx8mm_pgc_domains, + .domains_num = ARRAY_SIZE(imx8mm_pgc_domains), + .reg_access_table = &imx8mm_access_table, +}; + static int imx_pgc_get_clocks(struct imx_pgc_domain *domain) { int i, ret; @@ -641,6 +750,7 @@ static int imx_gpcv2_probe(struct platform_device *pdev) static const struct of_device_id imx_gpcv2_dt_ids[] = { { .compatible = "fsl,imx7d-gpc", .data = &imx7_pgc_domain_data, }, { .compatible = "fsl,imx8mq-gpc", .data = &imx8m_pgc_domain_data, }, + { .compatible = "fsl,imx8mm-gpc", .data = &imx8mm_pgc_domain_data, }, { } };