Driver core: convert mmc 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. Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
This commit is contained in:
parent
04880edae5
commit
fcaf71fd51
@ -130,8 +130,8 @@ int mmc_init_queue(struct mmc_queue *mq, struct mmc_card *card, spinlock_t *lock
|
|||||||
u64 limit = BLK_BOUNCE_HIGH;
|
u64 limit = BLK_BOUNCE_HIGH;
|
||||||
int ret;
|
int ret;
|
||||||
|
|
||||||
if (host->dev->dma_mask && *host->dev->dma_mask)
|
if (mmc_dev(host)->dma_mask && *mmc_dev(host)->dma_mask)
|
||||||
limit = *host->dev->dma_mask;
|
limit = *mmc_dev(host)->dma_mask;
|
||||||
|
|
||||||
mq->card = card;
|
mq->card = card;
|
||||||
mq->queue = blk_init_queue(mmc_request, lock);
|
mq->queue = blk_init_queue(mmc_request, lock);
|
||||||
|
@ -199,7 +199,7 @@ void mmc_init_card(struct mmc_card *card, struct mmc_host *host)
|
|||||||
memset(card, 0, sizeof(struct mmc_card));
|
memset(card, 0, sizeof(struct mmc_card));
|
||||||
card->host = host;
|
card->host = host;
|
||||||
device_initialize(&card->dev);
|
device_initialize(&card->dev);
|
||||||
card->dev.parent = card->host->dev;
|
card->dev.parent = mmc_dev(host);
|
||||||
card->dev.bus = &mmc_bus_type;
|
card->dev.bus = &mmc_bus_type;
|
||||||
card->dev.release = mmc_release_card;
|
card->dev.release = mmc_release_card;
|
||||||
}
|
}
|
||||||
@ -242,7 +242,7 @@ void mmc_remove_card(struct mmc_card *card)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
static void mmc_host_classdev_release(struct class_device *dev)
|
static void mmc_host_classdev_release(struct device *dev)
|
||||||
{
|
{
|
||||||
struct mmc_host *host = cls_dev_to_mmc_host(dev);
|
struct mmc_host *host = cls_dev_to_mmc_host(dev);
|
||||||
kfree(host);
|
kfree(host);
|
||||||
@ -250,7 +250,7 @@ static void mmc_host_classdev_release(struct class_device *dev)
|
|||||||
|
|
||||||
static struct class mmc_host_class = {
|
static struct class mmc_host_class = {
|
||||||
.name = "mmc_host",
|
.name = "mmc_host",
|
||||||
.release = mmc_host_classdev_release,
|
.dev_release = mmc_host_classdev_release,
|
||||||
};
|
};
|
||||||
|
|
||||||
static DEFINE_IDR(mmc_host_idr);
|
static DEFINE_IDR(mmc_host_idr);
|
||||||
@ -267,10 +267,10 @@ struct mmc_host *mmc_alloc_host_sysfs(int extra, struct device *dev)
|
|||||||
if (host) {
|
if (host) {
|
||||||
memset(host, 0, sizeof(struct mmc_host) + extra);
|
memset(host, 0, sizeof(struct mmc_host) + extra);
|
||||||
|
|
||||||
host->dev = dev;
|
host->parent = dev;
|
||||||
host->class_dev.dev = host->dev;
|
host->class_dev.parent = dev;
|
||||||
host->class_dev.class = &mmc_host_class;
|
host->class_dev.class = &mmc_host_class;
|
||||||
class_device_initialize(&host->class_dev);
|
device_initialize(&host->class_dev);
|
||||||
}
|
}
|
||||||
|
|
||||||
return host;
|
return host;
|
||||||
@ -292,10 +292,10 @@ int mmc_add_host_sysfs(struct mmc_host *host)
|
|||||||
if (err)
|
if (err)
|
||||||
return err;
|
return err;
|
||||||
|
|
||||||
snprintf(host->class_dev.class_id, BUS_ID_SIZE,
|
snprintf(host->class_dev.bus_id, BUS_ID_SIZE,
|
||||||
"mmc%d", host->index);
|
"mmc%d", host->index);
|
||||||
|
|
||||||
return class_device_add(&host->class_dev);
|
return device_add(&host->class_dev);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -303,7 +303,7 @@ int mmc_add_host_sysfs(struct mmc_host *host)
|
|||||||
*/
|
*/
|
||||||
void mmc_remove_host_sysfs(struct mmc_host *host)
|
void mmc_remove_host_sysfs(struct mmc_host *host)
|
||||||
{
|
{
|
||||||
class_device_del(&host->class_dev);
|
device_del(&host->class_dev);
|
||||||
|
|
||||||
spin_lock(&mmc_host_lock);
|
spin_lock(&mmc_host_lock);
|
||||||
idr_remove(&mmc_host_idr, host->index);
|
idr_remove(&mmc_host_idr, host->index);
|
||||||
@ -315,7 +315,7 @@ void mmc_remove_host_sysfs(struct mmc_host *host)
|
|||||||
*/
|
*/
|
||||||
void mmc_free_host_sysfs(struct mmc_host *host)
|
void mmc_free_host_sysfs(struct mmc_host *host)
|
||||||
{
|
{
|
||||||
class_device_put(&host->class_dev);
|
put_device(&host->class_dev);
|
||||||
}
|
}
|
||||||
|
|
||||||
static struct workqueue_struct *workqueue;
|
static struct workqueue_struct *workqueue;
|
||||||
|
@ -1488,7 +1488,7 @@ static void __devinit wbsd_request_dma(struct wbsd_host *host, int dma)
|
|||||||
/*
|
/*
|
||||||
* Translate the address to a physical address.
|
* Translate the address to a physical address.
|
||||||
*/
|
*/
|
||||||
host->dma_addr = dma_map_single(host->mmc->dev, host->dma_buffer,
|
host->dma_addr = dma_map_single(mmc_dev(host->mmc), host->dma_buffer,
|
||||||
WBSD_DMA_SIZE, DMA_BIDIRECTIONAL);
|
WBSD_DMA_SIZE, DMA_BIDIRECTIONAL);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -1512,7 +1512,7 @@ kfree:
|
|||||||
*/
|
*/
|
||||||
BUG_ON(1);
|
BUG_ON(1);
|
||||||
|
|
||||||
dma_unmap_single(host->mmc->dev, host->dma_addr,
|
dma_unmap_single(mmc_dev(host->mmc), host->dma_addr,
|
||||||
WBSD_DMA_SIZE, DMA_BIDIRECTIONAL);
|
WBSD_DMA_SIZE, DMA_BIDIRECTIONAL);
|
||||||
host->dma_addr = (dma_addr_t)NULL;
|
host->dma_addr = (dma_addr_t)NULL;
|
||||||
|
|
||||||
@ -1530,7 +1530,7 @@ err:
|
|||||||
static void __devexit wbsd_release_dma(struct wbsd_host *host)
|
static void __devexit wbsd_release_dma(struct wbsd_host *host)
|
||||||
{
|
{
|
||||||
if (host->dma_addr) {
|
if (host->dma_addr) {
|
||||||
dma_unmap_single(host->mmc->dev, host->dma_addr,
|
dma_unmap_single(mmc_dev(host->mmc), host->dma_addr,
|
||||||
WBSD_DMA_SIZE, DMA_BIDIRECTIONAL);
|
WBSD_DMA_SIZE, DMA_BIDIRECTIONAL);
|
||||||
}
|
}
|
||||||
kfree(host->dma_buffer);
|
kfree(host->dma_buffer);
|
||||||
|
@ -74,8 +74,8 @@ struct mmc_card;
|
|||||||
struct device;
|
struct device;
|
||||||
|
|
||||||
struct mmc_host {
|
struct mmc_host {
|
||||||
struct device *dev;
|
struct device *parent;
|
||||||
struct class_device class_dev;
|
struct device class_dev;
|
||||||
int index;
|
int index;
|
||||||
const struct mmc_host_ops *ops;
|
const struct mmc_host_ops *ops;
|
||||||
unsigned int f_min;
|
unsigned int f_min;
|
||||||
@ -125,8 +125,8 @@ static inline void *mmc_priv(struct mmc_host *host)
|
|||||||
return (void *)host->private;
|
return (void *)host->private;
|
||||||
}
|
}
|
||||||
|
|
||||||
#define mmc_dev(x) ((x)->dev)
|
#define mmc_dev(x) ((x)->parent)
|
||||||
#define mmc_hostname(x) ((x)->class_dev.class_id)
|
#define mmc_hostname(x) ((x)->class_dev.bus_id)
|
||||||
|
|
||||||
extern int mmc_suspend_host(struct mmc_host *, pm_message_t);
|
extern int mmc_suspend_host(struct mmc_host *, pm_message_t);
|
||||||
extern int mmc_resume_host(struct mmc_host *);
|
extern int mmc_resume_host(struct mmc_host *);
|
||||||
|
Loading…
Reference in New Issue
Block a user