From patchwork Tue Jan 8 05:50:37 2013 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Rajagopal Venkat X-Patchwork-Id: 1943971 Return-Path: X-Original-To: patchwork-linux-pm@patchwork.kernel.org Delivered-To: patchwork-process-083081@patchwork2.kernel.org Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by patchwork2.kernel.org (Postfix) with ESMTP id A19DBDF23A for ; Tue, 8 Jan 2013 05:54:36 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1750801Ab3AHFyf (ORCPT ); Tue, 8 Jan 2013 00:54:35 -0500 Received: from mail-da0-f43.google.com ([209.85.210.43]:59132 "EHLO mail-da0-f43.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750911Ab3AHFye (ORCPT ); Tue, 8 Jan 2013 00:54:34 -0500 Received: by mail-da0-f43.google.com with SMTP id u36so21826dak.2 for ; Mon, 07 Jan 2013 21:54:32 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20120113; h=x-received:from:to:cc:subject:date:message-id:x-mailer :x-gm-message-state; bh=uKSyf+9QmdWu7pFlsJTmW7MV/qv/pXCjiU/17f5/UT0=; b=Ah5+AMIkRfASsf9emm+Gg2by+BRyD6XabhRKsprhgYf62Yq8V2k38Ji5iwbhbJcrpK RhNM/1ZTP9UnKsfQedwM2Rp0cS2vgvE0f8cKwC+Tfpux4+QUT3YoCEGgnmQClNYNrVuy 5D/e+p+2B+9BfGtGegf3m7Uqw7ggoOsbEzEgUkAYLEiDjBcQficpEd/l3UwIAP2EjyjA 4cLpBNgtnXG0x4Olpu8DrRNYF2gBMvZY7ngFySStGXtmIp32wkvvuDsVG8xYbLJE0On9 d/ccKe/Jy3SnkpYkfVr3V+CETpfQlsRu7o6XRm8ZN6jBvpkUd1qKX1iNeAthw3WlWNe5 zgZw== X-Received: by 10.68.211.42 with SMTP id mz10mr196136662pbc.100.1357624472862; Mon, 07 Jan 2013 21:54:32 -0800 (PST) Received: from localhost.localdomain ([115.242.216.217]) by mx.google.com with ESMTPS id ty4sm38989248pbc.57.2013.01.07.21.54.27 (version=TLSv1/SSLv3 cipher=OTHER); Mon, 07 Jan 2013 21:54:32 -0800 (PST) From: Rajagopal Venkat To: myungjoo.ham@samsung.com, kyungmin.park@samsung.com, mturquette@linaro.org, rjw@sisk.pl Cc: patches@linaro.org, linaro-dev@lists.linaro.org, linux-pm@vger.kernel.org, linux-kernel@vger.kernel.org, Rajagopal Venkat Subject: [PATCH 1/3] PM / devfreq: set min/max freq limit from freq table Date: Tue, 8 Jan 2013 11:20:37 +0530 Message-Id: <1357624239-13938-1-git-send-email-rajagopal.venkat@linaro.org> X-Mailer: git-send-email 1.7.10.4 X-Gm-Message-State: ALoCoQnOzkj/ArbVm9q84zVS/kxkvUqql42G/xSLPMy8LXpTJCCWc8Ii+mnpxjHNQhR30xhkOqqq Sender: linux-pm-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-pm@vger.kernel.org Set devfreq device min and max frequency limits when device is added to devfreq, provided frequency table is supplied. This helps governors to suggest target frequency with in limits. Signed-off-by: Rajagopal Venkat --- drivers/devfreq/devfreq.c | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/drivers/devfreq/devfreq.c b/drivers/devfreq/devfreq.c index a8f0173..5782c9b 100644 --- a/drivers/devfreq/devfreq.c +++ b/drivers/devfreq/devfreq.c @@ -69,6 +69,29 @@ static struct devfreq *find_device_devfreq(struct device *dev) } /** + * devfreq_set_freq_limits() - Set min and max frequency from freq_table + * @devfreq: the devfreq instance + */ +static void devfreq_set_freq_limits(struct devfreq *devfreq) +{ + int idx; + unsigned long min = ~0, max = 0; + + if (!devfreq->profile->freq_table) + return; + + for (idx = 0; idx < devfreq->profile->max_state; idx++) { + if (min > devfreq->profile->freq_table[idx]) + min = devfreq->profile->freq_table[idx]; + if (max < devfreq->profile->freq_table[idx]) + max = devfreq->profile->freq_table[idx]; + } + + devfreq->min_freq = min; + devfreq->max_freq = max; +} + +/** * devfreq_get_freq_level() - Lookup freq_table for the frequency * @devfreq: the devfreq instance * @freq: the target frequency @@ -476,6 +499,7 @@ struct devfreq *devfreq_add_device(struct device *dev, devfreq->profile->max_state, GFP_KERNEL); devfreq->last_stat_updated = jiffies; + devfreq_set_freq_limits(devfreq); dev_set_name(&devfreq->dev, dev_name(dev)); err = device_register(&devfreq->dev);