From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754762AbbCEI7x (ORCPT ); Thu, 5 Mar 2015 03:59:53 -0500 Received: from mail-ob0-f180.google.com ([209.85.214.180]:33595 "EHLO mail-ob0-f180.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1754378AbbCEI7v (ORCPT ); Thu, 5 Mar 2015 03:59:51 -0500 MIME-Version: 1.0 In-Reply-To: <20150305074207.GC11010@pengutronix.de> References: <1425466152-7867-1-git-send-email-pi-cheng.chen@linaro.org> <20150304112109.GB11010@pengutronix.de> <20150305074207.GC11010@pengutronix.de> Date: Thu, 5 Mar 2015 14:29:50 +0530 Message-ID: Subject: Re: [PATCH] clk: mediatek: Export CPU mux clocks for CPU frequency control From: Viresh Kumar To: Sascha Hauer Cc: Pi-Cheng Chen , Mike Turquette , Stephen Boyd , Matthias Brugger , Rob Herring , Pawel Moll , Mark Rutland , Ian Campbell , Kumar Gala , Henry Chen , James Liao , Chen Fan , Eddie Huang , "Joe.C" , Linux Kernel Mailing List , "linux-arm-kernel@lists.infradead.org" , "devicetree@vger.kernel.org" , Linaro Kernel Mailman List , linux-mediatek@lists.infradead.org Content-Type: text/plain; charset=UTF-8 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 5 March 2015 at 13:12, Sascha Hauer wrote: > We have clk_set_parent for changing the parent and clk_set_rate to > change the rate. Use the former for changing the parent and the latter > for changing the rate. What you are interested in is changing the > parent, so use clk_set_parent for this and not abuse a side effect > of clk_set_rate. clk_set_rate() for CPUs clock is responsible to change clock rate of the CPU. Whether it plays with PLLs or muxes, its not that relevant. > My suggestion is to take another approach. Implement clk_set_rate for > these muxes and in the set_rate hook: > > - switch mux to intermediate PLL parent > - call clk_set_rate() for the real parent PLL > - switch mux back to real parent PLL > > This way the things happening behind the scenes are completely transparent > to the cpufreq driver and you can use cpufreq-dt as is without changes. CPUFreq wants to change to intermediate frequency by itself against some magic change behind the scene. The major requirement for that comes from the fact that we want to send PRE/POST freq notifiers on which loops-per-jiffie depends.