All of lore.kernel.org
 help / color / mirror / Atom feed
From: kernel test robot <lkp@intel.com>
To: "Baruch Siach" <baruch@tkos.co.il>,
	"Thierry Reding" <thierry.reding@gmail.com>,
	"Uwe Kleine-König" <u.kleine-koenig@pengutronix.de>,
	"Andy Gross" <agross@kernel.org>,
	"Bjorn Andersson" <bjorn.andersson@linaro.org>
Cc: llvm@lists.linux.dev, kbuild-all@lists.01.org,
	Baruch Siach <baruch.siach@siklu.com>,
	Balaji Prakash J <bjagadee@codeaurora.org>,
	Rob Herring <robh+dt@kernel.org>,
	Robert Marko <robert.marko@sartura.hr>,
	Kathiravan T <kathirav@codeaurora.org>,
	linux-pwm@vger.kernel.org
Subject: Re: [PATCH 1/3] pwm: driver for qualcomm ipq6018 pwm block
Date: Tue, 8 Feb 2022 04:22:51 +0800	[thread overview]
Message-ID: <202202080410.R0qwqtXx-lkp@intel.com> (raw)
In-Reply-To: <17dd231f496d09ed8502bdd505eaa77bb6637e4b.1644226245.git.baruch@tkos.co.il>

Hi Baruch,

I love your patch! Perhaps something to improve:

[auto build test WARNING on thierry-reding-pwm/for-next]
[also build test WARNING on robh/for-next v5.17-rc3 next-20220207]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch]

