Received: by 10.223.164.221 with SMTP id h29csp36118wrb; Fri, 3 Nov 2017 05:14:38 -0700 (PDT) X-Google-Smtp-Source: ABhQp+TR+8EdxYNOT1HKhy8SuRBL0wYuC0ZrY46GVSjL+BHUyBpChHtZpYOUoqztIap4O18W/0BQ X-Received: by 10.99.115.28 with SMTP id o28mr7134835pgc.340.1509711278088; Fri, 03 Nov 2017 05:14:38 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1509711278; cv=none; d=google.com; s=arc-20160816; b=tZVcX0LE9fnTadq/QjI+yCU1bmzWqHYkI4bd6Ot8KRsFCUn/BVIKvHKE4foK/sD4Ih TTha/rIEh44gk3SnyX2sj7QKXmcuR2ZpomJirLeOmDYzC+l0SSgFPrFX/Ufjgi2wrg11 R9v3J9PyN4fKvN1DKq2yONQxLttWKZkgOkJu3m0mMk7tDpz56DPmVCGGKwSGGvmGryHE lij5vQnTk5Y0Wksz0FxTwx+VcgaL9BvL7tiy7yDE/X5cnFO8fPBqYrbDZmWuVm9cMWhs qIBhDUQ6MSGfJC9B36OB3WQFm+e0oC+PFRHLYl/QMdFtHOukUa2Vn1Vddv1v0ht4+jT7 CcNw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:cc:to:subject:message-id:date:from :references:in-reply-to:mime-version:dkim-signature :arc-authentication-results; bh=B1MD/hw4aJp6t1LK4ME1dhSwQ40p+29L3SCgRbz9RJU=; b=EjeXkS/BvFjiWJgjeGBEH3G2KLLKqlV6r9Y7rocX4aH8Ig8xJamfsA1kHpOs1KfpNJ ynmPjV6Th+yd5mcA/tXqfLj5MXrOsBl4hwXxDUP7mA8OmuFBxQQX6rlsHZh3DiCqcJbj chXuxMTwERPQSiXaDa47Led3GkDBt4syoBNv3+DNpmQcMa6TZzhBgRpSvBiHKT2IVOtt MGB90HBmCVqkHtS1hOFwwO++oFIXcfJohU/4Y4LCeHwJFLt9vDMPxb7AfF0MblnhwK6G mpzIQlFeoe7FiUh9VkL2wsEsoJKXzmOPlXLDc3Vv4VFBSAqBD4xYYSGT8JcyL4DLlUJU 5gMA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=U1pSb7iT; 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; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=gmail.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id 68si6550464pfq.46.2017.11.03.05.14.24; Fri, 03 Nov 2017 05:14:38 -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=@gmail.com header.s=20161025 header.b=U1pSb7iT; 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; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=gmail.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1756250AbdKCMN3 (ORCPT + 97 others); Fri, 3 Nov 2017 08:13:29 -0400 Received: from mail-lf0-f65.google.com ([209.85.215.65]:56808 "EHLO mail-lf0-f65.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1756100AbdKCMNZ (ORCPT ); Fri, 3 Nov 2017 08:13:25 -0400 Received: by mail-lf0-f65.google.com with SMTP id 90so2888027lfs.13; Fri, 03 Nov 2017 05:13:23 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc; bh=B1MD/hw4aJp6t1LK4ME1dhSwQ40p+29L3SCgRbz9RJU=; b=U1pSb7iTHWcjvZqiBaMUOlVx9Co11yN/wQ3YSv6XHVOVoopnz+m+UMMZ8APaVO1kDh YwSEym/nndBiabfoy+URbEaYphQ6Lv47Orw6FP19XmmS1nX10HplMH0YEUJhX7Qfxuk5 nJPkGG4o2jOvWMCH4FeVem7CkBoHCuMPa0PeNrZc1VcRykwqBYqEcY/GKsjKyhOGEspU 5nlbCjs53O5qtNafoy6fr4kzQxfe6R4qYvlO2jUaQmw1cKvcEKzAfsQF0SWJv+LIG3/u eOOX+9qe+qfDv0JUL7Se1S5W7QduHq7zWMzIRBiDeSWdSa4swJBi5WvJlmDSATXMWcA0 YUcg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to:cc; bh=B1MD/hw4aJp6t1LK4ME1dhSwQ40p+29L3SCgRbz9RJU=; b=kmQfYEgFRRJEAu/g22R7hsd3Swg+euBrJheB/U5UZZcht0TM7mEh183yrouJvXT9nS hSqACZA4HSTR7fUPeJr0ug8vatqct4KkoBlcj528n8tbrDs/6VZ8vJRkRby1MRG0b1Co vY5wiLm7VpIZjuTTf9kc1kYJqDgqwrW+GCHdw7iqdS2Ip+A1f89JEa2unmCQ2iSCEhmw PobgIGBFDD/jDD60y0J9FYb/zaZnWZa1gn78OTkiDjE7z3BA/x7BDC5FCcnv+Z98UhqJ kl5W7ZrwVYoNLd9cpijPsGvEVyd7VBhhkfIInGawRhEGldhz9VG5yhjCgVid1Vj8i28a ST1A== X-Gm-Message-State: AJaThX5pP4baxTL74t/elmyzQHhrW4qRkjItwh7MzO9MxkwG1r6bxs+x fHVfo500D4Mc7cunfocLJqZGCD2llrLJOHPhg+Q= X-Received: by 10.25.167.19 with SMTP id q19mr2024755lfe.12.1509711203079; Fri, 03 Nov 2017 05:13:23 -0700 (PDT) MIME-Version: 1.0 Received: by 10.179.65.130 with HTTP; Fri, 3 Nov 2017 05:12:42 -0700 (PDT) In-Reply-To: References: <20171102065626.21835-1-chunyan.zhang@spreadtrum.com> <20171102065626.21835-6-chunyan.zhang@spreadtrum.com> <532aed43-03bf-ea26-bdc2-d7deb1093f53@arm.com> From: Chunyan Zhang Date: Fri, 3 Nov 2017 20:12:42 +0800 Message-ID: Subject: Re: [PATCH V3 05/11] clk: sprd: add mux clock support To: Julien Thierry Cc: Chunyan Zhang , Stephen Boyd , Michael Turquette , Rob Herring , Mark Rutland , Catalin Marinas , Will Deacon , linux-clk , "devicetree@vger.kernel.org" , Arnd Bergmann , Mark Brown , Xiaolong Zhang , Ben Li , "linux-arm-kernel@lists.infradead.org" , "linux-kernel@vger.kernel.org" , Orson Zhai Content-Type: text/plain; charset="UTF-8" Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 3 November 2017 at 02:22, Julien Thierry wrote: > > > On 02/11/17 18:11, Julien Thierry wrote: >> >> Hi, >> >> On 02/11/17 06:56, Chunyan Zhang wrote: >>> >>> This patch adds clock multiplexor support for Spreadtrum platforms, >>> the mux clocks also can be found in sprd composite clocks, so >>> provides two helpers that can be reused later on. >>> >>> Signed-off-by: Chunyan Zhang >>> --- >>> drivers/clk/sprd/Makefile | 1 + >>> drivers/clk/sprd/mux.c | 89 >>> +++++++++++++++++++++++++++++++++++++++++++++++ >>> drivers/clk/sprd/mux.h | 65 ++++++++++++++++++++++++++++++++++ >>> 3 files changed, 155 insertions(+) >>> create mode 100644 drivers/clk/sprd/mux.c >>> create mode 100644 drivers/clk/sprd/mux.h >>> >>> diff --git a/drivers/clk/sprd/Makefile b/drivers/clk/sprd/Makefile >>> index 8cd5592..cee36b5 100644 >>> --- a/drivers/clk/sprd/Makefile >>> +++ b/drivers/clk/sprd/Makefile >>> @@ -2,3 +2,4 @@ obj-$(CONFIG_SPRD_COMMON_CLK) += clk-sprd.o >>> clk-sprd-y += common.o >>> clk-sprd-y += gate.o >>> +clk-sprd-y += mux.o >>> diff --git a/drivers/clk/sprd/mux.c b/drivers/clk/sprd/mux.c >>> new file mode 100644 >>> index 0000000..5a344e0 >>> --- /dev/null >>> +++ b/drivers/clk/sprd/mux.c >>> @@ -0,0 +1,89 @@ >>> +/* >>> + * Spreadtrum multiplexer clock driver >>> + * >>> + * Copyright (C) 2017 Spreadtrum, Inc. >>> + * Author: Chunyan Zhang >>> + * >>> + * SPDX-License-Identifier: GPL-2.0 >>> + */ >>> + >>> +#include >>> +#include >>> +#include >>> + >>> +#include "mux.h" >>> + >>> +DEFINE_SPINLOCK(sprd_mux_lock); >>> +EXPORT_SYMBOL_GPL(sprd_mux_lock); >>> + >>> +u8 sprd_mux_helper_get_parent(const struct sprd_clk_common *common, >>> + const struct sprd_mux_internal *mux) >>> +{ >>> + unsigned int reg; >>> + u8 parent; >>> + int num_parents; >>> + int i; >>> + >>> + sprd_regmap_read(common->regmap, common->reg, ®); >>> + parent = reg >> mux->shift; >>> + parent &= (1 << mux->width) - 1; >>> + >>> + if (mux->table) { >>> + num_parents = clk_hw_get_num_parents(&common->hw); >>> + >>> + for (i = 0; i < num_parents; i++) >>> + if (parent == mux->table[i] || >>> + (i < (num_parents - 1) && parent > mux->table[i] && >>> + parent < mux->table[i + 1])) >>> + return i; >>> + if (i == num_parents) >>> + return i - 1; >> >> >> The if branch is not necessary since you only get there when the loop has >> finished, so the condition is always true. And the loop can be simplified >> to: >> >> for (i = 0; i < num_parents - 1; i++) >> if (parent >= mux->table[i] && parent < mux->table[i + 1]) >> return i; >> >> return num_parents; > > > Oops, meant to say "return num_parents - 1;" on that last line. Yes, that makes the code nicer, and thanks to your reminder, I even make it more clean by moving the check for 'mux->table' up. Thanks, Chunyan > > -- > Julien Thierry From 1583047009469513458@xxx Fri Nov 03 12:14:34 +0000 2017 X-GM-THRID: 1582936966448450735 X-Gmail-Labels: Inbox,Category Forums,HistoricalUnread