From: Samuel Ortiz <sameo@linux.intel.com>
To: gregkh@linuxfoundation.org
Cc: arnd@arndb.de, linux-kernel@vger.kernel.org,
tomas.winkler@intel.com, Samuel Ortiz <sameo@linux.intel.com>
Subject: [char-misc-next 06/12 v3] mei: bus: Call bus routines from the core code
Date: Tue, 12 Feb 2013 19:36:56 +0100 [thread overview]
Message-ID: <1360694222-27632-7-git-send-email-sameo@linux.intel.com> (raw)
In-Reply-To: <1360694222-27632-1-git-send-email-sameo@linux.intel.com>
Register the MEI bus type against the kernel core bus APIs and
call the bus Rx handler from interrupt.c
Signed-off-by: Samuel Ortiz <sameo@linux.intel.com>
Signed-off-by: Tomas Winkler <tomas.winkler@intel.com>
---
drivers/misc/mei/bus.c | 22 ++++++++++++++++++++++
drivers/misc/mei/interrupt.c | 2 ++
drivers/misc/mei/mei_dev.h | 4 ++++
drivers/misc/mei/pci-me.c | 21 +++++++++++++++++++--
4 files changed, 47 insertions(+), 2 deletions(-)
diff --git a/drivers/misc/mei/bus.c b/drivers/misc/mei/bus.c
index 0d8caec..4565e9a 100644
--- a/drivers/misc/mei/bus.c
+++ b/drivers/misc/mei/bus.c
@@ -421,3 +421,25 @@ int mei_register_event_cb(struct mei_device *device,
return 0;
}
EXPORT_SYMBOL_GPL(mei_register_event_cb);
+
+void mei_bus_rx_event(struct mei_cl *cl)
+{
+ struct mei_device *device = cl->device;
+
+ if (!device || !device->event_cb)
+ return;
+
+ set_bit(MEI_EVENT_RX, &device->events);
+
+ schedule_work(&device->event_work);
+}
+
+int __init mei_bus_init(struct pci_dev *pdev)
+{
+ return bus_register(&mei_bus_type);
+}
+
+void __exit mei_bus_exit(void)
+{
+ bus_unregister(&mei_bus_type);
+}
diff --git a/drivers/misc/mei/interrupt.c b/drivers/misc/mei/interrupt.c
index 30cc864..9acfcaf 100644
--- a/drivers/misc/mei/interrupt.c
+++ b/drivers/misc/mei/interrupt.c
@@ -49,6 +49,8 @@ void mei_irq_complete_handler(struct mei_cl *cl, struct mei_cl_cb *cb_pos)
cl->reading_state = MEI_READ_COMPLETE;
if (waitqueue_active(&cl->rx_wait))
wake_up_interruptible(&cl->rx_wait);
+ else
+ mei_bus_rx_event(cl);
}
}
diff --git a/drivers/misc/mei/mei_dev.h b/drivers/misc/mei/mei_dev.h
index 45d008b..546cd87 100644
--- a/drivers/misc/mei/mei_dev.h
+++ b/drivers/misc/mei/mei_dev.h
@@ -437,6 +437,10 @@ static inline unsigned long mei_secs_to_jiffies(unsigned long sec)
return msecs_to_jiffies(sec * MSEC_PER_SEC);
}
+void mei_bus_rx_event(struct mei_cl *cl);
+int mei_bus_init(struct pci_dev *pdev);
+void mei_bus_exit(void);
+
/*
* mei init function prototypes
diff --git a/drivers/misc/mei/pci-me.c b/drivers/misc/mei/pci-me.c
index 8e88ec0..e31090f 100644
--- a/drivers/misc/mei/pci-me.c
+++ b/drivers/misc/mei/pci-me.c
@@ -197,7 +197,6 @@ static int mei_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
mei_pdev = pdev;
pci_set_drvdata(pdev, dev);
-
schedule_delayed_work(&dev->timer_work, HZ);
mutex_unlock(&mei_mutex);
@@ -389,7 +388,25 @@ static struct pci_driver mei_driver = {
.driver.pm = MEI_PM_OPS,
};
-module_pci_driver(mei_driver);
+static int __init mei_init(void)
+{
+ int err;
+
+ err = mei_bus_init(mei_pdev);
+ if (err)
+ return err;
+
+ return pci_register_driver(&mei_driver);
+}
+
+static void __exit mei_exit(void)
+{
+ pci_unregister_driver(&mei_driver);
+ mei_bus_exit();
+}
+
+module_init(mei_init);
+module_exit(mei_exit);
MODULE_AUTHOR("Intel Corporation");
MODULE_DESCRIPTION("Intel(R) Management Engine Interface");
--
1.7.10.4
next prev parent reply other threads:[~2013-02-12 18:37 UTC|newest]
Thread overview: 22+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-02-12 18:36 [char-misc-next 00/12 v3] Add MEI bus and NFC device Samuel Ortiz
2013-02-12 18:36 ` [char-misc-next 01/12 v3] mei: Rename mei_device to mei_host Samuel Ortiz
2013-02-12 21:17 ` Winkler, Tomas
2013-02-12 21:29 ` Samuel Ortiz
2013-02-12 21:38 ` gregkh
2013-02-12 23:09 ` Arnd Bergmann
2013-02-13 9:39 ` Samuel Ortiz
2013-02-19 13:32 ` Tomas Winkler
2013-02-20 10:57 ` Samuel Ortiz
2013-03-11 10:44 ` Samuel Ortiz
2013-03-11 13:34 ` Arnd Bergmann
2013-02-12 18:36 ` [char-misc-next 02/12 v3] mei: bus: Initial MEI bus type implementation Samuel Ortiz
2013-02-12 18:36 ` [char-misc-next 03/12 v3] mei: bus: Implement driver registration Samuel Ortiz
2013-02-12 18:36 ` [char-misc-next 04/12 v3] mei: bus: Initial implementation for I/O routines Samuel Ortiz
2013-02-12 18:36 ` [char-misc-next 05/12 v3] mei: bus: Add bus related structures to mei_cl Samuel Ortiz
2013-02-12 18:36 ` Samuel Ortiz [this message]
2013-02-12 18:36 ` [char-misc-next 07/12 v3] mei: bus: Synchronous API for the data transmission Samuel Ortiz
2013-02-12 18:36 ` [char-misc-next 08/12 v3] mei: bus: Implement bus driver data setter/getter Samuel Ortiz
2013-02-12 18:36 ` [char-misc-next 09/12 v3] mei: nfc: Initial nfc implementation Samuel Ortiz
2013-02-12 18:37 ` [char-misc-next 10/12 v3] mei: nfc: Connect also the regular ME client Samuel Ortiz
2013-02-12 18:37 ` [char-misc-next 11/12 v3] mei: nfc: Add NFC device to the MEI bus Samuel Ortiz
2013-02-12 18:37 ` [char-misc-next 12/12 v3] mei: nfc: Implement MEI bus IO ops Samuel Ortiz
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1360694222-27632-7-git-send-email-sameo@linux.intel.com \
--to=sameo@linux.intel.com \
--cc=arnd@arndb.de \
--cc=gregkh@linuxfoundation.org \
--cc=linux-kernel@vger.kernel.org \
--cc=tomas.winkler@intel.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.