url:    https://github.com/0day-ci/linux/commits/Baruch-Siach/pwm-driver-for-qualcomm-ipq6018-pwm-block/20220207-175605
base:   https://git.kernel.org/pub/scm/linux/kernel/git/thierry.reding/linux-pwm.git for-next
config: hexagon-allyesconfig (https://download.01.org/0day-ci/archive/20220208/202202080410.R0qwqtXx-lkp@intel.com/config)
compiler: clang version 15.0.0 (https://github.com/llvm/llvm-project 0d8850ae2cae85d49bea6ae0799fa41c7202c05c)
reproduce (this is a W=1 build):
        wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
        chmod +x ~/bin/make.cross
        # https://github.com/0day-ci/linux/commit/71e449eb6d19b141b4527caae529e16c52bcfeea
        git remote add linux-review https://github.com/0day-ci/linux
        git fetch --no-tags linux-review Baruch-Siach/pwm-driver-for-qualcomm-ipq6018-pwm-block/20220207-175605
        git checkout 71e449eb6d19b141b4527caae529e16c52bcfeea
        # save the config file to linux build tree
        mkdir build_dir
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross W=1 O=build_dir ARCH=hexagon SHELL=/bin/bash drivers/pwm/

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>

All warnings (new ones prefixed by >>):

>> drivers/pwm/pwm-ipq.c:122:11: warning: result of comparison of constant 16000000000 with expression of type 'unsigned long' is always false [-Wtautological-constant-out-of-range-compare]
           if (rate > 16ULL * GIGA)
               ~~~~ ^ ~~~~~~~~~~~~
   1 warning generated.


vim +122 drivers/pwm/pwm-ipq.c

    99	
   100	static int ipq_pwm_apply(struct pwm_chip *chip, struct pwm_device *pwm,
   101				 const struct pwm_state *state)
   102	{
   103		struct ipq_pwm_chip *ipq_chip = ipq_pwm_from_chip(chip);
   104		unsigned int pre_div, pwm_div, best_pre_div, best_pwm_div;
   105		unsigned long rate = clk_get_rate(ipq_chip->clk);
   106		u64 period_ns, duty_ns, period_rate;
   107		u64 min_diff;
   108	
   109		if (state->polarity != PWM_POLARITY_NORMAL)
   110			return -EINVAL;
   111	
   112		if (state->period < DIV64_U64_ROUND_UP(NSEC_PER_SEC, rate))
   113			return -ERANGE;
   114	
   115		period_ns = min(state->period, IPQ_PWM_MAX_PERIOD_NS);
   116		duty_ns = min(state->duty_cycle, period_ns);
   117	
   118		/*
   119		 * period_ns is 1G or less. As long as rate is less than 16 GHz,
   120		 * period_rate does not overflow. Make that explicit.
   121		 */
 > 122		if (rate > 16ULL * GIGA)
   123			return -EINVAL;
   124		period_rate = period_ns * rate;
   125		best_pre_div = IPQ_PWM_MAX_DIV;
   126		best_pwm_div = IPQ_PWM_MAX_DIV;
   127		/*
   128		 * We don't need to consider pre_div values smaller than
   129		 *
   130		 *                              period_rate
   131		 *  pre_div_min := ------------------------------------
   132		 *                 NSEC_PER_SEC * (IPQ_PWM_MAX_DIV + 1)
   133		 *
   134		 * because pre_div = pre_div_min results in a better
   135		 * approximation.
   136		 */
   137		pre_div = div64_u64(period_rate,
   138				(u64)NSEC_PER_SEC * (IPQ_PWM_MAX_DIV + 1));
   139		min_diff = period_rate;
   140	
   141		for (; pre_div <= IPQ_PWM_MAX_DIV; pre_div++) {
   142			u64 remainder;
   143	
   144			pwm_div = div64_u64_rem(period_rate,
   145					(u64)NSEC_PER_SEC * (pre_div + 1), &remainder);
   146			/* pwm_div is unsigned; the check below catches underflow */
   147			pwm_div--;
   148	
   149			/*
   150			 * Swapping values for pre_div and pwm_div produces the same
   151			 * period length. So we can skip all settings with pre_div >
   152			 * pwm_div which results in bigger constraints for selecting
   153			 * the duty_cycle than with the two values swapped.
   154			 */
   155			if (pre_div > pwm_div)
   156				break;
   157	
   158			/*
   159			 * Make sure we can do 100% duty cycle where
   160			 * hi_dur == pwm_div + 1
   161			 */
   162			if (pwm_div > IPQ_PWM_MAX_DIV - 1)
   163				continue;
   164	
   165			if (remainder < min_diff) {
   166				best_pre_div = pre_div;
   167				best_pwm_div = pwm_div;
   168				min_diff = remainder;
   169	
   170				if (min_diff == 0) /* bingo */
   171					break;
   172			}
   173		}
   174	
   175		/* config divider values for the closest possible frequency */
   176		config_div_and_duty(pwm, best_pre_div, best_pwm_div,
   177				    rate, duty_ns, state->enabled);
   178	
   179		return 0;
   180	}
   181	

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org

WARNING: multiple messages have this Message-ID (diff)
From: kernel test robot <lkp@intel.com>
To: kbuild-all@lists.01.org
Subject: Re: [PATCH 1/3] pwm: driver for qualcomm ipq6018 pwm block
Date: Tue, 08 Feb 2022 04:22:51 +0800	[thread overview]
Message-ID: <202202080410.R0qwqtXx-lkp@intel.com> (raw)
In-Reply-To: <17dd231f496d09ed8502bdd505eaa77bb6637e4b.1644226245.git.baruch@tkos.co.il>

[-- Attachment #1: Type: text/plain, Size: 5084 bytes --]

Hi Baruch,

I love your patch! Perhaps something to improve:

[auto build test WARNING on thierry-reding-pwm/for-next]
[also build test WARNING on robh/for-next v5.17-rc3 next-20220207]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch]

url:    https://github.com/0day-ci/linux/commits/Baruch-Siach/pwm-driver-for-qualcomm-ipq6018-pwm-block/20220207-175605
base:   https://git.kernel.org/pub/scm/linux/kernel/git/thierry.reding/linux-pwm.git for-next
config: hexagon-allyesconfig (https://download.01.org/0day-ci/archive/20220208/202202080410.R0qwqtXx-lkp(a)intel.com/config)
compiler: clang version 15.0.0 (https://github.com/llvm/llvm-project 0d8850ae2cae85d49bea6ae0799fa41c7202c05c)
reproduce (this is a W=1 build):
        wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
        chmod +x ~/bin/make.cross
        # https://github.com/0day-ci/linux/commit/71e449eb6d19b141b4527caae529e16c52bcfeea
        git remote add linux-review https://github.com/0day-ci/linux
        git fetch --no-tags linux-review Baruch-Siach/pwm-driver-for-qualcomm-ipq6018-pwm-block/20220207-175605
        git checkout 71e449eb6d19b141b4527caae529e16c52bcfeea
        # save the config file to linux build tree
        mkdir build_dir
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross W=1 O=build_dir ARCH=hexagon SHELL=/bin/bash drivers/pwm/

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>

All warnings (new ones prefixed by >>):

>> drivers/pwm/pwm-ipq.c:122:11: warning: result of comparison of constant 16000000000 with expression of type 'unsigned long' is always false [-Wtautological-constant-out-of-range-compare]
           if (rate > 16ULL * GIGA)
               ~~~~ ^ ~~~~~~~~~~~~
   1 warning generated.


vim +122 drivers/pwm/pwm-ipq.c

    99	
   100	static int ipq_pwm_apply(struct pwm_chip *chip, struct pwm_device *pwm,
   101				 const struct pwm_state *state)
   102	{
   103		struct ipq_pwm_chip *ipq_chip = ipq_pwm_from_chip(chip);
   104		unsigned int pre_div, pwm_div, best_pre_div, best_pwm_div;
   105		unsigned long rate = clk_get_rate(ipq_chip->clk);
   106		u64 period_ns, duty_ns, period_rate;
   107		u64 min_diff;
   108	
   109		if (state->polarity != PWM_POLARITY_NORMAL)
   110			return -EINVAL;
   111	
   112		if (state->period < DIV64_U64_ROUND_UP(NSEC_PER_SEC, rate))
   113			return -ERANGE;
   114	
   115		period_ns = min(state->period, IPQ_PWM_MAX_PERIOD_NS);
   116		duty_ns = min(state->duty_cycle, period_ns);
   117	
   118		/*
   119		 * period_ns is 1G or less. As long as rate is less than 16 GHz,
   120		 * period_rate does not overflow. Make that explicit.
   121		 */
 > 122		if (rate > 16ULL * GIGA)
   123			return -EINVAL;
   124		period_rate = period_ns * rate;
   125		best_pre_div = IPQ_PWM_MAX_DIV;
   126		best_pwm_div = IPQ_PWM_MAX_DIV;
   127		/*
   128		 * We don't need to consider pre_div values smaller than
   129		 *
   130		 *                              period_rate
   131		 *  pre_div_min := ------------------------------------
   132		 *                 NSEC_PER_SEC * (IPQ_PWM_MAX_DIV + 1)
   133		 *
   134		 * because pre_div = pre_div_min results in a better
   135		 * approximation.
   136		 */
   137		pre_div = div64_u64(period_rate,
   138				(u64)NSEC_PER_SEC * (IPQ_PWM_MAX_DIV + 1));
   139		min_diff = period_rate;
   140	
   141		for (; pre_div <= IPQ_PWM_MAX_DIV; pre_div++) {
   142			u64 remainder;
   143	
   144			pwm_div = div64_u64_rem(period_rate,
   145					(u64)NSEC_PER_SEC * (pre_div + 1), &remainder);
   146			/* pwm_div is unsigned; the check below catches underflow */
   147			pwm_div--;
   148	
   149			/*
   150			 * Swapping values for pre_div and pwm_div produces the same
   151			 * period length. So we can skip all settings with pre_div >
   152			 * pwm_div which results in bigger constraints for selecting
   153			 * the duty_cycle than with the two values swapped.
   154			 */
   155			if (pre_div > pwm_div)
   156				break;
   157	
   158			/*
   159			 * Make sure we can do 100% duty cycle where
   160			 * hi_dur == pwm_div + 1
   161			 */
   162			if (pwm_div > IPQ_PWM_MAX_DIV - 1)
   163				continue;
   164	
   165			if (remainder < min_diff) {
   166				best_pre_div = pre_div;
   167				best_pwm_div = pwm_div;
   168				min_diff = remainder;
   169	
   170				if (min_diff == 0) /* bingo */
   171					break;
   172			}
   173		}
   174	
   175		/* config divider values for the closest possible frequency */
   176		config_div_and_duty(pwm, best_pre_div, best_pwm_div,
   177				    rate, duty_ns, state->enabled);
   178	
   179		return 0;
   180	}
   181	

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org

  parent reply	other threads:[~2022-02-07 20:23 UTC|newest]

Thread overview: 34+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-02-07  9:30 [PATCH 1/3] pwm: driver for qualcomm ipq6018 pwm block Baruch Siach
2022-02-07  9:30 ` Baruch Siach
2022-02-07  9:30 ` [PATCH 2/3] dt-bindings: pwm: add IPQ6018 binding Baruch Siach
2022-02-07  9:30   ` Baruch Siach
2022-02-24 19:48   ` Bjorn Andersson
2022-02-24 19:48     ` Bjorn Andersson
2022-02-07  9:30 ` [PATCH 3/3] arm64: dts: ipq6018: add pwm node Baruch Siach
2022-02-07  9:30   ` Baruch Siach
2022-02-07 20:22 ` kernel test robot [this message]
2022-02-07 20:22   ` [PATCH 1/3] pwm: driver for qualcomm ipq6018 pwm block kernel test robot
2022-02-08  6:51   ` Baruch Siach
2022-02-08  6:51     ` Baruch Siach
2022-02-08 18:47     ` Nathan Chancellor
2022-02-08 18:47       ` Nathan Chancellor
2023-09-15  6:25 ` Devi Priya
2023-09-15  6:25   ` Devi Priya
2023-09-15  6:36   ` Baruch Siach
2023-09-15  6:36     ` Baruch Siach
2023-09-20  4:58     ` Devi Priya
2023-09-20  4:58       ` Devi Priya
2023-09-22  6:00     ` Devi Priya
2023-09-22  6:00       ` Devi Priya
2023-09-22  8:35       ` Baruch Siach
2023-09-22  8:35         ` Baruch Siach
2023-09-22 10:56         ` Devi Priya
2023-09-22 10:56           ` Devi Priya
  -- strict thread matches above, loose matches on Subject: below --
2021-05-19  7:48 Baruch Siach
2021-05-19  7:48 ` Baruch Siach
2021-05-22 21:35 ` Uwe Kleine-König
2021-05-22 21:35   ` Uwe Kleine-König
2021-05-23 15:54   ` Baruch Siach
2021-05-23 15:54     ` Baruch Siach
2021-05-22 21:37 ` Uwe Kleine-König
2021-05-22 21:37   ` Uwe Kleine-König

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=202202080410.R0qwqtXx-lkp@intel.com \
    --to=lkp@intel.com \
    --cc=agross@kernel.org \
    --cc=baruch.siach@siklu.com \
    --cc=baruch@tkos.co.il \
    --cc=bjagadee@codeaurora.org \
    --cc=bjorn.andersson@linaro.org \
    --cc=kathirav@codeaurora.org \
    --cc=kbuild-all@lists.01.org \
    --cc=linux-pwm@vger.kernel.org \
    --cc=llvm@lists.linux.dev \
    --cc=robert.marko@sartura.hr \
    --cc=robh+dt@kernel.org \
    --cc=thierry.reding@gmail.com \
    --cc=u.kleine-koenig@pengutronix.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.