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: David Brownell <dbrownell@users.sourceforge.net> Cc: Greg KH <greg@kroah.com> Cc: Jean Delvare <khali@linux-fr.org> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
parent
a7d801afc3
commit
da67529642
|
@ -803,7 +803,7 @@ static int lp_register(int nr, struct parport *port)
|
|||
if (reset)
|
||||
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);
|
||||
|
||||
printk(KERN_INFO "lp%d: using %s (%s).\n", nr, port->name,
|
||||
|
|
|
@ -752,7 +752,7 @@ static const struct file_operations pp_fops = {
|
|||
|
||||
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);
|
||||
}
|
||||
|
||||
|
|
|
@ -442,7 +442,7 @@ tipar_register(int nr, struct parport *port)
|
|||
}
|
||||
|
||||
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 */
|
||||
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)
|
|||
}
|
||||
adapter->algo_data.data = port;
|
||||
adapter->adapter.algo_data = &adapter->algo_data;
|
||||
adapter->adapter.dev.parent = port->physport->dev;
|
||||
|
||||
if (parport_claim_or_block(adapter->pdev) < 0) {
|
||||
printk(KERN_ERR "i2c-parport: Could not claim parallel port\n");
|
||||
|
|
|
@ -20,7 +20,7 @@
|
|||
#include <linux/kernel.h>
|
||||
#include <linux/init.h>
|
||||
#include <linux/delay.h>
|
||||
#include <linux/platform_device.h>
|
||||
#include <linux/device.h>
|
||||
#include <linux/parport.h>
|
||||
|
||||
#include <linux/sched.h>
|
||||
|
@ -237,24 +237,16 @@ static void butterfly_attach(struct parport *p)
|
|||
int status;
|
||||
struct butterfly *pp;
|
||||
struct spi_master *master;
|
||||
struct platform_device *pdev;
|
||||
struct device *dev = p->physport->dev;
|
||||
|
||||
if (butterfly)
|
||||
if (butterfly || !dev)
|
||||
return;
|
||||
|
||||
/* REVISIT: this just _assumes_ a butterfly is there ... no probe,
|
||||
* and no way to be selective about what it binds to.
|
||||
*/
|
||||
|
||||
/* FIXME where should master->cdev.dev come from?
|
||||
* 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);
|
||||
master = spi_alloc_master(dev, sizeof *pp);
|
||||
if (!master) {
|
||||
status = -ENOMEM;
|
||||
goto done;
|
||||
|
@ -366,14 +358,12 @@ clean1:
|
|||
clean0:
|
||||
(void) spi_master_put(pp->bitbang.master);
|
||||
done:
|
||||
platform_device_unregister(pdev);
|
||||
pr_debug("%s: butterfly probe, fail %d\n", p->name, status);
|
||||
}
|
||||
|
||||
static void butterfly_detach(struct parport *p)
|
||||
{
|
||||
struct butterfly *pp;
|
||||
struct platform_device *pdev;
|
||||
int status;
|
||||
|
||||
/* FIXME this global is ugly ... but, how to quickly get from
|
||||
|
@ -386,7 +376,6 @@ static void butterfly_detach(struct parport *p)
|
|||
butterfly = NULL;
|
||||
|
||||
/* stop() unregisters child devices too */
|
||||
pdev = to_platform_device(pp->bitbang.master->cdev.dev);
|
||||
status = spi_bitbang_stop(&pp->bitbang);
|
||||
|
||||
/* turn off VCC */
|
||||
|
@ -397,8 +386,6 @@ static void butterfly_detach(struct parport *p)
|
|||
parport_unregister_device(pp->pd);
|
||||
|
||||
(void) spi_master_put(pp->bitbang.master);
|
||||
|
||||
platform_device_unregister(pdev);
|
||||
}
|
||||
|
||||
static struct parport_driver butterfly_driver = {
|
||||
|
|
Loading…
Reference in a new issue