Lines Matching full:hci
3 * PCI glue code for MIPI I3C HCI driver
28 int (*init)(struct mipi_i3c_hci_pci *hci);
29 void (*exit)(struct mipi_i3c_hci_pci *hci);
65 struct mipi_i3c_hci_pci *hci = dev_get_drvdata(dev); in intel_ltr_set() local
66 struct intel_host *host = hci->private; in intel_ltr_set()
115 static void intel_add_debugfs(struct mipi_i3c_hci_pci *hci) in intel_add_debugfs() argument
117 struct dentry *dir = debugfs_create_dir(dev_name(&hci->pci->dev), NULL); in intel_add_debugfs()
118 struct intel_host *host = hci->private; in intel_add_debugfs()
127 static void intel_remove_debugfs(struct mipi_i3c_hci_pci *hci) in intel_remove_debugfs() argument
129 struct intel_host *host = hci->private; in intel_remove_debugfs()
153 static int intel_i3c_init(struct mipi_i3c_hci_pci *hci) in intel_i3c_init() argument
155 struct intel_host *host = devm_kzalloc(&hci->pci->dev, sizeof(*host), GFP_KERNEL); in intel_i3c_init()
156 void __iomem *priv = intel_priv(hci->pci); in intel_i3c_init()
161 dma_set_mask_and_coherent(&hci->pci->dev, DMA_BIT_MASK(64)); in intel_i3c_init()
163 hci->pci->d3cold_delay = 0; in intel_i3c_init()
165 hci->private = host; in intel_i3c_init()
170 intel_ltr_expose(&hci->pci->dev); in intel_i3c_init()
171 intel_add_debugfs(hci); in intel_i3c_init()
176 static void intel_i3c_exit(struct mipi_i3c_hci_pci *hci) in intel_i3c_exit() argument
178 intel_remove_debugfs(hci); in intel_i3c_exit()
179 intel_ltr_hide(&hci->pci->dev); in intel_i3c_exit()
190 struct mipi_i3c_hci_pci *hci; in mipi_i3c_hci_pci_probe() local
194 hci = devm_kzalloc(&pci->dev, sizeof(*hci), GFP_KERNEL); in mipi_i3c_hci_pci_probe()
195 if (!hci) in mipi_i3c_hci_pci_probe()
198 hci->pci = pci; in mipi_i3c_hci_pci_probe()
220 hci->pdev = platform_device_alloc("mipi-i3c-hci", dev_id); in mipi_i3c_hci_pci_probe()
221 if (!hci->pdev) in mipi_i3c_hci_pci_probe()
224 hci->pdev->dev.parent = &pci->dev; in mipi_i3c_hci_pci_probe()
225 device_set_node(&hci->pdev->dev, dev_fwnode(&pci->dev)); in mipi_i3c_hci_pci_probe()
227 ret = platform_device_add_resources(hci->pdev, res, ARRAY_SIZE(res)); in mipi_i3c_hci_pci_probe()
231 hci->info = (const struct mipi_i3c_hci_pci_info *)id->driver_data; in mipi_i3c_hci_pci_probe()
232 if (hci->info && hci->info->init) { in mipi_i3c_hci_pci_probe()
233 ret = hci->info->init(hci); in mipi_i3c_hci_pci_probe()
238 ret = platform_device_add(hci->pdev); in mipi_i3c_hci_pci_probe()
242 pci_set_drvdata(pci, hci); in mipi_i3c_hci_pci_probe()
247 if (hci->info && hci->info->exit) in mipi_i3c_hci_pci_probe()
248 hci->info->exit(hci); in mipi_i3c_hci_pci_probe()
250 platform_device_put(hci->pdev); in mipi_i3c_hci_pci_probe()
257 struct mipi_i3c_hci_pci *hci = pci_get_drvdata(pci); in mipi_i3c_hci_pci_remove() local
258 struct platform_device *pdev = hci->pdev; in mipi_i3c_hci_pci_remove()
261 if (hci->info && hci->info->exit) in mipi_i3c_hci_pci_remove()
262 hci->info->exit(hci); in mipi_i3c_hci_pci_remove()
296 MODULE_DESCRIPTION("MIPI I3C HCI driver on PCI bus");