Skip to content

Commit

Permalink
Revert "Driver core: convert SPI code to use struct device"
Browse files Browse the repository at this point in the history
This reverts commit 2943ecf.

This should go through the SPI maintainer, it was my fault that it did
not.  Especially as it conflicts with other patches he has pending.

Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
  • Loading branch information
Greg Kroah-Hartman committed Feb 8, 2007
1 parent c4184f1 commit 07b2463
Show file tree
Hide file tree
Showing 5 changed files with 27 additions and 27 deletions.
2 changes: 1 addition & 1 deletion drivers/spi/pxa2xx_spi.c
Original file line number Diff line number Diff line change
Expand Up @@ -1234,7 +1234,7 @@ static int init_queue(struct driver_data *drv_data)

INIT_WORK(&drv_data->pump_messages, pump_messages);
drv_data->workqueue = create_singlethread_workqueue(
drv_data->master->dev.parent->bus_id);
drv_data->master->cdev.dev->bus_id);
if (drv_data->workqueue == NULL)
return -EBUSY;

Expand Down
32 changes: 16 additions & 16 deletions drivers/spi/spi.c
Original file line number Diff line number Diff line change
Expand Up @@ -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->dev;
struct device *dev = master->cdev.dev;
int status;

/* NOTE: caller did any chip->bus_num checks necessary */
Expand All @@ -215,7 +215,7 @@ spi_new_device(struct spi_master *master, struct spi_board_info *chip)
proxy->modalias = chip->modalias;

