| From foo@baz Tue Apr 9 12:12:43 2002 |
| Date: Mon, 22 Jan 2007 13:45:38 -0800 |
| To: Greg KH <greg@kroah.com> |
| From: Greg Kroah-Hartman <gregkh@suse.de> |
| Subject: Driver core: convert SPI code to use struct device |
| |
| Converts from using struct "class_device" to "struct device" making |
| everything show up properly in /sys/devices/ with symlinks from the |
| /sys/class directory. |
| |
| Cc: <dbrownell@users.sourceforge.net> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> |
| --- |
| drivers/spi/pxa2xx_spi.c | 2 +- |
| drivers/spi/spi.c | 32 ++++++++++++++++---------------- |
| drivers/spi/spi_bitbang.c | 6 +++--- |
| drivers/spi/spi_butterfly.c | 4 ++-- |
| include/linux/spi/spi.h | 10 +++++----- |
| 5 files changed, 27 insertions(+), 27 deletions(-) |
| |
| --- gregkh-2.6.orig/drivers/spi/pxa2xx_spi.c |
| +++ gregkh-2.6/drivers/spi/pxa2xx_spi.c |
| @@ -1234,7 +1234,7 @@ static int init_queue(struct driver_data |
| |
| INIT_WORK(&drv_data->pump_messages, pump_messages); |
| drv_data->workqueue = create_singlethread_workqueue( |
| - drv_data->master->cdev.dev->bus_id); |
| + drv_data->master->dev.parent->bus_id); |
| if (drv_data->workqueue == NULL) |
| return -EBUSY; |
| |
| --- gregkh-2.6.orig/drivers/spi/spi.c |
| +++ gregkh-2.6/drivers/spi/spi.c |
| @@ -193,7 +193,7 @@ struct spi_device *__init_or_module |
| spi_new_device(struct spi_master *master, struct spi_board_info *chip) |
| { |
| struct spi_device *proxy; |
| - struct device *dev = master->cdev.dev; |
| + struct device *dev = &master->dev; |
| int status; |
| |
| /* NOTE: caller did any chip->bus_num checks necessary */ |
| @@ -215,7 +215,7 @@ spi_new_device(struct spi_master *master |
| proxy->modalias = chip->modalias; |
| |
| snprintf(proxy->dev.bus_id, sizeof proxy->dev.bus_id, |
| - "%s.%u", master->cdev.class_id, |
| + "%s.%u", master->dev.bus_id, |
| chip->chip_select); |
| proxy->dev.parent = dev; |
| proxy->dev.bus = &spi_bus_type; |
| @@ -290,7 +290,7 @@ static void __init_or_module |
| scan_boardinfo(struct spi_master *master) |
| { |
| struct boardinfo *bi; |
| - struct device *dev = master->cdev.dev; |
| + struct device *dev = master->dev.parent; |
| |
| down(&board_lock); |
| list_for_each_entry(bi, &board_list, list) { |
| @@ -319,18 +319,18 @@ scan_boardinfo(struct spi_master *master |
| |
| /*-------------------------------------------------------------------------*/ |
| |
| -static void spi_master_release(struct class_device *cdev) |
| +static void spi_master_release(struct device *dev) |
| { |
| struct spi_master *master; |
| |
| - master = container_of(cdev, struct spi_master, cdev); |
| + master = container_of(dev, struct spi_master, dev); |
| kfree(master); |
| } |
| |
| static struct class spi_master_class = { |
| .name = "spi_master", |
| .owner = THIS_MODULE, |
| - .release = spi_master_release, |
| + .dev_release = spi_master_release, |
| }; |
| |
| |
| @@ -364,9 +364,9 @@ spi_alloc_master(struct device *dev, uns |
| if (!master) |
| return NULL; |
| |
| - class_device_initialize(&master->cdev); |
| - master->cdev.class = &spi_master_class; |
| - master->cdev.dev = get_device(dev); |
| + device_initialize(&master->dev); |
| + master->dev.class = &spi_master_class; |
| + master->dev.parent = get_device(dev); |
| spi_master_set_devdata(master, &master[1]); |
| |
| return master; |
| @@ -396,7 +396,7 @@ int __init_or_module |
| spi_register_master(struct spi_master *master) |
| { |
| static atomic_t dyn_bus_id = ATOMIC_INIT((1<<16) - 1); |
| - struct device *dev = master->cdev.dev; |
| + struct device *dev = master->dev.parent; |
| int status = -ENODEV; |
| int dynamic = 0; |
| |
| @@ -412,12 +412,12 @@ spi_register_master(struct spi_master *m |
| /* register the device, then userspace will see it. |
| * registration fails if the bus ID is in use. |
| */ |
| - snprintf(master->cdev.class_id, sizeof master->cdev.class_id, |
| + snprintf(master->dev.bus_id, sizeof master->dev.bus_id, |
| "spi%u", master->bus_num); |
| - status = class_device_add(&master->cdev); |
| + status = device_add(&master->dev); |
| if (status < 0) |
| goto done; |
| - dev_dbg(dev, "registered master %s%s\n", master->cdev.class_id, |
| + dev_dbg(dev, "registered master %s%s\n", master->dev.bus_id, |
| dynamic ? " (dynamic)" : ""); |
| |
| /* populate children from any spi device tables */ |
| @@ -449,8 +449,8 @@ void spi_unregister_master(struct spi_ma |
| { |
| int dummy; |
| |
| - dummy = device_for_each_child(master->cdev.dev, NULL, __unregister); |
| - class_device_unregister(&master->cdev); |
| + dummy = device_for_each_child(&master->dev, NULL, __unregister); |
| + device_unregister(&master->dev); |
| } |
| EXPORT_SYMBOL_GPL(spi_unregister_master); |
| |
| @@ -471,7 +471,7 @@ struct spi_master *spi_busnum_to_master( |
| |
| down(&spi_master_class.sem); |
| list_for_each_entry(cdev, &spi_master_class.children, node) { |
| - m = container_of(cdev, struct spi_master, cdev); |
| + m = container_of(cdev, struct spi_master, dev.kobj); |
| if (m->bus_num == bus_num) { |
| master = spi_master_get(m); |
| break; |
| --- gregkh-2.6.orig/drivers/spi/spi_bitbang.c |
| +++ gregkh-2.6/drivers/spi/spi_bitbang.c |
| @@ -480,7 +480,7 @@ int spi_bitbang_start(struct spi_bitbang |
| /* this task is the only thing to touch the SPI bits */ |
| bitbang->busy = 0; |
| bitbang->workqueue = create_singlethread_workqueue( |
| - bitbang->master->cdev.dev->bus_id); |
| + bitbang->master->dev.parent->bus_id); |
| if (bitbang->workqueue == NULL) { |
| status = -EBUSY; |
| goto err1; |
| @@ -514,14 +514,14 @@ int spi_bitbang_stop(struct spi_bitbang |
| while (!list_empty(&bitbang->queue) && limit--) { |
| spin_unlock_irq(&bitbang->lock); |
| |
| - dev_dbg(bitbang->master->cdev.dev, "wait for queue\n"); |
| + dev_dbg(&bitbang->master->dev, "wait for queue\n"); |
| msleep(10); |
| |
| spin_lock_irq(&bitbang->lock); |
| } |
| spin_unlock_irq(&bitbang->lock); |
| if (!list_empty(&bitbang->queue)) { |
| - dev_err(bitbang->master->cdev.dev, "queue didn't empty\n"); |
| + dev_err(&bitbang->master->dev, "queue didn't empty\n"); |
| return -EBUSY; |
| } |
| |
| --- gregkh-2.6.orig/drivers/spi/spi_butterfly.c |
| +++ gregkh-2.6/drivers/spi/spi_butterfly.c |
| @@ -246,7 +246,7 @@ static void butterfly_attach(struct parp |
| * and no way to be selective about what it binds to. |
| */ |
| |
| - /* FIXME where should master->cdev.dev come from? |
| + /* FIXME where should master->dev.parent come from? |
| * e.g. /sys/bus/pnp0/00:0b, some PCI thing, etc |
| * setting up a platform device like this is an ugly kluge... |
| */ |
| @@ -386,7 +386,7 @@ static void butterfly_detach(struct parp |
| butterfly = NULL; |
| |
| /* stop() unregisters child devices too */ |
| - pdev = to_platform_device(pp->bitbang.master->cdev.dev); |
| + pdev = to_platform_device(pp->bitbang.master->dev.parent); |
| status = spi_bitbang_stop(&pp->bitbang); |
| |
| /* turn off VCC */ |
| --- gregkh-2.6.orig/include/linux/spi/spi.h |
| +++ gregkh-2.6/include/linux/spi/spi.h |
| @@ -180,7 +180,7 @@ static inline void spi_unregister_driver |
| * message's completion function when the transaction completes. |
| */ |
| struct spi_master { |
| - struct class_device cdev; |
| + struct device dev; |
| |
| /* other than negative (== assign one dynamically), bus_num is fully |
| * board-specific. usually that simplifies to being SOC-specific. |
| @@ -226,17 +226,17 @@ struct spi_master { |
| |
| static inline void *spi_master_get_devdata(struct spi_master *master) |
| { |
| - return class_get_devdata(&master->cdev); |
| + return dev_get_drvdata(&master->dev); |
| } |
| |
| static inline void spi_master_set_devdata(struct spi_master *master, void *data) |
| { |
| - class_set_devdata(&master->cdev, data); |
| + dev_set_drvdata(&master->dev, data); |
| } |
| |
| static inline struct spi_master *spi_master_get(struct spi_master *master) |
| { |
| - if (!master || !class_device_get(&master->cdev)) |
| + if (!master || !get_device(&master->dev)) |
| return NULL; |
| return master; |
| } |
| @@ -244,7 +244,7 @@ static inline struct spi_master *spi_mas |
| static inline void spi_master_put(struct spi_master *master) |
| { |
| if (master) |
| - class_device_put(&master->cdev); |
| + put_device(&master->dev); |
| } |
| |
| |