lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-ID: <202509272028.0zLNiR5w-lkp@intel.com>
Date: Sat, 27 Sep 2025 20:59:36 +0800
From: kernel test robot <lkp@...el.com>
To: Marcelo Schmitt <marcelo.schmitt@...log.com>, linux-iio@...r.kernel.org,
	devicetree@...r.kernel.org, linux-doc@...r.kernel.org,
	linux-spi@...r.kernel.org, linux-kernel@...r.kernel.org
Cc: oe-kbuild-all@...ts.linux.dev, jic23@...nel.org,
	michael.hennerich@...log.com, nuno.sa@...log.com,
	eblanc@...libre.com, dlechner@...libre.com, andy@...nel.org,
	robh@...nel.org, krzk+dt@...nel.org, conor+dt@...nel.org,
	corbet@....net, marcelo.schmitt1@...il.com,
	Trevor Gamblin <tgamblin@...libre.com>,
	Axel Haslam <ahaslam@...libre.com>
Subject: Re: [PATCH v3 6/8] iio: adc: ad4030: Add SPI offload support

Hi Marcelo,

kernel test robot noticed the following build errors:

[auto build test ERROR on 561285d048053fec8a3d6d1e3ddc60df11c393a0]

url:    https://github.com/intel-lab-lkp/linux/commits/Marcelo-Schmitt/dt-bindings-iio-adc-adi-ad4030-Reference-spi-peripheral-props/20250927-044546
base:   561285d048053fec8a3d6d1e3ddc60df11c393a0
patch link:    https://lore.kernel.org/r/0028720d2cb21898ef044458065ac8a0bc829588.1758916484.git.marcelo.schmitt%40analog.com
patch subject: [PATCH v3 6/8] iio: adc: ad4030: Add SPI offload support
config: i386-randconfig-014-20250927 (https://download.01.org/0day-ci/archive/20250927/202509272028.0zLNiR5w-lkp@intel.com/config)
compiler: gcc-14 (Debian 14.2.0-19) 14.2.0
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20250927/202509272028.0zLNiR5w-lkp@intel.com/reproduce)

If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@...el.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202509272028.0zLNiR5w-lkp@intel.com/

All errors (new ones prefixed by >>):

   drivers/spi/spi-offload-trigger-pwm.c: In function 'spi_offload_trigger_pwm_validate':
>> drivers/spi/spi-offload-trigger-pwm.c:55:15: error: implicit declaration of function 'pwm_round_waveform_might_sleep' [-Wimplicit-function-declaration]
      55 |         ret = pwm_round_waveform_might_sleep(st->pwm, &wf);
         |               ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/spi/spi-offload-trigger-pwm.c: In function 'spi_offload_trigger_pwm_enable':
>> drivers/spi/spi-offload-trigger-pwm.c:81:16: error: implicit declaration of function 'pwm_set_waveform_might_sleep' [-Wimplicit-function-declaration]
      81 |         return pwm_set_waveform_might_sleep(st->pwm, &wf, false);
         |                ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/spi/spi-offload-trigger-pwm.c: In function 'spi_offload_trigger_pwm_disable':
>> drivers/spi/spi-offload-trigger-pwm.c:90:15: error: implicit declaration of function 'pwm_get_waveform_might_sleep' [-Wimplicit-function-declaration]
      90 |         ret = pwm_get_waveform_might_sleep(st->pwm, &wf);
         |               ^~~~~~~~~~~~~~~~~~~~~~~~~~~~

Kconfig warnings: (for reference only)
   WARNING: unmet direct dependencies detected for SPI_OFFLOAD_TRIGGER_PWM
   Depends on [n]: SPI [=y] && SPI_OFFLOAD [=y] && PWM [=n]
   Selected by [y]:
   - AD4030 [=y] && IIO [=y] && SPI [=y] && GPIOLIB [=y]


vim +/pwm_round_waveform_might_sleep +55 drivers/spi/spi-offload-trigger-pwm.c

