From patchwork Sun May 9 14:47:08 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Adam Ford X-Patchwork-Id: 12246419 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-13.7 required=3.0 tests=BAYES_00, DKIM_ADSP_CUSTOM_MED,DKIM_SIGNED,DKIM_VALID,FREEMAIL_FORGED_FROMDOMAIN, FREEMAIL_FROM,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER, INCLUDES_PATCH,MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id A0FB6C433B4 for ; Sun, 9 May 2021 14:49:21 +0000 (UTC) Received: from desiato.infradead.org (desiato.infradead.org [90.155.92.199]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 132A2613C2 for ; Sun, 9 May 2021 14:49:21 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 132A2613C2 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=gmail.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=desiato.20200630; h=Sender:Content-Transfer-Encoding :Content-Type:List-Subscribe:List-Help:List-Post:List-Archive: List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To:Message-Id:Date: Subject:Cc:To:From:Reply-To:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=th2d8Yh7ZoKIMV23410tzjR+zEULBF2I9BAzCSY5i0I=; b=TFxI6g7sH3X4VgbL/+YYHgdG2 Im+cfSkRRW5FyuAMCYPzW8CX7Eh5tzrEnWigzwABVfICPv1H/pWHsrNFg345yI6AvBoA0caYVb2Z6 vO8Cl1lHK8+1jCp9Dys6OaRfCTxmwMWBv7BRMXJNSzWl1vXlz0DQzESkK3U6uhSWL5Q+Cu6PEVIAo m+vFY+dk5ngi1hFp/x0a1F+13BgGkwkLtGPXhQob8JX4H1NGNTCEkASiCfVZV+wL34TmQmXAcnXwp 7Payo4UZp04Dk0T03PaAIvSl+fYG/4V4rxKEPV2QDkHlBJVhAloRYzOgdiaY3nItnTRTf2eZf7ONa 2O4il6q4g==; Received: from localhost ([::1] helo=desiato.infradead.org) by desiato.infradead.org with esmtp (Exim 4.94 #2 (Red Hat Linux)) id 1lfkik-00BlRa-1c; Sun, 09 May 2021 14:47:50 +0000 Received: from bombadil.infradead.org ([2607:7c80:54:e::133]) by desiato.infradead.org with esmtps (Exim 4.94 #2 (Red Hat Linux)) id 1lfkiJ-00BlNc-VG for linux-arm-kernel@desiato.infradead.org; Sun, 09 May 2021 14:47:24 +0000 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=infradead.org; s=bombadil.20210309; h=Content-Transfer-Encoding: MIME-Version:References:In-Reply-To:Message-Id:Date:Subject:Cc:To:From:Sender :Reply-To:Content-Type:Content-ID:Content-Description; bh=tOmSoHd45k/En0UqK1OQagmHQENYt50xkIt6EPZ+HoE=; b=jH0LPhSxNSqTdvWVyxkA42AFgv 21kKh3BbDu83aXXAqm0SWQGqXq+uJMyB3Ac3xT2sT0eZ+taunKtRaSfzblPo6stix4qJySdHP4kj9 aaghxN+jnTTkh14/uqdwrnAywYxHk1GGpqrFLFmwCBWwApAyOOJZKhGjCkN9Ii5DY83WvaO5fWdsu L7ZwRmeIwmarX02XFH09qIF3OAx4p8TW3boIqaWUAXpOovUX/ibv72BKkYG7JmoV7MeUXU/6iRaU0 N5d+98tqUBFEX2gOKaG1i+V6Uy93Qjpavn9GPgQB/2M6QsVRN4qzMdh/pohvwfy8ihnppiY2jedG+ 5AnY7eYQ==; Received: from mail-il1-x12b.google.com ([2607:f8b0:4864:20::12b]) by bombadil.infradead.org with esmtps (Exim 4.94 #2 (Red Hat Linux)) id 1lfkiH-0080DT-2K for linux-arm-kernel@lists.infradead.org; Sun, 09 May 2021 14:47:22 +0000 Received: by mail-il1-x12b.google.com with SMTP id c3so11887056ils.5 for ; Sun, 09 May 2021 07:47:19 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=tOmSoHd45k/En0UqK1OQagmHQENYt50xkIt6EPZ+HoE=; b=BOWv2YMjx6KnqG3FinsOCz3ZE9uxNbcuDPEDQVlnWwyrWIQZ3Boy5mnZwMuzvm3sXO iusTpMgJQXC0PgoXccZmPSN2gwoNi6t5eYiAam0EfiN45k35rppklWzNwfhdO6MzuLEr l++kvSEPQjR2WFSdZDokrvforNgyGduoZoz2rfCKITgZhnXp7XOk+m0XSNygV99wEw8+ s4xQ2CDfN+AiDdOIRsojc3i5UEXok3RDHxsps1XswDSibFYIu8r63HX7hDNfnLVNMVZh 5wNO1eq4AMDMFH9zepGu/2y96TPWGb5T0WW3mtvnDyF+bguBFopK2Xo3qmFocxm0pHWW Hg8g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=tOmSoHd45k/En0UqK1OQagmHQENYt50xkIt6EPZ+HoE=; b=FDv4V9WZsaVxhnZz2dX+1tQk7N7Vz2+fKngZzz09E7i/gnYdwbUAfIypWhYz0Iyk7H 7K13/+x4JXPr6hTGo8rXC5G8DgWe77SlcEX6r1/sqNLnvLy7vQhusH9O3t3aoeXbnI9S D3Bo5dB1EebV9TKkLB5z52YMOjlBGyf33CRTHUqU3etPSH7vuhOpfcYdSmeE3ZzkFHqe JaDJbR3hi5nB1NT5Fv8uoyfmjNif/Rb01gBaMQ2T4vNpbi2fu+9WfnvA0Yiv4A7sjsel FstleNhLG73HsKm0M+BAiQLRst+HX5rsiEsAlOCBZ3Q7oNSmJvLYMKHxysSaHNE1YljX mttA== X-Gm-Message-State: AOAM531l6GZDl+XWEaWPSKhu7Rya7IzZJ5VpiGPZoYAzVJm50Fp/5ZBL YptJ5G6dM86hFwr3wfFM0LRdkMnjZK4I6A== X-Google-Smtp-Source: ABdhPJxn/XWKuVsA+82U1+/CUElRr0Gc3WQ/8n91DgaIjUMvlPtDoRIyi2EyBelNsxxDj3HnuDgodA== X-Received: by 2002:a92:c884:: with SMTP id w4mr17678068ilo.186.1620571638987; Sun, 09 May 2021 07:47:18 -0700 (PDT) Received: from aford-IdeaCentre-A730.lan ([2601:448:8400:9e8:18a0:bffb:ecae:3d39]) by smtp.gmail.com with ESMTPSA id d4sm6281759ilg.65.2021.05.09.07.47.18 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 09 May 2021 07:47:18 -0700 (PDT) From: Adam Ford To: linux-arm-kernel@lists.infradead.org Cc: Adam Ford , Krzysztof Kozlowski Subject: [RFC 1/4] soc: imx: gpcv2: add support for i.MX8MN power domains Date: Sun, 9 May 2021 09:47:08 -0500 Message-Id: <20210509144711.2192991-2-aford173@gmail.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20210509144711.2192991-1-aford173@gmail.com> References: <20210509144711.2192991-1-aford173@gmail.com> MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20210509_074721_130308_5F233B49 X-CRM114-Status: GOOD ( 16.12 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org This adds support for the power domains founds on i.MX8MN. The Nano has fewer domains than the Mini, and the access to some of these domains is different than that of the Mini, the Mini power domains cannot be reused. Signed-off-by: Adam Ford Acked-by: Krzysztof Kozlowski diff --git a/drivers/soc/imx/gpcv2.c b/drivers/soc/imx/gpcv2.c index 35bbb1bc5159..3120718e1dd7 100644 --- a/drivers/soc/imx/gpcv2.c +++ b/drivers/soc/imx/gpcv2.c @@ -20,6 +20,7 @@ #include #include #include +#include #define GPC_LPCR_A_CORE_BSC 0x000 @@ -58,6 +59,12 @@ #define IMX8MM_PCIE_A53_DOMAIN BIT(3) #define IMX8MM_MIPI_A53_DOMAIN BIT(2) +#define IMX8MN_DISPMIX_A53_DOMAIN BIT(12) +#define IMX8MN_GPUMIX_A53_DOMAIN BIT(9) +#define IMX8MN_DDR1_A53_DOMAIN BIT(7) +#define IMX8MN_OTG1_A53_DOMAIN BIT(4) +#define IMX8MN_MIPI_A53_DOMAIN BIT(2) + #define GPC_PU_PGC_SW_PUP_REQ 0x0f8 #define GPC_PU_PGC_SW_PDN_REQ 0x104 @@ -94,6 +101,12 @@ #define IMX8MM_PCIE_SW_Pxx_REQ BIT(1) #define IMX8MM_MIPI_SW_Pxx_REQ BIT(0) +#define IMX8MN_DISPMIX_SW_Pxx_REQ BIT(10) +#define IMX8MN_GPUMIX_SW_Pxx_REQ BIT(7) +#define IMX8MN_DDR1_SW_Pxx_REQ BIT(5) +#define IMX8MN_OTG1_SW_Pxx_REQ BIT(2) +#define IMX8MN_MIPI_SW_Pxx_REQ BIT(0) + #define GPC_M4_PU_PDN_FLG 0x1bc #define GPC_PU_PWRHSK 0x1fc @@ -116,6 +129,14 @@ #define IMX8MM_VPUMIX_HSK_PWRDNREQN BIT(8) #define IMX8MM_DISPMIX_HSK_PWRDNREQN BIT(7) #define IMX8MM_HSIO_HSK_PWRDNREQN (BIT(5) | BIT(6)) + +#define IMX8MN_GPUMIX_HSK_PWRDNACKN (BIT(29) | BIT(27)) +#define IMX8MN_DISPMIX_HSK_PWRDNACKN BIT(25) +#define IMX8MN_HSIO_HSK_PWRDNACKN BIT(23) +#define IMX8MN_GPUMIX_HSK_PWRDNREQN (BIT(11) | BIT(9)) +#define IMX8MN_DISPMIX_HSK_PWRDNREQN BIT(7) +#define IMX8MN_HSIO_HSK_PWRDNREQN BIT(5) + /* * The PGC offset values in Reference Manual * (Rev. 1, 01/2018 and the older ones) GPC chapter's @@ -152,6 +173,12 @@ #define IMX8MM_PGC_VPUG2 28 #define IMX8MM_PGC_VPUH1 29 +#define IMX8MN_PGC_MIPI 16 +#define IMX8MN_PGC_OTG1 18 +#define IMX8MN_PGC_DDR1 21 +#define IMX8MN_PGC_GPUMIX 23 +#define IMX8MN_PGC_DISPMIX 26 + #define GPC_PGC_CTRL(n) (0x800 + (n) * 0x40) #define GPC_PGC_SR(n) (GPC_PGC_CTRL(n) + 0xc) @@ -764,6 +791,71 @@ static const struct imx_pgc_domain_data imx8mm_pgc_domain_data = { .reg_access_table = &imx8mm_access_table, }; +static const struct imx_pgc_domain imx8mn_pgc_domains[] = { + [IMX8MN_POWER_DOMAIN_HSIOMIX] = { + .genpd = { + .name = "hsiomix", + }, + .bits = { + .pxx = 0, /* no power sequence control */ + .map = 0, /* no power sequence control */ + .hskreq = IMX8MN_HSIO_HSK_PWRDNREQN, + .hskack = IMX8MN_HSIO_HSK_PWRDNACKN, + }, + }, + + [IMX8MN_POWER_DOMAIN_OTG1] = { + .genpd = { + .name = "usb-otg1", + }, + .bits = { + .pxx = IMX8MN_OTG1_SW_Pxx_REQ, + .map = IMX8MN_OTG1_A53_DOMAIN, + }, + .pgc = IMX8MN_PGC_OTG1, + }, + + [IMX8MN_POWER_DOMAIN_GPUMIX] = { + .genpd = { + .name = "gpumix", + }, + .bits = { + .pxx = IMX8MN_GPUMIX_SW_Pxx_REQ, + .map = IMX8MN_GPUMIX_A53_DOMAIN, + .hskreq = IMX8MN_GPUMIX_HSK_PWRDNREQN, + .hskack = IMX8MN_GPUMIX_HSK_PWRDNACKN, + }, + .pgc = IMX8MN_PGC_GPUMIX, + }, +}; + +static const struct regmap_range imx8mn_yes_ranges[] = { + regmap_reg_range(GPC_LPCR_A_CORE_BSC, + GPC_PU_PWRHSK), + regmap_reg_range(GPC_PGC_CTRL(IMX8MN_PGC_MIPI), + GPC_PGC_SR(IMX8MN_PGC_MIPI)), + regmap_reg_range(GPC_PGC_CTRL(IMX8MN_PGC_OTG1), + GPC_PGC_SR(IMX8MN_PGC_OTG1)), + regmap_reg_range(GPC_PGC_CTRL(IMX8MN_PGC_DDR1), + GPC_PGC_SR(IMX8MN_PGC_DDR1)), + regmap_reg_range(GPC_PGC_CTRL(IMX8MN_PGC_GPUMIX), + GPC_PGC_SR(IMX8MN_PGC_GPUMIX)), + regmap_reg_range(GPC_PGC_CTRL(IMX8MN_PGC_DISPMIX), + GPC_PGC_SR(IMX8MN_PGC_DISPMIX)), +}; + +static const struct regmap_access_table imx8mn_access_table = { + .yes_ranges = imx8mn_yes_ranges, + .n_yes_ranges = ARRAY_SIZE(imx8mn_yes_ranges), +}; + +static const struct imx_pgc_domain_data imx8mn_pgc_domain_data = { + .domains = imx8mn_pgc_domains, + .domains_num = ARRAY_SIZE(imx8mn_pgc_domains), + .reg_access_table = &imx8mn_access_table, +}; + + static int imx_pgc_domain_probe(struct platform_device *pdev) { struct imx_pgc_domain *domain = pdev->dev.platform_data; @@ -948,6 +1040,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,imx8mm-gpc", .data = &imx8mm_pgc_domain_data, }, + { .compatible = "fsl,imx8mn-gpc", .data = &imx8mn_pgc_domain_data, }, { .compatible = "fsl,imx8mq-gpc", .data = &imx8m_pgc_domain_data, }, { } };