]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
drm/xe/i2c: Allow per domain unique id
authorRaag Jadav <raag.jadav@intel.com>
Tue, 21 Jul 2026 11:34:38 +0000 (17:04 +0530)
committerThomas Hellström <thomas.hellstrom@linux.intel.com>
Thu, 23 Jul 2026 07:19:03 +0000 (09:19 +0200)
PCI bus, device and function can be same for devices existing across
different domains. Allow per domain unique identifier while registering
platform device to prevent name conflict.

Fixes: f0e53aadd702 ("drm/xe: Support for I2C attached MCUs")
Signed-off-by: Raag Jadav <raag.jadav@intel.com>
Reviewed-by: Heikki Krogerus <heikki.krogerus@linux.intel.com>
Link: https://patch.msgid.link/20260721113438.651100-1-raag.jadav@intel.com
Signed-off-by: Matt Roper <matthew.d.roper@intel.com>
(cherry picked from commit a79f6abc8b516b5bd906e2eca8121e3549ee163f)
Signed-off-by: Thomas Hellström <thomas.hellstrom@linux.intel.com>
drivers/gpu/drm/xe/xe_i2c.c

index 706783863d07d66b4685005d6649b3cd143ecc3b..f05f23221c1b7b9a41dd4790d82e3994457b6ecf 100644 (file)
@@ -95,18 +95,21 @@ static int xe_i2c_register_adapter(struct xe_i2c *i2c)
        struct platform_device *pdev;
        struct fwnode_handle *fwnode;
        int ret;
+       u32 id;
 
        fwnode = fwnode_create_software_node(xe_i2c_adapter_properties, NULL);
        if (IS_ERR(fwnode))
                return PTR_ERR(fwnode);
 
+       id = (pci_domain_nr(pci->bus) << 16) | pci_dev_id(pci);
+
        /*
         * Not using platform_device_register_full() here because we don't have
         * a handle to the platform_device before it returns. xe_i2c_notifier()
         * uses that handle, but it may be called before
         * platform_device_register_full() is done.
         */
-       pdev = platform_device_alloc(adapter_name, pci_dev_id(pci));
+       pdev = platform_device_alloc(adapter_name, id);
        if (!pdev) {
                ret = -ENOMEM;
                goto err_fwnode_remove;