[PATCH 0/2] mfd: qcom-pm8008: support PMICs with no interrupt line

Oleg Keri posted 2 patches 2 weeks, 3 days ago
.../devicetree/bindings/mfd/qcom,pm8008.yaml  |  7 +--
drivers/mfd/qcom-pm8008.c                     | 52 ++++++++++++-------
2 files changed, 38 insertions(+), 21 deletions(-)
[PATCH 0/2] mfd: qcom-pm8008: support PMICs with no interrupt line
Posted by Oleg Keri 2 weeks, 3 days ago
The camera PMIC on the Lenovo Yoga Slim 7x Gen 11 (Qualcomm Snapdragon X2
Elite, glymur) has no interrupt line routed on the board. That is not a
wiring omission - the part has no INT pin brought out in this design, and
the sensor resets are driven from TLMM instead.

The part is a PM8010; this board describes it with the qcom,pm8008
compatible, which is what binds the driver touched here.

qcom-pm8008 currently requires an interrupt: the binding marks it required
and the driver fails probe without one, so the PMIC cannot be described at
all on such a board even though everything it provides - the regulators -
works fine without interrupts.

Patch 1 relaxes the binding, patch 2 makes the driver treat the interrupt
as optional and skip the regmap-irq chip when it is absent. Boards that do
wire the interrupt are unaffected.

Tested on a Lenovo Yoga Slim 7x Gen 11 (DMI 83QR, "Yoga Slim 7 14Q8Y11"),
where this PMIC powers an OV08X40 sensor.

The DT change that describes this PMIC is not part of this series; it lands
with the board DTS, which is being upstreamed separately.

Oleg Keri (2):
  dt-bindings: mfd: qcom,pm8008: make the interrupt line optional
  mfd: qcom-pm8008: support PMICs with no interrupt line

 .../devicetree/bindings/mfd/qcom,pm8008.yaml  |  7 +--
 drivers/mfd/qcom-pm8008.c                     | 52 ++++++++++++-------
 2 files changed, 38 insertions(+), 21 deletions(-)

-- 
2.55.0

base-commit: df2908090cda368b01ff43709f51890076c56157
Re: [PATCH 0/2] mfd: qcom-pm8008: support PMICs with no interrupt line
Posted by Oleg Keri 2 weeks, 3 days ago
Please drop this series.

It duplicates, as a strict subset, work that was already on the list a day
before I posted:

  [v2,3/6] dt-bindings: mfd: pm8008: Add PM8010 I2C support
  [v2,5/6] mfd: qcom-pm8008: Add support for PM8010 PMIC
  https://lore.kernel.org/all/20260907-glymur_camss-v2-0-75f7982dc983@oss.qualcomm.com/

Nihal's 3/6 relaxes the same required: entries mine does and more, and adds
the qcom,pm8010-i2c compatible; his 5/6 already carries the no-interrupt
path my 2/2 was adding:

  static const struct mfd_cell pm8008_no_irq_cells[] = {
          MFD_CELL_NAME("pm8008-regulator"),
  };

on top of a PM8010 IRQ chip, match data and a pm8010-regulator cell. There
is nothing in my series that his does not do better. My apologies for the
noise - I should have searched the list before posting.

Nihal, if it is useful: the Lenovo Yoga Slim 7x Gen 11 (glymur, DMI 83QR)
has a PM8010 whose INT pin is genuinely not routed on the board, so it
exercises your no-IRQ path rather than being a DT omission. I have been
running an equivalent no-IRQ path there since 2026-08-25 - the LDOs
register and the OV08X40 works - and I am happy to test your series on it
and send a Tested-by once I have actually run it.

Your 6/6 also shows that describing a PM8010 as "qcom,pm8008", which is
what I do today, silently programs the wrong voltage ranges. On that board
the sensor takes dovdd from ldo4 at 1.8 V, and:

  pm8008_pldo_ranges    1504000 + 8000 * n   ->  1.8 V is selector 37
  pm8010_pldo_lv_ranges 1800000 + 200000 * n ->  1.8 V is selector 0

so the same regulator-min/max-microvolt lands on a completely different
register value depending on which compatible the node carries. ldo3 and
ldo6 have the same split. ldo2 and ldo7 happen to map identically because
the nldo and pldo ranges share a base and step and differ only in their
upper bound.

The camera works on my board today despite this, which I would treat as
luck rather than evidence that it is harmless. It does mean your series
fixes a latent bug for boards already describing a PM8010 as qcom,pm8008,
not merely adding a new compatible - worth a line in 6/6 if you respin,
since those boards need the DT change and the driver change together.
Re: [PATCH 0/2] mfd: qcom-pm8008: support PMICs with no interrupt line
Posted by Jishnu Prakash 2 weeks, 1 day ago
Hi Oleg,

