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