Lines Matching defs:ddev
252 dfl_match_one_device(const struct dfl_device_id *id, struct dfl_device *ddev)
254 if (id->type == ddev->type && id->feature_id == ddev->feature_id)
262 struct dfl_device *ddev = to_dfl_dev(dev);
269 if (dfl_match_one_device(id_entry, ddev)) {
270 ddev->id_entry = id_entry;
283 struct dfl_device *ddev = to_dfl_dev(dev);
285 return ddrv->probe(ddev);
291 struct dfl_device *ddev = to_dfl_dev(dev);
294 ddrv->remove(ddev);
299 const struct dfl_device *ddev = to_dfl_dev(dev);
302 ddev->type, ddev->feature_id);
308 struct dfl_device *ddev = to_dfl_dev(dev);
310 return sprintf(buf, "0x%x\n", ddev->type);
317 struct dfl_device *ddev = to_dfl_dev(dev);
319 return sprintf(buf, "0x%x\n", ddev->feature_id);
341 struct dfl_device *ddev = to_dfl_dev(dev);
343 if (ddev->mmio_res.parent)
344 release_resource(&ddev->mmio_res);
346 kfree(ddev->params);
348 ida_free(&dfl_device_ida, ddev->id);
349 kfree(ddev->irqs);
350 kfree(ddev);
359 struct dfl_device *ddev;
362 ddev = kzalloc(sizeof(*ddev), GFP_KERNEL);
363 if (!ddev)
369 kfree(ddev);
374 device_initialize(&ddev->dev);
375 ddev->dev.parent = &pdev->dev;
376 ddev->dev.bus = &dfl_bus_type;
377 ddev->dev.release = release_dfl_dev;
378 ddev->id = id;
379 ret = dev_set_name(&ddev->dev, "dfl_dev.%d", id);
383 ddev->type = feature_dev_id_type(pdev);
384 ddev->feature_id = feature->id;
385 ddev->revision = feature->revision;
386 ddev->dfh_version = feature->dfh_version;
387 ddev->cdev = pdata->dfl_cdev;
389 ddev->params = kmemdup(feature->params, feature->param_size, GFP_KERNEL);
390 if (!ddev->params) {
394 ddev->param_size = feature->param_size;
399 ddev->mmio_res.flags = IORESOURCE_MEM;
400 ddev->mmio_res.start = parent_res->start;
401 ddev->mmio_res.end = parent_res->end;
402 ddev->mmio_res.name = dev_name(&ddev->dev);
403 ret = insert_resource(parent_res, &ddev->mmio_res);
406 dev_name(&ddev->dev), &ddev->mmio_res);
412 ddev->irqs = kcalloc(feature->nr_irqs,
413 sizeof(*ddev->irqs), GFP_KERNEL);
414 if (!ddev->irqs) {
420 ddev->irqs[i] = feature->irq_ctx[i].irq;
422 ddev->num_irqs = feature->nr_irqs;
425 ret = device_add(&ddev->dev);
429 dev_dbg(&pdev->dev, "add dfl_dev: %s\n", dev_name(&ddev->dev));
430 return ddev;
434 put_device(&ddev->dev);
443 if (feature->ddev) {
444 device_unregister(&feature->ddev->dev);
445 feature->ddev = NULL;
453 struct dfl_device *ddev;
460 if (feature->ddev) {
465 ddev = dfl_dev_add(pdata, feature);
466 if (IS_ERR(ddev)) {
467 ret = PTR_ERR(ddev);
471 feature->ddev = ddev;