On 9/8/2026 7:10 PM, Oleg Keri wrote:
> Please drop this series.
> 
> It duplicates, as a strict subset, work that was already on the list a day
> before I posted:
> 
>   [v2,3/6] dt-bindings: mfd: pm8008: Add PM8010 I2C support
>   [v2,5/6] mfd: qcom-pm8008: Add support for PM8010 PMIC
>   https://lore.kernel.org/all/20260907-glymur_camss-v2-0-75f7982dc983@oss.qualcomm.com/
> 
> Nihal's 3/6 relaxes the same required: entries mine does and more, and adds
> the qcom,pm8010-i2c compatible; his 5/6 already carries the no-interrupt
> path my 2/2 was adding:
> 
>   static const struct mfd_cell pm8008_no_irq_cells[] = {
>           MFD_CELL_NAME("pm8008-regulator"),
>   };
> 
> on top of a PM8010 IRQ chip, match data and a pm8010-regulator cell. There
> is nothing in my series that his does not do better. My apologies for the
> noise - I should have searched the list before posting.
> 
> Nihal, if it is useful: the Lenovo Yoga Slim 7x Gen 11 (glymur, DMI 83QR)
> has a PM8010 whose INT pin is genuinely not routed on the board, so it
> exercises your no-IRQ path rather than being a DT omission. I have been
> running an equivalent no-IRQ path there since 2026-08-25 - the LDOs
> register and the OV08X40 works - and I am happy to test your series on it
> and send a Tested-by once I have actually run it.

Thanks, we would appreciate this. Please note Mark has asked us to split the existing
series, so we would be sending out separate patch series soon for CAMSS support
and PM8010 support.

> 
> Your 6/6 also shows that describing a PM8010 as "qcom,pm8008", which is
> what I do today, silently programs the wrong voltage ranges. On that board
> the sensor takes dovdd from ldo4 at 1.8 V, and:
> 
>   pm8008_pldo_ranges    1504000 + 8000 * n   ->  1.8 V is selector 37
>   pm8010_pldo_lv_ranges 1800000 + 200000 * n ->  1.8 V is selector 0
> 
> so the same regulator-min/max-microvolt lands on a completely different
> register value depending on which compatible the node carries. ldo3 and
> ldo6 have the same split. ldo2 and ldo7 happen to map identically because
> the nldo and pldo ranges share a base and step and differ only in their
> upper bound.
> 
> The camera works on my board today despite this, which I would treat as
> luck rather than evidence that it is harmless. It does mean your series
> fixes a latent bug for boards already describing a PM8010 as qcom,pm8008,

Just asking, have you noticed any boards doing this currently ?

Thanks,
Jishnu

> not merely adding a new compatible - worth a line in 6/6 if you respin,
> since those boards need the DT change and the driver change together.
Re: [PATCH 0/2] mfd: qcom-pm8008: support PMICs with no interrupt line
Posted by Oleg Keri 2 weeks, 1 day ago
On Thu, 10 Sep 2026 14:40:35 +0530
Jishnu Prakash <jishnu.prakash@oss.qualcomm.com> wrote:

> Please note Mark has asked us to split the existing series, so we would
> be sending out separate patch series soon for CAMSS support and PM8010
> support.

Great, I'll test the PM8010 one as soon as it's out.

> Just asking, have you noticed any boards doing this currently ?

Only mine, and it's not upstream yet. Konrad's list is right - those are
all real PM8008s.

One correction to my earlier mail: the compatible does not change what
gets written to the rail. set_voltage_sel() writes millivolts, so 1.8 V
is 1800 in VSET either way. The wrong compatible only misdescribes the
LDO's range to the regulator core. Sorry for overstating it.

Thanks,
Oleg
Re: [PATCH 0/2] mfd: qcom-pm8008: support PMICs with no interrupt line
Posted by Konrad Dybcio 2 weeks, 1 day ago
On 9/10/26 11:10 AM, Jishnu Prakash wrote:
> Hi Oleg,
> 
> On 9/8/2026 7:10 PM, Oleg Keri wrote:
>> Please drop this series.
>>
>> It duplicates, as a strict subset, work that was already on the list a day
>> before I posted:

[...]

>> The camera works on my board today despite this, which I would treat as
>> luck rather than evidence that it is harmless. It does mean your series
>> fixes a latent bug for boards already describing a PM8010 as qcom,pm8008,
> 
> Just asking, have you noticed any boards doing this currently ?

Not upstream, I don't think:

$ rg qcom,pm8008 arch -l                                                                                                                                                               
arch/arm64/boot/dts/qcom/qrb2210-rb1.dts
arch/arm64/boot/dts/qcom/sm8250-xiaomi-elish-common.dtsi
arch/arm64/boot/dts/qcom/qcm6490-fairphone-fp5.dts
arch/arm64/boot/dts/qcom/sm7225-fairphone-fp4.dts
arch/arm64/boot/dts/qcom/sc8280xp-lenovo-thinkpad-x13s.dts
arch/arm64/boot/dts/qcom/milos-fairphone-fp6.dts

Konrad