All of lore.kernel.org
 help / color / mirror / Atom feed
From: Jim Cromie <jim.cromie@gmail.com>
To: Linux kernel <linux-kernel@vger.kernel.org>
Subject: [patch -mm 14/20] chardev: GPIO for SCx200 & PC-8736x: add platform_device for use w dev_dbg
Date: Sat, 17 Jun 2006 12:35:43 -0600	[thread overview]
Message-ID: <44944B7F.8070104@gmail.com> (raw)
In-Reply-To: <cfe85dfa0606121150y369f6beeqc643a1fe5c7ce69b@mail.gmail.com>

14/20. patch.pdev-pc8736x

Adds platform-device to (just introduced) driver, and uses it to
replace many printks with dev_dbg() etc.  This could trivially be
merged into previous patch, but this way matches better with the
corresponding patch that does the same change to scx200_gpio.


Signed-off-by: Jim Cromie <jim.cromie@gmail.com>

---

diffstat gpio-scx/patch.pdev-pc8736x
 pc8736x_gpio.c |   76 +++++++++++++++++++++++++++++++++------------------------
 1 files changed, 45 insertions(+), 31 deletions(-)

diff -ruNp -X dontdiff -X exclude-diffs ax-13/drivers/char/pc8736x_gpio.c ax-14/drivers/char/pc8736x_gpio.c
--- ax-13/drivers/char/pc8736x_gpio.c	2006-06-17 01:39:58.000000000 -0600
+++ ax-14/drivers/char/pc8736x_gpio.c	2006-06-17 01:42:57.000000000 -0600
@@ -17,13 +17,14 @@
 #include <linux/init.h>
 #include <linux/ioport.h>
 #include <linux/nsc_gpio.h>
+#include <linux/platform_device.h>
 #include <asm/uaccess.h>
 #include <asm/io.h>
 
-#define NAME "pc8736x_gpio"
+#define DEVNAME "pc8736x_gpio"
 
 MODULE_AUTHOR("Jim Cromie <jim.cromie@gmail.com>");
-MODULE_DESCRIPTION("NatSemi SCx200 GPIO Pin Driver");
+MODULE_DESCRIPTION("NatSemi PC-8736x GPIO Pin Driver");
 MODULE_LICENSE("GPL");
 
 static int major = 0;		/* default to dynamic major */
@@ -42,6 +43,8 @@ static unsigned pc8736x_gpio_base;
 
 #define SIO_CF1		0x21	/* chip config, bit0 is chip enable */
 
+#define PC8736X_GPIO_SIZE	16
+
 #define SIO_UNIT_SEL	0x7	/* unit select reg */
 #define SIO_UNIT_ACT	0x30	/* unit enable */
 #define SIO_GPIO_UNIT	0x7	/* unit number of GPIO */
