From patchwork Thu Feb 14 09:55:57 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Anson Huang X-Patchwork-Id: 10812231 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 12E2D13B4 for ; Thu, 14 Feb 2019 09:56:20 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id F359228770 for ; Thu, 14 Feb 2019 09:56:19 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id E757F292EE; Thu, 14 Feb 2019 09:56:19 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-5.2 required=2.0 tests=BAD_ENC_HEADER,BAYES_00, DKIM_SIGNED,DKIM_VALID,MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED autolearn=ham version=3.3.1 Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.wl.linuxfoundation.org (Postfix) with ESMTPS id 73BE228797 for ; Thu, 14 Feb 2019 09:56:19 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20170209; h=Sender: Content-Transfer-Encoding:Content-Type:Cc:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:In-Reply-To:References: Message-ID:Date:Subject:To:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=PocYVR0xS7JJQgv+Od3Qq1W3ieTAkpfi/9v1drYaX9o=; b=FyOkxCogLL90Gp jhpCFyEYWOWAlrD6LwMxhr8xHr2ldFk6bYKEhghE0xQzdF7Jz/srdRYEhX/dIQa9a4RQIuu5v6Kba LMGlWyUkgaOo3xsf6KBBWPVeFr9bQ5uGqJk66LkKOU/IX3bVNe8LdAz8FBR8yuh/bKl3UaztnxFLz ABVaDDVusojMfk2o2VI6dO9vfwrsEpRDYRsdVHbJ9kQFcrzf4Lql5ztJCzb3BWANrmSTpoKREcnpr 22euNtlPMocpKcGYc01Nngg56+gbZEXq8MXbDIRGzeWoAJgUmfRoBwKsvr7jVUtQu2J3QLnKbfZAX tx6edJ2crC38ASLV3nLA==; Received: from localhost ([127.0.0.1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.90_1 #2 (Red Hat Linux)) id 1guDkc-00076I-Qd; Thu, 14 Feb 2019 09:56:14 +0000 Received: from mail-eopbgr60055.outbound.protection.outlook.com ([40.107.6.55] helo=EUR04-DB3-obe.outbound.protection.outlook.com) by bombadil.infradead.org with esmtps (Exim 4.90_1 #2 (Red Hat Linux)) id 1guDkN-0006Xs-S4 for linux-arm-kernel@lists.infradead.org; Thu, 14 Feb 2019 09:56:05 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nxp.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=Ir8c7bEmvNOEkAxrBjP91mWewB0ga0geIwcT1dvGfUQ=; b=WI9Y79CDUwcGNiNwUeknb/7Gr3koKEDuUysebsQkF8gr6zBHQ1HpQPAsUg5eLBtDZuiEb9rep4cg2UV9DCX5N8YTiowBD6pNAuhqkiId3JYBp3n4uJGKa7EngmR4NCUEAQFpSH42bBc+X3gyJ5EtbzH2MvdUYEtgwIzrwkf00a8= Received: from DB3PR0402MB3916.eurprd04.prod.outlook.com (52.134.72.18) by DB3PR0402MB3818.eurprd04.prod.outlook.com (52.134.71.29) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1601.21; Thu, 14 Feb 2019 09:55:57 +0000 Received: from DB3PR0402MB3916.eurprd04.prod.outlook.com ([fe80::14e8:6d2e:fe21:4fd5]) by DB3PR0402MB3916.eurprd04.prod.outlook.com ([fe80::14e8:6d2e:fe21:4fd5%3]) with mapi id 15.20.1601.023; Thu, 14 Feb 2019 09:55:57 +0000 From: Anson Huang To: "robh+dt@kernel.org" , "mark.rutland@arm.com" , "shawnguo@kernel.org" , "s.hauer@pengutronix.de" , "kernel@pengutronix.de" , "festevam@gmail.com" , "mturquette@baylibre.com" , "sboyd@kernel.org" , Aisheng Dong , Daniel Baluta , "devicetree@vger.kernel.org" , "linux-arm-kernel@lists.infradead.org" , "linux-kernel@vger.kernel.org" , "linux-clk@vger.kernel.org" , "viresh.kumar@linaro.org" Subject: [PATCH V6 2/2] clk: imx: scu: add cpu frequency scaling support Thread-Topic: [PATCH V6 2/2] clk: imx: scu: add cpu frequency scaling support Thread-Index: AQHUxEt78gy90OZt+UeqROcOSrZGKg== Date: Thu, 14 Feb 2019 09:55:57 +0000 Message-ID: <1550137826-18531-2-git-send-email-Anson.Huang@nxp.com> References: <1550137826-18531-1-git-send-email-Anson.Huang@nxp.com> In-Reply-To: <1550137826-18531-1-git-send-email-Anson.Huang@nxp.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-mailer: git-send-email 2.7.4 x-clientproxiedby: HK0PR03CA0075.apcprd03.prod.outlook.com (2603:1096:203:72::15) To DB3PR0402MB3916.eurprd04.prod.outlook.com (2603:10a6:8:10::18) authentication-results: spf=none (sender IP is ) smtp.mailfrom=anson.huang@nxp.com; x-ms-exchange-messagesentrepresentingtype: 1 x-originating-ip: [119.31.174.66] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: cefc315c-15e2-4ac6-4aea-08d692629dbb x-ms-office365-filtering-ht: Tenant x-microsoft-antispam: BCL:0; PCL:0; RULEID:(2390118)(7020095)(4652040)(8989299)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(5600110)(711020)(4605077)(4618075)(2017052603328)(7153060)(7193020); SRVR:DB3PR0402MB3818; x-ms-traffictypediagnostic: DB3PR0402MB3818: x-microsoft-exchange-diagnostics: =?iso-8859-1?Q?1; DB3PR0402MB3818; 23:jBJsX+WXu0fMTBUrwlHU6N74UqJ+1AMR6CWhp?= =?iso-8859-1?q?m+JaqDDiwgNcYlgNx?= =?iso-8859-1?q?Cmx22PmKV0vlbbBq7uk0cFvwg7Ym5cZCgRDTe3WSevjIZlsklH8OfbaPr/R9?= =?iso-8859-1?q?95XpgNBAxuC3TNOSh3MzFXcUG8wf6OLNoEsATrdr/KXuwyBf8rx1h7SSCnhh?= =?iso-8859-1?q?jJruVKgp8mwEBeMSoioEAXdU/XLJja1IQ49iSEsxS51kfjGJd/6gtYE7CQo5?= =?iso-8859-1?q?ib1i01Zm+Z/S4YRPhEADun3Rxc+WUzILxN/18miOFzuOoksfEcfeJEMV9n6k?= =?iso-8859-1?q?oJhRgfud02adFkxm/OXDUcgveHhe4xFVtPtK7qE1DVuuasZ8XJsOdf2xaMcn?= =?iso-8859-1?q?NLbdNmSFC/MVrE135v7eVDEml9zmLeS68EFzlqb5hDTTAh62fdCzPGQHirGj?= =?iso-8859-1?q?Oqv0zuI99lloWnwtgVrPokPZH8QsRHh4orqBAqwx3x9hDLiJz4gcQu4Vee7q?= =?iso-8859-1?q?uAmDjcKOsi51MSSO/Tz4ukcbvsQm8YLfi/DEbotAxpO3pU9TdctzqNfvmSvl?= =?iso-8859-1?q?VEyA5v2eUDCgs5cmX/4QNCrA5WklEehLTds/4NbLOcWGYWVsYiTEg8sKhpLs?= =?iso-8859-1?q?bMr4bJ/NNRaumh62MPb/cyKoxzOV7qveC4YUNgLUGsenq600cqH5RxZuCEkp?= =?iso-8859-1?q?XoDncqAvhfAEaJkv0Y1/pB3gvociIgGS6fQwJruuSblDDOE2nzh8ytk3HtdN?= =?iso-8859-1?q?m+72MlnAwcoPJW4OpCjr5/tOwTPjWbpQCGrLjyIYbv6rcWcRn8vROeVytJV5?= =?iso-8859-1?q?xIEoLswSR+1mvJEXSl6Zt2GVZqytk8gWTVFYqTesDHen+ZOw4/OPXMZPEOqh?= =?iso-8859-1?q?ocj6zMCz0+iBEMEQmGnQG/CHzZ3P8mDDKpffR3QyvrnR0qHV8kF37xj/cZIs?= =?iso-8859-1?q?c2WH6i4qek2pRbdLmdqnpODPgz/mPIZpz1x3xNxfRN8gGQTK/lost3fUDtvy?= =?iso-8859-1?q?tKaLbOp8GFkqdsLJnXkb1W1PcDmzda7CS+D8DBNEI/hQ6EbcRcrJ5zRIe95F?= =?iso-8859-1?q?HmcOu7Rz94A93ooEzF0Trg6MtY6xU9Y3FBX+hWb4vrlIc6ZC46wrwRoTI5Xa?= =?iso-8859-1?q?6X68TOAS7xyZQFA1GQuwwXv40gzhRkpqa/lhRzw0k6iTaQDSbojp0mSJQpLc?= =?iso-8859-1?q?scI87pq85H/y3j8T0oXH6BlSya7Y5tOUUhi5aoPdVaKzNZdymWaZwoDLkLAr?= =?iso-8859-1?q?933U5TVx1ESn6P78E2YfqdsFGlpYn5IvaS+Bv+rpL7YudbiOYTAGNhtSwRCJ?= =?iso-8859-1?q?pw908=3D?= x-microsoft-antispam-prvs: x-forefront-prvs: 09480768F8 x-forefront-antispam-report: SFV:NSPM; SFS:(10009020)(366004)(346002)(136003)(396003)(39860400002)(376002)(189003)(199004)(97736004)(71200400001)(8676002)(71190400001)(256004)(8936002)(7736002)(2501003)(81166006)(2906002)(81156014)(14454004)(52116002)(110136005)(305945005)(14444005)(53936002)(76176011)(50226002)(6486002)(316002)(6512007)(68736007)(478600001)(2201001)(6436002)(486006)(476003)(186003)(2616005)(36756003)(6506007)(86362001)(386003)(26005)(106356001)(3846002)(4326008)(102836004)(6116002)(99286004)(7416002)(105586002)(25786009)(446003)(11346002)(66066001)(921003)(1121003); DIR:OUT; SFP:1101; SCL:1; SRVR:DB3PR0402MB3818; H:DB3PR0402MB3916.eurprd04.prod.outlook.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; MX:1; A:1; received-spf: None (protection.outlook.com: nxp.com does not designate permitted sender hosts) x-ms-exchange-senderadcheck: 1 x-microsoft-antispam-message-info: /4xjAN95aOsJFIV8mX1Bop+ydkLeGx5QcaJDb22cLAzsh/R1pIr3WHJW/eFjdvuyzmwbBenAH/TEfpyb7+anaCf/FL/1DoHDu02HUIy/BvptIzXpIEqyv/UmMDmrbisjU7Pd+D2v8mcbZY48wkd4+uxwQnK7nqWJVg6wHYle7dHje46hvxTVNivGBBCXLh5oX7k4mQE9LJi3WBqu7mN5VWiOUuo9qfp5wwQp/GfQOUZ3V+TE0hAVAy+T2SbLnXKZYhXGVd4U/ohAxvQ4Dkc9nfYfHPUHzGrJCuk0MignKKuYrSqDT1bfNT3v0EdONp8TMrHjmwisvgZ7xLYs27R4MixipufZpPrbGV+CQ76pGBw80qhJbuVXvazF8NsM92iCCRGGr6WPnKcS4tF/r8sSH1ngKpK9wr+3q9DZawXKPtg= MIME-Version: 1.0 X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: cefc315c-15e2-4ac6-4aea-08d692629dbb X-MS-Exchange-CrossTenant-originalarrivaltime: 14 Feb 2019 09:55:51.4662 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635 X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB3PR0402MB3818 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20190214_015600_006055_F2E51B66 X-CRM114-Status: GOOD ( 15.12 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: dl-linux-imx Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+patchwork-linux-arm=patchwork.kernel.org@lists.infradead.org X-Virus-Scanned: ClamAV using ClamSMTP On NXP's i.MX SoCs with system controller inside, CPU frequency scaling can ONLY be done by system controller firmware, and it can ONLY be requested from secure mode, so Linux kernel has to call ARM SMC to trap to ARM-Trusted-Firmware to request system controller firmware to do CPU frequency scaling. This patch adds i.MX system controller CPU frequency scaling support, it reuses cpufreq-dt driver and implement the CPU frequency scaling inside SCU clock driver. Signed-off-by: Anson Huang Acked-by: Stephen Boyd --- No changes since V5. --- drivers/clk/imx/clk-scu.c | 35 ++++++++++++++++++++++++++++++++++- 1 file changed, 34 insertions(+), 1 deletion(-) diff --git a/drivers/clk/imx/clk-scu.c b/drivers/clk/imx/clk-scu.c index 7ccf7ed..c234a6e 100644 --- a/drivers/clk/imx/clk-scu.c +++ b/drivers/clk/imx/clk-scu.c @@ -4,12 +4,17 @@ * Dong Aisheng */ +#include +#include #include #include #include #include "clk-scu.h" +#define IMX_SIP_CPUFREQ 0xC2000001 +#define IMX_SIP_SET_CPUFREQ 0x00 + static struct imx_sc_ipc *ccm_ipc_handle; /* @@ -145,6 +150,23 @@ static long clk_scu_round_rate(struct clk_hw *hw, unsigned long rate, return rate; } +static int clk_scu_atf_set_cpu_rate(struct clk_hw *hw, unsigned long rate, + unsigned long parent_rate) +{ + struct clk_scu *clk = to_clk_scu(hw); + struct arm_smccc_res res; + unsigned long cluster_id; + + if (clk->rsrc_id == IMX_SC_R_A35) + cluster_id = 0; + + /* CPU frequency scaling can ONLY be done by ARM-Trusted-Firmware */ + arm_smccc_smc(IMX_SIP_CPUFREQ, IMX_SIP_SET_CPUFREQ, + cluster_id, rate, 0, 0, 0, 0, &res); + + return 0; +} + /* * clk_scu_set_rate - Set rate for a SCU clock * @hw: clock to change rate for @@ -232,6 +254,14 @@ static const struct clk_ops clk_scu_ops = { .unprepare = clk_scu_unprepare, }; +static const struct clk_ops clk_scu_cpu_ops = { + .recalc_rate = clk_scu_recalc_rate, + .round_rate = clk_scu_round_rate, + .set_rate = clk_scu_atf_set_cpu_rate, + .prepare = clk_scu_prepare, + .unprepare = clk_scu_unprepare, +}; + struct clk_hw *imx_clk_scu(const char *name, u32 rsrc_id, u8 clk_type) { struct clk_init_data init; @@ -247,7 +277,10 @@ struct clk_hw *imx_clk_scu(const char *name, u32 rsrc_id, u8 clk_type) clk->clk_type = clk_type; init.name = name; - init.ops = &clk_scu_ops; + if (rsrc_id == IMX_SC_R_A35) + init.ops = &clk_scu_cpu_ops; + else + init.ops = &clk_scu_ops; init.num_parents = 0; /* * Note on MX8, the clocks are tightly coupled with power domain