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] [thread-next>] [day] [month] [year] [list]
Message-ID: <20250928110239.20f81375@jic23-huawei>
Date: Sun, 28 Sep 2025 11:02:39 +0100
From: Jonathan Cameron <jic23@...nel.org>
To: kernel test robot <lkp@...el.com>
Cc: 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,
 oe-kbuild-all@...ts.linux.dev, 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>, Uwe
 Kleine-König <ukleinek@...nel.org>
Subject: Re: [PATCH v3 6/8] iio: adc: ad4030: Add SPI offload support

On Sat, 27 Sep 2025 20:59:36 +0800
kernel test robot <lkp@...el.com> wrote:

> Hi Marcelo,
> 
> kernel test robot noticed the following build errors:

So, question is stubs or add a dependency.
(Assuming there isn't a patch in flight already to add the stubs).

Uwe, does it make sense to add stubs for these, similar to many of the
other consumer interfaces?

Jonathan

> 
> [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  
> 


Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