From mboxrd@z Thu Jan 1 00:00:00 1970 From: Heikki Krogerus Subject: Re: [PATCH 3/4] clk: new basic clk type for fractional divider Date: Wed, 14 May 2014 16:55:49 +0300 Message-ID: <20140514135548.GC12238@xps8300> References: <1399983233-18037-1-git-send-email-heikki.krogerus@linux.intel.com> <1399983233-18037-4-git-send-email-heikki.krogerus@linux.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Return-path: Received: from mga03.intel.com ([143.182.124.21]:10219 "EHLO mga03.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1755605AbaENNzz (ORCPT ); Wed, 14 May 2014 09:55:55 -0400 Content-Disposition: inline In-Reply-To: <1399983233-18037-4-git-send-email-heikki.krogerus@linux.intel.com> Sender: linux-acpi-owner@vger.kernel.org List-Id: linux-acpi@vger.kernel.org To: "Rafael J. Wysocki" Cc: Mike Turquette , Mika Westerberg , Jin Yao , Li Aubrey , Andy Shevchenko , linux-acpi@vger.kernel.org, linux-kernel@vger.kernel.org On Tue, May 13, 2014 at 03:13:52PM +0300, Heikki Krogerus wrote: > +static unsigned long clk_fd_recalc_rate(struct clk_hw *hw, > + unsigned long parent_rate) > +{ > + struct clk_fractional_divider *fd = to_clk_fd(hw); > + unsigned long flags = 0; > + u64 n, m; > + u32 val; > + > + if (fd->lock) > + spin_lock_irqsave(fd->lock, flags); > + > + val = clk_readl(fd->reg); > + > + if (fd->lock) > + spin_unlock_irqrestore(fd->lock, flags); > + > + m = (val & fd->mmask) >> fd->mshift; > + n = (val & fd->nmask) >> fd->nshift; > + > + return parent_rate * m / n; > +} Andy noticed an issue here but he commented it outside the list. I need to use do_div() here. He had also some nitpicks for the other patches, so I'll prepare a new version for all of these tomorrow. -- heikki