Received: by 2002:ac0:a5b6:0:0:0:0:0 with SMTP id m51-v6csp1077023imm; Fri, 15 Jun 2018 10:47:59 -0700 (PDT) X-Google-Smtp-Source: ADUXVKLJ9gLQkT+xGVvMjDRjAh1OEWAp521NAGGsTRLKmEYv4V1wqLH7NZS0BPWN1MfWxVk1MSvU X-Received: by 2002:a63:6f8d:: with SMTP id k135-v6mr2533252pgc.48.1529084879649; Fri, 15 Jun 2018 10:47:59 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1529084879; cv=none; d=google.com; s=arc-20160816; b=xXQFrYpXsGYyxplU8rW7Dh68/ng2kH9w1m+psU48vuRa15gwOJLwaLCtwHHtF1BaK2 1JlyfoFvyoWcixalmetPwWr2tKuQqojtOtEcgCxXOy7UC9DZ0oMGr0DdjeeQiWQzIVG2 YEaIPkB3hi3fYyMcDdhZvizsFqdUEH4lZaUjKgCX3qEMnvYEqWySQzIhktBEYXnCNRgf ar81xNKDiCt6Mb6Guu3ZSaYdLgpO5kW2kGj3yl9Y9M+2btREL9zNRa5Fjv7Des0SUDpI sX8beKJVHzWjs9n+vOG741T0RX55ERGcVOoijG/sta0Eh858T9YZB7GJS/Isotc5nzHP GUsA== 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:organization:from:references:to:subject:cc :arc-authentication-results; bh=Ayc6Ok2e9WE8Jn5NSfA6Su9kSk86lB7SZBkzkxKQvbE=; b=dR6gm4JDrej05BDiqAp2TkpX62o7Gp/z7qUwy0HLVsKuV/n+r7xbLIZfNDGFXJOGud r6nlzCU8E5SpycQNjHYpNG3RnVt7D9+ooghpBML3DQ9FG+BFxIzFvkJcBZ8kJFHKfftc PPv5+l/atkq+DIE/1V5MJPQeWj9M0jG3DIZouVpvNEkJnTuEu3km9I64qSQUI+xdjsGJ AhM2fcPLbutvN0Pt9vGX87GfWmsOHkSFpCfHAHLdZB9wQgN7XDth/oXLZZ43N42CKuwf rjnB2qrN8sMowbb/I5BYj+OYWMkOY58lsIBBj1f3/GiZdKygUhGKZQ7oKOuCqYh3PY/T Abmg== ARC-Authentication-Results: i=1; mx.google.com; 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 f29-v6si6843288pgn.21.2018.06.15.10.47.45; Fri, 15 Jun 2018 10:47:59 -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; 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 S966467AbeFORpU (ORCPT + 99 others); Fri, 15 Jun 2018 13:45:20 -0400 Received: from usa-sjc-mx-foss1.foss.arm.com ([217.140.101.70]:45426 "EHLO foss.arm.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S966215AbeFORpT (ORCPT ); Fri, 15 Jun 2018 13:45:19 -0400 Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.72.51.249]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id A30251529; Fri, 15 Jun 2018 10:45:18 -0700 (PDT) Received: from [10.1.210.28] (unknown [10.1.210.28]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 76A403F25D; Fri, 15 Jun 2018 10:45:16 -0700 (PDT) Cc: Sudeep Holla , LKML , Linux PM list , "Rafael J. Wysocki" , Viresh Kumar , Stephen Boyd , Rajendra Nayak , "open list:OPEN FIRMWARE AND FLATTENED DEVICE TREE BINDINGS" , Rob Herring , Saravana Kannan Subject: Re: [PATCH v4 1/2] dt-bindings: cpufreq: Introduce QCOM CPUFREQ FW bindings To: Taniya Das , Amit Kucheria References: <1528801355-18719-1-git-send-email-tdas@codeaurora.org> <1528801355-18719-2-git-send-email-tdas@codeaurora.org> <0f3f0223-3539-dc66-5300-8f30d827445d@arm.com> <7abb2da6-c130-117a-5404-d07bb132d915@codeaurora.org> <32e8f874-a58b-8ba3-7a53-dc89cb34f7d9@codeaurora.org> From: Sudeep Holla Organization: ARM Message-ID: Date: Fri, 15 Jun 2018 18:45:15 +0100 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.8.0 MIME-Version: 1.0 In-Reply-To: <32e8f874-a58b-8ba3-7a53-dc89cb34f7d9@codeaurora.org> Content-Type: text/plain; charset=utf-8 Content-Language: en-US Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 15/06/18 18:40, Taniya Das wrote: > > > On 6/15/2018 5:29 PM, Amit Kucheria wrote: >> On Thu, Jun 14, 2018 at 9:24 PM, Taniya Das wrote: >> >>>>> Sorry Sudeep I missed replying to your earlier query. >>>>> The High level OS(HLOS) would require to access only these specific >>>>> registers from this IP block and just mapping the whole block(huge >>>>> region) is unnecessary from the OS point of View. As of now it is a >>>>> generic binding for all using this IP block to manage frequency >>>>> requests. The OS would only have to know the frequencies supported i.e >>>>> to read the lookup table registers and put across the OS request using >>>>> the performance state register. >>>>> >>>> >>>> I am not sure if you need to defining bindings to save OSPM IO mapping. >>>> In-fact you may be adding more mapping unnecessarily. The mappings are >>>> page aligned and spiting the registers and mapping them individually >>>> may >>>> result in more mappings. >>>> >>>> I just need to know the rational for such specific choice of registers. >>>> I assume it's aligned to some other standard specifications like CPPC >>>> though not identical. >>>> >>> >>> I am not sure of the query but there is no other register that the OS is >>> required to use other than the ones defined here. >>> >>>>>> Eg. Suppose you need some information on power curve for EAS energy >>>>>> model, I really hate to update DT for that or even do a mix with >>>>>> DT just >>>>>> because f/w is no longer modifiable. >>>>>> >>>>> >>>>> For now we are safe. >>>>> >>>> >>>> What do you mean by that ? >>> >>> >>> I meant here was currently there is no such known case where the f/w >>> is no >>> longer modifiable and we need to extend device tree bindings. >>> >>>> It should be easily extensible is what I am >>>> trying to say. You can add more info and alter the information in the >>>> driver with compatibles if you keep the register info as minimum as >>>> possible. For now, you have enable, set and lut registers. What if you >>>> want to provide power numbers ? >>>> >>> >>> Yes I do understand the intent of mapping the whole register space, >>> but as >>> per the HW specs these 3 registers would be the only ones required >>> for now. >>> I do not think this hardware engine has any information on the power >>> numbers. >> >> "For now" - I think this is exactly the point that Sudeep is trying to >> make. >> >> A future version of the HW engine, or more likely, a firmware >> revision, will make more functionality available. Say, this needs >> access to another register or two. This will require changing the DT >> bindings. Instead, if you map the entire address space, you can just >> add offsets to the new registers. >> >> So in this case, I think you should define the following addresses >> (size 0x1400) for the two frequency domains >> >> 0x17d43000, 0x1400 (power cluster) >> 0x17d45800, 0x1400 (perf cluster) >> >> And in the driver simply add offsets as follows: >> >> #define ENABLE_OFFSET               0x0 >> #define LUT_OFFSET                      0x110 >> #define PERF_DESIRED_OFFSET 0x920 >> > > The offsets could vary across versions of this IP and that is the reason > to provide them through the DT and not define any such offsets. > How many versions do you have and how much has it varied already ? I am now getting a sense that it's mostly decided and fixed my the firmware rather than at the time of hardware design. -- Regards, Sudeep