From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-wr1-f43.google.com (mail-wr1-f43.google.com [209.85.221.43]) (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 93CAB345751 for ; Mon, 18 May 2026 10:42:00 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.43 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779100928; cv=none; b=DdqOqd9+RjFy8zYoSrbAAZdZCtFyL7y+eHnBcDy2PEz3i4u3f64BLJIhO/mYlq1lmxG6pTLo2DJAbQvGV6bsDfLuT7uQy3B6PO/KMdLm0UMG+TKbdDdTSvFSQH1J9mRxLHDPqXyQWZSpckkXC7864vydqwqcsIQRcdZsvsGzSWQ= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779100928; c=relaxed/simple; bh=1qFXj3ueSQm3NaYU43VWPlJ7cfY0pdlKl/k5FRKW53Q=; h=From:To:Cc:Subject:Date:Message-ID:MIME-Version:Content-Type; b=BLLALH3zFsNRhdfHlEbvMagF2rGljW4xI9fNYk7vx/ltm4zWkrkQp2/DWEueCKFUCt0UVxMNwUSCKOV/cq+3OlqylRm3bq0emvsZYCsYphez3JK6ff9CS2Mhg9y1Ll1EalvytC6GH34BTOiMTR2yxzo/V6EAWac/3DcH9WYxG+4= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=baylibre.com; spf=pass smtp.mailfrom=baylibre.com; dkim=pass (2048-bit key) header.d=baylibre-com.20251104.gappssmtp.com header.i=@baylibre-com.20251104.gappssmtp.com header.b=zspGCRlz; arc=none smtp.client-ip=209.85.221.43 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=baylibre.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=baylibre.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=baylibre-com.20251104.gappssmtp.com header.i=@baylibre-com.20251104.gappssmtp.com header.b="zspGCRlz" Received: by mail-wr1-f43.google.com with SMTP id ffacd0b85a97d-43fe608cb92so1194110f8f.2 for ; Mon, 18 May 2026 03:41:58 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=baylibre-com.20251104.gappssmtp.com; s=20251104; t=1779100916; x=1779705716; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc:subject:date:message-id:reply-to; bh=ICsgeY9oBrA+uaN0MCbtvO3EFqTkJdhtX1lYQLV6Wuk=; b=zspGCRlz+78IONTA5ILBkeCyq5zkg2fS+IonK1m4EVED9Uw0AzLtf4nEq6iMoqiASE lQd/BE1EJ9fjQQcmGP9ofnYULXNUwHGWA/LdQk+YCXVmfCPCeWDx4NZWCOz0+JmAVOhZ srkuQ9CEtQAcUGzAdF500WThmlhRaTtHSCSVzqRKCNBqSdEWOoHCGHDfNvaf6m0kjL2/ yXaBrtepMnuMFPBrlVNEUEivHcfCMy5Bt5J1MN/pEtKEEGk6BSFbxnceu++MRAxjoumM SEWyZDtxRnZ4gqWL2uJTQ1E7bLZWGLCwMpwB/Csw3EZ+PR7t2wMWgQdmMgdXeNa4l81J AIVg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1779100916; x=1779705716; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=ICsgeY9oBrA+uaN0MCbtvO3EFqTkJdhtX1lYQLV6Wuk=; b=BSjGxSRqGW6PseDEVZd3mPJiKZzATTJQVb33OT9gkD8ns9aVFzWpzrStcvItiBALZI Vf5FW88SofFlWzJPoEtf47sQrJwXVJ5rjysDU260hO9DOfquyJ0At11Wl7QeusxFaTsU Vzfl63SZ4p57uKzcAjAawLyRY9qQcFXdQ0ktW5GA6xBbrwzhB2oG1F2s5VaD3+H/1U9T j0VkRMhc1i1SDvzJ2USV3f37yLlhQeHB9psjDuQsMPMs3AU2iHssR9v9EE/4BUoNVa0j LrNi/YpIw8JqM+AvOoOEK77U3pPERAl0jYN32EoDIC/T2xJwTAwWyyrqn6XHkJ8bPcSD sSdw== X-Gm-Message-State: AOJu0YwE1Xw8QydU/oVv0QR38xtnA+1mJeFz2v0utZ3i0O6XsmmTv4rY 6xwJhJUUhPKdw1/Q/A7SGH/NC6CkT9nuI2jMkjwUZyypDR2w+CG4O3dzvUgA1u/ftwEe9ZP4NgW t8jtD X-Gm-Gg: Acq92OEKeoF996xq5aAHmkulEg3bwdizoeqEBBWj5pu1pfJny6G8ruaoxIimwso5d6+ jZ8X75Ihoh5uFVDdQsjz8JsQskdir7aWNUjudi8aRwMBetb3uL6TxZMSQspHPrFfwu3Ka6Kxxjb Lxxh3EP5PhddicPDgePlkMkQbuq+O4cB0GiZy9PXAjffbgZzNBW7EAvBJSlgsqpwmwrlMG/gMnN X8/zKbYvEBu+wqvvA8iOWUmnoy/t887FwgOFlCTw19qaZsrXA4xGX1MFJOWNOjCLeGmdCiBI6JN dXpPO9odkyBTGbu4zKzZiu5VXo5TI51Sa3GgahWsq/CZTIeDQwIHMfXAlHdUkPkRTVgCvd6f7aZ Dw6iqpiSbMDAaEDgl4u2e9mNBAwelbfgp7+M+KpYGQTFKJkVZ6yOEAHwKrAggneEwNqcFW8S37A anVZxljUe6wHsKieCOJ9QKQP0LiJyFPETSdElMBvNx0z1ILarshfu7cSPbp6S2chDN/XSgYGm4g WKj9DSTEL7zu7M= X-Received: by 2002:a05:6000:25c4:b0:43d:184:8aa2 with SMTP id ffacd0b85a97d-45e5c589d93mr24452882f8f.16.1779100915501; Mon, 18 May 2026 03:41:55 -0700 (PDT) Received: from localhost (p200300f65f47db049367b55fc4056f2b.dip0.t-ipconnect.de. [2003:f6:5f47:db04:9367:b55f:c405:6f2b]) by smtp.gmail.com with UTF8SMTPSA id ffacd0b85a97d-45d9ec3ac86sm35995438f8f.14.2026.05.18.03.41.54 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 18 May 2026 03:41:55 -0700 (PDT) From: =?UTF-8?q?Uwe=20Kleine-K=C3=B6nig=20=28The=20Capable=20Hub=29?= To: MyungJoo Ham , Chanwoo Choi Cc: linux-kernel@vger.kernel.org, Krzysztof Kozlowski Subject: [PATCH v1 0/2] extcon: Rework initialization of i2c_device_id Date: Mon, 18 May 2026 12:41:43 +0200 Message-ID: X-Mailer: git-send-email 2.47.3 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 X-Developer-Signature: v=1; a=openpgp-sha256; l=3419; i=u.kleine-koenig@baylibre.com; h=from:subject:message-id; bh=1qFXj3ueSQm3NaYU43VWPlJ7cfY0pdlKl/k5FRKW53Q=; b=owEBbQGS/pANAwAKAY+A+1h9Ev5OAcsmYgBqCuzoNhUK1lZVBH0XSP1GJds8wZAuPvWKkgMIY +etlzkGNyaJATMEAAEKAB0WIQQ/gaxpOnoeWYmt/tOPgPtYfRL+TgUCagrs6AAKCRCPgPtYfRL+ ThyDCAC4dw8bltfc65IwWv8aweS0GK+gP/RJ9CYHAgJL2+yICxa+gzBakDzcVMidAMEbekc4iuq 6UAzMfx7127RVufIAsJIsYqO24O0TbBZufe7PYxBzQs9+P7vN4Lg5y0SiPsJL0M+CCbTEFqR/dp O5YwFYFnKEOTNl4VfSw6oVHpTgl0pxdYirsJCvw23DIt/YXQuwuiLxfHYK0USclebrnKe5Zl8/B MzG88P7jbbbsAisVGBieoXbp6poA2HCAFCdx2f1mtl9IRAmydS7ML3dDPgAtRC6wBuJq8Mxst2h BMHPWP5K830pJddE06eVppGxfKU6CYfkyZGZIUyyuI/XkUtx X-Developer-Key: i=u.kleine-koenig@baylibre.com; a=openpgp; fpr=0D2511F322BFAB1C1580266BE2DCDD9132669BD6 Content-Transfer-Encoding: 8bit Hello, I plan to do the following to the definition of i2c_device_id: diff --git a/include/linux/mod_devicetable.h b/include/linux/mod_devicetable.h index 23ff24080dfd..aebd3a5e90af 100644 --- a/include/linux/mod_devicetable.h +++ b/include/linux/mod_devicetable.h @@ -477,7 +477,11 @@ struct rpmsg_device_id { struct i2c_device_id { char name[I2C_NAME_SIZE]; - kernel_ulong_t driver_data; /* Data private to the driver */ + union { + /* Data private to the driver */ + kernel_ulong_t driver_data; + const void *driver_data_ptr; + }; }; /* pci_epf */ . This requires that .driver_data is assigned via a named initializer for static data. This requirement isn't a bad one because named initializers are also much better readable than list initializers. The union added to struct i2c_device_id enables further cleanups like: diff --git a/drivers/regulator/ad5398.c b/drivers/regulator/ad5398.c index 0123ca8157a8..dfb0b07500a7 100644 --- a/drivers/regulator/ad5398.c +++ b/drivers/regulator/ad5398.c @@ -207,8 +207,8 @@ struct ad5398_current_data_format { static const struct ad5398_current_data_format df_10_4_120 = {10, 4, 0, 120000}; static const struct i2c_device_id ad5398_id[] = { - { .name = "ad5398", .driver_data = (kernel_ulong_t)&df_10_4_120 }, - { .name = "ad5821", .driver_data = (kernel_ulong_t)&df_10_4_120 }, + { .name = "ad5398", .driver_data_ptr = &df_10_4_120 }, + { .name = "ad5821", .driver_data_ptr = &df_10_4_120 }, { } }; MODULE_DEVICE_TABLE(i2c, ad5398_id); @@ -219,8 +219,7 @@ static int ad5398_probe(struct i2c_client *client) struct regulator_init_data *init_data = dev_get_platdata(&client->dev); struct regulator_config config = { }; struct ad5398_chip_info *chip; - const struct ad5398_current_data_format *df = - (struct ad5398_current_data_format *)id->driver_data; + const struct ad5398_current_data_format *df = id->driver_data; chip = devm_kzalloc(&client->dev, sizeof(*chip), GFP_KERNEL); if (!chip) that are an improvement for readability (again!) and it keeps some properties of the pointers (here: being const) without having to pay attention for that. (I didn't find a extcon driver that benefits, so this is "only" a regulator driver example.) My additional motivation for this effort is CHERI[1]. This is a hardware extension that uses 128 bit pointers but unsigned long is still 64 bit. So with CHERI you cannot store pointers in unsigned long variables. The first patch simplifies one extcon driver to not use .driver_data, the second converts all extcon drivers to initialize i2c_device_ids using named initializers. Best regards Uwe [1] https://cheri-alliance.org/discover-cheri/ https://lwn.net/Articles/1037974/ Uwe Kleine-König (The Capable Hub) (2): extcon: rt8973: Drop unused driver data extcon: Use named initializers for arrays of i2c_device_data drivers/extcon/extcon-fsa9480.c | 4 ++-- drivers/extcon/extcon-lc824206xa.c | 2 +- drivers/extcon/extcon-max14526.c | 2 +- drivers/extcon/extcon-ptn5150.c | 2 +- drivers/extcon/extcon-rt8973a.c | 2 +- drivers/extcon/extcon-rt8973a.h | 4 ---- drivers/extcon/extcon-sm5502.c | 6 +++--- 7 files changed, 9 insertions(+), 13 deletions(-) base-commit: 254f49634ee16a731174d2ae34bc50bd5f45e731 -- 2.47.3