[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <202507111539.F4FrQltx-lkp@intel.com>
Date: Fri, 11 Jul 2025 15:24:59 +0800
From: kernel test robot <lkp@...el.com>
To: Remi Buisson via B4 Relay <devnull+remi.buisson.tdk.com@...nel.org>,
Jonathan Cameron <jic23@...nel.org>,
David Lechner <dlechner@...libre.com>,
Nuno Sá <nuno.sa@...log.com>,
Andy Shevchenko <andy@...nel.org>, Rob Herring <robh@...nel.org>,
Krzysztof Kozlowski <krzk@...nel.org>,
Conor Dooley <conor+dt@...nel.org>
Cc: oe-kbuild-all@...ts.linux.dev, linux-kernel@...r.kernel.org,
linux-iio@...r.kernel.org, devicetree@...r.kernel.org,
Remi Buisson <remi.buisson@....com>
Subject: Re: [PATCH v2 5/8] iio: imu: inv_icm45600: add I2C driver for
inv_icm45600 driver
Hi Remi,
kernel test robot noticed the following build warnings:
[auto build test WARNING on f8f559752d573a051a984adda8d2d1464f92f954]
url: https://github.com/intel-lab-lkp/linux/commits/Remi-Buisson-via-B4-Relay/dt-bindings-iio-imu-Add-inv_icm45600/20250710-170143
base: f8f559752d573a051a984adda8d2d1464f92f954
patch link: https://lore.kernel.org/r/20250710-add_newport_driver-v2-5-bf76d8142ef2%40tdk.com
patch subject: [PATCH v2 5/8] iio: imu: inv_icm45600: add I2C driver for inv_icm45600 driver
config: m68k-allmodconfig (https://download.01.org/0day-ci/archive/20250711/202507111539.F4FrQltx-lkp@intel.com/config)
compiler: m68k-linux-gcc (GCC) 15.1.0
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20250711/202507111539.F4FrQltx-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/202507111539.F4FrQltx-lkp@intel.com/
All warnings (new ones prefixed by >>):
>> drivers/iio/imu/inv_icm45600/inv_icm45600_core.c:894:12: warning: 'inv_icm45600_runtime_resume' defined but not used [-Wunused-function]
894 | static int inv_icm45600_runtime_resume(struct device *dev)
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~
>> drivers/iio/imu/inv_icm45600/inv_icm45600_core.c:875:12: warning: 'inv_icm45600_runtime_suspend' defined but not used [-Wunused-function]
875 | static int inv_icm45600_runtime_suspend(struct device *dev)
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
>> drivers/iio/imu/inv_icm45600/inv_icm45600_core.c:832:12: warning: 'inv_icm45600_resume' defined but not used [-Wunused-function]
832 | static int inv_icm45600_resume(struct device *dev)
| ^~~~~~~~~~~~~~~~~~~
>> drivers/iio/imu/inv_icm45600/inv_icm45600_core.c:790:12: warning: 'inv_icm45600_suspend' defined but not used [-Wunused-function]
790 | static int inv_icm45600_suspend(struct device *dev)
| ^~~~~~~~~~~~~~~~~~~~
vim +/inv_icm45600_runtime_resume +894 drivers/iio/imu/inv_icm45600/inv_icm45600_core.c
01fd98fed267cd Remi Buisson 2025-07-10 785
01fd98fed267cd Remi Buisson 2025-07-10 786 /*
01fd98fed267cd Remi Buisson 2025-07-10 787 * Suspend saves sensors state and turns everything off.
01fd98fed267cd Remi Buisson 2025-07-10 788 * Check first if runtime suspend has not already done the job.
01fd98fed267cd Remi Buisson 2025-07-10 789 */
01fd98fed267cd Remi Buisson 2025-07-10 @790 static int inv_icm45600_suspend(struct device *dev)
01fd98fed267cd Remi Buisson 2025-07-10 791 {
01fd98fed267cd Remi Buisson 2025-07-10 792 struct inv_icm45600_state *st = dev_get_drvdata(dev);
01fd98fed267cd Remi Buisson 2025-07-10 793 int ret;
01fd98fed267cd Remi Buisson 2025-07-10 794
01fd98fed267cd Remi Buisson 2025-07-10 795 guard(mutex)(&st->lock);
01fd98fed267cd Remi Buisson 2025-07-10 796
01fd98fed267cd Remi Buisson 2025-07-10 797 st->suspended.gyro = st->conf.gyro.mode;
01fd98fed267cd Remi Buisson 2025-07-10 798 st->suspended.accel = st->conf.accel.mode;
01fd98fed267cd Remi Buisson 2025-07-10 799 if (pm_runtime_suspended(dev))
01fd98fed267cd Remi Buisson 2025-07-10 800 return 0;
01fd98fed267cd Remi Buisson 2025-07-10 801
eaedaea6990c59 Remi Buisson 2025-07-10 802 /* Disable FIFO data streaming. */
eaedaea6990c59 Remi Buisson 2025-07-10 803 if (st->fifo.on) {
eaedaea6990c59 Remi Buisson 2025-07-10 804 unsigned int val;
eaedaea6990c59 Remi Buisson 2025-07-10 805
eaedaea6990c59 Remi Buisson 2025-07-10 806 ret = regmap_clear_bits(st->map, INV_ICM45600_REG_FIFO_CONFIG3,
eaedaea6990c59 Remi Buisson 2025-07-10 807 INV_ICM45600_FIFO_CONFIG3_IF_EN);
eaedaea6990c59 Remi Buisson 2025-07-10 808 if (ret)
eaedaea6990c59 Remi Buisson 2025-07-10 809 return ret;
eaedaea6990c59 Remi Buisson 2025-07-10 810 val = FIELD_PREP(INV_ICM45600_FIFO_CONFIG0_MODE_MASK,
eaedaea6990c59 Remi Buisson 2025-07-10 811 INV_ICM45600_FIFO_CONFIG0_MODE_BYPASS);
eaedaea6990c59 Remi Buisson 2025-07-10 812 ret = regmap_update_bits(st->map, INV_ICM45600_REG_FIFO_CONFIG0,
eaedaea6990c59 Remi Buisson 2025-07-10 813 INV_ICM45600_FIFO_CONFIG0_MODE_MASK, val);
eaedaea6990c59 Remi Buisson 2025-07-10 814 if (ret)
eaedaea6990c59 Remi Buisson 2025-07-10 815 return ret;
eaedaea6990c59 Remi Buisson 2025-07-10 816 }
eaedaea6990c59 Remi Buisson 2025-07-10 817
01fd98fed267cd Remi Buisson 2025-07-10 818 ret = inv_icm45600_set_pwr_mgmt0(st, INV_ICM45600_SENSOR_MODE_OFF,
01fd98fed267cd Remi Buisson 2025-07-10 819 INV_ICM45600_SENSOR_MODE_OFF, NULL);
01fd98fed267cd Remi Buisson 2025-07-10 820 if (ret)
01fd98fed267cd Remi Buisson 2025-07-10 821 return ret;
01fd98fed267cd Remi Buisson 2025-07-10 822
01fd98fed267cd Remi Buisson 2025-07-10 823 regulator_disable(st->vddio_supply);
01fd98fed267cd Remi Buisson 2025-07-10 824
01fd98fed267cd Remi Buisson 2025-07-10 825 return 0;
01fd98fed267cd Remi Buisson 2025-07-10 826 }
01fd98fed267cd Remi Buisson 2025-07-10 827
01fd98fed267cd Remi Buisson 2025-07-10 828 /*
01fd98fed267cd Remi Buisson 2025-07-10 829 * System resume gets the system back on and restores the sensors state.
01fd98fed267cd Remi Buisson 2025-07-10 830 * Manually put runtime power management in system active state.
01fd98fed267cd Remi Buisson 2025-07-10 831 */
01fd98fed267cd Remi Buisson 2025-07-10 @832 static int inv_icm45600_resume(struct device *dev)
01fd98fed267cd Remi Buisson 2025-07-10 833 {
01fd98fed267cd Remi Buisson 2025-07-10 834 struct inv_icm45600_state *st = dev_get_drvdata(dev);
eaedaea6990c59 Remi Buisson 2025-07-10 835 struct inv_icm45600_sensor_state *gyro_st = iio_priv(st->indio_gyro);
eaedaea6990c59 Remi Buisson 2025-07-10 836 struct inv_icm45600_sensor_state *accel_st = iio_priv(st->indio_accel);
01fd98fed267cd Remi Buisson 2025-07-10 837 int ret;
01fd98fed267cd Remi Buisson 2025-07-10 838
01fd98fed267cd Remi Buisson 2025-07-10 839 guard(mutex)(&st->lock);
01fd98fed267cd Remi Buisson 2025-07-10 840
01fd98fed267cd Remi Buisson 2025-07-10 841 ret = inv_icm45600_enable_regulator_vddio(st);
01fd98fed267cd Remi Buisson 2025-07-10 842 if (ret)
01fd98fed267cd Remi Buisson 2025-07-10 843 return ret;
01fd98fed267cd Remi Buisson 2025-07-10 844
01fd98fed267cd Remi Buisson 2025-07-10 845 pm_runtime_disable(dev);
01fd98fed267cd Remi Buisson 2025-07-10 846 pm_runtime_set_active(dev);
01fd98fed267cd Remi Buisson 2025-07-10 847 pm_runtime_enable(dev);
01fd98fed267cd Remi Buisson 2025-07-10 848
01fd98fed267cd Remi Buisson 2025-07-10 849 /* Restore sensors state. */
eaedaea6990c59 Remi Buisson 2025-07-10 850 ret = inv_icm45600_set_pwr_mgmt0(st, st->suspended.gyro,
01fd98fed267cd Remi Buisson 2025-07-10 851 st->suspended.accel, NULL);
eaedaea6990c59 Remi Buisson 2025-07-10 852 if (ret)
eaedaea6990c59 Remi Buisson 2025-07-10 853 return ret;
01fd98fed267cd Remi Buisson 2025-07-10 854
eaedaea6990c59 Remi Buisson 2025-07-10 855 /* Restore FIFO data streaming. */
eaedaea6990c59 Remi Buisson 2025-07-10 856 if (st->fifo.on) {
eaedaea6990c59 Remi Buisson 2025-07-10 857 unsigned int val;
eaedaea6990c59 Remi Buisson 2025-07-10 858
eaedaea6990c59 Remi Buisson 2025-07-10 859 inv_sensors_timestamp_reset(&gyro_st->ts);
eaedaea6990c59 Remi Buisson 2025-07-10 860 inv_sensors_timestamp_reset(&accel_st->ts);
eaedaea6990c59 Remi Buisson 2025-07-10 861 val = FIELD_PREP(INV_ICM45600_FIFO_CONFIG0_MODE_MASK,
eaedaea6990c59 Remi Buisson 2025-07-10 862 INV_ICM45600_FIFO_CONFIG0_MODE_STREAM);
eaedaea6990c59 Remi Buisson 2025-07-10 863 ret = regmap_update_bits(st->map, INV_ICM45600_REG_FIFO_CONFIG0,
eaedaea6990c59 Remi Buisson 2025-07-10 864 INV_ICM45600_FIFO_CONFIG0_MODE_MASK, val);
eaedaea6990c59 Remi Buisson 2025-07-10 865 if (ret)
eaedaea6990c59 Remi Buisson 2025-07-10 866 return ret;
eaedaea6990c59 Remi Buisson 2025-07-10 867 ret = regmap_set_bits(st->map, INV_ICM45600_REG_FIFO_CONFIG3,
eaedaea6990c59 Remi Buisson 2025-07-10 868 INV_ICM45600_FIFO_CONFIG3_IF_EN);
eaedaea6990c59 Remi Buisson 2025-07-10 869 }
eaedaea6990c59 Remi Buisson 2025-07-10 870
eaedaea6990c59 Remi Buisson 2025-07-10 871 return ret;
01fd98fed267cd Remi Buisson 2025-07-10 872 }
01fd98fed267cd Remi Buisson 2025-07-10 873
01fd98fed267cd Remi Buisson 2025-07-10 874 /* Runtime suspend will turn off sensors that are enabled by iio devices. */
01fd98fed267cd Remi Buisson 2025-07-10 @875 static int inv_icm45600_runtime_suspend(struct device *dev)
01fd98fed267cd Remi Buisson 2025-07-10 876 {
01fd98fed267cd Remi Buisson 2025-07-10 877 struct inv_icm45600_state *st = dev_get_drvdata(dev);
01fd98fed267cd Remi Buisson 2025-07-10 878 int ret;
01fd98fed267cd Remi Buisson 2025-07-10 879
01fd98fed267cd Remi Buisson 2025-07-10 880 guard(mutex)(&st->lock);
01fd98fed267cd Remi Buisson 2025-07-10 881
01fd98fed267cd Remi Buisson 2025-07-10 882 /* disable all sensors */
01fd98fed267cd Remi Buisson 2025-07-10 883 ret = inv_icm45600_set_pwr_mgmt0(st, INV_ICM45600_SENSOR_MODE_OFF,
01fd98fed267cd Remi Buisson 2025-07-10 884 INV_ICM45600_SENSOR_MODE_OFF, NULL);
01fd98fed267cd Remi Buisson 2025-07-10 885 if (ret)
01fd98fed267cd Remi Buisson 2025-07-10 886 return ret;
01fd98fed267cd Remi Buisson 2025-07-10 887
01fd98fed267cd Remi Buisson 2025-07-10 888 regulator_disable(st->vddio_supply);
01fd98fed267cd Remi Buisson 2025-07-10 889
01fd98fed267cd Remi Buisson 2025-07-10 890 return 0;
01fd98fed267cd Remi Buisson 2025-07-10 891 }
01fd98fed267cd Remi Buisson 2025-07-10 892
01fd98fed267cd Remi Buisson 2025-07-10 893 /* Sensors are enabled by iio devices, no need to turn them back on here. */
01fd98fed267cd Remi Buisson 2025-07-10 @894 static int inv_icm45600_runtime_resume(struct device *dev)
01fd98fed267cd Remi Buisson 2025-07-10 895 {
01fd98fed267cd Remi Buisson 2025-07-10 896 struct inv_icm45600_state *st = dev_get_drvdata(dev);
01fd98fed267cd Remi Buisson 2025-07-10 897
01fd98fed267cd Remi Buisson 2025-07-10 898 guard(mutex)(&st->lock);
01fd98fed267cd Remi Buisson 2025-07-10 899
01fd98fed267cd Remi Buisson 2025-07-10 900 return inv_icm45600_enable_regulator_vddio(st);
01fd98fed267cd Remi Buisson 2025-07-10 901 }
01fd98fed267cd Remi Buisson 2025-07-10 902
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
Powered by blists - more mailing lists