提交 da675296 编写于 作者: D David Brownell 提交者: Linus Torvalds

layered parport code uses parport->dev

Update some of the layered parport_driver code to use parport->dev:

	- i2c-parport (parent of i2c_adapter)
	- spi_butterfly (parent of spi_master, allowing cruft removal)
	- lp (creating class_device)
	- ppdev (parent of parportN device)
	- tipar (creating class_device)

There are still drivers that should be updated, like some of the input
drivers; but they won't be any worse off than they are today.
Signed-off-by: NDavid Brownell <dbrownell@users.sourceforge.net>
Cc: Greg KH <greg@kroah.com>
Cc: Jean Delvare <khali@linux-fr.org>
Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
上级 a7d801af
...@@ -803,7 +803,7 @@ static int lp_register(int nr, struct parport *port) ...@@ -803,7 +803,7 @@ static int lp_register(int nr, struct parport *port)
if (reset) if (reset)
lp_reset(nr); lp_reset(nr);
class_device_create(lp_class, NULL, MKDEV(LP_MAJOR, nr), NULL, class_device_create(lp_class, NULL, MKDEV(LP_MAJOR, nr), port->dev,
"lp%d", nr); "lp%d", nr);
printk(KERN_INFO "lp%d: using %s (%s).\n", nr, port->name, printk(KERN_INFO "lp%d: using %s (%s).\n", nr, port->name,
......
...@@ -752,7 +752,7 @@ static const struct file_operations pp_fops = { ...@@ -752,7 +752,7 @@ static const struct file_operations pp_fops = {
static void pp_attach(struct parport *port) static void pp_attach(struct parport *port)
{ {
device_create(ppdev_class, NULL, MKDEV(PP_MAJOR, port->number), device_create(ppdev_class, port->dev, MKDEV(PP_MAJOR, port->number),
"parport%d", port->number); "parport%d", port->number);
} }
......
...@@ -442,7 +442,7 @@ tipar_register(int nr, struct parport *port) ...@@ -442,7 +442,7 @@ tipar_register(int nr, struct parport *port)
} }
class_device_create(tipar_class, NULL, MKDEV(TIPAR_MAJOR, class_device_create(tipar_class, NULL, MKDEV(TIPAR_MAJOR,
TIPAR_MINOR + nr), NULL, "par%d", nr); TIPAR_MINOR + nr), port->dev, "par%d", nr);
/* Display informations */ /* Display informations */
pr_info("tipar%d: using %s (%s)\n", nr, port->name, (port->irq == pr_info("tipar%d: using %s (%s)\n", nr, port->name, (port->irq ==
......
...@@ -175,6 +175,7 @@ static void i2c_parport_attach (struct parport *port) ...@@ -175,6 +175,7 @@ static void i2c_parport_attach (struct parport *port)
} }
adapter->algo_data.data = port; adapter->algo_data.data = port;
adapter->adapter.algo_data = &adapter->algo_data; adapter->adapter.algo_data = &adapter->algo_data;
adapter->adapter.dev.parent = port->physport->dev;
if (parport_claim_or_block(adapter->pdev) < 0) { if (parport_claim_or_block(adapter->pdev) < 0) {
printk(KERN_ERR "i2c-parport: Could not claim parallel port\n"); printk(KERN_ERR "i2c-parport: Could not claim parallel port\n");
......
...@@ -20,7 +20,7 @@ ...@@ -20,7 +20,7 @@
#include <linux/kernel.h> #include <linux/kernel.h>
#include <linux/init.h> #include <linux/init.h>
#include <linux/delay.h> #include <linux/delay.h>
#include <linux/platform_device.h> #include <linux/device.h>
#include <linux/parport.h> #include <linux/parport.h>
#include <linux/sched.h> #include <linux/sched.h>
...@@ -237,24 +237,16 @@ static void butterfly_attach(struct parport *p) ...@@ -237,24 +237,16 @@ static void butterfly_attach(struct parport *p)
int status; int status;
struct butterfly *pp; struct butterfly *pp;
struct spi_master *master; struct spi_master *master;
struct platform_device *pdev; struct device *dev = p->physport->dev;
if (butterfly) if (butterfly || !dev)
return; return;
/* REVISIT: this just _assumes_ a butterfly is there ... no probe, /* REVISIT: this just _assumes_ a butterfly is there ... no probe,
* and no way to be selective about what it binds to. * and no way to be selective about what it binds to.
*/ */
/* FIXME where should master->cdev.dev come from? master = spi_alloc_master(dev, sizeof *pp);
* e.g. /sys/bus/pnp0/00:0b, some PCI thing, etc
* setting up a platform device like this is an ugly kluge...
*/
pdev = platform_device_register_simple("butterfly", -1, NULL, 0);
if (IS_ERR(pdev))
return;
master = spi_alloc_master(&pdev->dev, sizeof *pp);
if (!master) { if (!master) {
status = -ENOMEM; status = -ENOMEM;
goto done; goto done;
...@@ -366,14 +358,12 @@ static void butterfly_attach(struct parport *p) ...@@ -366,14 +358,12 @@ static void butterfly_attach(struct parport *p)
clean0: clean0:
(void) spi_master_put(pp->bitbang.master); (void) spi_master_put(pp->bitbang.master);
done: done:
platform_device_unregister(pdev);
pr_debug("%s: butterfly probe, fail %d\n", p->name, status); pr_debug("%s: butterfly probe, fail %d\n", p->name, status);
} }
static void butterfly_detach(struct parport *p) static void butterfly_detach(struct parport *p)
{ {
struct butterfly *pp; struct butterfly *pp;
struct platform_device *pdev;
int status; int status;
/* FIXME this global is ugly ... but, how to quickly get from /* FIXME this global is ugly ... but, how to quickly get from
...@@ -386,7 +376,6 @@ static void butterfly_detach(struct parport *p) ...@@ -386,7 +376,6 @@ static void butterfly_detach(struct parport *p)
butterfly = NULL; butterfly = NULL;
/* stop() unregisters child devices too */ /* stop() unregisters child devices too */
pdev = to_platform_device(pp->bitbang.master->cdev.dev);
status = spi_bitbang_stop(&pp->bitbang); status = spi_bitbang_stop(&pp->bitbang);
/* turn off VCC */ /* turn off VCC */
...@@ -397,8 +386,6 @@ static void butterfly_detach(struct parport *p) ...@@ -397,8 +386,6 @@ static void butterfly_detach(struct parport *p)
parport_unregister_device(pp->pd); parport_unregister_device(pp->pd);
(void) spi_master_put(pp->bitbang.master); (void) spi_master_put(pp->bitbang.master);
platform_device_unregister(pdev);
} }
static struct parport_driver butterfly_driver = { static struct parport_driver butterfly_driver = {
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册