diff options
| author | Adrian Hunter <adrian.hunter@intel.com> | 2025-11-28 08:40:34 +0200 |
|---|---|---|
| committer | Alexandre Belloni <alexandre.belloni@bootlin.com> | 2025-11-29 00:06:40 +0100 |
| commit | da8116a9be9bdc0412ac3aa7931b16ab7335261e (patch) | |
| tree | 074ef07023c6aeafc936a80860603b6d4a615b95 /drivers | |
| parent | 6f6efdd15c67bd262a6e9c795fd54d47e4cb6857 (diff) | |
i3c: mipi-i3c-hci-pci: Allocate a structure for mipi_i3c_hci_pci device information
Allocate a structure for mipi_i3c_hci_pci device information, in
preparation for additional changes that need to store mipi_i3c_hci_pci
device-specific information.
Signed-off-by: Adrian Hunter <adrian.hunter@intel.com>
Reviewed-by: Frank Li <Frank.Li@nxp.com>
Link: https://patch.msgid.link/20251128064038.55158-9-adrian.hunter@intel.com
Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
Diffstat (limited to 'drivers')
| -rw-r--r-- | drivers/i3c/master/mipi-i3c-hci/mipi-i3c-hci-pci.c | 29 |
1 files changed, 19 insertions, 10 deletions
diff --git a/drivers/i3c/master/mipi-i3c-hci/mipi-i3c-hci-pci.c b/drivers/i3c/master/mipi-i3c-hci/mipi-i3c-hci-pci.c index b9794212b2fb..8936e50eddf7 100644 --- a/drivers/i3c/master/mipi-i3c-hci/mipi-i3c-hci-pci.c +++ b/drivers/i3c/master/mipi-i3c-hci/mipi-i3c-hci-pci.c @@ -14,6 +14,10 @@ #include <linux/pci.h> #include <linux/platform_device.h> +struct mipi_i3c_hci_pci { + struct platform_device *pdev; +}; + struct mipi_i3c_hci_pci_info { int (*init)(struct pci_dev *pci); }; @@ -68,10 +72,14 @@ static int mipi_i3c_hci_pci_probe(struct pci_dev *pci, const struct pci_device_id *id) { const struct mipi_i3c_hci_pci_info *info; - struct platform_device *pdev; + struct mipi_i3c_hci_pci *hci; struct resource res[2]; int dev_id, ret; + hci = devm_kzalloc(&pci->dev, sizeof(*hci), GFP_KERNEL); + if (!hci) + return -ENOMEM; + ret = pcim_enable_device(pci); if (ret) return ret; @@ -92,14 +100,14 @@ static int mipi_i3c_hci_pci_probe(struct pci_dev *pci, if (dev_id < 0) return dev_id; - pdev = platform_device_alloc("mipi-i3c-hci", dev_id); - if (!pdev) + hci->pdev = platform_device_alloc("mipi-i3c-hci", dev_id); + if (!hci->pdev) return -ENOMEM; - pdev->dev.parent = &pci->dev; - device_set_node(&pdev->dev, dev_fwnode(&pci->dev)); + hci->pdev->dev.parent = &pci->dev; + device_set_node(&hci->pdev->dev, dev_fwnode(&pci->dev)); - ret = platform_device_add_resources(pdev, res, ARRAY_SIZE(res)); + ret = platform_device_add_resources(hci->pdev, res, ARRAY_SIZE(res)); if (ret) goto err; @@ -110,23 +118,24 @@ static int mipi_i3c_hci_pci_probe(struct pci_dev *pci, goto err; } - ret = platform_device_add(pdev); + ret = platform_device_add(hci->pdev); if (ret) goto err; - pci_set_drvdata(pci, pdev); + pci_set_drvdata(pci, hci); return 0; err: - platform_device_put(pdev); + platform_device_put(hci->pdev); ida_free(&mipi_i3c_hci_pci_ida, dev_id); return ret; } static void mipi_i3c_hci_pci_remove(struct pci_dev *pci) { - struct platform_device *pdev = pci_get_drvdata(pci); + struct mipi_i3c_hci_pci *hci = pci_get_drvdata(pci); + struct platform_device *pdev = hci->pdev; int dev_id = pdev->id; platform_device_unregister(pdev); |