@@ -69,6 +72,8 @@ static int port_offset[] = { 0, 4, 8, 10
 #define PORT_EVT_EN	2
 #define PORT_EVT_STST	3
 
+static struct platform_device *pdev;  /* use in dev_*() */
+
 static inline void superio_outb(int addr, int val)
 {
 	outb_p(addr, superio_cmd);
@@ -148,9 +153,9 @@ static int pc8736x_gpio_get(unsigned min
 	val >>= bit;
 	val &= 1;
 
-	printk(KERN_INFO NAME ": _gpio_get(%d from %x bit %d) == val %d\n",
-	       minor, pc8736x_gpio_base + port_offset[port] + PORT_IN, bit,
-	       val);
+	dev_dbg(&pdev->dev, "_gpio_get(%d from %x bit %d) == val %d\n",
+		minor, pc8736x_gpio_base + port_offset[port] + PORT_IN, bit,
+		val);
 
 	return val;
 }
@@ -164,22 +169,21 @@ static void pc8736x_gpio_set(unsigned mi
 	bit = minor & 7;
 	curval = inb_p(pc8736x_gpio_base + port_offset[port] + PORT_OUT);
 
-	printk(KERN_INFO NAME
-	       ": addr:%x cur:%x bit-pos:%d cur-bit:%x + new:%d -> bit-new:%d\n",
-	       pc8736x_gpio_base + port_offset[port] + PORT_OUT,
-	       curval, bit, (curval & ~(1 << bit)), val, (val << bit));
+	dev_dbg(&pdev->dev, "addr:%x cur:%x bit-pos:%d cur-bit:%x + new:%d -> bit-new:%d\n",
+		pc8736x_gpio_base + port_offset[port] + PORT_OUT,
+		curval, bit, (curval & ~(1 << bit)), val, (val << bit));
 
 	val = (curval & ~(1 << bit)) | (val << bit);
 
-	printk(KERN_INFO NAME ": gpio_set(minor:%d port:%d bit:%d"
-	       ") %2x -> %2x\n", minor, port, bit, curval, val);
+	dev_dbg(&pdev->dev, "gpio_set(minor:%d port:%d bit:%d)"
+		" %2x -> %2x\n", minor, port, bit, curval, val);
 
 	outb_p(val, pc8736x_gpio_base + port_offset[port] + PORT_OUT);
 
 	curval = inb_p(pc8736x_gpio_base + port_offset[port] + PORT_OUT);
 	val = inb_p(pc8736x_gpio_base + port_offset[port] + PORT_IN);
 
-	printk(KERN_INFO NAME ": wrote %x, read: %x\n", curval, val);
+	dev_dbg(&pdev->dev, "wrote %x, read: %x\n", curval, val);
 }
 
 static void pc8736x_gpio_set_high(unsigned index)
@@ -194,7 +198,7 @@ static void pc8736x_gpio_set_low(unsigne
 
 static int pc8736x_gpio_current(unsigned index)
 {
-	printk(KERN_WARNING NAME ": pc8736x_gpio_current unimplemented\n");
+	dev_warn(&pdev->dev, "pc8736x_gpio_current unimplemented\n");
 	return 0;
 }
 
@@ -222,7 +226,7 @@ static int pc8736x_gpio_open(struct inod
 	unsigned m = iminor(inode);
 	file->private_data = &pc8736x_access;
 
-	printk(KERN_NOTICE NAME " open %d\n", m);
+	dev_dbg(&pdev->dev, "open %d\n", m);
 
 	if (m > 63)
 		return -EINVAL;
@@ -230,20 +234,30 @@ static int pc8736x_gpio_open(struct inod
 }
 
 static struct file_operations pc8736x_gpio_fops = {
-	.owner = THIS_MODULE,
-	.open = pc8736x_gpio_open,
-	.write = nsc_gpio_write,
-	.read = nsc_gpio_read,
+	.owner	= THIS_MODULE,
+	.open	= pc8736x_gpio_open,
+	.write	= nsc_gpio_write,
+	.read	= nsc_gpio_read,
 };
 
 static int __init pc8736x_gpio_init(void)
 {
 	int r, rc;
 
-	printk(KERN_DEBUG NAME " initializing\n");
+        pdev = platform_device_alloc(DEVNAME, 0);
+        if (!pdev)
+                return -ENOMEM;
+
+        rc = platform_device_add(pdev);
+        if (rc) {
+                platform_device_put(pdev);
+                return -ENODEV;
+        }
+        dev_info(&pdev->dev, "NatSemi pc8736x GPIO Driver Initializing\n");
 
 	if (!pc8736x_superio_present()) {
-		printk(KERN_ERR NAME ": no device found\n");
+		dev_err(&pdev->dev, "no device found\n");
+                platform_device_put(pdev);
 		return -ENODEV;
 	}
 
@@ -252,31 +266,31 @@ static int __init pc8736x_gpio_init(void
 	 */
 	rc = superio_inb(SIO_CF1);
 	if (!(rc & 0x01)) {
-		printk(KERN_ERR NAME ": device not enabled\n");
+		dev_err(&pdev->dev, "device not enabled\n");
 		return -ENODEV;
 	}
 	device_select(SIO_GPIO_UNIT);
 	if (!superio_inb(SIO_UNIT_ACT)) {
-		printk(KERN_ERR NAME ": GPIO unit not enabled\n");
+		dev_err(&pdev->dev, "GPIO unit not enabled\n");
 		return -ENODEV;
 	}
 
-	/* read GPIO unit base address */
+	/* read the GPIO unit base addr that chip responds to */
 	pc8736x_gpio_base = (superio_inb(SIO_BASE_HADDR) << 8
 			     | superio_inb(SIO_BASE_LADDR));
 
-	if (request_region(pc8736x_gpio_base, 16, NAME))
-		printk(KERN_INFO NAME ": GPIO ioport %x reserved\n",
-		       pc8736x_gpio_base);
+	if (request_region(pc8736x_gpio_base, 16, DEVNAME))
+		dev_info(&pdev->dev, "GPIO ioport %x reserved\n",
+			 pc8736x_gpio_base);
 
-	r = register_chrdev(major, NAME, &pc8736x_gpio_fops);
+	r = register_chrdev(major, DEVNAME, &pc8736x_gpio_fops);
 	if (r < 0) {
-		printk(KERN_ERR NAME ": unable to register character device\n");
+		dev_err(&pdev->dev, "unable to register character device\n");
 		return r;
 	}
 	if (!major) {
 		major = r;
-		printk(KERN_DEBUG NAME ": got dynamic major %d\n", major);
+		dev_dbg(&pdev->dev, "got dynamic major %d\n", major);
 	}
 
 	return 0;
@@ -284,11 +298,11 @@ static int __init pc8736x_gpio_init(void
 
 static void __exit pc8736x_gpio_cleanup(void)
 {
-	printk(KERN_DEBUG NAME " cleanup\n");
+	dev_dbg(&pdev->dev, " cleanup\n");
 
 	release_region(pc8736x_gpio_base, 16);
 
-	unregister_chrdev(major, NAME);
+	unregister_chrdev(major, DEVNAME);
 }
 
 module_init(pc8736x_gpio_init);



  parent reply	other threads:[~2006-06-17 18:35 UTC|newest]

Thread overview: 38+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <448DB57F.2050006@gmail.com>
     [not found] ` <cfe85dfa0606121150y369f6beeqc643a1fe5c7ce69b@mail.gmail.com>
2006-06-17 18:23   ` [patch -mm 01/20] chardev: GPIO for SCx200 & PC-8736x: whitespace pre-clean Jim Cromie
2006-06-17 18:24   ` [patch -mm 02/20] chardev: GPIO for SCx200 & PC-8736x: modernize driver init to 2.6 api Jim Cromie
2006-06-20  5:21     ` Andrew Morton
2006-06-17 18:25   ` [patch -mm 03/20] chardev: GPIO for SCx200 & PC-8736x: add platforn_device for use w dev_dbg Jim Cromie
2006-06-20  5:22     ` Andrew Morton
2006-06-17 18:26   ` [patch -mm 04/20] chardev: GPIO for SCx200 & PC-8736x: device minor numbers are unsigned ints Jim Cromie
2006-06-17 18:27   ` [patch -mm 05/20] chardev: GPIO for SCx200 & PC-8736x: put gpio_dump on a diet Jim Cromie
2006-06-20  5:22     ` Andrew Morton
2006-06-17 18:28   ` [patch -mm 06/20] chardev: GPIO for SCx200 & PC-8736x: add 'v' command to device-file Jim Cromie
2006-06-17 18:29   ` [patch -mm 07/20] chardev: GPIO for SCx200 & PC-8736x: refactor scx200_probe to better segregate _gpio initialization Jim Cromie
2006-06-17 18:30   ` [patch -mm 09/20] chardev: GPIO for SCx200 & PC-8736x: dispatch via vtable Jim Cromie
2006-06-17 18:31   ` [patch -mm 10/20] chardev: GPIO for SCx200 & PC-8736x: add empty common-module Jim Cromie
2006-06-17 18:32   ` [patch -mm 11/20] chardev: GPIO for SCx200 & PC-8736x: migrate file-ops to common module Jim Cromie
2006-06-20  5:22     ` Andrew Morton
2006-06-17 18:33   ` [patch -mm 12/20] chardev: GPIO for SCx200 & PC-8736x: migrate gpio_dump " Jim Cromie
2006-06-17 18:33   ` [patch -mm 08/20] chardev: GPIO for SCx200 & PC-8736x: add gpio-ops vtable Jim Cromie
2006-06-17 18:34   ` [patch -mm 13/20] chardev: GPIO for SCx200 & PC-8736x: add new pc8736x_gpio module Jim Cromie
2006-06-20  5:22     ` Andrew Morton
2006-06-17 18:35   ` Jim Cromie [this message]
2006-06-20  5:22     ` [patch -mm 14/20] chardev: GPIO for SCx200 & PC-8736x: add platform_device for use w dev_dbg Andrew Morton
2006-06-17 18:36   ` [patch -mm 15/20] chardev: GPIO for SCx200 & PC-8736x: use dev_dbg in common module Jim Cromie
2006-06-20  5:22     ` Andrew Morton
2006-06-17 18:37   ` [patch -mm 16/20] chardev: GPIO for SCx200 & PC-8736x: fix gpio_current, use shadow regs Jim Cromie
2006-06-20  5:22     ` Andrew Morton
2006-06-17 18:38   ` [patch -mm 17/20] chardev: GPIO for SCx200 & PC-8736x: replace spinlocks w mutexes Jim Cromie
2006-06-20  5:22     ` Andrew Morton
2006-06-17 18:39   ` [patch -mm 18/20] chardev: GPIO for SCx200 & PC-8736x: display pin values in/out in gpio_dump Jim Cromie
2006-06-17 18:40   ` [patch -mm 19/20] chardev: GPIO for SCx200 & PC-8736x: add proper Kconfig, Makefile entries Jim Cromie
2006-06-17 18:42   ` [patch -mm 20/20 RFC] chardev: GPIO for SCx200 & PC-8736x: add sysfs-GPIO interface Jim Cromie
2006-06-20  5:22     ` Andrew Morton
2006-06-20 19:57       ` Jim Cromie
2006-06-20 20:14         ` Randy.Dunlap
2006-06-20 20:40           ` Jim Cromie
2006-06-20 20:52             ` Randy.Dunlap
2006-06-20 21:50               ` Jim Cromie
2006-06-20 22:52                 ` Randy.Dunlap
2006-06-21  0:12         ` Andrew Morton
2006-06-21  3:49     ` Randy.Dunlap

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=44944B7F.8070104@gmail.com \
    --to=jim.cromie@gmail.com \
    --cc=linux-kernel@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.