snprintf(proxy->dev.bus_id, sizeof proxy->dev.bus_id,
"%s.%u", master->dev.bus_id,
"%s.%u", master->cdev.class_id,
chip->chip_select);
proxy->dev.parent = dev;
proxy->dev.bus = &spi_bus_type;
Expand Down Expand Up @@ -290,7 +290,7 @@ static void __init_or_module
scan_boardinfo(struct spi_master *master)
{
struct boardinfo *bi;
struct device *dev = master->dev.parent;
struct device *dev = master->cdev.dev;

down(&board_lock);
list_for_each_entry(bi, &board_list, list) {
Expand Down Expand Up @@ -319,18 +319,18 @@ scan_boardinfo(struct spi_master *master)

/*-------------------------------------------------------------------------*/

static void spi_master_release(struct device *dev)
static void spi_master_release(struct class_device *cdev)
{
struct spi_master *master;

master = container_of(dev, struct spi_master, dev);
master = container_of(cdev, struct spi_master, cdev);
kfree(master);
}

static struct class spi_master_class = {
.name = "spi_master",
.owner = THIS_MODULE,
.dev_release = spi_master_release,
.release = spi_master_release,
};


Expand Down Expand Up @@ -364,9 +364,9 @@ spi_alloc_master(struct device *dev, unsigned size)
if (!master)
return NULL;

device_initialize(&master->dev);
master->dev.class = &spi_master_class;
master->dev.parent = get_device(dev);
class_device_initialize(&master->cdev);
master->cdev.class = &spi_master_class;
master->cdev.dev = get_device(dev);
spi_master_set_devdata(master, &master[1]);

return master;
Expand Down Expand Up @@ -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->dev.parent;
struct device *dev = master->cdev.dev;
int status = -ENODEV;
int dynamic = 0;

Expand All @@ -412,12 +412,12 @@ spi_register_master(struct spi_master *master)
/* register the device, then userspace will see it.
* registration fails if the bus ID is in use.
*/
snprintf(master->dev.bus_id, sizeof master->dev.bus_id,
snprintf(master->cdev.class_id, sizeof master->cdev.class_id,
"spi%u", master->bus_num);
status = device_add(&master->dev);
status = class_device_add(&master->cdev);
if (status < 0)
goto done;
dev_dbg(dev, "registered master %s%s\n", master->dev.bus_id,
dev_dbg(dev, "registered master %s%s\n", master->cdev.class_id,
dynamic ? " (dynamic)" : "");

/* populate children from any spi device tables */
Expand Down Expand Up @@ -449,8 +449,8 @@ void spi_unregister_master(struct spi_master *master)
{
int dummy;

dummy = device_for_each_child(&master->dev, NULL, __unregister);
device_unregister(&master->dev);
dummy = device_for_each_child(master->cdev.dev, NULL, __unregister);
class_device_unregister(&master->cdev);
}
EXPORT_SYMBOL_GPL(spi_unregister_master);

Expand All @@ -471,7 +471,7 @@ struct spi_master *spi_busnum_to_master(u16 bus_num)

down(&spi_master_class.sem);
list_for_each_entry(cdev, &spi_master_class.children, node) {
m = container_of(cdev, struct spi_master, dev.kobj);
m = container_of(cdev, struct spi_master, cdev);
if (m->bus_num == bus_num) {
master = spi_master_get(m);
break;
Expand Down
6 changes: 3 additions & 3 deletions drivers/spi/spi_bitbang.c
Original file line number Diff line number Diff line change
Expand Up @@ -479,7 +479,7 @@ int spi_bitbang_start(struct spi_bitbang *bitbang)
/* this task is the only thing to touch the SPI bits */
bitbang->busy = 0;
bitbang->workqueue = create_singlethread_workqueue(
bitbang->master->dev.parent->bus_id);
bitbang->master->cdev.dev->bus_id);
if (bitbang->workqueue == NULL) {
status = -EBUSY;
goto err1;
Expand Down Expand Up @@ -513,14 +513,14 @@ int spi_bitbang_stop(struct spi_bitbang *bitbang)
while (!list_empty(&bitbang->queue) && limit--) {
spin_unlock_irq(&bitbang->lock);

dev_dbg(&bitbang->master->dev, "wait for queue\n");
dev_dbg(bitbang->master->cdev.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->dev, "queue didn't empty\n");
dev_err(bitbang->master->cdev.dev, "queue didn't empty\n");
return -EBUSY;
}

Expand Down
4 changes: 2 additions & 2 deletions drivers/spi/spi_butterfly.c
Original file line number Diff line number Diff line change
Expand Up @@ -246,7 +246,7 @@ static void butterfly_attach(struct parport *p)
* and no way to be selective about what it binds to.
*/

/* FIXME where should master->dev.parent come from?
/* 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...
*/
Expand Down Expand Up @@ -386,7 +386,7 @@ static void butterfly_detach(struct parport *p)
butterfly = NULL;

/* stop() unregisters child devices too */
pdev = to_platform_device(pp->bitbang.master->dev.parent);
pdev = to_platform_device(pp->bitbang.master->cdev.dev);
status = spi_bitbang_stop(&pp->bitbang);

/* turn off VCC */
Expand Down
10 changes: 5 additions & 5 deletions include/linux/spi/spi.h
Original file line number Diff line number Diff line change
Expand Up @@ -170,7 +170,7 @@ static inline void spi_unregister_driver(struct spi_driver *sdrv)
* message's completion function when the transaction completes.
*/
struct spi_master {
struct device dev;
struct class_device cdev;

/* other than negative (== assign one dynamically), bus_num is fully
* board-specific. usually that simplifies to being SOC-specific.
Expand Down Expand Up @@ -216,25 +216,25 @@ struct spi_master {

static inline void *spi_master_get_devdata(struct spi_master *master)
{
return dev_get_drvdata(&master->dev);
return class_get_devdata(&master->cdev);
}

static inline void spi_master_set_devdata(struct spi_master *master, void *data)
{
dev_set_drvdata(&master->dev, data);
class_set_devdata(&master->cdev, data);
}

static inline struct spi_master *spi_master_get(struct spi_master *master)
{
if (!master || !get_device(&master->dev))
if (!master || !class_device_get(&master->cdev))
return NULL;
return master;
}

static inline void spi_master_put(struct spi_master *master)
{
if (master)
put_device(&master->dev);
class_device_put(&master->cdev);
}


Expand Down

0 comments on commit 07b2463

Please sign in to comment.