Now that all the card information is available via sysfs, the misc device is no longer necessary. Removed it. Signed-off-by: Jeremy Sowden <jeremy@xxxxxxxxxx> --- drivers/staging/kpc2000/kpc2000/core.c | 127 +------------------------ drivers/staging/kpc2000/kpc2000/pcie.h | 2 - 2 files changed, 2 insertions(+), 127 deletions(-) diff --git a/drivers/staging/kpc2000/kpc2000/core.c b/drivers/staging/kpc2000/kpc2000/core.c index 4d6a443d7301..7f257c21e0cc 100644 --- a/drivers/staging/kpc2000/kpc2000/core.c +++ b/drivers/staging/kpc2000/kpc2000/core.c @@ -300,111 +300,6 @@ static irqreturn_t kp2000_irq_handler(int irq, void *dev_id) return IRQ_HANDLED; } -static int kp2000_cdev_open(struct inode *inode, struct file *filp) -{ - struct kp2000_device *pcard = container_of(filp->private_data, struct kp2000_device, miscdev); - - dev_dbg(&pcard->pdev->dev, "kp2000_cdev_open(filp = [%p], pcard = [%p])\n", filp, pcard); - - filp->private_data = pcard; /* so other methods can access it */ - - return 0; -} - -static int kp2000_cdev_close(struct inode *inode, struct file *filp) -{ - struct kp2000_device *pcard = filp->private_data; - - dev_dbg(&pcard->pdev->dev, "kp2000_cdev_close(filp = [%p], pcard = [%p])\n", filp, pcard); - return 0; -} - -static ssize_t kp2000_cdev_read(struct file *filp, char __user *buf, - size_t count, loff_t *f_pos) -{ - struct kp2000_device *pcard = filp->private_data; - int cnt = 0; - int ret; -#define BUFF_CNT 1024 - char buff[BUFF_CNT] = {0}; //NOTE: Increase this so it is at least as large as all the scnprintfs. And don't use unbounded strings. "%s" - //NOTE: also, this is a really shitty way to implement the read() call, but it will work for any size 'count'. - - if (WARN(NULL == buf, "kp2000_cdev_read: buf is a NULL pointer!\n")) - return -EINVAL; - - cnt += scnprintf(buff+cnt, BUFF_CNT-cnt, "Card ID : 0x%08x\n", pcard->card_id); - cnt += scnprintf(buff+cnt, BUFF_CNT-cnt, "Build Version : 0x%08x\n", pcard->build_version); - cnt += scnprintf(buff+cnt, BUFF_CNT-cnt, "Build Date : 0x%08x\n", pcard->build_datestamp); - cnt += scnprintf(buff+cnt, BUFF_CNT-cnt, "Build Time : 0x%08x\n", pcard->build_timestamp); - cnt += scnprintf(buff+cnt, BUFF_CNT-cnt, "Core Table Offset : 0x%08x\n", pcard->core_table_offset); - cnt += scnprintf(buff+cnt, BUFF_CNT-cnt, "Core Table Length : 0x%08x\n", pcard->core_table_length); - cnt += scnprintf(buff+cnt, BUFF_CNT-cnt, "Hardware Revision : 0x%08x\n", pcard->hardware_revision); - cnt += scnprintf(buff+cnt, BUFF_CNT-cnt, "SSID : 0x%016llx\n", pcard->ssid); - cnt += scnprintf(buff+cnt, BUFF_CNT-cnt, "DDNA : 0x%016llx\n", pcard->ddna); - cnt += scnprintf(buff+cnt, BUFF_CNT-cnt, "IRQ Mask : 0x%016llx\n", readq(pcard->sysinfo_regs_base + REG_INTERRUPT_MASK)); - cnt += scnprintf(buff+cnt, BUFF_CNT-cnt, "IRQ Active : 0x%016llx\n", readq(pcard->sysinfo_regs_base + REG_INTERRUPT_ACTIVE)); - cnt += scnprintf(buff+cnt, BUFF_CNT-cnt, "CPLD : 0x%016llx\n", readq(pcard->sysinfo_regs_base + REG_CPLD_CONFIG)); - - if (*f_pos >= cnt) - return 0; - - if (count > cnt) - count = cnt; - - ret = copy_to_user(buf, buff + *f_pos, count); - if (ret) - return -EFAULT; - *f_pos += count; - return count; -} - -static long kp2000_cdev_ioctl(struct file *filp, unsigned int ioctl_num, - unsigned long ioctl_param) -{ - struct kp2000_device *pcard = filp->private_data; - - dev_dbg(&pcard->pdev->dev, "kp2000_cdev_ioctl(filp = [%p], ioctl_num = 0x%08x, ioctl_param = 0x%016lx) pcard = [%p]\n", filp, ioctl_num, ioctl_param, pcard); - - switch (ioctl_num){ - case KP2000_IOCTL_GET_CPLD_REG: return readq(pcard->sysinfo_regs_base + REG_CPLD_CONFIG); - case KP2000_IOCTL_GET_PCIE_ERROR_REG: return readq(pcard->sysinfo_regs_base + REG_PCIE_ERROR_COUNT); - - case KP2000_IOCTL_GET_EVERYTHING: { - struct kp2000_regs regs; - int ret; - - memset(®s, 0, sizeof(regs)); - regs.card_id = pcard->card_id; - regs.build_version = pcard->build_version; - regs.build_datestamp = pcard->build_datestamp; - regs.build_timestamp = pcard->build_timestamp; - regs.hw_rev = pcard->hardware_revision; - regs.ssid = pcard->ssid; - regs.ddna = pcard->ddna; - regs.cpld_reg = readq(pcard->sysinfo_regs_base + REG_CPLD_CONFIG); - - ret = copy_to_user((void*)ioctl_param, (void*)®s, sizeof(regs)); - if (ret) - return -EFAULT; - - return sizeof(regs); - } - - default: - return -ENOTTY; - } - return -ENOTTY; -} - -static struct file_operations kp2000_fops = { - .owner = THIS_MODULE, - .open = kp2000_cdev_open, - .release = kp2000_cdev_close, - .read = kp2000_cdev_read, - .llseek = noop_llseek, - .unlocked_ioctl = kp2000_cdev_ioctl, -}; - static int kp2000_pcie_probe(struct pci_dev *pdev, const struct pci_device_id *id) { @@ -603,26 +498,11 @@ static int kp2000_pcie_probe(struct pci_dev *pdev, } /* - * Step 10: Setup misc device - */ - pcard->miscdev.minor = MISC_DYNAMIC_MINOR; - pcard->miscdev.fops = &kp2000_fops; - pcard->miscdev.parent = &pcard->pdev->dev; - pcard->miscdev.name = pcard->name; - - err = misc_register(&pcard->miscdev); - if (err) { - dev_err(&pcard->pdev->dev, - "kp2000_pcie_probe: misc_register failed: %d\n", err); - goto out10; - } - - /* - * Step 11: Probe cores + * Step 10: Probe cores */ err = kp2000_probe_cores(pcard); if (err) - goto out11; + goto out10; /* * Step 12: Enable IRQs in HW @@ -634,8 +514,6 @@ static int kp2000_pcie_probe(struct pci_dev *pdev, mutex_unlock(&pcard->sem); return 0; -out11: - misc_deregister(&pcard->miscdev); out10: sysfs_remove_files(&(pdev->dev.kobj), kp_attr_list); out9: @@ -674,7 +552,6 @@ static void kp2000_pcie_remove(struct pci_dev *pdev) mutex_lock(&pcard->sem); kp2000_remove_cores(pcard); mfd_remove_devices(PCARD_TO_DEV(pcard)); - misc_deregister(&pcard->miscdev); sysfs_remove_files(&(pdev->dev.kobj), kp_attr_list); free_irq(pcard->pdev->irq, pcard); pci_disable_msi(pcard->pdev); diff --git a/drivers/staging/kpc2000/kpc2000/pcie.h b/drivers/staging/kpc2000/kpc2000/pcie.h index 59db46752961..d3cdb515a75c 100644 --- a/drivers/staging/kpc2000/kpc2000/pcie.h +++ b/drivers/staging/kpc2000/kpc2000/pcie.h @@ -2,7 +2,6 @@ #ifndef KP2000_PCIE_H #define KP2000_PCIE_H #include <linux/types.h> -#include <linux/miscdevice.h> #include <linux/pci.h> #include "../kpc.h" #include "dma_common_defs.h" @@ -50,7 +49,6 @@ struct kp2000_device { struct pci_dev *pdev; - struct miscdevice miscdev; char name[16]; unsigned int card_num; -- 2.20.1 _______________________________________________ devel mailing list devel@xxxxxxxxxxxxxxxxxxxxxx http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel