On Fri, 29 Apr 2022 23:08:55 +0100 Caleb Connolly <caleb.connolly@xxxxxxxxxx> wrote: > The RRADC is responsible for reading data about the current and > voltage from the USB or DC in jacks, it can also read the battery > ID (resistence) and some temperatures. It is found on the PMI8998 and > PM660 Qualcomm PMICs. > > The RRADC has to calibrate some ADC values based on which chip fab > the PMIC was produced in, to facilitate this the patches > ("mfd: qcom-spmi-pmic: expose the PMIC revid information to clients") > and ("mfd: qcom-spmi-pmic: read fab id on supported PMICs") > expose the PMIC revision information and fab_id as a struct and register > them as driver data in the Qualcomm SPMI PMIC driver so that it can be > read by the RRADC. > > The first 3 patches add support for looking up an SPMI device from a > struct device_node, as well as introducing support for looking up the > base USID of a Qcom PMIC, see patch comments for more details. These > Address Bjorns comments on v2. Hi Caleb / All Rather than waste time going for a v15 for the 3 minor issues in reviews I've just fixed them up whilst applying. As spmi or mfd maintainers may want an immutable branch I've just pushed one out at https://git.kernel.org/pub/scm/linux/kernel/git/jic23/iio.git immutable-qcom-spmi-rradc that has the first 5 patches. I assume the dts changes will go via qcom -> arm-soc as normal. 0-day should run on that branch shortly but I'll be optimistic and pull it into my testing branch in the meantime (mostly so I don't forget about it and can mark it applied in patchwork :) Thanks, Jonathan > > Changes since v13: > * Address Lee Jones' feedback on the SPMI patches. > * Pick up Jami's patch to enable the RRADC on the OnePlus 5 > > Changes since v12: > * Apply Krzysztof's suggestions to rradc DT binding docs. > > Changes since v11: > * Remove debug logging which was left in ("mfd: qcom-spmi-pmic: expose the PMIC revid information to clients") > * Picked up Dmitry's Tested-by and Reviewed-by tags. > > Changes since v10: > * Don't inline spmi_device_from_of() > > Changes since v9: > * Add back missing copyright, this driver is originally derived from > downstream (Thanks Manivannan). > > Changes since v8: > * Drop Reported-by for the bugfix on previous revision reported by LKP > * Apply Jonathans suggestions > * Rework patch 2 ("expose the PMIC revid information to clients") to > handle PMICs with a single USID (thanks Dmitry) > > Changes since v7: > * Addressed Jonathans comments > * Fixed bug reported by LKP > > Changes since v6: > * Fix printf format warning in rradc > > Changes since v5: > * Add missing EXPORT_SYMBOL_GPL() to > ("spmi: add a helper to look up an SPMI device from a device node") > > Changes since v4: > * Addressed Jonathan's comments on v4 > * Reworked the qcom-spmi-pmic patches to properly walk the devicetree > to find the base USID. I've tested this on SDM845 which has two PMICs > (pm8998 and pmi8998) and I'm able to look up the PMIC revid from all > 4 USIDs. > > Changes since v3: > * Split PMIC patch in two, rework to support function drivers on a > sibling USID > * Completely rework RRADC driver to make use of the modern IIO > framework. This required re-arranging a lot of the equations and > results in some lost precision, where relevant I've left comments to > explain this. I don't think any of it is significant enough to > justify doing post-processing in driver. > Thanks a lot Jonathan and John Stultz for helping me out with > this > > Changes since v2: > * Add missing include (thanks kernel test robot :D) > * Rework some confusing function return values, specifically > rradc_read_status_in_cont_mode and rradc_prepare_batt_id_conversion > both of which didn't correctly handle "ret". This also bought up an > issue as the previous implementation didn't actually wait for the > channel to be ready. It doesn't seem like that's strictly necessary > (same data is reported if I wait for the status to be good or not) > but I've included it anyway for good measure. > > Changes since v1: > * Rework the RRADC driver based on Jonathan's feedback > * Pick up Rob's reviewed by for the dt-binding patch. > --- > Caleb Connolly (9): > spmi: add a helper to look up an SPMI device from a device node > mfd: qcom-spmi-pmic: expose the PMIC revid information to clients > mfd: qcom-spmi-pmic: read fab id on supported PMICs > dt-bindings: iio: adc: document qcom-spmi-rradc > iio: adc: qcom-spmi-rradc: introduce round robin adc > arm64: dts: qcom: pmi8998: add rradc node > arm64: dts: qcom: sdm845-oneplus: enable rradc > arm64: dts: qcom: sdm845-db845c: enable rradc > arm64: dts: qcom: sdm845-xiaomi-beryllium: enable rradc > > Jami Kettunen (1): > arm64: dts: qcom: msm8998-oneplus-common: enable RRADC > > .../bindings/iio/adc/qcom,spmi-rradc.yaml | 51 + > .../boot/dts/qcom/msm8998-oneplus-common.dtsi | 4 + > arch/arm64/boot/dts/qcom/pmi8998.dtsi | 8 + > arch/arm64/boot/dts/qcom/sdm845-db845c.dts | 4 + > .../boot/dts/qcom/sdm845-oneplus-common.dtsi | 4 + > .../boot/dts/qcom/sdm845-xiaomi-beryllium.dts | 4 + > drivers/iio/adc/Kconfig | 12 + > drivers/iio/adc/Makefile | 1 + > drivers/iio/adc/qcom-spmi-rradc.c | 1021 +++++++++++++++++ > drivers/mfd/qcom-spmi-pmic.c | 272 +++-- > drivers/spmi/spmi.c | 17 + > include/linux/spmi.h | 3 + > include/soc/qcom/qcom-spmi-pmic.h | 61 + > 13 files changed, 1372 insertions(+), 90 deletions(-) > create mode 100644 Documentation/devicetree/bindings/iio/adc/qcom,spmi-rradc.yaml > create mode 100644 drivers/iio/adc/qcom-spmi-rradc.c > create mode 100644 include/soc/qcom/qcom-spmi-pmic.h >