Lines Matching refs:mdev
49 static int mic_dp_init(struct mic_device *mdev) in mic_dp_init() argument
51 mdev->dp = kzalloc(MIC_DP_SIZE, GFP_KERNEL); in mic_dp_init()
52 if (!mdev->dp) in mic_dp_init()
55 mdev->dp_dma_addr = mic_map_single(mdev, in mic_dp_init()
56 mdev->dp, MIC_DP_SIZE); in mic_dp_init()
57 if (mic_map_error(mdev->dp_dma_addr)) { in mic_dp_init()
58 kfree(mdev->dp); in mic_dp_init()
59 dev_err(&mdev->pdev->dev, "%s %d err %d\n", in mic_dp_init()
63 mdev->ops->write_spad(mdev, MIC_DPLO_SPAD, mdev->dp_dma_addr); in mic_dp_init()
64 mdev->ops->write_spad(mdev, MIC_DPHI_SPAD, mdev->dp_dma_addr >> 32); in mic_dp_init()
69 static void mic_dp_uninit(struct mic_device *mdev) in mic_dp_uninit() argument
71 mic_unmap_single(mdev, mdev->dp_dma_addr, MIC_DP_SIZE); in mic_dp_uninit()
72 kfree(mdev->dp); in mic_dp_uninit()
82 static void mic_ops_init(struct mic_device *mdev) in mic_ops_init() argument
84 switch (mdev->family) { in mic_ops_init()
86 mdev->ops = &mic_x100_ops; in mic_ops_init()
87 mdev->intr_ops = &mic_x100_intr_ops; in mic_ops_init()
88 mdev->smpt_ops = &mic_x100_smpt_ops; in mic_ops_init()
140 mic_device_init(struct mic_device *mdev, struct pci_dev *pdev) in mic_device_init() argument
142 mdev->pdev = pdev; in mic_device_init()
143 mdev->family = mic_get_family(pdev); in mic_device_init()
144 mdev->stepping = pdev->revision; in mic_device_init()
145 mic_ops_init(mdev); in mic_device_init()
146 mutex_init(&mdev->mic_mutex); in mic_device_init()
147 mdev->irq_info.next_avail_src = 0; in mic_device_init()
162 struct mic_device *mdev; in mic_probe() local
164 mdev = kzalloc(sizeof(*mdev), GFP_KERNEL); in mic_probe()
165 if (!mdev) { in mic_probe()
170 mdev->id = ida_simple_get(&g_mic_ida, 0, MIC_MAX_NUM_DEVS, GFP_KERNEL); in mic_probe()
171 if (mdev->id < 0) { in mic_probe()
172 rc = mdev->id; in mic_probe()
177 mic_device_init(mdev, pdev); in mic_probe()
199 mdev->mmio.pa = pci_resource_start(pdev, mdev->ops->mmio_bar); in mic_probe()
200 mdev->mmio.len = pci_resource_len(pdev, mdev->ops->mmio_bar); in mic_probe()
201 mdev->mmio.va = pci_ioremap_bar(pdev, mdev->ops->mmio_bar); in mic_probe()
202 if (!mdev->mmio.va) { in mic_probe()
208 mdev->aper.pa = pci_resource_start(pdev, mdev->ops->aper_bar); in mic_probe()
209 mdev->aper.len = pci_resource_len(pdev, mdev->ops->aper_bar); in mic_probe()
210 mdev->aper.va = ioremap_wc(mdev->aper.pa, mdev->aper.len); in mic_probe()
211 if (!mdev->aper.va) { in mic_probe()
217 mdev->intr_ops->intr_init(mdev); in mic_probe()
218 rc = mic_setup_interrupts(mdev, pdev); in mic_probe()
223 rc = mic_smpt_init(mdev); in mic_probe()
229 pci_set_drvdata(pdev, mdev); in mic_probe()
231 rc = mic_dp_init(mdev); in mic_probe()
236 mic_bootparam_init(mdev); in mic_probe()
237 mic_create_debug_dir(mdev); in mic_probe()
239 mdev->cosm_dev = cosm_register_device(&mdev->pdev->dev, &cosm_hw_ops); in mic_probe()
240 if (IS_ERR(mdev->cosm_dev)) { in mic_probe()
241 rc = PTR_ERR(mdev->cosm_dev); in mic_probe()
247 mic_delete_debug_dir(mdev); in mic_probe()
248 mic_dp_uninit(mdev); in mic_probe()
250 mic_smpt_uninit(mdev); in mic_probe()
252 mic_free_interrupts(mdev, pdev); in mic_probe()
254 iounmap(mdev->aper.va); in mic_probe()
256 iounmap(mdev->mmio.va); in mic_probe()
262 ida_simple_remove(&g_mic_ida, mdev->id); in mic_probe()
264 kfree(mdev); in mic_probe()
279 struct mic_device *mdev; in mic_remove() local
281 mdev = pci_get_drvdata(pdev); in mic_remove()
282 if (!mdev) in mic_remove()
285 cosm_unregister_device(mdev->cosm_dev); in mic_remove()
286 mic_delete_debug_dir(mdev); in mic_remove()
287 mic_dp_uninit(mdev); in mic_remove()
288 mic_smpt_uninit(mdev); in mic_remove()
289 mic_free_interrupts(mdev, pdev); in mic_remove()
290 iounmap(mdev->aper.va); in mic_remove()
291 iounmap(mdev->mmio.va); in mic_remove()
294 ida_simple_remove(&g_mic_ida, mdev->id); in mic_remove()
295 kfree(mdev); in mic_remove()