From nobody Fri Sep 25 21:40:24 2026 Received: from mail-wr1-f46.google.com (mail-wr1-f46.google.com [209.85.221.46]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 1A86753ECF7 for ; Tue, 8 Sep 2026 13:08:01 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.46 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788872884; cv=none; b=Qs1YdYOYTDKCToTu/27S2DAcKfgDOTlFqJAr+6KiUCfvceWY+n1Mh68xO3pZsmvKpW/7hz+Jt7CdSZIREibFNV5LHC1mt8tYkhGxTXyszl/3h/QFw+uMpxxSe9Xx3RWfhQ6VcaqHUHUbgs1vfdFOIDsa6gxrbBrNlAFU+tOszgc= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788872884; c=relaxed/simple; bh=gkkTYq1OpW1LdtRjfwsi/bJV0O2wt9hs+XlnNEqqaw4=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=mM60vdE8Bp3bj+9PQxyLwxpfhjiuNPgsn7nm8+sbvr7/69qJiCMvdwnVG19Rpv36MdolBrLr0Xo9eWB34elIs/9Z1xCNBH2d+nMyDn7MyhrxCKmDVFYDpkdermlgBrtiGtEbP0+HRSzIHwIV+2vyN2aVmw6HdtPrOR05mYrMiQY= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=CQaVp+R8; arc=none smtp.client-ip=209.85.221.46 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="CQaVp+R8" Received: by mail-wr1-f46.google.com with SMTP id ffacd0b85a97d-485850cbac3so2978195f8f.3 for ; Tue, 08 Sep 2026 06:08:01 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1788872880; x=1789477680; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=6zK26D4c5pgQKL2UdaReKAoHDcjPjh8dzU2JRSqnNNE=; b=CQaVp+R8OR9mHUoeuDZWeZcJtaGV4ThWXqnYEbTTZ/oFshajW6hgPxOEbDM/pA5BD0 yVe92J/YOBdj8RfxtlAo5PAb0YTawx9Ey5J88LWqO6iEQqWKMSa0oBIiFfXJgP1ZryDy QXVywcHGv5IGcFcQkMhIkYI8iqbOq4mo8IIsy2TZ+r95RfOpcfQR1j0a2YvrqOHhZ9g9 05/hg+IBK74GO3lPRuLewoKSQpxBpRhDWDCap/TvaeVBbW1r2sO1Jw5foLAY/P8HdbPL RmYofswyjiPrMPe9AWhGv/Apb/gCT+Zd1EA3BhDp6Kj4Q1USlYGauAyRcqNnvEqVvkqM pYLw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1788872880; x=1789477680; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=6zK26D4c5pgQKL2UdaReKAoHDcjPjh8dzU2JRSqnNNE=; b=ea8VJfPfOLDM26x3yQ621R3BZZrpKNJ0PtwOV+KXdsd4wOSPdOUdb+TdLTX3pb6C0K Gwu+yAIl/QwlXikEgGYe/p1ezzmniMr/7HZjEBax7/dhqvlrgSGibw9NOLNt0DWOwy6N NZAMmbUQAvyxwPA785cIbYLaDcvXuZUYEvL3ookcODOpWXPQ1Un/G2/ObrypkPnYUqrq rNs4BJw6hrIdfQHWYjcVRYlwaPPB8Ogdm86etnYZ1Mhe7hY8Ui/Qd7kyU7zZ1fpP5B4k sNhrew6EITrcbvFYDNj+xvpOuhuPqdpXMuyJeCa9L0JMpoioEy1wvmooAVMftFDtSoq2 XBTQ== X-Forwarded-Encrypted: i=1; AKwUvBx6snoGKi7Fa2s+cyM5EuRd0M/8BqlW5BvbuQ0pDEPKvHx8n70bU76Xf6uC8rgRy0wuQSycJ2vt7b5A/G0=@vger.kernel.org X-Gm-Message-State: AFuF++kM/azfRqo/jWkFRER+n1qfBaKc0McwXrKBNIV9MtASe1F+ZnV8 vfQVQgV5dOOE1EOSY3PdqJ/7/kZbiXJA34tyb656mJFxiPTFD8QfJ/pT X-Gm-Gg: AYBFou0wDZ3qDOIFhdFv5feX1jbf1lyRb/Isd+FGJI4BEUfP98D2JBI9MZf3vVm/5sF 4OkGNJHT4zw80tnhc/yE2bh8+/eF+bqJjFQoeNNRdD5X8Ak/BsMAYRlWcqtnt2NHhFmUUE6QDsb VaMZT5kvZSIPJ+ulwfIx75g3AlTu/jcQcHR2iaJC4O4NYqTlDaLbWuv1O4kTYvElCfnWjISJ/VZ YF7FiDirMoGOdBQaUoE8kYzI9cOHwP0rFVuCV+rzSRa/gyIlsWKU8QU4QB6Oql3p8D3s9eu6A2n WtLL1QYNfl6Q1VI4p+n14k8PjEapGGqLhauQLzc2rF6CuoK7gDh1I/kwiYr9pvEIfqNvSvyqfUT MKLsVssK5GthMqNqqzgaOQ4hcmS9jEidIYANXpeWu+5dcB9xjj+Qpd71jKkJgA94WehdkTuHLam ARQ2YF9ol+yGzHPqVxfWVyR9U/sYXyy6UbC4P5YKiIzfFCArB1mkDagAFE2bZhLiP5k5W2eaNFw XBbJUADF2P/3crFFfbnHLSQWZEcSHlrtrmfCtq4VvM= X-Received: by 2002:a05:6000:610:b0:485:82bf:8728 with SMTP id ffacd0b85a97d-48586e32b7amr34058783f8f.0.1788872880038; Tue, 08 Sep 2026 06:08:00 -0700 (PDT) Received: from localhost.localdomain (mob-31-26-103-238.net.vodafone.it. [31.26.103.238]) by smtp.googlemail.com with ESMTPSA id ffacd0b85a97d-4859162f354sm28884165f8f.20.2026.09.08.06.07.58 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 08 Sep 2026 06:07:59 -0700 (PDT) From: Oleg Keri To: Lee Jones , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Guru Das Srinagesh Cc: linux-arm-msm@vger.kernel.org, mfd@lists.linux.dev, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH 1/2] dt-bindings: mfd: qcom,pm8008: make the interrupt line optional Date: Tue, 8 Sep 2026 15:07:44 +0200 Message-ID: <20260908130745.2545-2-okerixx@gmail.com> X-Mailer: git-send-email 2.55.0 In-Reply-To: <20260908130745.2545-1-okerixx@gmail.com> References: <20260908130745.2545-1-okerixx@gmail.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" The PM8008 raises an interrupt for its own status, its temperature alarm and its two GPIOs, but the pin does not have to be routed. On the Lenovo Yoga Slim 7x Gen 11 it is not: the platform firmware describes the PMIC with an I2C connection and nothing else, and the vendor driver talks to it purely over I2C. Drop interrupts from the required list, along with interrupt-controller and #interrupt-cells, which cannot work without it. Add a dependency so that a node claiming to be an interrupt controller still has to say where its own interrupt comes from. Signed-off-by: Oleg Keri --- Documentation/devicetree/bindings/mfd/qcom,pm8008.yaml | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/Documentation/devicetree/bindings/mfd/qcom,pm8008.yaml b/Docum= entation/devicetree/bindings/mfd/qcom,pm8008.yaml index 0c6e1870db1d..db1592e115e8 100644 --- a/Documentation/devicetree/bindings/mfd/qcom,pm8008.yaml +++ b/Documentation/devicetree/bindings/mfd/qcom,pm8008.yaml @@ -88,7 +88,6 @@ properties: required: - compatible - reg - - interrupts - vdd-l1-l2-supply - vdd-l3-l4-supply - vdd-l5-supply @@ -97,10 +96,12 @@ required: - gpio-controller - "#gpio-cells" - gpio-ranges - - interrupt-controller - - "#interrupt-cells" - "#thermal-sensor-cells" =20 +dependentRequired: + interrupt-controller: [ interrupts ] + "#interrupt-cells": [ interrupts ] + additionalProperties: false =20 examples: --=20 2.55.0 From nobody Fri Sep 25 21:40:24 2026 Received: from mail-wr1-f48.google.com (mail-wr1-f48.google.com [209.85.221.48]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 066135678F1 for ; Tue, 8 Sep 2026 13:08:03 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.48 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788872886; cv=none; b=XeIYk+UkpL6c6uoFymvzOdIYD7X1XUC6JrZa3hhOapv/0XNk9hkopGPDQ8ROSW++kGpt0A8vp7BSyjz6lZJ8YDABYcgPT8zQbirpYb4LGUyz194SsWoGym27HI/IXweRW8k64VnslFlh9sEHkEKh0bQrmYHkyEiEZyfE/3JexE0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788872886; c=relaxed/simple; bh=+OIWRe3YDSSSfno1aUGzUXI4pqYdomv36H08zvrEp/Q=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=WRJmFLhZzKrQMjvULqxVw0oDU6trNSUoENPqSUIDI6hsWZOxLzv6Vz0kogx52TpC2NjbR8R5mUbnsERvGFG6A/ON6twq8maf1QYhVOH3qWvBv+ZswmVwESvCxTdTh+bXUG2cr++Fy9dQQCYWOKALEsbFFdepJoDgadjn18YJdEI= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=OC87lQmX; arc=none smtp.client-ip=209.85.221.48 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="OC87lQmX" Received: by mail-wr1-f48.google.com with SMTP id ffacd0b85a97d-47f96c5b722so3258383f8f.0 for ; Tue, 08 Sep 2026 06:08:03 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1788872882; x=1789477682; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=RugyRWGWsjHVr0AiFzCDOt1qK0c+eaQP2Q1JnZpRYIo=; b=OC87lQmXh7w+yK8XuPde0PyMYCCjA20cG1IvIEvJLT2rPe0wWO8Nx7deSAnXX6LmCG OJaAYLb5eePj7yh/R1fNTaKnV0/kK2ZrH3mp6m1H9dxAgLMLmh4Ie96sT3dmtcpeTEZX ZzXH57ikqTwtAKYUPHcONPP6viWlpAPsxLSPbM4LkWXAQPiN6Ufxt3Ku+kbgLDfYhPB9 TqKgKMX2UFYCTgKqbSS751CnS+S/czJj+BFfEtAtQ4cjbCpnz4JJHaWRBiGUQicIFzBe I0IQTDyet5evUFpFkGd/8r8TsEMNOHTZ1jxZlA+tafsUOXNmN2j/7MKavtLrpDsckAGP gzXg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1788872882; x=1789477682; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=RugyRWGWsjHVr0AiFzCDOt1qK0c+eaQP2Q1JnZpRYIo=; b=TmDoqEkKdQ8ivtIRoq5hG1+0XIyqXLYLdWK5DAf6QNFX8x4zrfTkW+WskZmmOhhm7u F4ryJPGZiVkDAzsoxwZi9S4bkJ6+PZT3JGDieuyrgOFh5Ei2W+cE3Es40IVHJ1e0ZBWS yPqj6FNAHyHXCSnLsN71iR1UXQWa/aMeulUh0KGjoP2nD+YQD6Zij5d0A8w/7AI/yTRI lV7LsqhPV2D/6mODGwbZ7+WVFgRdh5AYhsgjN3AJ0BrhLb58yNkeieDq0HjURZZMKhMa /KFGyy3LGQQUvTAn3vFAgB9viNg9EsfVsNED4EXa25M1iNlePsH9OZROsOKxGPy7oBA4 uehw== X-Forwarded-Encrypted: i=1; AKwUvBzkdm151shqcixFMDpUiTqHsurnoDpMvGKSlJFU/kyM9TwZ0BTGPrR9MeCGVFwkZ5P046pMyQcHx++qqQA=@vger.kernel.org X-Gm-Message-State: AFuF++lVPXZ5L9u7v7IAdTkUT7edXTHsrnLbL/vFgrMjV3RSVBTB2MZo 3ZBaVzi3LS1qcfcmP65T+URcmD/Zd/KuI4DcfKY5dZaoSzQp4UjlEYbW X-Gm-Gg: AYBFou0CLXFLp/CFXEcEhn6CCFqC8/pFcbmPDsR1ZZfnw+hTGN/QGd2u/r5YwTJLqyx HlsEg7ZvQCQF0dlBHhtpSnyYqjVX60z85eYQGwbTk8wASnNppIC7ARyhIV8FYkJFtWQFstZmOQE ubto/kc626mTfixj740Y5hWz0jG54wKFca7mScQby+e24yWlh5Ber8plJxZOqI6/nZjG8be0QTc oWYlrSxfKAqHAMGENLQSTvkFrhcovXMhUNmCoPkRFe7h/tInZuqcwXasK9UuvIa8c/7+470e+2h QOR2q4iJO3bJYHWtBbnAa4+PdcIX9ROT8LWT7OfSj7Uw/1t5KpvmD8V8i9va9XzlqLag/NX/r/+ pcC17uBjtvj7nT94kLnWuc38NJmCI/V1jsu/a1GVEsBm7QPWmXgVRaG+DU1Mxhx3bC+KHSgYX1J OhWkEruFaBnpY8IvtMo+f2VBibhjQDoLH53xZt3ta5KTgmgKWxx+KfVS7TLYtCXrMAK+/nlSduc haL3A+ezcEU2/gJH9ciDtSwHCScY0zt X-Received: by 2002:a05:600c:c1c8:10b0:49c:fa21:e749 with SMTP id 5b1f17b1804b1-49cfa21e8f3mr187137995e9.31.1788872881636; Tue, 08 Sep 2026 06:08:01 -0700 (PDT) Received: from localhost.localdomain (mob-31-26-103-238.net.vodafone.it. [31.26.103.238]) by smtp.googlemail.com with ESMTPSA id ffacd0b85a97d-4859162f354sm28884165f8f.20.2026.09.08.06.08.00 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 08 Sep 2026 06:08:01 -0700 (PDT) From: Oleg Keri To: Lee Jones , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Guru Das Srinagesh Cc: linux-arm-msm@vger.kernel.org, mfd@lists.linux.dev, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH 2/2] mfd: qcom-pm8008: support PMICs with no interrupt line Date: Tue, 8 Sep 2026 15:07:45 +0200 Message-ID: <20260908130745.2545-3-okerixx@gmail.com> X-Mailer: git-send-email 2.55.0 In-Reply-To: <20260908130745.2545-1-okerixx@gmail.com> References: <20260908130745.2545-1-okerixx@gmail.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" The interrupt is only needed for the temperature alarm and the two GPIOs. Where the pin is not routed the regulators are still perfectly usable, but probe fails: client->irq is 0 and request_threaded_irq() rejects it. Skip the IRQ chip in that case and register the regulator cell alone. The temperature alarm cannot be registered without a domain either, because its IORESOURCE_IRQ would be handed to the platform device as a raw number rather than being mapped, and the GPIO cell needs the domain for the same reason. Signed-off-by: Oleg Keri --- drivers/mfd/qcom-pm8008.c | 63 +++++++++++++++++++++++++-------------- 1 file changed, 40 insertions(+), 23 deletions(-) diff --git a/drivers/mfd/qcom-pm8008.c b/drivers/mfd/qcom-pm8008.c index 60204cc9a2dc..b51a9657ee56 100644 --- a/drivers/mfd/qcom-pm8008.c +++ b/drivers/mfd/qcom-pm8008.c @@ -183,6 +183,10 @@ static const struct mfd_cell pm8008_cells[] =3D { MFD_CELL_NAME("pm8008-gpio"), }; =20 +static const struct mfd_cell pm8008_regulator_cells[] =3D { + MFD_CELL_NAME("pm8008-regulator"), +}; + static void devm_irq_domain_fwnode_release(void *data) { struct fwnode_handle *fwnode =3D data; @@ -195,9 +199,12 @@ static int pm8008_probe(struct i2c_client *client) struct regmap_irq_chip_data *irq_data; struct device *dev =3D &client->dev; struct regmap *regmap, *regmap2; + const struct mfd_cell *cells; struct fwnode_handle *fwnode; + struct irq_domain *domain; struct i2c_client *dummy; struct gpio_desc *reset; + int num_cells; char *name; int ret; =20 @@ -231,33 +238,43 @@ static int pm8008_probe(struct i2c_client *client) */ usleep_range(1000, 2000); =20 - name =3D devm_kasprintf(dev, GFP_KERNEL, "%pOF-internal", dev->of_node); - if (!name) - return -ENOMEM; - - name =3D strreplace(name, '/', ':'); - - fwnode =3D irq_domain_alloc_named_fwnode(name); - if (!fwnode) - return -ENOMEM; - - ret =3D devm_add_action_or_reset(dev, devm_irq_domain_fwnode_release, fwn= ode); - if (ret) - return ret; - - ret =3D devm_regmap_add_irq_chip_fwnode(dev, fwnode, regmap, client->irq, - IRQF_SHARED, 0, &pm8008_irq_chip, &irq_data); - if (ret) { - dev_err(dev, "failed to add IRQ chip: %d\n", ret); - return ret; + if (client->irq > 0) { + name =3D devm_kasprintf(dev, GFP_KERNEL, "%pOF-internal", dev->of_node); + if (!name) + return -ENOMEM; + + name =3D strreplace(name, '/', ':'); + + fwnode =3D irq_domain_alloc_named_fwnode(name); + if (!fwnode) + return -ENOMEM; + + ret =3D devm_add_action_or_reset(dev, devm_irq_domain_fwnode_release, fw= node); + if (ret) + return ret; + + ret =3D devm_regmap_add_irq_chip_fwnode(dev, fwnode, regmap, + client->irq, IRQF_SHARED, 0, + &pm8008_irq_chip, &irq_data); + if (ret) { + dev_err(dev, "failed to add IRQ chip: %d\n", ret); + return ret; + } + + domain =3D regmap_irq_get_domain(irq_data); + cells =3D pm8008_cells; + num_cells =3D ARRAY_SIZE(pm8008_cells); + } else { + domain =3D NULL; + cells =3D pm8008_regulator_cells; + num_cells =3D ARRAY_SIZE(pm8008_regulator_cells); } =20 /* Needed by GPIO driver. */ - dev_set_drvdata(dev, regmap_irq_get_domain(irq_data)); + dev_set_drvdata(dev, domain); =20 - return devm_mfd_add_devices(dev, PLATFORM_DEVID_AUTO, pm8008_cells, - ARRAY_SIZE(pm8008_cells), NULL, 0, - regmap_irq_get_domain(irq_data)); + return devm_mfd_add_devices(dev, PLATFORM_DEVID_AUTO, cells, + num_cells, NULL, 0, domain); } =20 static const struct of_device_id pm8008_match[] =3D { --=20 2.55.0