Received: by 10.213.65.68 with SMTP id h4csp2458835imn; Mon, 2 Apr 2018 07:58:19 -0700 (PDT) X-Google-Smtp-Source: AIpwx490UvvvA9y88UR8C+MsoHz8hjBnqK0zg8bu0+Dw6ECsmMa4dhTmh6rvPOYQItl6sJ5g9Hw6 X-Received: by 2002:a17:902:6acc:: with SMTP id i12-v6mr10370173plt.353.1522681099270; Mon, 02 Apr 2018 07:58:19 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1522681099; cv=none; d=google.com; s=arc-20160816; b=CW3c5Uwn1tErZHL1Jc5742lSFpzars8l7g/MiQF2vOIEkfyqrqE4HpkCwJIm/bvUws 6wKRBMqaJHADujEEXxvebv0Nv4M6qS14EXc1V+wkuk2xZlzTNkzkM4I1Zy4A+BDDRbC0 BdDh1rlhGoIn9wCHiTmRzY1vVLSFn66hzWzlyR41Dqvz5PMhn75tkq7vMDV+l7wIaxqD LxFm333/zPwMZ4RpIpddLimnojS1jYBJWU8vUAoYyZqxFilAFQwl4+WLgkJrLqimCzD6 02OF5y14xU9GLVhdIr9ATzYBA9pOuAUv6Uq7HYw/HtXuIXqfSjpwAZnhM/j0vWYULquY ItMA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding :content-language:in-reply-to:mime-version:user-agent:date :message-id:from:references:cc:to:subject:dmarc-filter :dkim-signature:dkim-signature:arc-authentication-results; bh=1NBvfspc8fWPOhnRZO31qt0WOZCR4rDGxFYvtyuGkdA=; b=HXcZbRN3yhXXo1NXlZUFOXitUtfMIdBG5sp9ZaCDAqzBX70WcYNwG3bR1loUhfLMS/ wbbOIyGKwfUcLbvnhUR2jpArP8JDrOrOxD9pzb0bCKWZhy+Wojnow+mMzlhlUYWqjCsE 4RxJ3GnQ3urIe4ddFm4QdLbkoRHdhRNeyHezYDtLGA8l/PGgzEKg0BuDvgpWeTMtiO0R H19NX33rqMYj1Bq/CN1mgzzkH8/MS2HOzpkSc9wKxtYD5pivIuI1BrIswuS7vaIMXbMF 7AT/8VUvgu/wmOOOmGovqKyYKZ12u3mTJCMYUvcig/ki09gvznkCWweSmySEnInZzeek 2K3w== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@codeaurora.org header.s=default header.b=W0ORUnmi; dkim=pass header.i=@codeaurora.org header.s=default header.b=HhgAebdp; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id v12-v6si458874plk.615.2018.04.02.07.58.04; Mon, 02 Apr 2018 07:58:19 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@codeaurora.org header.s=default header.b=W0ORUnmi; dkim=pass header.i=@codeaurora.org header.s=default header.b=HhgAebdp; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752358AbeDBO4P (ORCPT + 99 others); Mon, 2 Apr 2018 10:56:15 -0400 Received: from smtp.codeaurora.org ([198.145.29.96]:53356 "EHLO smtp.codeaurora.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752289AbeDBO4M (ORCPT ); Mon, 2 Apr 2018 10:56:12 -0400 Received: by smtp.codeaurora.org (Postfix, from userid 1000) id 8CCDE60F90; Mon, 2 Apr 2018 14:56:11 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=codeaurora.org; s=default; t=1522680971; bh=rnir/M9+/evBGNy7u47SQawqPQC5Yz7UwVFe59p6+u0=; h=Subject:To:Cc:References:From:Date:In-Reply-To:From; b=W0ORUnmiFZWlGOvrYvW+itEfWK0iIKuT+ix8aSuV7d0inrfZlxSe2WE1fGH+rlWmS hd6X53F9RMdfGLodK6/D+1FHEIVpcZDmLsYE1uQ4SmonZhBWAtNP+QNjXORj0NGcn8 1q/Sk/FczWcxVrf7UV/eGDyVasnyQZHbhDPGBR8U= X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on pdx-caf-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-2.8 required=2.0 tests=ALL_TRUSTED,BAYES_00, DKIM_SIGNED,T_DKIM_INVALID autolearn=no autolearn_force=no version=3.4.0 Received: from [10.201.3.39] (blr-c-bdr-fw-01_globalnat_allzones-outside.qualcomm.com [103.229.19.19]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) (Authenticated sender: sricharan@smtp.codeaurora.org) by smtp.codeaurora.org (Postfix) with ESMTPSA id 6FEB360FEA; Mon, 2 Apr 2018 14:56:03 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=codeaurora.org; s=default; t=1522680969; bh=rnir/M9+/evBGNy7u47SQawqPQC5Yz7UwVFe59p6+u0=; h=Subject:To:Cc:References:From:Date:In-Reply-To:From; b=HhgAebdpst3+9sta4/sZv9LCGq8TILh1K8xl83c9UIdVJ+5idS+ve5UTmYxrHNDDV Fx3XkKWQyJb3EgVPzmGsR/9lkQqnMWfmirw1HB3MVlOMtW8hj0pBubC3veZEAcGosu CNtye2H5fkPxhsDpBeCSFYVuDrlGR41t99FQGZXM= DMARC-Filter: OpenDMARC Filter v1.3.2 smtp.codeaurora.org 6FEB360FEA Authentication-Results: pdx-caf-mail.web.codeaurora.org; dmarc=none (p=none dis=none) header.from=codeaurora.org Authentication-Results: pdx-caf-mail.web.codeaurora.org; spf=none smtp.mailfrom=sricharan@codeaurora.org Subject: Re: [PATCH v4 12/14] cpufreq: Add Kryo CPU scaling driver To: Ilia Lin , mturquette@baylibre.com, sboyd@kernel.org, robh@kernel.org, mark.rutland@arm.com, rjw@rjwysocki.net, viresh.kumar@linaro.org, lgirdwood@gmail.com, broonie@kernel.org, andy.gross@linaro.org, david.brown@linaro.org, catalin.marinas@arm.com, will.deacon@arm.com, linux-clk@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-pm@vger.kernel.org, linux-arm-msm@vger.kernel.org, linux-soc@vger.kernel.org, linux-arm-kernel@lists.infradead.org Cc: rnayak@codeaurora.org, amit.kucheria@linaro.org, nicolas.dechesne@linaro.org, celster@codeaurora.org, tfinkel@codeaurora.org References: <1522358807-10413-1-git-send-email-ilialin@codeaurora.org> <1522358807-10413-13-git-send-email-ilialin@codeaurora.org> From: Sricharan R Message-ID: Date: Mon, 2 Apr 2018 20:26:00 +0530 User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:52.0) Gecko/20100101 Thunderbird/52.6.0 MIME-Version: 1.0 In-Reply-To: <1522358807-10413-13-git-send-email-ilialin@codeaurora.org> Content-Type: text/plain; charset=utf-8 Content-Language: en-US Content-Transfer-Encoding: 7bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Hi Ilia, > diff --git a/drivers/cpufreq/Kconfig.arm b/drivers/cpufreq/Kconfig.arm > index 7f56fe5..71350e2 100644 > --- a/drivers/cpufreq/Kconfig.arm > +++ b/drivers/cpufreq/Kconfig.arm > @@ -134,6 +134,17 @@ config ARM_OMAP2PLUS_CPUFREQ > depends on ARCH_OMAP2PLUS > default ARCH_OMAP2PLUS > > +config ARM_QCOM_CPUFREQ_KRYO > + tristate "Qualcomm Technologies, Inc. Kryo based" Does this need to be 'tristate' ?. 'cpu-freq-dt' driver is already built as module. <..> > + > +#include > +#include > +#include > +#include Is io.h required ? Regards, Sricharan > +#include > +#include > +#include > +#include > +#include > +#include > +#include > +#include > + > +#define MSM_ID_SMEM 137 > +#define SILVER_LEAD 0 > +#define GOLD_LEAD 2 > + > +enum _msm_id { > + MSM8996V3 = 0xF6ul, > + APQ8096V3 = 0x123ul, > + MSM8996SG = 0x131ul, > + APQ8096SG = 0x138ul, > +}; > + > +enum _msm8996_version { > + MSM8996_V3, > + MSM8996_SG, > + NUM_OF_MSM8996_VERSIONS, > +}; > + > +static enum _msm8996_version __init qcom_cpufreq_kryo_get_msm_id(void) > +{ > + size_t len; > + u32 *msm_id; > + enum _msm8996_version version; > + > + msm_id = qcom_smem_get(QCOM_SMEM_HOST_ANY, MSM_ID_SMEM, &len); > + /* The first 4 bytes are format, next to them is the actual msm-id */ > + msm_id++; > + > + switch ((enum _msm_id)*msm_id) { > + case MSM8996V3: > + case APQ8096V3: > + version = MSM8996_V3; > + break; > + case MSM8996SG: > + case APQ8096SG: > + version = MSM8996_SG; > + break; > + default: > + version = NUM_OF_MSM8996_VERSIONS; > + } > + > + return version; > +} > + > +static int __init qcom_cpufreq_kryo_driver_init(void) > +{ > + struct platform_device *pdev; > + struct device *cpu_dev; > + struct device_node *np; > + struct nvmem_cell *speedbin_nvmem; > + enum _msm8996_version msm8996_version; > + u8 *speedbin; > + size_t len; > + int ret; > + u32 versions; > + > + cpu_dev = get_cpu_device(SILVER_LEAD); > + if (IS_ERR_OR_NULL(cpu_dev)) > + return PTR_ERR(cpu_dev); > + > + msm8996_version = qcom_cpufreq_kryo_get_msm_id(); > + if (NUM_OF_MSM8996_VERSIONS == msm8996_version) { > + dev_err(cpu_dev, "Not Snapdragon 820/821!"); > + return -ENODEV; > + } > + > + np = dev_pm_opp_of_get_opp_desc_node(cpu_dev); > + if (IS_ERR_OR_NULL(np)) > + return PTR_ERR(np); > + > + if (!of_device_is_compatible(np, "operating-points-v2-kryo-cpu")) { > + ret = -ENOENT; > + goto free_np; > + } > + > + speedbin_nvmem = of_nvmem_cell_get(np, NULL); > + if (IS_ERR(speedbin_nvmem)) { > + ret = PTR_ERR(speedbin_nvmem); > + dev_err(cpu_dev, "Could not get nvmem cell: %d\n", ret); > + goto free_np; > + } > + > + speedbin = nvmem_cell_read(speedbin_nvmem, &len); > + > + switch (msm8996_version) { > + case MSM8996_V3: > + versions = 1 << (unsigned int)(*speedbin); > + break; > + case MSM8996_SG: > + versions = 1 << ((unsigned int)(*speedbin) + 4); > + break; > + default: > + BUG(); > + break; > + } > + > + ret = PTR_ERR_OR_ZERO(dev_pm_opp_set_supported_hw(cpu_dev,&versions,1)); > + if (0 > ret) > + goto free_np; > + > + cpu_dev = get_cpu_device(GOLD_LEAD); > + ret = PTR_ERR_OR_ZERO(dev_pm_opp_set_supported_hw(cpu_dev,&versions,1)); > + > + of_node_put(np); > + > + pdev = platform_device_register_simple("cpufreq-dt", -1, NULL, 0); > + if (IS_ERR(pdev)) { > + return PTR_ERR(pdev); > + } > + > + return 0; > + > +free_np: > + of_node_put(np); > + > + return ret; > +} > +late_initcall(qcom_cpufreq_kryo_driver_init); > + > +MODULE_DESCRIPTION("Qualcomm Technologies, Inc. Kryo CPUfreq driver"); > +MODULE_LICENSE("GPL v2"); > -- "QUALCOMM INDIA, on behalf of Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum, hosted by The Linux Foundation