/** * Add the debugfs files * */ int mei_dbgfs_register(struct mei_device *dev, const char *name) { struct dentry *dir, *f; dir = debugfs_create_dir(name, NULL); if (!dir) return -ENOMEM; f = debugfs_create_file("meclients", S_IRUSR, dir, dev, &mei_dbgfs_fops_meclients); if (!f) { dev_err(&dev->pdev->dev, "meclients: registration failed\n"); goto err; } f = debugfs_create_file("devstate", S_IRUSR, dir, dev, &mei_dbgfs_fops_devstate); if (!f) { dev_err(&dev->pdev->dev, "devstate: registration failed\n"); goto err; } dev->dbgfs_dir = dir; return 0; err: mei_dbgfs_deregister(dev); return -ENODEV; }
void mei_deregister(struct mei_device *dev) { int devno; devno = dev->cdev.dev; cdev_del(&dev->cdev); mei_dbgfs_deregister(dev); device_destroy(mei_class, devno); mei_minor_free(dev); }
void mei_deregister(struct mei_device *dev) { mei_dbgfs_deregister(dev); misc_deregister(&mei_misc_device); mei_misc_device.parent = NULL; }