[PATCH v8 00/12] iio: ssp_sensors: driver fixes, refactor and cleanup

Sanjay Chitroda posted 12 patches 1 week, 2 days ago
drivers/iio/common/ssp_sensors/ssp.h     |   3 +
drivers/iio/common/ssp_sensors/ssp_dev.c | 191 ++++++++++++-----------
drivers/iio/common/ssp_sensors/ssp_spi.c | 146 ++++++++---------
3 files changed, 178 insertions(+), 162 deletions(-)
[PATCH v8 00/12] iio: ssp_sensors: driver fixes, refactor and cleanup
Posted by Sanjay Chitroda 1 week, 2 days ago
From: Sanjay Chitroda <sanjayembeddedse@gmail.com>

Hi all,

This patch series improves resource cleanup and error handling in the
SSP IIO SPI driver by adopting the recently introduced cleanup
helpers.

The changes focus on making probe/remove paths more robust and easier
to reason about by reducing manual unwind logic and ensuring that locks
and dynamically allocated resources are released consistently across
all exit paths.

Key highlights of this series:

- Reuse embedded rx buffer for SPI transfer instead of allocating new
  DMA memory in interrupt context for write transaction between AP <-> HUB.
- Replace dynamic resource lifetime management with device‑managed
  (devm_) APIs to simplify cleanup and error paths.
- Refactor common helper API, improving readability and reducing
  duplicatation.
- Address minor codestyle warnings and use dev_err_probe in probe path.

Changes in v8:
- 0001 has been added fixes-togreg howerver keep this to have baseline
  changes for next patches in series
- new 0003 -> refactor transfer logic
- new 0006 -> fix variable type and declration as per review comment
- new 0009 -> use guard() resource management API
- new 0011 -> use return in all legs of function to symmetry
- v7 series -> https://lore.kernel.org/all/20260426091710.3722035-1-sanjayembedded@gmail.com/
Changes in v7:
- first 2 checkpatch patches are applied to iio/testing
- address coding type review comment from Andy at multiple places
- add warning fix in ssp_dev driver
- add new change to cancel refresh work
- add helper API for enable/disable MCU
- Following input from Andy add local variable dev to use with APIs
- v6 series: https://lore.kernel.org/all/20260415050749.3858046-1-sanjayembedded@gmail.com/
Changes in v6:
- 0005: Drop remove() path using devm action with input from David
- 0007: Replace dynamic memory allocation with embedded fixed size struct buffer
- 0004: new: drop duplication in remove()
- 0006: new: Use dev_err_probe in driver probe()
- v5 series: https://lore.kernel.org/all/20260406080852.2727453-1-sanjayembedded@gmail.com/
Changes in v5:
- Drop usage of guard() helpers to avoid mixing mutex_lock() with
  guard()(), based on reviewer feedback.
- 0003: Refactor shared helper API, reducing duplication.
- 0004: Convert resource allocation and teardown to devm_ managed APIs to
  simplify error handling and probe/remove paths.
- v4 series: https://lore.kernel.org/all/20260326081815.925373-1-sanjayembedded@gmail.com/
Changes in v4:
- Update sequence and make checkpatch style fix in base change
- Split WARNING and CHECK change with input of Andy as 0001 and 0002
- 0003: Use guard() instead of scoped_guard()
- 0004: Use preallocated buffer to stash memory allocation
- v3 series: https://lore.kernel.org/all/20260315125509.857195-1-sanjayembedded@gmail.com/

No functional behavior changes are intended.

Testing:
  - Compiled with W=1
  - Build-tested on QEMU x86_64

Feedback and reviews are very welcome.

Thanks,
Sanjay Chitroda


Sanjay Chitroda (12):
  iio: ssp_sensors: cancel delayed work_refresh on remove
  iio: ssp_sensors: factor out pending list add/remove helpers
  iio: ssp_sensors: refactor transfer logic into helper
  iio: ssp_sensors: factor out MCU enable/disable helpers
  iio: ssp_sensors: use local struct device
  iio: ssp_sensors: fix variable type and declaration order in probe()
  iio: ssp_sensors: Drop duplicated wdt timer and work cleanup
  iio: ssp_sensors: convert probe and teardown to devm-managed resources
  iio: ssp_sensors: use guard() to release mutexes
  iio: ssp_sensors: Use dev_err_probe()
  iio: ssp_sensors: return errors directly from ssp_irq_msg()
  iio: ssp_sensors: reuse embedded RX buffer for SPI transfers

 drivers/iio/common/ssp_sensors/ssp.h     |   3 +
 drivers/iio/common/ssp_sensors/ssp_dev.c | 191 ++++++++++++-----------
 drivers/iio/common/ssp_sensors/ssp_spi.c | 146 ++++++++---------
 3 files changed, 178 insertions(+), 162 deletions(-)


base-commit: 1548c54e9adc32a719499216f63fba14b2fc07c3
-- 
2.34.1

Re: [PATCH v8 00/12] iio: ssp_sensors: driver fixes, refactor and cleanup
Posted by Jonathan Cameron 1 week ago
On Fri, 15 May 2026 23:10:05 +0530
Sanjay Chitroda <sanjayembeddedse@gmail.com> wrote:

> From: Sanjay Chitroda <sanjayembeddedse@gmail.com>
> 
> Hi all,
> 
> This patch series improves resource cleanup and error handling in the
> SSP IIO SPI driver by adopting the recently introduced cleanup
> helpers.
> 
> The changes focus on making probe/remove paths more robust and easier
> to reason about by reducing manual unwind logic and ensuring that locks
> and dynamically allocated resources are released consistently across
> all exit paths.

Hi Sanjay,

Whilst I would encourage you to look at what sashiko came up with, IIRC
a lot of what it found is unrelated to the work in this series.
https://sashiko.dev/#/patchset/20260515174017.3962168-1-sanjayembedded%40gmail.com

My main concern here is that some of the changes are what I'd consider
non trivial so I think this needs some testing.  Are you doing that
or is this just compile tested?  Given we have a lot of new contributors
recently I'm not sure who is solving their own problems and who is looking
to help out with modernisation of old code and doesn't have hardware.

If you can't test, can any of the samsung folk help?
I have no idea if this device is present in modern chips or is just
there for legacy.

Jonathan