ebb398ae1e052c David Lechner 2025-02-07   36  
ebb398ae1e052c David Lechner 2025-02-07   37  static int spi_offload_trigger_pwm_validate(struct spi_offload_trigger *trigger,
ebb398ae1e052c David Lechner 2025-02-07   38  					    struct spi_offload_trigger_config *config)
ebb398ae1e052c David Lechner 2025-02-07   39  {
ebb398ae1e052c David Lechner 2025-02-07   40  	struct spi_offload_trigger_pwm_state *st = spi_offload_trigger_get_priv(trigger);
ebb398ae1e052c David Lechner 2025-02-07   41  	struct spi_offload_trigger_periodic *periodic = &config->periodic;
ebb398ae1e052c David Lechner 2025-02-07   42  	struct pwm_waveform wf = { };
ebb398ae1e052c David Lechner 2025-02-07   43  	int ret;
ebb398ae1e052c David Lechner 2025-02-07   44  
ebb398ae1e052c David Lechner 2025-02-07   45  	if (config->type != SPI_OFFLOAD_TRIGGER_PERIODIC)
ebb398ae1e052c David Lechner 2025-02-07   46  		return -EINVAL;
ebb398ae1e052c David Lechner 2025-02-07   47  
ebb398ae1e052c David Lechner 2025-02-07   48  	if (!periodic->frequency_hz)
ebb398ae1e052c David Lechner 2025-02-07   49  		return -EINVAL;
ebb398ae1e052c David Lechner 2025-02-07   50  
ebb398ae1e052c David Lechner 2025-02-07   51  	wf.period_length_ns = DIV_ROUND_UP_ULL(NSEC_PER_SEC, periodic->frequency_hz);
ebb398ae1e052c David Lechner 2025-02-07   52  	/* REVISIT: 50% duty-cycle for now - may add config parameter later */
ebb398ae1e052c David Lechner 2025-02-07   53  	wf.duty_length_ns = wf.period_length_ns / 2;
ebb398ae1e052c David Lechner 2025-02-07   54  
ebb398ae1e052c David Lechner 2025-02-07  @55  	ret = pwm_round_waveform_might_sleep(st->pwm, &wf);
ebb398ae1e052c David Lechner 2025-02-07   56  	if (ret < 0)
ebb398ae1e052c David Lechner 2025-02-07   57  		return ret;
ebb398ae1e052c David Lechner 2025-02-07   58  
ebb398ae1e052c David Lechner 2025-02-07   59  	periodic->frequency_hz = DIV_ROUND_UP_ULL(NSEC_PER_SEC, wf.period_length_ns);
ebb398ae1e052c David Lechner 2025-02-07   60  
ebb398ae1e052c David Lechner 2025-02-07   61  	return 0;
ebb398ae1e052c David Lechner 2025-02-07   62  }
ebb398ae1e052c David Lechner 2025-02-07   63  
ebb398ae1e052c David Lechner 2025-02-07   64  static int spi_offload_trigger_pwm_enable(struct spi_offload_trigger *trigger,
ebb398ae1e052c David Lechner 2025-02-07   65  					  struct spi_offload_trigger_config *config)
ebb398ae1e052c David Lechner 2025-02-07   66  {
ebb398ae1e052c David Lechner 2025-02-07   67  	struct spi_offload_trigger_pwm_state *st = spi_offload_trigger_get_priv(trigger);
ebb398ae1e052c David Lechner 2025-02-07   68  	struct spi_offload_trigger_periodic *periodic = &config->periodic;
ebb398ae1e052c David Lechner 2025-02-07   69  	struct pwm_waveform wf = { };
ebb398ae1e052c David Lechner 2025-02-07   70  
ebb398ae1e052c David Lechner 2025-02-07   71  	if (config->type != SPI_OFFLOAD_TRIGGER_PERIODIC)
ebb398ae1e052c David Lechner 2025-02-07   72  		return -EINVAL;
ebb398ae1e052c David Lechner 2025-02-07   73  
ebb398ae1e052c David Lechner 2025-02-07   74  	if (!periodic->frequency_hz)
ebb398ae1e052c David Lechner 2025-02-07   75  		return -EINVAL;
ebb398ae1e052c David Lechner 2025-02-07   76  
ebb398ae1e052c David Lechner 2025-02-07   77  	wf.period_length_ns = DIV_ROUND_UP_ULL(NSEC_PER_SEC, periodic->frequency_hz);
ebb398ae1e052c David Lechner 2025-02-07   78  	/* REVISIT: 50% duty-cycle for now - may add config parameter later */
ebb398ae1e052c David Lechner 2025-02-07   79  	wf.duty_length_ns = wf.period_length_ns / 2;
ebb398ae1e052c David Lechner 2025-02-07   80  
ebb398ae1e052c David Lechner 2025-02-07  @81  	return pwm_set_waveform_might_sleep(st->pwm, &wf, false);
ebb398ae1e052c David Lechner 2025-02-07   82  }
ebb398ae1e052c David Lechner 2025-02-07   83  
ebb398ae1e052c David Lechner 2025-02-07   84  static void spi_offload_trigger_pwm_disable(struct spi_offload_trigger *trigger)
ebb398ae1e052c David Lechner 2025-02-07   85  {
ebb398ae1e052c David Lechner 2025-02-07   86  	struct spi_offload_trigger_pwm_state *st = spi_offload_trigger_get_priv(trigger);
ebb398ae1e052c David Lechner 2025-02-07   87  	struct pwm_waveform wf;
ebb398ae1e052c David Lechner 2025-02-07   88  	int ret;
ebb398ae1e052c David Lechner 2025-02-07   89  
ebb398ae1e052c David Lechner 2025-02-07  @90  	ret = pwm_get_waveform_might_sleep(st->pwm, &wf);
ebb398ae1e052c David Lechner 2025-02-07   91  	if (ret < 0) {
ebb398ae1e052c David Lechner 2025-02-07   92  		dev_err(st->dev, "failed to get waveform: %d\n", ret);
ebb398ae1e052c David Lechner 2025-02-07   93  		return;
ebb398ae1e052c David Lechner 2025-02-07   94  	}
ebb398ae1e052c David Lechner 2025-02-07   95  
ebb398ae1e052c David Lechner 2025-02-07   96  	wf.duty_length_ns = 0;
ebb398ae1e052c David Lechner 2025-02-07   97  
ebb398ae1e052c David Lechner 2025-02-07   98  	ret = pwm_set_waveform_might_sleep(st->pwm, &wf, false);
ebb398ae1e052c David Lechner 2025-02-07   99  	if (ret < 0)
ebb398ae1e052c David Lechner 2025-02-07  100  		dev_err(st->dev, "failed to disable PWM: %d\n", ret);
ebb398ae1e052c David Lechner 2025-02-07  101  }
ebb398ae1e052c David Lechner 2025-02-07  102  

-- 
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