Lines Matching defs:cdev
384 ddev->cdev = pdata->dfl_cdev;
638 * dfl_fpga_dev_ops_register - register cdev ops for feature dev
641 * @fops: file operations for feature dev's cdev.
652 cdev_init(&pdata->cdev, fops);
653 pdata->cdev.owner = owner;
657 * decreased after the last refcount of cdev is gone, that
661 pdata->cdev.kobj.parent = &pdev->dev.kobj;
663 return cdev_add(&pdata->cdev, pdev->dev.devt, 1);
668 * dfl_fpga_dev_ops_unregister - unregister cdev ops for feature dev
675 cdev_del(&pdata->cdev);
683 * @cdev: the container device for all feature devices.
696 struct dfl_fpga_cdev *cdev;
727 static void dfl_fpga_cdev_add_port_dev(struct dfl_fpga_cdev *cdev,
732 mutex_lock(&cdev->lock);
733 list_add(&pdata->node, &cdev->port_dev_list);
735 mutex_unlock(&cdev->lock);
767 pdata->dfl_cdev = binfo->cdev;
840 dfl_fpga_cdev_add_port_dev(binfo->cdev,
843 binfo->cdev->fme_dev =
884 fdev->dev.parent = &binfo->cdev->region->dev;
1373 static void remove_feature_devs(struct dfl_fpga_cdev *cdev)
1375 device_for_each_child(&cdev->region->dev, NULL, remove_feature_dev);
1393 struct dfl_fpga_cdev *cdev;
1399 cdev = devm_kzalloc(info->dev, sizeof(*cdev), GFP_KERNEL);
1400 if (!cdev)
1403 cdev->region = devm_fpga_region_create(info->dev, NULL, NULL);
1404 if (!cdev->region) {
1409 cdev->parent = info->dev;
1410 mutex_init(&cdev->lock);
1411 INIT_LIST_HEAD(&cdev->port_dev_list);
1413 ret = fpga_region_register(cdev->region);
1425 binfo->cdev = cdev;
1438 remove_feature_devs(cdev);
1446 return cdev;
1449 fpga_region_unregister(cdev->region);
1451 devm_kfree(info->dev, cdev);
1458 * @cdev: fpga container device.
1463 void dfl_fpga_feature_devs_remove(struct dfl_fpga_cdev *cdev)
1467 mutex_lock(&cdev->lock);
1468 if (cdev->fme_dev)
1469 put_device(cdev->fme_dev);
1471 list_for_each_entry_safe(pdata, ptmp, &cdev->port_dev_list, node) {
1484 mutex_unlock(&cdev->lock);
1486 remove_feature_devs(cdev);
1488 fpga_region_unregister(cdev->region);
1489 devm_kfree(cdev->parent, cdev);
1496 * @cdev: container device
1508 __dfl_fpga_cdev_find_port(struct dfl_fpga_cdev *cdev, void *data,
1514 list_for_each_entry(pdata, &cdev->port_dev_list, node) {
1547 * @cdev: parent container device.
1555 int dfl_fpga_cdev_release_port(struct dfl_fpga_cdev *cdev, int port_id)
1561 mutex_lock(&cdev->lock);
1562 port_pdev = __dfl_fpga_cdev_find_port(cdev, &port_id,
1581 cdev->released_port_num++;
1585 mutex_unlock(&cdev->lock);
1593 * @cdev: parent container device.
1601 int dfl_fpga_cdev_assign_port(struct dfl_fpga_cdev *cdev, int port_id)
1607 mutex_lock(&cdev->lock);
1608 port_pdev = __dfl_fpga_cdev_find_port(cdev, &port_id,
1628 cdev->released_port_num--;
1632 mutex_unlock(&cdev->lock);
1660 * @cdev: parent container device.
1665 void dfl_fpga_cdev_config_ports_pf(struct dfl_fpga_cdev *cdev)
1669 mutex_lock(&cdev->lock);
1670 list_for_each_entry(pdata, &cdev->port_dev_list, node) {
1674 config_port_pf_mode(cdev->fme_dev, pdata->id);
1676 mutex_unlock(&cdev->lock);
1683 * @cdev: parent container device.
1691 int dfl_fpga_cdev_config_ports_vf(struct dfl_fpga_cdev *cdev, int num_vfs)
1696 mutex_lock(&cdev->lock);
1702 if (cdev->released_port_num != num_vfs) {
1707 list_for_each_entry(pdata, &cdev->port_dev_list, node) {
1711 config_port_vf_mode(cdev->fme_dev, pdata->id);
1714 mutex_unlock(&cdev->lock);