This series 1. Splits device/devres.h for the users that are only interested in devres APIs. Original work by Andy Shevchenko: https://lore.kernel.org/r/20241203195340.855879-1-andriy.shevchenko@xxxxxxxxxxxxxxx 2. Introduces a more robust and cleaner devm_kmemdup_array() helper and uses it across drivers. The idea behind embedding both work into a single series is to reduce conflicts and dependencies while merging. v2: Use size_mul() for multiplication (Dmitry) Update commit message (Dmitry) v3: Embed devres.h work by Andy Add more users of devm_kmemdup_array() Update tags and rebase Andy Shevchenko (2): driver core: Split devres APIs to device/devres.h iio: imu: st_lsm9ds0: Replace device.h with what is needed Raag Jadav (18): devres: Introduce devm_kmemdup_array() pinctrl: intel: copy communities using devm_kmemdup_array() pinctrl: baytrail: copy communities using devm_kmemdup_array() pinctrl: cherryview: use devm_kmemdup_array() pinctrl: tangier: use devm_kmemdup_array() pinctrl: pxa2xx: use devm_kmemdup_array() input: sparse-keymap: use devm_kmemdup_array() input: ipaq-micro-keys: use devm_kmemdup_array() regulator: devres: use devm_kmemdup_array() regulator: cros-ec: use devm_kmemdup_array() power: supply: sc27xx: use devm_kmemdup_array() iio: adc: xilinx-xadc-core: use devm_kmemdup_array() ASoC: Intel: avs: use devm_kmemdup_array() ASoC: hdac_hdmi: use devm_kmemdup_array() ASoC: tlv320dac33: use devm_kmemdup_array() ASoC: uda1380: use devm_kmemdup_array() ASoC: meson: axg-tdm-interface: use devm_kmemdup_array() ASoC: uniphier: use devm_kmemdup_array() drivers/iio/adc/xilinx-xadc-core.c | 4 +- drivers/iio/imu/st_lsm9ds0/st_lsm9ds0_i2c.c | 2 +- drivers/iio/imu/st_lsm9ds0/st_lsm9ds0_spi.c | 2 +- drivers/input/keyboard/ipaq-micro-keys.c | 5 +- drivers/input/sparse-keymap.c | 3 +- drivers/pinctrl/intel/pinctrl-baytrail.c | 6 +- drivers/pinctrl/intel/pinctrl-cherryview.c | 5 +- drivers/pinctrl/intel/pinctrl-intel.c | 6 +- drivers/pinctrl/intel/pinctrl-tangier.c | 5 +- drivers/pinctrl/pxa/pinctrl-pxa2xx.c | 8 +- drivers/power/supply/sc27xx_fuel_gauge.c | 5 +- drivers/regulator/cros-ec-regulator.c | 4 +- drivers/regulator/devres.c | 5 +- include/linux/device.h | 119 +----------------- include/linux/device/devres.h | 129 ++++++++++++++++++++ sound/soc/codecs/hdac_hdmi.c | 3 +- sound/soc/codecs/tlv320dac33.c | 6 +- sound/soc/codecs/uda1380.c | 6 +- sound/soc/intel/avs/boards/da7219.c | 3 +- sound/soc/intel/avs/boards/es8336.c | 3 +- sound/soc/intel/avs/boards/nau8825.c | 3 +- sound/soc/intel/avs/boards/rt274.c | 3 +- sound/soc/intel/avs/boards/rt286.c | 3 +- sound/soc/intel/avs/boards/rt298.c | 3 +- sound/soc/intel/avs/boards/rt5663.c | 3 +- sound/soc/intel/avs/boards/rt5682.c | 2 +- sound/soc/meson/axg-tdm-interface.c | 9 +- sound/soc/uniphier/aio-cpu.c | 8 +- 28 files changed, 179 insertions(+), 184 deletions(-) create mode 100644 include/linux/device/devres.h base-commit: 2014c95afecee3e76ca4a56956a936e23283f05b -- 2.34.1