Patch Detail
get:
Show a patch.
patch:
Update a patch.
put:
Update a patch.
GET /api/patches/2217445/?format=api
{ "id": 2217445, "url": "http://patchwork.ozlabs.org/api/patches/2217445/?format=api", "web_url": "http://patchwork.ozlabs.org/project/rtc-linux/patch/20260329-sc27xx-mfd-cells-v3-3-9158dee41f74@abscue.de/", "project": { "id": 9, "url": "http://patchwork.ozlabs.org/api/projects/9/?format=api", "name": "Linux RTC development", "link_name": "rtc-linux", "list_id": "linux-rtc.vger.kernel.org", "list_email": "linux-rtc@vger.kernel.org", "web_url": "", "scm_url": "", "webscm_url": "", "list_archive_url": "", "list_archive_url_format": "", "commit_url_format": "" }, "msgid": "<20260329-sc27xx-mfd-cells-v3-3-9158dee41f74@abscue.de>", "list_archive_url": null, "date": "2026-03-29T07:27:47", "name": "[v3,3/5] mfd: sprd-sc27xx: Switch to devm_mfd_add_devices()", "commit_ref": null, "pull_url": null, "state": "new", "archived": false, "hash": "f0c9d69aef4b509784b0ea9dcd224161832e9884", "submitter": { "id": 85322, "url": "http://patchwork.ozlabs.org/api/people/85322/?format=api", "name": "Otto Pflüger", "email": "otto.pflueger@abscue.de" }, "delegate": null, "mbox": "http://patchwork.ozlabs.org/project/rtc-linux/patch/20260329-sc27xx-mfd-cells-v3-3-9158dee41f74@abscue.de/mbox/", "series": [ { "id": 497909, "url": "http://patchwork.ozlabs.org/api/series/497909/?format=api", "web_url": "http://patchwork.ozlabs.org/project/rtc-linux/list/?series=497909", "date": "2026-03-29T07:27:46", "name": "mfd: sc27xx: Use MFD cells and devm_mfd_add_devices()", "version": 3, "mbox": "http://patchwork.ozlabs.org/series/497909/mbox/" } ], "comments": "http://patchwork.ozlabs.org/api/patches/2217445/comments/", "check": "pending", "checks": "http://patchwork.ozlabs.org/api/patches/2217445/checks/", "tags": {}, "related": [], "headers": { "Return-Path": "\n <linux-rtc+bounces-6264-incoming=patchwork.ozlabs.org@vger.kernel.org>", "X-Original-To": [ "incoming@patchwork.ozlabs.org", "linux-rtc@vger.kernel.org" ], "Delivered-To": "patchwork-incoming@legolas.ozlabs.org", "Authentication-Results": [ "legolas.ozlabs.org;\n\tdkim=pass (2048-bit key;\n secure) header.d=abscue.de header.i=@abscue.de header.a=rsa-sha256\n header.s=dkim header.b=U+9Qs3SZ;\n\tdkim-atps=neutral", "legolas.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=vger.kernel.org\n (client-ip=2600:3c0a:e001:db::12fc:5321; helo=sea.lore.kernel.org;\n envelope-from=linux-rtc+bounces-6264-incoming=patchwork.ozlabs.org@vger.kernel.org;\n receiver=patchwork.ozlabs.org)", "smtp.subspace.kernel.org;\n\tdkim=pass (2048-bit key) header.d=abscue.de header.i=@abscue.de\n header.b=\"U+9Qs3SZ\"", "smtp.subspace.kernel.org;\n arc=none smtp.client-ip=89.58.28.240", "smtp.subspace.kernel.org;\n dmarc=none (p=none dis=none) header.from=abscue.de", "smtp.subspace.kernel.org;\n spf=pass smtp.mailfrom=abscue.de" ], "Received": [ "from sea.lore.kernel.org (sea.lore.kernel.org\n [IPv6:2600:3c0a:e001:db::12fc:5321])\n\t(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)\n\t key-exchange x25519)\n\t(No client certificate requested)\n\tby legolas.ozlabs.org (Postfix) with ESMTPS id 4fk5bJ282Lz1yG8\n\tfor <incoming@patchwork.ozlabs.org>; Sun, 29 Mar 2026 18:28:44 +1100 (AEDT)", "from smtp.subspace.kernel.org (conduit.subspace.kernel.org\n [100.90.174.1])\n\tby sea.lore.kernel.org (Postfix) with ESMTP id 703143020D41\n\tfor <incoming@patchwork.ozlabs.org>; Sun, 29 Mar 2026 07:28:06 +0000 (UTC)", "from localhost.localdomain (localhost.localdomain [127.0.0.1])\n\tby smtp.subspace.kernel.org (Postfix) with ESMTP id 1D35F2D8DDF;\n\tSun, 29 Mar 2026 07:28:02 +0000 (UTC)", "from srv01.abscue.de (abscue.de [89.58.28.240])\n\t(using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))\n\t(No client certificate requested)\n\tby smtp.subspace.kernel.org (Postfix) with ESMTPS id 51F0E2D2397;\n\tSun, 29 Mar 2026 07:28:00 +0000 (UTC)", "from fluffy-mammal.metal.fwg-cag.de (87-94-78-46.co.dnainternet.fi\n [87.94.78.46])\n\tby srv01.abscue.de (Postfix) with ESMTPSA id E3AE41C00AB;\n\tSun, 29 Mar 2026 09:27:51 +0200 (CEST)" ], "ARC-Seal": "i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;\n\tt=1774769282; cv=none;\n b=EpErv0hZB+TS+2cbDRIWkMatimvCSbIoWkvIqKZXqVFenEGRJdNOmcdL65GkY2r/dq4X7Zdc5qLyVGUI2Zizo1hwDeYsh+u15QeJdonnnTUK9uEUtq7fEuAfV1FT2l+TLPpf9YKFjwFvKnoEg3aw5MGiW93ddeDgt8zX3wQgspk=", "ARC-Message-Signature": "i=1; a=rsa-sha256; d=subspace.kernel.org;\n\ts=arc-20240116; t=1774769282; c=relaxed/simple;\n\tbh=Tl09DoUDI1WlaEUHifoyQ4Al5NOut7mqf6EZMe4sI2s=;\n\th=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References:\n\t In-Reply-To:To:Cc;\n b=hA2NnSHwKPLelO/XlnatCJKlDSUsLNL0wyXi1fBGiKBqTq7/pLyhbB/dC03EGOLa7gbKQ5/datePAZrri2fGUnzB0mwrbyq682WK6pwmj2MQGQJ0Qz54BP8DgL7zPp5CRabTcQG7aFYUxhfZhbc45O+tl+cg77WHp+bxdm1Fg2I=", "ARC-Authentication-Results": "i=1; smtp.subspace.kernel.org;\n dmarc=none (p=none dis=none) header.from=abscue.de;\n spf=pass smtp.mailfrom=abscue.de;\n dkim=pass (2048-bit key) header.d=abscue.de header.i=@abscue.de\n header.b=U+9Qs3SZ; arc=none smtp.client-ip=89.58.28.240", "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed; d=abscue.de; s=dkim;\n\tt=1774769272;\n\th=from:from:reply-to:subject:subject:date:date:message-id:message-id:\n\t to:to:cc:cc:mime-version:mime-version:content-type:content-type:\n\t content-transfer-encoding:content-transfer-encoding:\n\t in-reply-to:in-reply-to:references:references;\n\tbh=GFndEwzrEeElHMwydsTfrQcvJvh+4gQQGNsvs8BcG4I=;\n\tb=U+9Qs3SZPg77N7kyZLrzIyPXNELvM12jnmS5XFnAbPizvudZupWlL2Pv5PPVIrnGOx3ycw\n\tbNKzug67Q0UuiOD9oi5q3lZNOBQTjNRqBzvxz+MA2V34H98gZqNn4XPgV7jlc3SBpqzSF5\n\t8nrkEFkPnWR6CkwfsqKdRwULNMjCE9535Nl4T8GSYFhzSg2uttOJnyh8N7mp1oqD+gdX2/\n\tzmf0IqPXpCXgHp4liWIhjmKmRPl9CoOrqe1j/AjknmogEVEEQb4AeYynE/OnsBydSC3dE4\n\tUDqHKde2PkGPaYTKBKF2V9qvjJsFPvyHn1Op9lpslUB4u2vmZb3BS6wSY3+rGQ==", "From": "=?utf-8?q?Otto_Pfl=C3=BCger?= <otto.pflueger@abscue.de>", "Date": "Sun, 29 Mar 2026 09:27:47 +0200", "Subject": "[PATCH v3 3/5] mfd: sprd-sc27xx: Switch to devm_mfd_add_devices()", "Precedence": "bulk", "X-Mailing-List": "linux-rtc@vger.kernel.org", "List-Id": "<linux-rtc.vger.kernel.org>", "List-Subscribe": "<mailto:linux-rtc+subscribe@vger.kernel.org>", "List-Unsubscribe": "<mailto:linux-rtc+unsubscribe@vger.kernel.org>", "MIME-Version": "1.0", "Content-Type": "text/plain; charset=\"utf-8\"", "Content-Transfer-Encoding": "8bit", "Message-Id": "<20260329-sc27xx-mfd-cells-v3-3-9158dee41f74@abscue.de>", "References": "<20260329-sc27xx-mfd-cells-v3-0-9158dee41f74@abscue.de>", "In-Reply-To": "<20260329-sc27xx-mfd-cells-v3-0-9158dee41f74@abscue.de>", "To": "Alexandre Belloni <alexandre.belloni@bootlin.com>,\n Rob Herring <robh@kernel.org>, Krzysztof Kozlowski <krzk+dt@kernel.org>,\n Conor Dooley <conor+dt@kernel.org>, Orson Zhai <orsonzhai@gmail.com>,\n Baolin Wang <baolin.wang@linux.alibaba.com>,\n Chunyan Zhang <zhang.lyra@gmail.com>, Lee Jones <lee@kernel.org>,\n Pavel Machek <pavel@kernel.org>, Liam Girdwood <lgirdwood@gmail.com>,\n Mark Brown <broonie@kernel.org>, Sebastian Reichel <sre@kernel.org>", "Cc": "linux-rtc@vger.kernel.org, devicetree@vger.kernel.org,\n linux-kernel@vger.kernel.org, linux-leds@vger.kernel.org,\n linux-pm@vger.kernel.org,\n =?utf-8?q?Otto_Pfl=C3=BCger?= <otto.pflueger@abscue.de>", "X-Mailer": "b4 0.14.3" }, "content": "To allow instantiating subdevices such as the regulator and poweroff\ndevices that do not have corresponding device tree nodes with a\n\"compatible\" property, use devm_mfd_add_devices() with MFD cells instead\nof devm_of_platform_populate(). Since different PMICs in the SC27xx\nseries contain different components, use separate MFD cell tables for\neach PMIC model. Define cells for all components that have upstream\ndrivers at this point.\n\nSigned-off-by: Otto Pflüger <otto.pflueger@abscue.de>\n---\n drivers/mfd/sprd-sc27xx-spi.c | 62 ++++++++++++++++++++++++++++++++++++-------\n 1 file changed, 53 insertions(+), 9 deletions(-)", "diff": "diff --git a/drivers/mfd/sprd-sc27xx-spi.c b/drivers/mfd/sprd-sc27xx-spi.c\nindex d6b4350779e6..aa052f646623 100644\n--- a/drivers/mfd/sprd-sc27xx-spi.c\n+++ b/drivers/mfd/sprd-sc27xx-spi.c\n@@ -14,6 +14,11 @@\n #include <linux/spi/spi.h>\n #include <uapi/linux/usb/charger.h>\n \n+enum sprd_pmic_type {\n+\tPMIC_TYPE_SC2730 = 1,\n+\tPMIC_TYPE_SC2731,\n+};\n+\n #define SPRD_PMIC_INT_MASK_STATUS\t0x0\n #define SPRD_PMIC_INT_RAW_STATUS\t0x4\n #define SPRD_PMIC_INT_EN\t\t0x8\n@@ -50,6 +55,29 @@ struct sprd_pmic_data {\n \tu32 charger_det;\n };\n \n+static const struct mfd_cell sc2730_devices[] = {\n+\tMFD_CELL_OF(\"sc2730-adc\", NULL, NULL, 0, 0, \"sprd,sc2730-adc\"),\n+\tMFD_CELL_OF(\"sc2730-bltc\", NULL, NULL, 0, 0, \"sprd,sc2730-bltc\"),\n+\tMFD_CELL_OF(\"sc2730-efuse\", NULL, NULL, 0, 0, \"sprd,sc2730-efuse\"),\n+\tMFD_CELL_OF(\"sc2730-eic\", NULL, NULL, 0, 0, \"sprd,sc2730-eic\"),\n+\tMFD_CELL_OF(\"sc2730-fgu\", NULL, NULL, 0, 0, \"sprd,sc2730-fgu\"),\n+\tMFD_CELL_OF(\"sc2730-rtc\", NULL, NULL, 0, 0, \"sprd,sc2730-rtc\"),\n+\tMFD_CELL_OF(\"sc2730-vibrator\", NULL, NULL, 0, 0, \"sprd,sc2730-vibrator\"),\n+};\n+\n+static const struct mfd_cell sc2731_devices[] = {\n+\tMFD_CELL_OF(\"sc2731-adc\", NULL, NULL, 0, 0, \"sprd,sc2731-adc\"),\n+\tMFD_CELL_OF(\"sc2731-bltc\", NULL, NULL, 0, 0, \"sprd,sc2731-bltc\"),\n+\tMFD_CELL_OF(\"sc2731-charger\", NULL, NULL, 0, 0, \"sprd,sc2731-charger\"),\n+\tMFD_CELL_OF(\"sc2731-efuse\", NULL, NULL, 0, 0, \"sprd,sc2731-efuse\"),\n+\tMFD_CELL_OF(\"sc2731-eic\", NULL, NULL, 0, 0, \"sprd,sc2731-eic\"),\n+\tMFD_CELL_OF(\"sc2731-fgu\", NULL, NULL, 0, 0, \"sprd,sc2731-fgu\"),\n+\tMFD_CELL_NAME(\"sc2731-poweroff\"),\n+\tMFD_CELL_NAME(\"sc2731-regulator\"),\n+\tMFD_CELL_OF(\"sc2731-rtc\", NULL, NULL, 0, 0, \"sprd,sc2731-rtc\"),\n+\tMFD_CELL_OF(\"sc2731-vibrator\", NULL, NULL, 0, 0, \"sprd,sc2731-vibrator\"),\n+};\n+\n /*\n * Since different PMICs of SC27xx series can have different interrupt\n * base address and irq number, we should save irq number and irq base\n@@ -152,12 +180,26 @@ static const struct regmap_config sprd_pmic_config = {\n static int sprd_pmic_probe(struct spi_device *spi)\n {\n \tstruct sprd_pmic *ddata;\n+\tenum sprd_pmic_type pmic_type;\n \tconst struct sprd_pmic_data *pdata;\n-\tint ret, i;\n+\tconst struct mfd_cell *cells;\n+\tint ret, i, num_cells;\n+\n+\tpmic_type = (uintptr_t)of_device_get_match_data(&spi->dev);\n \n-\tpdata = of_device_get_match_data(&spi->dev);\n-\tif (!pdata) {\n-\t\tdev_err(&spi->dev, \"No matching driver data found\\n\");\n+\tswitch (pmic_type) {\n+\tcase PMIC_TYPE_SC2730:\n+\t\tpdata = &sc2730_data;\n+\t\tcells = sc2730_devices;\n+\t\tnum_cells = ARRAY_SIZE(sc2730_devices);\n+\t\tbreak;\n+\tcase PMIC_TYPE_SC2731:\n+\t\tpdata = &sc2731_data;\n+\t\tcells = sc2731_devices;\n+\t\tnum_cells = ARRAY_SIZE(sc2731_devices);\n+\t\tbreak;\n+\tdefault:\n+\t\tdev_err(&spi->dev, \"Invalid device ID\\n\");\n \t\treturn -EINVAL;\n \t}\n \n@@ -204,7 +246,9 @@ static int sprd_pmic_probe(struct spi_device *spi)\n \t\treturn ret;\n \t}\n \n-\tret = devm_of_platform_populate(&spi->dev);\n+\tret = devm_mfd_add_devices(&spi->dev, PLATFORM_DEVID_AUTO,\n+\t\t\t\t cells, num_cells, NULL, 0,\n+\t\t\t\t regmap_irq_get_domain(ddata->irq_data));\n \tif (ret) {\n \t\tdev_err(&spi->dev, \"Failed to populate sub-devices %d\\n\", ret);\n \t\treturn ret;\n@@ -241,15 +285,15 @@ static DEFINE_SIMPLE_DEV_PM_OPS(sprd_pmic_pm_ops,\n \t\t\t\tsprd_pmic_suspend, sprd_pmic_resume);\n \n static const struct of_device_id sprd_pmic_match[] = {\n-\t{ .compatible = \"sprd,sc2730\", .data = &sc2730_data },\n-\t{ .compatible = \"sprd,sc2731\", .data = &sc2731_data },\n+\t{ .compatible = \"sprd,sc2730\", .data = (void *)PMIC_TYPE_SC2730 },\n+\t{ .compatible = \"sprd,sc2731\", .data = (void *)PMIC_TYPE_SC2731 },\n \t{},\n };\n MODULE_DEVICE_TABLE(of, sprd_pmic_match);\n \n static const struct spi_device_id sprd_pmic_spi_ids[] = {\n-\t{ .name = \"sc2730\", .driver_data = (unsigned long)&sc2730_data },\n-\t{ .name = \"sc2731\", .driver_data = (unsigned long)&sc2731_data },\n+\t{ .name = \"sc2730\", .driver_data = PMIC_TYPE_SC2730 },\n+\t{ .name = \"sc2731\", .driver_data = PMIC_TYPE_SC2731 },\n \t{},\n };\n MODULE_DEVICE_TABLE(spi, sprd_pmic_spi_ids);\n", "prefixes": [ "v3", "3/5" ] }