Received: by 2002:ac0:a591:0:0:0:0:0 with SMTP id m17-v6csp2076229imm; Fri, 6 Jul 2018 11:23:32 -0700 (PDT) X-Google-Smtp-Source: AAOMgpdcX+MQV9bIeynFitpkWV7LVr7Ln7A5gfmWrMwENG5HfghD9UQrZnJAvgASUY/OYe7/OHCc X-Received: by 2002:a62:8917:: with SMTP id v23-v6mr11730168pfd.127.1530901412606; Fri, 06 Jul 2018 11:23:32 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1530901412; cv=none; d=google.com; s=arc-20160816; b=fZZK84ubyz93r4A7YAU2BFLMEVZHAUmTP5pUbkClkfTR6VDUFMTLFsWvG6pXu/JoVX Z5TGDX0MEMr7e0EkVufkU5+cC2BCABJcJ1rpOlTujAT3J03lkceWZkjIhbHt8BXrKC+j 8EKkLPKehwZqoavTWByxCPhukh02KJUkFjPKM5p8+34HpeGKhQgYuXj8LVGDMDtThvUf 06F1wy0UvNEN1QT/vac3cwmeeQNR/bGOBcUDZ9xK8ECyu7GpEVzA4cGUpuyQTmSixaTX HZm6mnAkzQqc+Gf8EfmEbbVSc2uAxJ/ZXIOkBxgXjrNxn0oq4Aiqijaa0EfG+F14GnhW YSbA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:date:subject:user-agent:message-id :references:cc:in-reply-to:from:to:content-transfer-encoding :mime-version:dkim-signature:arc-authentication-results; bh=rTRiyf7+Z0zxv4rwCswgaLxn9OF34l6PD/y94T6HMEg=; b=LFayawK7wD1u/Rpy+8tNrekGWPQvdMrdxIbL1UNERCHARUW7JIVz2ThTeQ5gJ3VKyu VpPFdPIUoW3VjF/Dj73sLHexCdsTC443EyBY4TdiHDIDLg030Y6W/jzGdMVyUfL4iDvv E/0lKr0Oghf4H9tOAL1MmPsZGDbUP7RS/TzteRvLoii0xqsv2d41w33/VfqUJVV64e8/ iAopRciolnNN+LkhS0dZ6SbVYRcNZgVKdSiFXQBPWHkFmV9J0U9sxtnI8tBYbvnK+dWU E2GwcbmW8w7yoFls9nq9le0QwA+o2VaIc4t0Bgd1UpH4wJdTnr3ckea2kJ0Hgo/gd3H4 Qxpg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=Jj74CBiZ; 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=kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id o9-v6si8898681pfe.259.2018.07.06.11.23.17; Fri, 06 Jul 2018 11:23:32 -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=@kernel.org header.s=default header.b=Jj74CBiZ; 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=kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S934199AbeGFSVV (ORCPT + 99 others); Fri, 6 Jul 2018 14:21:21 -0400 Received: from mail.kernel.org ([198.145.29.99]:53434 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S933921AbeGFSVU (ORCPT ); Fri, 6 Jul 2018 14:21:20 -0400 Received: from localhost (unknown [104.132.1.75]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id 7FFE02089D; Fri, 6 Jul 2018 18:21:19 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1530901279; bh=HHKH6xxyPZA5jknDbX9CrYxZFkR88Fqh94F/v2Bz/ew=; h=To:From:In-Reply-To:Cc:References:Subject:Date:From; b=Jj74CBiZUUhrxZncB25HLt57IVHAn0AQF5uf/XagjKiDBBjDAbxm8OQPSDV8nS76J KR6Stsz+gOBJGCHf9uPo5zCUZcnfX42fI3jCPrBrnmeNyq9mdVRaWgQy41DakDoJzH GLDgBpDCDjY8HfhPtcjv1w20aLPqljJE8Jey9zEI= Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable To: Aapo Vienamo , Peter De Schrijver From: Stephen Boyd In-Reply-To: <1530699455-27654-1-git-send-email-avienamo@nvidia.com> Cc: Prashant Gaikwad , Michael Turquette , Thierry Reding , Jonathan Hunter , linux-kernel@vger.kernel.org, linux-clk@vger.kernel.org, linux-tegra@vger.kernel.org, Aapo Vienamo References: <1530699455-27654-1-git-send-email-avienamo@nvidia.com> Message-ID: <153090127889.143105.9965550219605167700@swboyd.mtv.corp.google.com> User-Agent: alot/0.7 Subject: Re: [PATCH v2 1/3] clk: tegra: refactor 7.1 div calculation Date: Fri, 06 Jul 2018 11:21:18 -0700 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Quoting Aapo Vienamo (2018-07-04 03:17:33) > diff --git a/drivers/clk/tegra/div71.c b/drivers/clk/tegra/div71.c > new file mode 100644 > index 0000000..1a5e04c > --- /dev/null > +++ b/drivers/clk/tegra/div71.c > @@ -0,0 +1,54 @@ > +/* > + * Copyright (c) 2018, NVIDIA CORPORATION. All rights reserved. > + * > + * This program is free software; you can redistribute it and/or modify = it > + * under the terms and conditions of the GNU General Public License, > + * version 2, as published by the Free Software Foundation. > + * > + * This program is distributed in the hope it will be useful, but WITHOUT > + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or > + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License= for > + * more details. > + * > + * You should have received a copy of the GNU General Public License > + * along with this program. If not, see . > + */ > + > +#include You can include instead. > + > +#include "clk.h" > + > +#define div_mask(w) ((1 << (w)) - 1) > + > +int div71_get(unsigned long rate, unsigned parent_rate, u8 width, > + u8 frac_width, u8 flags) > +{ > + u64 divider_ux1 =3D parent_rate; Hmm ok, now it's unsigned. That's works too. > + int mul; > + > + if (!rate) > + return 0; > + > + mul =3D 1 << frac_width; > + > + if (!(flags & TEGRA_DIVIDER_INT)) > + divider_ux1 *=3D mul; > + > + if (flags & TEGRA_DIVIDER_ROUND_UP) > + divider_ux1 +=3D rate - 1; > + > + do_div(divider_ux1, rate); > + > + if (flags & TEGRA_DIVIDER_INT) > + divider_ux1 *=3D mul; > + > + if (divider_ux1 < mul) > + return 0; > + > + divider_ux1 -=3D mul; > + > + if (divider_ux1 > div_mask(width)) > + return div_mask(width); > + > + return divider_ux1; > +}