* [char-misc-next 0/5] MEI: move mei-me to separate module
@ 2013-03-27 14:58 Tomas Winkler
2013-03-27 14:58 ` [char-misc-next 1/5] mei: unregister watchdog from mei_stop function Tomas Winkler
` (4 more replies)
0 siblings, 5 replies; 6+ messages in thread
From: Tomas Winkler @ 2013-03-27 14:58 UTC (permalink / raw)
To: gregkh; +Cc: arnd, linux-kernel, Tomas Winkler
This completes the separation of the me hardware form mei
layer to give space for adding another underlying hardware
ME hardware is now encapsulated into mei-me module.
Tomas Winkler (5):
mei: unregister watchdog from mei_stop function
mei: ME structures should be initialized in mei_device_init
mei: rename function mei_hw_init to mei_start
mei: prefix me hardware specific functions with mei_me_
mei: move mei-me to separate module
drivers/misc/mei/Kconfig | 5 ++---
drivers/misc/mei/Makefile | 6 ++++--
drivers/misc/mei/hw-me.c | 44 ++++++++++++++++++--------------------------
drivers/misc/mei/init.c | 21 ++++++++++++++++++---
drivers/misc/mei/interrupt.c | 4 ++++
drivers/misc/mei/main.c | 4 ++++
drivers/misc/mei/mei_dev.h | 2 +-
drivers/misc/mei/pci-me.c | 40 +++++++++++++++++++---------------------
8 files changed, 70 insertions(+), 56 deletions(-)
--
1.7.11.7
^ permalink raw reply [flat|nested] 6+ messages in thread
* [char-misc-next 1/5] mei: unregister watchdog from mei_stop function
2013-03-27 14:58 [char-misc-next 0/5] MEI: move mei-me to separate module Tomas Winkler
@ 2013-03-27 14:58 ` Tomas Winkler
2013-03-27 14:58 ` [char-misc-next 2/5] mei: ME structures should be initialized in mei_device_init Tomas Winkler
` (3 subsequent siblings)
4 siblings, 0 replies; 6+ messages in thread
From: Tomas Winkler @ 2013-03-27 14:58 UTC (permalink / raw)
To: gregkh; +Cc: arnd, linux-kernel, Tomas Winkler
we need to unregister watchdog device both in suspend and remove
as the registration is recreated on reset
Signed-off-by: Tomas Winkler <tomas.winkler@intel.com>
---
drivers/misc/mei/init.c | 3 +++
drivers/misc/mei/pci-me.c | 2 --
2 files changed, 3 insertions(+), 2 deletions(-)
diff --git a/drivers/misc/mei/init.c b/drivers/misc/mei/init.c
index 09a9980..aced38c 100644
--- a/drivers/misc/mei/init.c
+++ b/drivers/misc/mei/init.c
@@ -211,6 +211,9 @@ void mei_stop(struct mei_device *dev)
mutex_unlock(&dev->device_lock);
flush_scheduled_work();
+
+ mei_watchdog_unregister(dev);
+
}
diff --git a/drivers/misc/mei/pci-me.c b/drivers/misc/mei/pci-me.c
index b8b5c9c..252b1fd 100644
--- a/drivers/misc/mei/pci-me.c
+++ b/drivers/misc/mei/pci-me.c
@@ -253,8 +253,6 @@ static void mei_remove(struct pci_dev *pdev)
mei_pdev = NULL;
- mei_watchdog_unregister(dev);
-
/* disable interrupts */
mei_disable_interrupts(dev);
--
1.7.11.7
^ permalink raw reply [flat|nested] 6+ messages in thread
* [char-misc-next 2/5] mei: ME structures should be initialized in mei_device_init
2013-03-27 14:58 [char-misc-next 0/5] MEI: move mei-me to separate module Tomas Winkler
2013-03-27 14:58 ` [char-misc-next 1/5] mei: unregister watchdog from mei_stop function Tomas Winkler
@ 2013-03-27 14:58 ` Tomas Winkler
2013-03-27 14:58 ` [char-misc-next 3/5] mei: rename function mei_hw_init to mei_start Tomas Winkler
` (2 subsequent siblings)
4 siblings, 0 replies; 6+ messages in thread
From: Tomas Winkler @ 2013-03-27 14:58 UTC (permalink / raw)
To: gregkh; +Cc: arnd, linux-kernel, Tomas Winkler
mei_timer and mei_host_client_init belongs to mei framework
and are not ME hw specific.
AMTHIF and WD are available only for ME but are above the hardware layer
so move the initialization back from mei_me_dev_init to mei_device_init.
Signed-off-by: Tomas Winkler <tomas.winkler@intel.com>
---
drivers/misc/mei/hw-me.c | 8 --------
drivers/misc/mei/init.c | 9 +++++++++
2 files changed, 9 insertions(+), 8 deletions(-)
diff --git a/drivers/misc/mei/hw-me.c b/drivers/misc/mei/hw-me.c
index 7c2b14d..12c2fa1 100644
--- a/drivers/misc/mei/hw-me.c
+++ b/drivers/misc/mei/hw-me.c
@@ -583,14 +583,6 @@ struct mei_device *mei_me_dev_init(struct pci_dev *pdev)
mei_device_init(dev);
- INIT_LIST_HEAD(&dev->wd_cl.link);
- INIT_LIST_HEAD(&dev->iamthif_cl.link);
- mei_io_list_init(&dev->amthif_cmd_list);
- mei_io_list_init(&dev->amthif_rd_complete_list);
-
- INIT_DELAYED_WORK(&dev->timer_work, mei_timer);
- INIT_WORK(&dev->init_work, mei_host_client_init);
-
dev->ops = &mei_me_hw_ops;
dev->pdev = pdev;
diff --git a/drivers/misc/mei/init.c b/drivers/misc/mei/init.c
index aced38c..33f5630 100644
--- a/drivers/misc/mei/init.c
+++ b/drivers/misc/mei/init.c
@@ -57,6 +57,15 @@ void mei_device_init(struct mei_device *dev)
mei_io_list_init(&dev->write_waiting_list);
mei_io_list_init(&dev->ctrl_wr_list);
mei_io_list_init(&dev->ctrl_rd_list);
+
+ INIT_DELAYED_WORK(&dev->timer_work, mei_timer);
+ INIT_WORK(&dev->init_work, mei_host_client_init);
+
+ INIT_LIST_HEAD(&dev->wd_cl.link);
+ INIT_LIST_HEAD(&dev->iamthif_cl.link);
+ mei_io_list_init(&dev->amthif_cmd_list);
+ mei_io_list_init(&dev->amthif_rd_complete_list);
+
}
/**
--
1.7.11.7
^ permalink raw reply [flat|nested] 6+ messages in thread
* [char-misc-next 3/5] mei: rename function mei_hw_init to mei_start
2013-03-27 14:58 [char-misc-next 0/5] MEI: move mei-me to separate module Tomas Winkler
2013-03-27 14:58 ` [char-misc-next 1/5] mei: unregister watchdog from mei_stop function Tomas Winkler
2013-03-27 14:58 ` [char-misc-next 2/5] mei: ME structures should be initialized in mei_device_init Tomas Winkler
@ 2013-03-27 14:58 ` Tomas Winkler
2013-03-27 14:58 ` [char-misc-next 4/5] mei: prefix me hardware specific functions with mei_me_ Tomas Winkler
2013-03-27 14:58 ` [char-misc-next 5/5] mei: move mei-me to separate module Tomas Winkler
4 siblings, 0 replies; 6+ messages in thread
From: Tomas Winkler @ 2013-03-27 14:58 UTC (permalink / raw)
To: gregkh; +Cc: arnd, linux-kernel, Tomas Winkler
The hw initialization is now done as part of
hw specific code this makes the name mei_hw_init little misleading.
We rename it to mei_start in spirit of already existing
functions mei_stop and mei_reset.
Signed-off-by: Tomas Winkler <tomas.winkler@intel.com>
---
drivers/misc/mei/init.c | 4 ++--
drivers/misc/mei/mei_dev.h | 2 +-
drivers/misc/mei/pci-me.c | 2 +-
3 files changed, 4 insertions(+), 4 deletions(-)
diff --git a/drivers/misc/mei/init.c b/drivers/misc/mei/init.c
index 33f5630..b3f7c3e 100644
--- a/drivers/misc/mei/init.c
+++ b/drivers/misc/mei/init.c
@@ -69,13 +69,13 @@ void mei_device_init(struct mei_device *dev)
}
/**
- * mei_hw_init - initializes host and fw to start work.
+ * mei_start - initializes host and fw to start work.
*
* @dev: the device structure
*
* returns 0 on success, <0 on failure.
*/
-int mei_hw_init(struct mei_device *dev)
+int mei_start(struct mei_device *dev)
{
int ret = 0;
diff --git a/drivers/misc/mei/mei_dev.h b/drivers/misc/mei/mei_dev.h
index 091f50af..b5d6607 100644
--- a/drivers/misc/mei/mei_dev.h
+++ b/drivers/misc/mei/mei_dev.h
@@ -393,7 +393,7 @@ static inline u32 mei_data2slots(size_t length)
*/
void mei_device_init(struct mei_device *dev);
void mei_reset(struct mei_device *dev, int interrupts);
-int mei_hw_init(struct mei_device *dev);
+int mei_start(struct mei_device *dev);
void mei_stop(struct mei_device *dev);
/*
diff --git a/drivers/misc/mei/pci-me.c b/drivers/misc/mei/pci-me.c
index 252b1fd..985afd0 100644
--- a/drivers/misc/mei/pci-me.c
+++ b/drivers/misc/mei/pci-me.c
@@ -184,7 +184,7 @@ static int mei_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
goto disable_msi;
}
- if (mei_hw_init(dev)) {
+ if (mei_start(dev)) {
dev_err(&pdev->dev, "init hw failure.\n");
err = -ENODEV;
goto release_irq;
--
1.7.11.7
^ permalink raw reply [flat|nested] 6+ messages in thread
* [char-misc-next 4/5] mei: prefix me hardware specific functions with mei_me_
2013-03-27 14:58 [char-misc-next 0/5] MEI: move mei-me to separate module Tomas Winkler
` (2 preceding siblings ...)
2013-03-27 14:58 ` [char-misc-next 3/5] mei: rename function mei_hw_init to mei_start Tomas Winkler
@ 2013-03-27 14:58 ` Tomas Winkler
2013-03-27 14:58 ` [char-misc-next 5/5] mei: move mei-me to separate module Tomas Winkler
4 siblings, 0 replies; 6+ messages in thread
From: Tomas Winkler @ 2013-03-27 14:58 UTC (permalink / raw)
To: gregkh; +Cc: arnd, linux-kernel, Tomas Winkler
Signed-off-by: Tomas Winkler <tomas.winkler@intel.com>
---
drivers/misc/mei/hw-me.c | 36 ++++++++++++++++++------------------
drivers/misc/mei/pci-me.c | 36 ++++++++++++++++++------------------
2 files changed, 36 insertions(+), 36 deletions(-)
diff --git a/drivers/misc/mei/hw-me.c b/drivers/misc/mei/hw-me.c
index 12c2fa1..5ad53eb 100644
--- a/drivers/misc/mei/hw-me.c
+++ b/drivers/misc/mei/hw-me.c
@@ -26,14 +26,14 @@
/**
- * mei_reg_read - Reads 32bit data from the mei device
+ * mei_me_reg_read - Reads 32bit data from the mei device
*
* @dev: the device structure
* @offset: offset from which to read the data
*
* returns register value (u32)
*/
-static inline u32 mei_reg_read(const struct mei_me_hw *hw,
+static inline u32 mei_me_reg_read(const struct mei_me_hw *hw,
unsigned long offset)
{
return ioread32(hw->mem_addr + offset);
@@ -41,20 +41,20 @@ static inline u32 mei_reg_read(const struct mei_me_hw *hw,
/**
- * mei_reg_write - Writes 32bit data to the mei device
+ * mei_me_reg_write - Writes 32bit data to the mei device
*
* @dev: the device structure
* @offset: offset from which to write the data
* @value: register value to write (u32)
*/
-static inline void mei_reg_write(const struct mei_me_hw *hw,
+static inline void mei_me_reg_write(const struct mei_me_hw *hw,
unsigned long offset, u32 value)
{
iowrite32(value, hw->mem_addr + offset);
}
/**
- * mei_mecbrw_read - Reads 32bit data from ME circular buffer
+ * mei_me_mecbrw_read - Reads 32bit data from ME circular buffer
* read window register
*
* @dev: the device structure
@@ -63,18 +63,18 @@ static inline void mei_reg_write(const struct mei_me_hw *hw,
*/
static u32 mei_me_mecbrw_read(const struct mei_device *dev)
{
- return mei_reg_read(to_me_hw(dev), ME_CB_RW);
+ return mei_me_reg_read(to_me_hw(dev), ME_CB_RW);
}
/**
- * mei_mecsr_read - Reads 32bit data from the ME CSR
+ * mei_me_mecsr_read - Reads 32bit data from the ME CSR
*
* @dev: the device structure
*
* returns ME_CSR_HA register value (u32)
*/
-static inline u32 mei_mecsr_read(const struct mei_me_hw *hw)
+static inline u32 mei_me_mecsr_read(const struct mei_me_hw *hw)
{
- return mei_reg_read(hw, ME_CSR_HA);
+ return mei_me_reg_read(hw, ME_CSR_HA);
}
/**
@@ -86,7 +86,7 @@ static inline u32 mei_mecsr_read(const struct mei_me_hw *hw)
*/
static inline u32 mei_hcsr_read(const struct mei_me_hw *hw)
{
- return mei_reg_read(hw, H_CSR);
+ return mei_me_reg_read(hw, H_CSR);
}
/**
@@ -98,7 +98,7 @@ static inline u32 mei_hcsr_read(const struct mei_me_hw *hw)
static inline void mei_hcsr_set(struct mei_me_hw *hw, u32 hcsr)
{
hcsr &= ~H_IS;
- mei_reg_write(hw, H_CSR, hcsr);
+ mei_me_reg_write(hw, H_CSR, hcsr);
}
@@ -123,7 +123,7 @@ static void mei_me_intr_clear(struct mei_device *dev)
struct mei_me_hw *hw = to_me_hw(dev);
u32 hcsr = mei_hcsr_read(hw);
if ((hcsr & H_IS) == H_IS)
- mei_reg_write(hw, H_CSR, hcsr);
+ mei_me_reg_write(hw, H_CSR, hcsr);
}
/**
* mei_me_intr_enable - enables mei device interrupts
@@ -228,7 +228,7 @@ static bool mei_me_host_is_ready(struct mei_device *dev)
static bool mei_me_hw_is_ready(struct mei_device *dev)
{
struct mei_me_hw *hw = to_me_hw(dev);
- hw->me_hw_state = mei_mecsr_read(hw);
+ hw->me_hw_state = mei_me_mecsr_read(hw);
return (hw->me_hw_state & ME_RDY_HRA) == ME_RDY_HRA;
}
@@ -354,16 +354,16 @@ static int mei_me_write_message(struct mei_device *dev,
if (empty_slots < 0 || dw_cnt > empty_slots)
return -EIO;
- mei_reg_write(hw, H_CB_WW, *((u32 *) header));
+ mei_me_reg_write(hw, H_CB_WW, *((u32 *) header));
for (i = 0; i < length / 4; i++)
- mei_reg_write(hw, H_CB_WW, reg_buf[i]);
+ mei_me_reg_write(hw, H_CB_WW, reg_buf[i]);
rem = length & 0x3;
if (rem > 0) {
u32 reg = 0;
memcpy(®, &buf[length - rem], rem);
- mei_reg_write(hw, H_CB_WW, reg);
+ mei_me_reg_write(hw, H_CB_WW, reg);
}
hcsr = mei_hcsr_read(hw) | H_IG;
@@ -387,7 +387,7 @@ static int mei_me_count_full_read_slots(struct mei_device *dev)
char read_ptr, write_ptr;
unsigned char buffer_depth, filled_slots;
- hw->me_hw_state = mei_mecsr_read(hw);
+ hw->me_hw_state = mei_me_mecsr_read(hw);
buffer_depth = (unsigned char)((hw->me_hw_state & ME_CBD_HRA) >> 24);
read_ptr = (char) ((hw->me_hw_state & ME_CBRP_HRA) >> 8);
write_ptr = (char) ((hw->me_hw_state & ME_CBWP_HRA) >> 16);
@@ -447,7 +447,7 @@ irqreturn_t mei_me_irq_quick_handler(int irq, void *dev_id)
return IRQ_NONE;
/* clear H_IS bit in H_CSR */
- mei_reg_write(hw, H_CSR, csr_reg);
+ mei_me_reg_write(hw, H_CSR, csr_reg);
return IRQ_WAKE_THREAD;
}
diff --git a/drivers/misc/mei/pci-me.c b/drivers/misc/mei/pci-me.c
index 985afd0..178928e 100644
--- a/drivers/misc/mei/pci-me.c
+++ b/drivers/misc/mei/pci-me.c
@@ -47,7 +47,7 @@
static struct pci_dev *mei_pdev;
/* mei_pci_tbl - PCI Device ID Table */
-static DEFINE_PCI_DEVICE_TABLE(mei_pci_tbl) = {
+static DEFINE_PCI_DEVICE_TABLE(mei_me_pci_tbl) = {
{PCI_DEVICE(PCI_VENDOR_ID_INTEL, MEI_DEV_ID_82946GZ)},
{PCI_DEVICE(PCI_VENDOR_ID_INTEL, MEI_DEV_ID_82G35)},
{PCI_DEVICE(PCI_VENDOR_ID_INTEL, MEI_DEV_ID_82Q965)},
@@ -86,7 +86,7 @@ static DEFINE_PCI_DEVICE_TABLE(mei_pci_tbl) = {
{0, }
};
-MODULE_DEVICE_TABLE(pci, mei_pci_tbl);
+MODULE_DEVICE_TABLE(pci, mei_me_pci_tbl);
static DEFINE_MUTEX(mei_mutex);
@@ -97,7 +97,7 @@ static DEFINE_MUTEX(mei_mutex);
*
* returns true if ME Interface is valid, false otherwise
*/
-static bool mei_quirk_probe(struct pci_dev *pdev,
+static bool mei_me_quirk_probe(struct pci_dev *pdev,
const struct pci_device_id *ent)
{
u32 reg;
@@ -119,7 +119,7 @@ static bool mei_quirk_probe(struct pci_dev *pdev,
*
* returns 0 on success, <0 on failure.
*/
-static int mei_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
+static int mei_me_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
{
struct mei_device *dev;
struct mei_me_hw *hw;
@@ -127,7 +127,7 @@ static int mei_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
mutex_lock(&mei_mutex);
- if (!mei_quirk_probe(pdev, ent)) {
+ if (!mei_me_quirk_probe(pdev, ent)) {
err = -ENODEV;
goto end;
}
@@ -233,7 +233,7 @@ end:
* mei_remove is called by the PCI subsystem to alert the driver
* that it should release a PCI device.
*/
-static void mei_remove(struct pci_dev *pdev)
+static void mei_me_remove(struct pci_dev *pdev)
{
struct mei_device *dev;
struct mei_me_hw *hw;
@@ -272,7 +272,7 @@ static void mei_remove(struct pci_dev *pdev)
}
#ifdef CONFIG_PM
-static int mei_pci_suspend(struct device *device)
+static int mei_me_pci_suspend(struct device *device)
{
struct pci_dev *pdev = to_pci_dev(device);
struct mei_device *dev = pci_get_drvdata(pdev);
@@ -292,7 +292,7 @@ static int mei_pci_suspend(struct device *device)
return 0;
}
-static int mei_pci_resume(struct device *device)
+static int mei_me_pci_resume(struct device *device)
{
struct pci_dev *pdev = to_pci_dev(device);
struct mei_device *dev;
@@ -332,24 +332,24 @@ static int mei_pci_resume(struct device *device)
return err;
}
-static SIMPLE_DEV_PM_OPS(mei_pm_ops, mei_pci_suspend, mei_pci_resume);
-#define MEI_PM_OPS (&mei_pm_ops)
+static SIMPLE_DEV_PM_OPS(mei_me_pm_ops, mei_me_pci_suspend, mei_me_pci_resume);
+#define MEI_ME_PM_OPS (&mei_me_pm_ops)
#else
-#define MEI_PM_OPS NULL
+#define MEI_ME_PM_OPS NULL
#endif /* CONFIG_PM */
/*
* PCI driver structure
*/
-static struct pci_driver mei_driver = {
+static struct pci_driver mei_me_driver = {
.name = KBUILD_MODNAME,
- .id_table = mei_pci_tbl,
- .probe = mei_probe,
- .remove = mei_remove,
- .shutdown = mei_remove,
- .driver.pm = MEI_PM_OPS,
+ .id_table = mei_me_pci_tbl,
+ .probe = mei_me_probe,
+ .remove = mei_me_remove,
+ .shutdown = mei_me_remove,
+ .driver.pm = MEI_ME_PM_OPS,
};
-module_pci_driver(mei_driver);
+module_pci_driver(mei_me_driver);
MODULE_AUTHOR("Intel Corporation");
MODULE_DESCRIPTION("Intel(R) Management Engine Interface");
--
1.7.11.7
^ permalink raw reply [flat|nested] 6+ messages in thread
* [char-misc-next 5/5] mei: move mei-me to separate module
2013-03-27 14:58 [char-misc-next 0/5] MEI: move mei-me to separate module Tomas Winkler
` (3 preceding siblings ...)
2013-03-27 14:58 ` [char-misc-next 4/5] mei: prefix me hardware specific functions with mei_me_ Tomas Winkler
@ 2013-03-27 14:58 ` Tomas Winkler
4 siblings, 0 replies; 6+ messages in thread
From: Tomas Winkler @ 2013-03-27 14:58 UTC (permalink / raw)
To: gregkh; +Cc: arnd, linux-kernel, Tomas Winkler
mei layer provides host bus message layer, client management,
and os interface
mei-me - provides access to ME hardware through
the pci bus
Signed-off-by: Tomas Winkler <tomas.winkler@intel.com>
---
drivers/misc/mei/Kconfig | 5 ++---
drivers/misc/mei/Makefile | 6 ++++--
drivers/misc/mei/init.c | 7 +++++--
drivers/misc/mei/interrupt.c | 4 ++++
drivers/misc/mei/main.c | 4 ++++
5 files changed, 19 insertions(+), 7 deletions(-)
diff --git a/drivers/misc/mei/Kconfig b/drivers/misc/mei/Kconfig
index d21b4d0..c76fa31 100644
--- a/drivers/misc/mei/Kconfig
+++ b/drivers/misc/mei/Kconfig
@@ -10,10 +10,9 @@ config INTEL_MEI
<http://software.intel.com/en-us/manageability/>
config INTEL_MEI_ME
- bool "ME Enabled Intel Chipsets"
- depends on INTEL_MEI
+ tristate "ME Enabled Intel Chipsets"
+ select INTEL_MEI
depends on X86 && PCI && WATCHDOG_CORE
- default y
help
MEI support for ME Enabled Intel chipsets.
diff --git a/drivers/misc/mei/Makefile b/drivers/misc/mei/Makefile
index 040af6c..2c336d0 100644
--- a/drivers/misc/mei/Makefile
+++ b/drivers/misc/mei/Makefile
@@ -10,5 +10,7 @@ mei-objs += client.o
mei-objs += main.o
mei-objs += amthif.o
mei-objs += wd.o
-mei-$(CONFIG_INTEL_MEI_ME) += pci-me.o
-mei-$(CONFIG_INTEL_MEI_ME) += hw-me.o
+
+obj-$(CONFIG_INTEL_MEI_ME) += mei-me.o
+mei-me-objs := pci-me.o
+mei-me-objs += hw-me.o
diff --git a/drivers/misc/mei/init.c b/drivers/misc/mei/init.c
index b3f7c3e..c1c8d76 100644
--- a/drivers/misc/mei/init.c
+++ b/drivers/misc/mei/init.c
@@ -14,6 +14,7 @@
*
*/
+#include <linux/export.h>
#include <linux/pci.h>
#include <linux/sched.h>
#include <linux/wait.h>
@@ -67,6 +68,7 @@ void mei_device_init(struct mei_device *dev)
mei_io_list_init(&dev->amthif_rd_complete_list);
}
+EXPORT_SYMBOL_GPL(mei_device_init);
/**
* mei_start - initializes host and fw to start work.
@@ -136,6 +138,7 @@ err:
mutex_unlock(&dev->device_lock);
return -ENODEV;
}
+EXPORT_SYMBOL_GPL(mei_start);
/**
* mei_reset - resets host and fw.
@@ -203,6 +206,7 @@ void mei_reset(struct mei_device *dev, int interrupts_enabled)
/* remove all waiting requests */
mei_cl_all_write_clear(dev);
}
+EXPORT_SYMBOL_GPL(mei_reset);
void mei_stop(struct mei_device *dev)
{
@@ -222,9 +226,8 @@ void mei_stop(struct mei_device *dev)
flush_scheduled_work();
mei_watchdog_unregister(dev);
-
}
-
+EXPORT_SYMBOL_GPL(mei_stop);
diff --git a/drivers/misc/mei/interrupt.c b/drivers/misc/mei/interrupt.c
index 73fbce3..6ce45ef 100644
--- a/drivers/misc/mei/interrupt.c
+++ b/drivers/misc/mei/interrupt.c
@@ -15,6 +15,7 @@
*/
+#include <linux/export.h>
#include <linux/pci.h>
#include <linux/kthread.h>
#include <linux/interrupt.h>
@@ -78,6 +79,7 @@ void mei_irq_compl_handler(struct mei_device *dev, struct mei_cl_cb *compl_list)
mei_cl_complete_handler(cl, cb);
}
}
+EXPORT_SYMBOL_GPL(mei_irq_compl_handler);
/**
* _mei_irq_thread_state_ok - checks if mei header matches file private data
*
@@ -440,6 +442,7 @@ int mei_irq_read_handler(struct mei_device *dev,
end:
return ret;
}
+EXPORT_SYMBOL_GPL(mei_irq_read_handler);
/**
@@ -590,6 +593,7 @@ int mei_irq_write_handler(struct mei_device *dev, struct mei_cl_cb *cmpl_list)
}
return 0;
}
+EXPORT_SYMBOL_GPL(mei_irq_write_handler);
diff --git a/drivers/misc/mei/main.c b/drivers/misc/mei/main.c
index 903f809..27b3df2 100644
--- a/drivers/misc/mei/main.c
+++ b/drivers/misc/mei/main.c
@@ -758,12 +758,16 @@ int mei_register(struct device *dev)
mei_misc_device.parent = dev;
return misc_register(&mei_misc_device);
}
+EXPORT_SYMBOL_GPL(mei_register);
void mei_deregister(void)
{
misc_deregister(&mei_misc_device);
mei_misc_device.parent = NULL;
}
+EXPORT_SYMBOL_GPL(mei_deregister);
+MODULE_AUTHOR("Intel Corporation");
+MODULE_DESCRIPTION("Intel(R) Management Engine Interface");
MODULE_LICENSE("GPL v2");
--
1.7.11.7
^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2013-03-27 15:00 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2013-03-27 14:58 [char-misc-next 0/5] MEI: move mei-me to separate module Tomas Winkler
2013-03-27 14:58 ` [char-misc-next 1/5] mei: unregister watchdog from mei_stop function Tomas Winkler
2013-03-27 14:58 ` [char-misc-next 2/5] mei: ME structures should be initialized in mei_device_init Tomas Winkler
2013-03-27 14:58 ` [char-misc-next 3/5] mei: rename function mei_hw_init to mei_start Tomas Winkler
2013-03-27 14:58 ` [char-misc-next 4/5] mei: prefix me hardware specific functions with mei_me_ Tomas Winkler
2013-03-27 14:58 ` [char-misc-next 5/5] mei: move mei-me to separate module Tomas Winkler
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®