Lines Matching refs:mdev

73 static int mic_dp_init(struct mic_device *mdev)  in mic_dp_init()  argument
75 mdev->dp = kzalloc(MIC_DP_SIZE, GFP_KERNEL); in mic_dp_init()
76 if (!mdev->dp) in mic_dp_init()
79 mdev->dp_dma_addr = mic_map_single(mdev, in mic_dp_init()
80 mdev->dp, MIC_DP_SIZE); in mic_dp_init()
81 if (mic_map_error(mdev->dp_dma_addr)) { in mic_dp_init()
82 kfree(mdev->dp); in mic_dp_init()
83 dev_err(&mdev->pdev->dev, "%s %d err %d\n", in mic_dp_init()
87 mdev->ops->write_spad(mdev, MIC_DPLO_SPAD, mdev->dp_dma_addr); in mic_dp_init()
88 mdev->ops->write_spad(mdev, MIC_DPHI_SPAD, mdev->dp_dma_addr >> 32); in mic_dp_init()
93 static void mic_dp_uninit(struct mic_device *mdev) in mic_dp_uninit() argument
95 mic_unmap_single(mdev, mdev->dp_dma_addr, MIC_DP_SIZE); in mic_dp_uninit()
96 kfree(mdev->dp); in mic_dp_uninit()
106 static void mic_ops_init(struct mic_device *mdev) in mic_ops_init() argument
108 switch (mdev->family) { in mic_ops_init()
110 mdev->ops = &mic_x100_ops; in mic_ops_init()
111 mdev->intr_ops = &mic_x100_intr_ops; in mic_ops_init()
112 mdev->smpt_ops = &mic_x100_smpt_ops; in mic_ops_init()
164 mic_device_init(struct mic_device *mdev, struct pci_dev *pdev) in mic_device_init() argument
166 mdev->pdev = pdev; in mic_device_init()
167 mdev->family = mic_get_family(pdev); in mic_device_init()
168 mdev->stepping = pdev->revision; in mic_device_init()
169 mic_ops_init(mdev); in mic_device_init()
170 mutex_init(&mdev->mic_mutex); in mic_device_init()
171 mdev->irq_info.next_avail_src = 0; in mic_device_init()
172 INIT_LIST_HEAD(&mdev->vdev_list); in mic_device_init()
187 struct mic_device *mdev; in mic_probe() local
189 mdev = kzalloc(sizeof(*mdev), GFP_KERNEL); in mic_probe()
190 if (!mdev) { in mic_probe()
195 mdev->id = ida_simple_get(&g_mic_ida, 0, MIC_MAX_NUM_DEVS, GFP_KERNEL); in mic_probe()
196 if (mdev->id < 0) { in mic_probe()
197 rc = mdev->id; in mic_probe()
202 mic_device_init(mdev, pdev); in mic_probe()
224 mdev->mmio.pa = pci_resource_start(pdev, mdev->ops->mmio_bar); in mic_probe()
225 mdev->mmio.len = pci_resource_len(pdev, mdev->ops->mmio_bar); in mic_probe()
226 mdev->mmio.va = pci_ioremap_bar(pdev, mdev->ops->mmio_bar); in mic_probe()
227 if (!mdev->mmio.va) { in mic_probe()
233 mdev->aper.pa = pci_resource_start(pdev, mdev->ops->aper_bar); in mic_probe()
234 mdev->aper.len = pci_resource_len(pdev, mdev->ops->aper_bar); in mic_probe()
235 mdev->aper.va = ioremap_wc(mdev->aper.pa, mdev->aper.len); in mic_probe()
236 if (!mdev->aper.va) { in mic_probe()
242 mdev->intr_ops->intr_init(mdev); in mic_probe()
243 rc = mic_setup_interrupts(mdev, pdev); in mic_probe()
248 rc = mic_smpt_init(mdev); in mic_probe()
254 pci_set_drvdata(pdev, mdev); in mic_probe()
256 rc = mic_dp_init(mdev); in mic_probe()
261 mic_bootparam_init(mdev); in mic_probe()
263 mic_create_debug_dir(mdev); in mic_probe()
265 mdev->miscdev.minor = MISC_DYNAMIC_MINOR; in mic_probe()
266 snprintf(mdev->name, sizeof(mdev->name), "mic%d", mdev->id); in mic_probe()
267 mdev->miscdev.name = mdev->name; in mic_probe()
268 mdev->miscdev.fops = &mic_fops; in mic_probe()
269 mdev->miscdev.parent = &mdev->pdev->dev; in mic_probe()
270 rc = misc_register(&mdev->miscdev); in mic_probe()
273 mdev->id, rc); in mic_probe()
277 mdev->cosm_dev = cosm_register_device(&mdev->pdev->dev, &cosm_hw_ops); in mic_probe()
278 if (IS_ERR(mdev->cosm_dev)) { in mic_probe()
279 rc = PTR_ERR(mdev->cosm_dev); in mic_probe()
285 misc_deregister(&mdev->miscdev); in mic_probe()
287 mic_delete_debug_dir(mdev); in mic_probe()
288 mic_dp_uninit(mdev); in mic_probe()
290 mic_smpt_uninit(mdev); in mic_probe()
292 mic_free_interrupts(mdev, pdev); in mic_probe()
294 iounmap(mdev->aper.va); in mic_probe()
296 iounmap(mdev->mmio.va); in mic_probe()
302 ida_simple_remove(&g_mic_ida, mdev->id); in mic_probe()
304 kfree(mdev); in mic_probe()
319 struct mic_device *mdev; in mic_remove() local
321 mdev = pci_get_drvdata(pdev); in mic_remove()
322 if (!mdev) in mic_remove()
325 cosm_unregister_device(mdev->cosm_dev); in mic_remove()
326 misc_deregister(&mdev->miscdev); in mic_remove()
327 mic_delete_debug_dir(mdev); in mic_remove()
328 mic_dp_uninit(mdev); in mic_remove()
329 mic_smpt_uninit(mdev); in mic_remove()
330 mic_free_interrupts(mdev, pdev); in mic_remove()
331 iounmap(mdev->aper.va); in mic_remove()
332 iounmap(mdev->mmio.va); in mic_remove()
335 ida_simple_remove(&g_mic_ida, mdev->id); in mic_remove()
336 kfree(mdev); in mic_remove()