From patchwork Wed Jun 11 20:02:57 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Samuel Kayode via B4 Relay X-Patchwork-Id: 895633 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 4D4671779B8; Wed, 11 Jun 2025 20:02:59 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1749672180; cv=none; b=lJyAbIgvjR1GXA+fNKNq9E2UyeD3PxTaqJQO84Hk7xOCYEnSObvwirIopMUdZt0u3nQuqyiuXE7Y0HbUn82dIH5JRt17qvKBBVBMUjVBC63yqrPuoP91xRugdKd9X5DT84FSVXXJM+x9l8anz6k6ibrJXYt96N9ma/2DnawFay0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1749672180; c=relaxed/simple; bh=Y91AIqXiYb2KFSBw95LNtXg6HYm3TMJd6I6LrNYm+hU=; h=From:Subject:Date:Message-Id:MIME-Version:Content-Type:To:Cc; b=aCU4HgUhw2k8pF6JWf8wNlS/USnd0byyQwQC8EGn8Bmp9jjXuskrhOVsQoxWMvUPHj+oqn+czq4Nw/VjRJZSlz7G2cmeVQk8djDOW7mwo6jeFQpUlZmKnOCNvItumMCc/XE2/r6ucXwMfDxUk1wAt9bPzArhHdfktzbXojzUUMc= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=dV3ebDPL; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="dV3ebDPL" Received: by smtp.kernel.org (Postfix) with ESMTPS id C13BEC4CEE3; Wed, 11 Jun 2025 20:02:59 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1749672179; bh=Y91AIqXiYb2KFSBw95LNtXg6HYm3TMJd6I6LrNYm+hU=; h=From:Subject:Date:To:Cc:Reply-To:From; b=dV3ebDPLcFhnmvWvMkOQNDCU1Hu9LzpZQPmtCSh8tRb6QbiiSGxy+mOOyLHCL7MN/ bHDO/DUYxiv3g3Lbmq2A2/1wcqNJt+3/AuyMpFI9KL0lOKAl/h273PGjyZtNG/JEA+ aCOe1DqA2X+Pj9jNMGme1mZi9bp3VnCxOYhtODt4bJuIyhZABtDw/iYYhtQbllJgl1 BWYQ5rk0oIaXwnr7qJLaHuYplwn2IPwr3V+XZuAyO9AJiDy70F+sBfVGb3Ej1OntzR WKo/EruFL/Yz1uu0NO7UeydkebwWdQ5t+2LbwZMigRBoKyPiFJGejjyViKz+e2bCLQ Vj8A9WN0olENQ== Received: from aws-us-west-2-korg-lkml-1.web.codeaurora.org (localhost.localdomain [127.0.0.1]) by smtp.lore.kernel.org (Postfix) with ESMTP id A9DF3C71135; Wed, 11 Jun 2025 20:02:59 +0000 (UTC) From: Samuel Kayode via B4 Relay Subject: [PATCH v6 0/6] add support for pf1550 PMIC MFD-based drivers Date: Wed, 11 Jun 2025 16:02:57 -0400 Message-Id: <20250611-pf1550-v6-0-34f2ddfe045e@savoirfairelinux.com> Precedence: bulk X-Mailing-List: linux-input@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-B4-Tracking: v=1; b=H4sIAPHgSWgC/33OQW7CMBAF0KtEXmM0jj0JYcU9EAvHHpeRSgJ2s KhQ7l4TJKgqtcs/+np/7iJRZEpiW91FpMyJx6GEZlUJd7TDB0n2JYsaagSsW3kOChGkN6ACeGj 7DYhSPkcKfFug/eGZI12uxZueR9HbRNKNpxNP2yo3a4XiUTxymsb4tTyQ9dL8vZW1BGkwNJ1B7 TyqXbJ55BgsR/rk4XpbF3fRsnkLDeiXYIrQBx9QEWHn3D8C/hAUvAQsAnnwHWlrrWv/EOZ5/gZ ThFDFVAEAAA== X-Change-ID: 20250527-pf1550-d401f0d07b80 To: Lee Jones , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Liam Girdwood , Mark Brown , Dmitry Torokhov , Sebastian Reichel , Frank Li Cc: imx@lists.linux.dev, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-input@vger.kernel.org, linux-pm@vger.kernel.org, Abel Vesa , Abel Vesa , Robin Gong , Robin Gong , Enric Balletbo i Serra , Samuel Kayode , Abel Vesa , Krzysztof Kozlowski X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1749672178; l=5702; i=samuel.kayode@savoirfairelinux.com; s=20250527; h=from:subject:message-id; bh=Y91AIqXiYb2KFSBw95LNtXg6HYm3TMJd6I6LrNYm+hU=; b=KhQKypj8p61lIPfOxcvU2HW0f7+RjCrKcWknRH21uY3VXARHYJ5hKE780E1ymPx2g+TWxPxKi Btp3YoyEidaCagdEBKtIEywWlB9NZxEzNgwfcJhzWegimhPlyogC/Og X-Developer-Key: i=samuel.kayode@savoirfairelinux.com; a=ed25519; pk=TPSQGQ5kywnnPyGs0EQqLajLFbdDu17ahXz8/gxMfio= X-Endpoint-Received: by B4 Relay for samuel.kayode@savoirfairelinux.com/20250527 with auth_id=412 X-Original-From: Samuel Kayode Reply-To: samuel.kayode@savoirfairelinux.com This series adds support for pf1550 PMIC. It provides the core mfd driver and a set of three sub-drivers for the regulator, power supply and input subsystems. Patch 1 adds the DT binding document for the PMIC. Patches 2-5 adds the pertinent drivers. Last patch adds a MAINTAINERS entry for the drivers. Changes since v1: - DT bindings for all devices included - Add onkey driver - Add driver for the regulators - Ensure charger is activated as some variants have it off by default - Update mfd and charger driver per feedback from eballetbo@gmail.com - Add myself as maintainer for these drivers - Link to v1: https://lore.kernel.org/1523974819-8711-1-git-send-email-abel.vesa@nxp.com/ Changes since v2: - Rebase on recent mainline kernel v6.15 - Single yaml file containing dt bindings for all pf1550 devices - irq mapping done in MFD driver as suggested by Dmitry Torokhov - Drop unnecessary includes in drivers - Replace dev_err with dev_err_probe in probe method of drivers - Drop compatible string from drivers of the sub-devices - Remove dependency on OF from drivers of the sub-devices - onkey: move driver from input/keyboard into input/misc - onkey: remove dependency on OF - onkey: use onkey virqs instead of central irq - onkey: fix integer overflow for regmap_write when unmasking interrupts during pf1550_onkey_resume - charger: add support for monitored-battery which is used in setting a constant voltage for the charger. - Address other feedback from Dmitry Torokhov and Krzysztof Kozlowski - Link to v2: https://lore.kernel.org/cover.1747409892.git.samuel.kayode@savoirfairelinux.com/ Changes since v3: - Update manufacturer from Freescale to NXP in compatible, dt-binding and Kconfigs - Use C++ style comments for SPDX license in .c code - Add portions copyright to source code - irqs are defined as struct resource in mfd cell such that platform_get_irq is used in the sub-devices - Make struct pf1550_dev of type const in sub-device driver - irq variable dropped from sub-device driver struct - EXPORT_SYMBOL of global pf1550_read_otp function for use in regulator driver - Drop unneeded info in driver_data when defining device table id - regulator: validate ramp_delay - regulator: report overcurrent and over temperature events - onkey: drop unnecessary keycode variable - onkey: change wakeup variable to type bool - onkey: replace (error < 0) with error in if statement when possible - onkey: use pm_sleep_ptr when defining driver.pm - charger: finish handling of some interrupts in threaded irq handler - Link to v3: https://lore.kernel.org/20250527-pf1550-v3-0-45f69453cd51@savoirfairelinux.com/ Changes since v4: - Use top level interrupt to minimize number of registers checked on each interrupt - Fix bad offset for temperature interrupts of regulator irq chip - Address Krzysztof's comments for dt-binding - regulator: add comments to clarify difference in its interrupts - regulator: issue warn event for _LS interrupt and error event for _HS interrupt - regulator: validate maximum and minimum ramp_delay - charger: drop lock in battery and charger delayed_work - charger: more conservative locking for vbus delayed_work - charger: apply lock when setting power_supply type during register intialization - Link to v4: https://lore.kernel.org/r/20250603-pf1550-v4-0-bfdf51ee59cc@savoirfairelinux.com Changes since v5: - Ensure lowercase when assigning hex values - Add imx@lists.linux.dev to relevant mailing list in MAINTAINERS file - Use GENMASK macro - Drop unused chips variable - Read the OTP in the mfd driver probe for new dvs_enb variable - Hardcode IRQ flags in pf1550_add_child function - charger: drop the mutex entirely - charger: reverse christmas tree style local variable definition in probe - Link to v5: https://lore.kernel.org/r/20250610-pf1550-v5-0-ed0d9e3aaac7@savoirfairelinux.com Signed-off-by: Samuel Kayode Reviewed-by: Frank Li --- --- Samuel Kayode (6): dt-bindings: mfd: add pf1550 mfd: pf1550: add core mfd driver regulator: pf1550: add support for regulator input: pf1550: add onkey support power: supply: pf1550: add battery charger support MAINTAINERS: add an entry for pf1550 mfd driver .../devicetree/bindings/mfd/nxp,pf1550.yaml | 137 +++++ MAINTAINERS | 11 + drivers/input/misc/Kconfig | 11 + drivers/input/misc/Makefile | 1 + drivers/input/misc/pf1550-onkey.c | 183 ++++++ drivers/mfd/Kconfig | 14 + drivers/mfd/Makefile | 2 + drivers/mfd/pf1550.c | 339 +++++++++++ drivers/power/supply/Kconfig | 11 + drivers/power/supply/Makefile | 1 + drivers/power/supply/pf1550-charger.c | 633 +++++++++++++++++++++ drivers/regulator/Kconfig | 9 + drivers/regulator/Makefile | 1 + drivers/regulator/pf1550-regulator.c | 362 ++++++++++++ include/linux/mfd/pf1550.h | 254 +++++++++ 15 files changed, 1969 insertions(+) --- base-commit: 0a4b866d08c6adaea2f4592d31edac6deeb4dcbd change-id: 20250527-pf1550-d401f0d07b80 Best regards,