[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <1dcf3278-7552-4b52-91d2-e8e711f8b230@linaro.org>
Date: Sat, 22 Nov 2025 17:16:59 +0100
From: Daniel Lezcano <daniel.lezcano@...aro.org>
To: jic23@...nel.org, dlechner@...libre.com, nuno.sa@...log.com,
andy@...nel.org, robh@...nel.org, conor+dt@...nel.org, krzk+dt@...nel.org
Cc: linux-iio@...r.kernel.org, s32@....com, linux-kernel@...r.kernel.org,
devicetree@...r.kernel.org, chester62515@...il.com, mbrugger@...e.com,
ghennadi.procopciuc@....nxp.com, vkoul@...nel.org
Subject: Re: [PATCH v8 0/2] NXP SAR ADC IIO driver for s32g2/3 platforms
Hi Johnathan,
I believe I took all comments into account.
Can this series be considered to be merged ?
Thanks
-- Daniel
On 11/19/25 23:39, Daniel Lezcano wrote:
> The S32G2 and S32G3 platforms have a couple of successive
> approximation register (SAR) ADCs with eight channels and 12-bit
> resolution. These changes provide the driver support for these ADCs
> and the bindings describing them.
>
> The driver is derived from the BSP driver version. It has been partly
> rewritten to conform to upstream criteria.
>
> https://github.com/nxp-auto-linux/linux/blob/release/bsp44.0-6.6.85-rt/drivers/iio/adc/s32cc_adc.c
>
> After the V1 posting there were some discussions around the DMA code
> to be converted to use the IIO DMA API [1]. Unfortunately this one is
> not yet fully implemented and merged in the framework to support the
> cyclic DMA. The current DMA code in the driver has been used in
> production since several years and even if I agree it can be improved
> with a dedicated IIO DMA API in the future, IMO, it sounds reasonable
> to keep it as is until the IIO DMA API supporting the cyclic DMA is
> merged. I'll be glad to convert the driver code if such an API exists
> and allows to remove code inside the driver.
>
> [1] https://lore.kernel.org/all/c30bb4b6328d15a9c213c0fa64b909035dc7bf40.camel@gmail.com/
> [2] https://lore.kernel.org/all/aRyBKH4KOQ1L8lA4@black.igk.intel.com/
>
> Changelog:
> * V8:
> ** Andy Shevchenko **
> - Fixed a sentence in the changelog
> - Moved dev_name() to the upper line for a better line length
> - Unified messages by starting with a capital letter everywhere
> - Changed 'dma' -> 'DMA'
> - Used DEFINE_SIMPLE_DEV_PM_OPS() instead of deprecated macros
> - Fixed pm_ptr() -> pm_sleep_ptr()
>
> * V7:
> ** Andy Shevchenko **
> - Moved paragraph closer to the tags in the changelog
> - Used Originally-by which is more adequate
> - Removed unneeded modulo conversion in macro
> - Fixed the consistency of the style by lowercasing the hexa value
> - Rename a timeout macro and remove another one
> - Clarified a comment when getting the power state of the ADC
> - Added a comment to clarify the clock is fast and suitable in atomic context
> - Uppercased the 'adc' words
> - Added a TODO to use field_get() when available
> - Removed unneeded explicit casting
> - Replaced a more readable version with raw ? 0 : 1
> - Folded return value check with wait_for_completion_interruptible()
> - Fixed comment "8 bits" --> "8-bit"
> - Fixed typo in comment
> - Fixed comment "iio_push_to_buffers_with_ts()"
> - Clarified why not using a pointer to a mask
> - Removed unneeded blank line
> - Removed duplicate error code in message
> - Initialized the spin lock before requesting the interrupt
> - One lined declaration in suspend/resume callbacks
> - Added trailing comma in structure initialization
>
> * V6:
> ** Vinod Koul **
> - Dynamically allocate/release the channel at enable/disable
>
> ** Jonathan Cameron **
> - Reached out Vinod to clarify the buffer life cycle
> - Inverted more intuitive variable initialization
> - Updated comment with "iio_push_to_buffers_with_ts"
>
> ** Andy Shevchenko **
> - Removed unused NXP_SAR_ADC_IIO_BUFF_SZ macro
> - Removed "<litteral>U" annotation
> - Checked the buffer is a byte buffer
> - Investigated callback routine vs residue and updated the changelog
> the conclusions [2]
>
> * V5:
> - Rebased against v6.18-rc1
>
> ** Jonathan Cameron **
> - Replace DRIVER_NAME macro with its literal string
> - Used FIELD_MODIFY() wherever it is possible
> - Complied with the 80 chars convention
> - Combined two variables in a single line declaration
> - Removed the 'remove' function as it is useless
> - Changed s32g2_sar_adc_data structure indentation / format
>
> * V4:
> ** Christophe Jaillet **
> - Used dmam_alloc_coherent() instead of dma_alloc_coherent()
>
> * V3:
> ** Jonathan Cameron **
> - Removed specific IIO_SYSFS_TRIGGER dependency in Kconfig
> - Fixed headers
> - Avoided macro generic names
> - Used IIO_DECLARE_BUFFER_WITH_TS
> - Documented buffer and buffer_chan
> - Fixed single line comment
> - Commented why channel 32 is the timestamp
> - Renamed __<prefixed> functions
> - Factored out the raw read function to prevent nested goto in the switch
> - Returned -EINVAL instead of break
> - Removed explict pointer cast
> - Used iio_push_to_buffers_with_ts variant
> - Fixed ordering operations in postenable / predisable
> - Return IRQ_HANDLED even if there is an error in the isr
> - Fixed devm_add_action_or_reset() to return directly
> - Used sizeof(*var) instead of sizeof(struct myvar)
> - Used model name instead of dev_name()
> - Used dev_err_probe() in any case in the probe function
> - Fixed indentation
>
> ** David Lechner **
> - Kept alphabetical order in Makefile
> - Changed explicit GPL-2.0-only
> - Removed clock name in when calling devm_clk_get_enabled()
>
> ** Andriy Shevchenko **
> - Fixed headers ordering and added the missing ones
> - Fixed constant numeric format
> - Ran pahole and consolidated the nxp_sar_adc structure
> - Fixed semi-column in comments and typos
> - Fixed indentation
> - Moved data assignment before iio_dev allocation
>
> * V2:
> - Massaged the cover letter changelog to explain the DMA
> ** Andriy Shevchenko **
> - Added missing headers and use proper header for of.h
> - Changed macro offset zero to be consistent
> - Remove macros REG_ADC_MCR_NRSMPL_* as they are unused
> - Changed delays macro under the form 100000 => 100 * USEC_PER_MSEC
> - Replaced PAGE_SIZE by a NXP_PAGE_SIZE = SZ_4K macro
> - Replaced read_poll_timeout() by readl_poll_timeout()
> - Changed error pattern "error first"
> - Replaced variable type 'int' to 'unsigned int'
> - Fixed bug right instead of left shift, use BIT(channel)
> - Returned directly from switch-case
> - Used guard(spinlock_irqsave)()
> - One liner function call
> - Remove redundant {}
> - Write default values litterals instead of temporary variables
> - Changed variable name vref -> vref_mV
> - Removed unneeded error message
> - Used dev_err_probe() consistently
> - Removed successful driver probe message
> - Removed redundant blank line
>
> ** Nuno Sa **
> - Replaced of_device_get_match_data() by device_get_match_data()
> - Removed iio_device_unregister() because devm_iio_device_register() is used
> - Removed "/* sentinel */" comment
> - Removed CONFIG_PM_SLEEP defiries
>
> ** Krzysztof Kozlowski / David Lechner **
> - Removed clock-names in DT bindings
> - Fixed minItems by maxItems
>
> * V1:
> - Initial post
>
> Daniel Lezcano (2):
> dt-bindings: iio: adc: Add the NXP SAR ADC for s32g2/3 platforms
> iio: adc: Add the NXP SAR ADC support for the s32g2/3 platforms
>
> .../bindings/iio/adc/nxp,s32g2-sar-adc.yaml | 63 +
> drivers/iio/adc/Kconfig | 12 +
> drivers/iio/adc/Makefile | 1 +
> drivers/iio/adc/nxp-sar-adc.c | 1017 +++++++++++++++++
> 4 files changed, 1093 insertions(+)
> create mode 100644 Documentation/devicetree/bindings/iio/adc/nxp,s32g2-sar-adc.yaml
> create mode 100644 drivers/iio/adc/nxp-sar-adc.c
>
--
<http://www.linaro.org/> Linaro.org │ Open source software for ARM SoCs
Follow Linaro: <http://www.facebook.com/pages/Linaro> Facebook |
<http://twitter.com/#!/linaroorg> Twitter |
<http://www.linaro.org/linaro-blog/> Blog
Powered by blists - more mailing lists