Lines Matching refs:mdev
60 static int mic_dp_init(struct mic_device *mdev) in mic_dp_init() argument
62 mdev->dp = kzalloc(MIC_DP_SIZE, GFP_KERNEL); in mic_dp_init()
63 if (!mdev->dp) in mic_dp_init()
66 mdev->dp_dma_addr = mic_map_single(mdev, in mic_dp_init()
67 mdev->dp, MIC_DP_SIZE); in mic_dp_init()
68 if (mic_map_error(mdev->dp_dma_addr)) { in mic_dp_init()
69 kfree(mdev->dp); in mic_dp_init()
70 dev_err(&mdev->pdev->dev, "%s %d err %d\n", in mic_dp_init()
74 mdev->ops->write_spad(mdev, MIC_DPLO_SPAD, mdev->dp_dma_addr); in mic_dp_init()
75 mdev->ops->write_spad(mdev, MIC_DPHI_SPAD, mdev->dp_dma_addr >> 32); in mic_dp_init()
80 static void mic_dp_uninit(struct mic_device *mdev) in mic_dp_uninit() argument
82 mic_unmap_single(mdev, mdev->dp_dma_addr, MIC_DP_SIZE); in mic_dp_uninit()
83 kfree(mdev->dp); in mic_dp_uninit()
93 static void mic_ops_init(struct mic_device *mdev) in mic_ops_init() argument
95 switch (mdev->family) { in mic_ops_init()
97 mdev->ops = &mic_x100_ops; in mic_ops_init()
98 mdev->intr_ops = &mic_x100_intr_ops; in mic_ops_init()
99 mdev->smpt_ops = &mic_x100_smpt_ops; in mic_ops_init()
151 mic_device_init(struct mic_device *mdev, struct pci_dev *pdev) in mic_device_init() argument
153 mdev->pdev = pdev; in mic_device_init()
154 mdev->family = mic_get_family(pdev); in mic_device_init()
155 mdev->stepping = pdev->revision; in mic_device_init()
156 mic_ops_init(mdev); in mic_device_init()
157 mutex_init(&mdev->mic_mutex); in mic_device_init()
158 mdev->irq_info.next_avail_src = 0; in mic_device_init()
173 struct mic_device *mdev; in mic_probe() local
175 mdev = kzalloc(sizeof(*mdev), GFP_KERNEL); in mic_probe()
176 if (!mdev) { in mic_probe()
181 mdev->id = ida_simple_get(&g_mic_ida, 0, MIC_MAX_NUM_DEVS, GFP_KERNEL); in mic_probe()
182 if (mdev->id < 0) { in mic_probe()
183 rc = mdev->id; in mic_probe()
188 mic_device_init(mdev, pdev); in mic_probe()
210 mdev->mmio.pa = pci_resource_start(pdev, mdev->ops->mmio_bar); in mic_probe()
211 mdev->mmio.len = pci_resource_len(pdev, mdev->ops->mmio_bar); in mic_probe()
212 mdev->mmio.va = pci_ioremap_bar(pdev, mdev->ops->mmio_bar); in mic_probe()
213 if (!mdev->mmio.va) { in mic_probe()
219 mdev->aper.pa = pci_resource_start(pdev, mdev->ops->aper_bar); in mic_probe()
220 mdev->aper.len = pci_resource_len(pdev, mdev->ops->aper_bar); in mic_probe()
221 mdev->aper.va = ioremap_wc(mdev->aper.pa, mdev->aper.len); in mic_probe()
222 if (!mdev->aper.va) { in mic_probe()
228 mdev->intr_ops->intr_init(mdev); in mic_probe()
229 rc = mic_setup_interrupts(mdev, pdev); in mic_probe()
234 rc = mic_smpt_init(mdev); in mic_probe()
240 pci_set_drvdata(pdev, mdev); in mic_probe()
242 rc = mic_dp_init(mdev); in mic_probe()
247 mic_bootparam_init(mdev); in mic_probe()
248 mic_create_debug_dir(mdev); in mic_probe()
250 mdev->cosm_dev = cosm_register_device(&mdev->pdev->dev, &cosm_hw_ops); in mic_probe()
251 if (IS_ERR(mdev->cosm_dev)) { in mic_probe()
252 rc = PTR_ERR(mdev->cosm_dev); in mic_probe()
258 mic_delete_debug_dir(mdev); in mic_probe()
259 mic_dp_uninit(mdev); in mic_probe()
261 mic_smpt_uninit(mdev); in mic_probe()
263 mic_free_interrupts(mdev, pdev); in mic_probe()
265 iounmap(mdev->aper.va); in mic_probe()
267 iounmap(mdev->mmio.va); in mic_probe()
273 ida_simple_remove(&g_mic_ida, mdev->id); in mic_probe()
275 kfree(mdev); in mic_probe()
290 struct mic_device *mdev; in mic_remove() local
292 mdev = pci_get_drvdata(pdev); in mic_remove()
293 if (!mdev) in mic_remove()
296 cosm_unregister_device(mdev->cosm_dev); in mic_remove()
297 mic_delete_debug_dir(mdev); in mic_remove()
298 mic_dp_uninit(mdev); in mic_remove()
299 mic_smpt_uninit(mdev); in mic_remove()
300 mic_free_interrupts(mdev, pdev); in mic_remove()
301 iounmap(mdev->aper.va); in mic_remove()
302 iounmap(mdev->mmio.va); in mic_remove()
305 ida_simple_remove(&g_mic_ida, mdev->id); in mic_remove()
306 kfree(mdev); in mic_remove()