Lines Matching defs:cdev

387 	ddev->cdev = pdata->dfl_cdev;
649 * dfl_fpga_dev_ops_register - register cdev ops for feature dev
652 * @fops: file operations for feature dev's cdev.
663 cdev_init(&pdata->cdev, fops);
664 pdata->cdev.owner = owner;
668 * decreased after the last refcount of cdev is gone, that
672 pdata->cdev.kobj.parent = &pdev->dev.kobj;
674 return cdev_add(&pdata->cdev, pdev->dev.devt, 1);
679 * dfl_fpga_dev_ops_unregister - unregister cdev ops for feature dev
686 cdev_del(&pdata->cdev);
694 * @cdev: the container device for all feature devices.
707 struct dfl_fpga_cdev *cdev;
746 static void dfl_fpga_cdev_add_port_dev(struct dfl_fpga_cdev *cdev,
751 mutex_lock(&cdev->lock);
752 list_add(&pdata->node, &cdev->port_dev_list);
754 mutex_unlock(&cdev->lock);
786 pdata->dfl_cdev = binfo->cdev;
870 dfl_fpga_cdev_add_port_dev(binfo->cdev,
873 binfo->cdev->fme_dev =
914 fdev->dev.parent = &binfo->cdev->region->dev;
1529 static void remove_feature_devs(struct dfl_fpga_cdev *cdev)
1531 device_for_each_child(&cdev->region->dev, NULL, remove_feature_dev);
1549 struct dfl_fpga_cdev *cdev;
1555 cdev = devm_kzalloc(info->dev, sizeof(*cdev), GFP_KERNEL);
1556 if (!cdev)
1559 cdev->parent = info->dev;
1560 mutex_init(&cdev->lock);
1561 INIT_LIST_HEAD(&cdev->port_dev_list);
1563 cdev->region = fpga_region_register(info->dev, NULL, NULL);
1564 if (IS_ERR(cdev->region)) {
1565 ret = PTR_ERR(cdev->region);
1577 binfo->cdev = cdev;
1590 remove_feature_devs(cdev);
1598 return cdev;
1601 fpga_region_unregister(cdev->region);
1603 devm_kfree(info->dev, cdev);
1610 * @cdev: fpga container device.
1615 void dfl_fpga_feature_devs_remove(struct dfl_fpga_cdev *cdev)
1619 mutex_lock(&cdev->lock);
1620 if (cdev->fme_dev)
1621 put_device(cdev->fme_dev);
1623 list_for_each_entry_safe(pdata, ptmp, &cdev->port_dev_list, node) {
1636 mutex_unlock(&cdev->lock);
1638 remove_feature_devs(cdev);
1640 fpga_region_unregister(cdev->region);
1641 devm_kfree(cdev->parent, cdev);
1648 * @cdev: container device
1660 __dfl_fpga_cdev_find_port(struct dfl_fpga_cdev *cdev, void *data,
1666 list_for_each_entry(pdata, &cdev->port_dev_list, node) {
1699 * @cdev: parent container device.
1707 int dfl_fpga_cdev_release_port(struct dfl_fpga_cdev *cdev, int port_id)
1713 mutex_lock(&cdev->lock);
1714 port_pdev = __dfl_fpga_cdev_find_port(cdev, &port_id,
1733 cdev->released_port_num++;
1737 mutex_unlock(&cdev->lock);
1745 * @cdev: parent container device.
1753 int dfl_fpga_cdev_assign_port(struct dfl_fpga_cdev *cdev, int port_id)
1759 mutex_lock(&cdev->lock);
1760 port_pdev = __dfl_fpga_cdev_find_port(cdev, &port_id,
1780 cdev->released_port_num--;
1784 mutex_unlock(&cdev->lock);
1812 * @cdev: parent container device.
1817 void dfl_fpga_cdev_config_ports_pf(struct dfl_fpga_cdev *cdev)
1821 mutex_lock(&cdev->lock);
1822 list_for_each_entry(pdata, &cdev->port_dev_list, node) {
1826 config_port_pf_mode(cdev->fme_dev, pdata->id);
1828 mutex_unlock(&cdev->lock);
1835 * @cdev: parent container device.
1843 int dfl_fpga_cdev_config_ports_vf(struct dfl_fpga_cdev *cdev, int num_vfs)
1848 mutex_lock(&cdev->lock);
1854 if (cdev->released_port_num != num_vfs) {
1859 list_for_each_entry(pdata, &cdev->port_dev_list, node) {
1863 config_port_vf_mode(cdev->fme_dev, pdata->id);
1866 mutex_unlock(&cdev->lock);