提交 c7c158e5 编写于 作者: H Hiroshi DOYU 提交者: Tony Lindgren

omap: mailbox: remove class interface

It's not used at present.
Signed-off-by: NHiroshi DOYU <Hiroshi.DOYU@nokia.com>
Signed-off-by: NTony Lindgren <tony@atomide.com>
上级 bfe1f6ac
...@@ -8,7 +8,6 @@ ...@@ -8,7 +8,6 @@
#include <linux/blkdev.h> #include <linux/blkdev.h>
typedef u32 mbox_msg_t; typedef u32 mbox_msg_t;
typedef void (mbox_receiver_t)(mbox_msg_t msg);
struct omap_mbox; struct omap_mbox;
typedef int __bitwise omap_mbox_irq_t; typedef int __bitwise omap_mbox_irq_t;
......
...@@ -71,7 +71,7 @@ static inline int is_mbox_irq(struct omap_mbox *mbox, omap_mbox_irq_t irq) ...@@ -71,7 +71,7 @@ static inline int is_mbox_irq(struct omap_mbox *mbox, omap_mbox_irq_t irq)
/* /*
* message sender * message sender
*/ */
static int __mbox_msg_send(struct omap_mbox *mbox, mbox_msg_t msg, void *arg) static int __mbox_msg_send(struct omap_mbox *mbox, mbox_msg_t msg)
{ {
int ret = 0, i = 1000; int ret = 0, i = 1000;
...@@ -82,15 +82,7 @@ static int __mbox_msg_send(struct omap_mbox *mbox, mbox_msg_t msg, void *arg) ...@@ -82,15 +82,7 @@ static int __mbox_msg_send(struct omap_mbox *mbox, mbox_msg_t msg, void *arg)
return -1; return -1;
udelay(1); udelay(1);
} }
if (arg && mbox->txq->callback) {
ret = mbox->txq->callback(arg);
if (ret)
goto out;
}
mbox_fifo_write(mbox, msg); mbox_fifo_write(mbox, msg);
out:
return ret; return ret;
} }
...@@ -152,7 +144,7 @@ static void mbox_tx_work(struct work_struct *work) ...@@ -152,7 +144,7 @@ static void mbox_tx_work(struct work_struct *work)
tx_data = rq->special; tx_data = rq->special;
ret = __mbox_msg_send(mbox, tx_data->msg, tx_data->arg); ret = __mbox_msg_send(mbox, tx_data->msg);
if (ret) { if (ret) {
enable_mbox_irq(mbox, IRQ_TX); enable_mbox_irq(mbox, IRQ_TX);
spin_lock(q->queue_lock); spin_lock(q->queue_lock);
...@@ -180,11 +172,6 @@ static void mbox_rx_work(struct work_struct *work) ...@@ -180,11 +172,6 @@ static void mbox_rx_work(struct work_struct *work)
mbox_msg_t msg; mbox_msg_t msg;
unsigned long flags; unsigned long flags;
if (mbox->rxq->callback == NULL) {
sysfs_notify(&mbox->dev->kobj, NULL, "mbox");
return;
}
while (1) { while (1) {
spin_lock_irqsave(q->queue_lock, flags); spin_lock_irqsave(q->queue_lock, flags);
rq = blk_fetch_request(q); rq = blk_fetch_request(q);
...@@ -257,69 +244,6 @@ static irqreturn_t mbox_interrupt(int irq, void *p) ...@@ -257,69 +244,6 @@ static irqreturn_t mbox_interrupt(int irq, void *p)
return IRQ_HANDLED; return IRQ_HANDLED;
} }
/*
* sysfs files
*/
static ssize_t
omap_mbox_write(struct device *dev, struct device_attribute *attr,
const char *buf, size_t count)
{
int ret;
mbox_msg_t *p = (mbox_msg_t *)buf;
struct omap_mbox *mbox = dev_get_drvdata(dev);
for (; count >= sizeof(mbox_msg_t); count -= sizeof(mbox_msg_t)) {
ret = omap_mbox_msg_send(mbox, be32_to_cpu(*p), NULL);
if (ret)
return -EAGAIN;
p++;
}
return (size_t)((char *)p - buf);
}
static ssize_t
omap_mbox_read(struct device *dev, struct device_attribute *attr, char *buf)
{
unsigned long flags;
struct request *rq;
mbox_msg_t *p = (mbox_msg_t *) buf;
struct omap_mbox *mbox = dev_get_drvdata(dev);
struct request_queue *q = mbox->rxq->queue;
while (1) {
spin_lock_irqsave(q->queue_lock, flags);
rq = blk_fetch_request(q);
spin_unlock_irqrestore(q->queue_lock, flags);
if (!rq)
break;
*p = (mbox_msg_t)rq->special;
blk_end_request_all(rq, 0);
p++;
}
pr_debug("%02x %02x %02x %02x\n", buf[0], buf[1], buf[2], buf[3]);
return (size_t) ((char *)p - buf);
}
static DEVICE_ATTR(mbox, S_IRUGO | S_IWUSR, omap_mbox_read, omap_mbox_write);
static ssize_t mbox_show(struct class *class, char *buf)
{
return sprintf(buf, "mbox");
}
static CLASS_ATTR(mbox, S_IRUGO, mbox_show, NULL);
static struct class omap_mbox_class = {
.name = "omap-mailbox",
};
static struct omap_mbox_queue *mbox_queue_alloc(struct omap_mbox *mbox, static struct omap_mbox_queue *mbox_queue_alloc(struct omap_mbox *mbox,
request_fn_proc *proc, request_fn_proc *proc,
void (*work) (struct work_struct *)) void (*work) (struct work_struct *))
...@@ -353,7 +277,7 @@ static void mbox_queue_free(struct omap_mbox_queue *q) ...@@ -353,7 +277,7 @@ static void mbox_queue_free(struct omap_mbox_queue *q)
kfree(q); kfree(q);
} }
static int omap_mbox_init(struct omap_mbox *mbox) static int omap_mbox_startup(struct omap_mbox *mbox)
{ {
int ret; int ret;
struct omap_mbox_queue *mq; struct omap_mbox_queue *mq;
...@@ -436,7 +360,7 @@ struct omap_mbox *omap_mbox_get(const char *name) ...@@ -436,7 +360,7 @@ struct omap_mbox *omap_mbox_get(const char *name)
read_unlock(&mboxes_lock); read_unlock(&mboxes_lock);
ret = omap_mbox_init(mbox); ret = omap_mbox_startup(mbox);
if (ret) if (ret)
return ERR_PTR(-ENODEV); return ERR_PTR(-ENODEV);
...@@ -460,15 +384,6 @@ int omap_mbox_register(struct device *parent, struct omap_mbox *mbox) ...@@ -460,15 +384,6 @@ int omap_mbox_register(struct device *parent, struct omap_mbox *mbox)
if (mbox->next) if (mbox->next)
return -EBUSY; return -EBUSY;
mbox->dev = device_create(&omap_mbox_class,
parent, 0, mbox, "%s", mbox->name);
if (IS_ERR(mbox->dev))
return PTR_ERR(mbox->dev);
ret = device_create_file(mbox->dev, &dev_attr_mbox);
if (ret)
goto err_sysfs;
write_lock(&mboxes_lock); write_lock(&mboxes_lock);
tmp = find_mboxes(mbox->name); tmp = find_mboxes(mbox->name);
if (*tmp) { if (*tmp) {
...@@ -482,9 +397,6 @@ int omap_mbox_register(struct device *parent, struct omap_mbox *mbox) ...@@ -482,9 +397,6 @@ int omap_mbox_register(struct device *parent, struct omap_mbox *mbox)
return 0; return 0;
err_find: err_find:
device_remove_file(mbox->dev, &dev_attr_mbox);
err_sysfs:
device_unregister(mbox->dev);
return ret; return ret;
} }
EXPORT_SYMBOL(omap_mbox_register); EXPORT_SYMBOL(omap_mbox_register);
...@@ -500,8 +412,6 @@ int omap_mbox_unregister(struct omap_mbox *mbox) ...@@ -500,8 +412,6 @@ int omap_mbox_unregister(struct omap_mbox *mbox)
*tmp = mbox->next; *tmp = mbox->next;
mbox->next = NULL; mbox->next = NULL;
write_unlock(&mboxes_lock); write_unlock(&mboxes_lock);
device_remove_file(mbox->dev, &dev_attr_mbox);
device_unregister(mbox->dev);
return 0; return 0;
} }
tmp = &(*tmp)->next; tmp = &(*tmp)->next;
...@@ -512,23 +422,16 @@ int omap_mbox_unregister(struct omap_mbox *mbox) ...@@ -512,23 +422,16 @@ int omap_mbox_unregister(struct omap_mbox *mbox)
} }
EXPORT_SYMBOL(omap_mbox_unregister); EXPORT_SYMBOL(omap_mbox_unregister);
static int __init omap_mbox_class_init(void) static int __init omap_mbox_init(void)
{ {
int ret = class_register(&omap_mbox_class); return 0;
if (!ret)
ret = class_create_file(&omap_mbox_class, &class_attr_mbox);
return ret;
} }
module_init(omap_mbox_init);
static void __exit omap_mbox_class_exit(void) static void __exit omap_mbox_exit(void)
{ {
class_remove_file(&omap_mbox_class, &class_attr_mbox);
class_unregister(&omap_mbox_class);
} }
module_exit(omap_mbox_exit);
subsys_initcall(omap_mbox_class_init);
module_exit(omap_mbox_class_exit);
MODULE_LICENSE("GPL v2"); MODULE_LICENSE("GPL v2");
MODULE_DESCRIPTION("omap mailbox: interrupt driven messaging"); MODULE_DESCRIPTION("omap mailbox: interrupt driven messaging");
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册