Lines Matching defs:qdev

126 	struct qaic_device *qdev = to_qaic_device(dev);
128 pci_set_drvdata(qdev->pdev, NULL);
143 struct qaic_device *qdev = qddev->qdev;
148 rcu_id = srcu_read_lock(&qdev->dev_lock);
149 if (qdev->dev_state != QAIC_ONLINE) {
179 srcu_read_unlock(&qdev->dev_lock, rcu_id);
188 srcu_read_unlock(&qdev->dev_lock, rcu_id);
196 struct qaic_device *qdev;
204 qdev = qddev->qdev;
205 qdev_rcu_id = srcu_read_lock(&qdev->dev_lock);
206 if (qdev->dev_state == QAIC_ONLINE) {
207 qaic_release_usr(qdev, usr);
208 for (i = 0; i < qdev->num_dbc; ++i)
209 if (qdev->dbc[i].usr && qdev->dbc[i].usr->handle == usr->handle)
210 release_dbc(qdev, i);
212 srcu_read_unlock(&qdev->dev_lock, qdev_rcu_id);
255 static int qaic_create_drm_device(struct qaic_device *qdev, s32 partition_id)
257 struct qaic_drm_device *qddev = qdev->qddev;
269 pci_dbg(qdev->pdev, "drm_dev_register failed %d\n", ret);
278 static void qaic_destroy_drm_device(struct qaic_device *qdev, s32 partition_id)
280 struct qaic_drm_device *qddev = qdev->qddev;
317 struct qaic_device *qdev;
331 qdev = pci_get_drvdata(to_pci_dev(mhi_dev->mhi_cntrl->cntrl_dev));
333 dev_set_drvdata(&mhi_dev->dev, qdev);
334 qdev->cntl_ch = mhi_dev;
336 ret = qaic_control_open(qdev);
338 pci_dbg(qdev->pdev, "%s: control_open failed %d\n", __func__, ret);
342 qdev->dev_state = QAIC_BOOT;
343 ret = get_cntl_version(qdev, NULL, &major, &minor);
345 pci_err(qdev->pdev, "%s: Control protocol version (%d.%d) not supported. Supported version is (%d.%d). Ret: %d\n",
350 qdev->dev_state = QAIC_ONLINE;
351 kobject_uevent(&(to_accel_kdev(qdev->qddev))->kobj, KOBJ_ONLINE);
356 qaic_control_close(qdev);
365 static void qaic_notify_reset(struct qaic_device *qdev)
369 kobject_uevent(&(to_accel_kdev(qdev->qddev))->kobj, KOBJ_OFFLINE);
370 qdev->dev_state = QAIC_OFFLINE;
372 wake_all_cntl(qdev);
373 for (i = 0; i < qdev->num_dbc; ++i)
374 wakeup_dbc(qdev, i);
375 synchronize_srcu(&qdev->dev_lock);
378 void qaic_dev_reset_clean_local_state(struct qaic_device *qdev)
382 qaic_notify_reset(qdev);
385 for (i = 0; i < qdev->num_dbc; ++i)
386 release_dbc(qdev, i);
394 struct qaic_device *qdev;
398 qdev = devm_kzalloc(dev, sizeof(*qdev), GFP_KERNEL);
399 if (!qdev)
402 qdev->dev_state = QAIC_OFFLINE;
403 qdev->num_dbc = 16;
404 qdev->dbc = devm_kcalloc(dev, qdev->num_dbc, sizeof(*qdev->dbc), GFP_KERNEL);
405 if (!qdev->dbc)
413 pci_set_drvdata(pdev, qdev);
421 ret = drmm_mutex_init(drm, &qdev->cntl_mutex);
424 ret = drmm_mutex_init(drm, &qdev->bootlog_mutex);
428 qdev->cntl_wq = qaicm_wq_init(drm, "qaic_cntl");
429 if (IS_ERR(qdev->cntl_wq))
431 qdev->qts_wq = qaicm_wq_init(drm, "qaic_ts");
432 if (IS_ERR(qdev->qts_wq))
435 ret = qaicm_srcu_init(drm, &qdev->dev_lock);
439 qdev->qddev = qddev;
440 qdev->pdev = pdev;
441 qddev->qdev = qdev;
443 INIT_LIST_HEAD(&qdev->cntl_xfer_list);
444 INIT_LIST_HEAD(&qdev->bootlog);
447 for (i = 0; i < qdev->num_dbc; ++i) {
448 spin_lock_init(&qdev->dbc[i].xfer_lock);
449 qdev->dbc[i].qdev = qdev;
450 qdev->dbc[i].id = i;
451 INIT_LIST_HEAD(&qdev->dbc[i].xfer_list);
452 ret = qaicm_srcu_init(drm, &qdev->dbc[i].ch_lock);
455 init_waitqueue_head(&qdev->dbc[i].dbc_release);
456 INIT_LIST_HEAD(&qdev->dbc[i].bo_lists);
459 return qdev;
462 static int init_pci(struct qaic_device *qdev, struct pci_dev *pdev,
486 qdev->bar_mhi = devm_ioremap_resource(&pdev->dev, &pdev->resource[config->mhi_bar_idx]);
487 if (IS_ERR(qdev->bar_mhi))
488 return PTR_ERR(qdev->bar_mhi);
490 qdev->bar_dbc = devm_ioremap_resource(&pdev->dev, &pdev->resource[config->dbc_bar_idx]);
491 if (IS_ERR(qdev->bar_dbc))
492 return PTR_ERR(qdev->bar_dbc);
500 static int init_msi(struct qaic_device *qdev, struct pci_dev *pdev)
502 int irq_count = qdev->num_dbc + 1;
522 qdev->single_msi = true;
533 for (i = 0; i < qdev->num_dbc; ++i) {
535 pci_irq_vector(pdev, qdev->single_msi ? 0 : i + 1),
537 "qaic_dbc", &qdev->dbc[i]);
542 qdev->dbc[i].irq = pci_irq_vector(pdev, qdev->single_msi ? 0 : i + 1);
543 if (!qdev->single_msi)
544 disable_irq_nosync(qdev->dbc[i].irq);
545 INIT_WORK(&qdev->dbc[i].poll_work, irq_polling_work);
555 struct qaic_device *qdev;
560 qdev = create_qdev(pdev, config);
561 if (!qdev)
564 ret = init_pci(qdev, pdev, config);
568 for (i = 0; i < qdev->num_dbc; ++i)
569 qdev->dbc[i].dbc_base = qdev->bar_dbc + QAIC_DBC_OFF(i);
571 mhi_irq = init_msi(qdev, pdev);
575 ret = qaic_create_drm_device(qdev, QAIC_NO_PARTITION);
579 qdev->mhi_cntrl = qaic_mhi_register_controller(pdev, qdev->bar_mhi, mhi_irq,
580 qdev->single_msi, config->family);
581 if (IS_ERR(qdev->mhi_cntrl)) {
582 ret = PTR_ERR(qdev->mhi_cntrl);
583 qaic_destroy_drm_device(qdev, QAIC_NO_PARTITION);
592 struct qaic_device *qdev = pci_get_drvdata(pdev);
594 if (!qdev)
597 qaic_dev_reset_clean_local_state(qdev);
598 qaic_mhi_free_controller(qdev->mhi_cntrl, link_up);
599 qaic_destroy_drm_device(qdev, QAIC_NO_PARTITION);
616 struct qaic_device *qdev = pci_get_drvdata(pdev);
618 qaic_notify_reset(qdev);
619 qaic_mhi_start_reset(qdev->mhi_cntrl);
620 qaic_dev_reset_clean_local_state(qdev);
625 struct qaic_device *qdev = pci_get_drvdata(pdev);
627 qaic_mhi_reset_done(qdev->mhi_cntrl);