[PATCH 2/2] staging: kpc2000: removed misc device.

Jeremy Sowden jeremy at azazel.net
Fri May 31 10:52:31 UTC 2019


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 at azazel.net>
---
 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(&regs, 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*)&regs, 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



More information about the devel mailing list