mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2025-12-28 05:34:13 -05:00
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>
This commit is contained in:
committed by
Alexandre Belloni
parent
6f6efdd15c
commit
da8116a9be
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user