* [char-misc-next 0/5] mei: mei client bus api changes
@ 2016-10-19 13:33 Tomas Winkler
2016-10-19 13:33 ` [char-misc-next 1/5] mei: bus: add module_mei_cl_driver helper macro Tomas Winkler
` (4 more replies)
0 siblings, 5 replies; 7+ messages in thread
From: Tomas Winkler @ 2016-10-19 13:33 UTC (permalink / raw)
To: Greg Kroah-Hartman, Aloisio Almeida Jr, Samuel Ortiz,
Wim Van Sebroeck, Guenter Roeck
Cc: Alexander Usyskin, linux-kernel, linux-wireless, linux-watchdog,
Tomas Winkler
We are adding a helper module macro for removing boilerplate
code in driver registration, and removing redundant context
argument from the event callback.
The changes go over misc, nfc, and watchdog subtrees.
I believe it should be conflict free to merge it to the misc
tree.
Tomas Winkler (5):
mei: bus: add module_mei_cl_driver helper macro
watchdog: mei_wdt: use module_mei_cl_driver macro
nfc: mei: use module_mei_cl_driver macro
nfc: mei_phy: get phy from the driver data
mei: bus: remove rx callback context
drivers/misc/mei/bus.c | 6 ++----
drivers/nfc/mei_phy.c | 10 ++++++----
drivers/nfc/microread/mei.c | 23 +----------------------
drivers/nfc/pn544/mei.c | 23 +----------------------
drivers/watchdog/mei_wdt.c | 26 +++-----------------------
include/linux/mei_cl_bus.h | 19 +++++++++++++++----
6 files changed, 28 insertions(+), 79 deletions(-)
--
2.7.4
^ permalink raw reply [flat|nested] 7+ messages in thread
* [char-misc-next 1/5] mei: bus: add module_mei_cl_driver helper macro
2016-10-19 13:33 [char-misc-next 0/5] mei: mei client bus api changes Tomas Winkler
@ 2016-10-19 13:33 ` Tomas Winkler
2016-10-19 13:33 ` [char-misc-next 2/5] watchdog: mei_wdt: use module_mei_cl_driver macro Tomas Winkler
` (3 subsequent siblings)
4 siblings, 0 replies; 7+ messages in thread
From: Tomas Winkler @ 2016-10-19 13:33 UTC (permalink / raw)
To: Greg Kroah-Hartman, Aloisio Almeida Jr, Samuel Ortiz,
Wim Van Sebroeck, Guenter Roeck
Cc: Alexander Usyskin, linux-kernel, linux-wireless, linux-watchdog,
Tomas Winkler
Add module_mei_cl_driver helper macro for eliminating the boilerplate
code from mei_cl drivers registration. The macro is intended for
drivers which in their init/exit sections does only register/unregister
of a mei_cl driver.
Signed-off-by: Tomas Winkler <tomas.winkler@intel.com>
---
include/linux/mei_cl_bus.h | 13 +++++++++++++
1 file changed, 13 insertions(+)
diff --git a/include/linux/mei_cl_bus.h b/include/linux/mei_cl_bus.h
index e746919530f5..e6fbd98ea90e 100644
--- a/include/linux/mei_cl_bus.h
+++ b/include/linux/mei_cl_bus.h
@@ -74,6 +74,19 @@ int __mei_cldev_driver_register(struct mei_cl_driver *cldrv,
void mei_cldev_driver_unregister(struct mei_cl_driver *cldrv);
+/**
+ * module_mei_cl_driver - Helper macro for registering mei cl driver
+ *
+ * @__mei_cldrv mei_cl_driver structure
+ *
+ * Helper macro for mei cl drivers which do not do anything special in module
+ * init/exit, for eliminating a boilerplate code.
+ */
+#define module_mei_cl_driver(__mei_cldrv) \
+ module_driver(__mei_cldrv, \
+ mei_cldev_driver_register,\
+ mei_cldev_driver_unregister)
+
ssize_t mei_cldev_send(struct mei_cl_device *cldev, u8 *buf, size_t length);
ssize_t mei_cldev_recv(struct mei_cl_device *cldev, u8 *buf, size_t length);
--
2.7.4
^ permalink raw reply related [flat|nested] 7+ messages in thread
* [char-misc-next 2/5] watchdog: mei_wdt: use module_mei_cl_driver macro
2016-10-19 13:33 [char-misc-next 0/5] mei: mei client bus api changes Tomas Winkler
2016-10-19 13:33 ` [char-misc-next 1/5] mei: bus: add module_mei_cl_driver helper macro Tomas Winkler
@ 2016-10-19 13:33 ` Tomas Winkler
2016-10-20 1:49 ` Guenter Roeck
2016-10-19 13:33 ` [char-misc-next 3/5] nfc: mei: " Tomas Winkler
` (2 subsequent siblings)
4 siblings, 1 reply; 7+ messages in thread
From: Tomas Winkler @ 2016-10-19 13:33 UTC (permalink / raw)
To: Greg Kroah-Hartman, Aloisio Almeida Jr, Samuel Ortiz,
Wim Van Sebroeck, Guenter Roeck
Cc: Alexander Usyskin, linux-kernel, linux-wireless, linux-watchdog,
Tomas Winkler
Replace boilerplate driver registration with module_mei_cl_driver macro.
Signed-off-by: Tomas Winkler <tomas.winkler@intel.com>
---
drivers/watchdog/mei_wdt.c | 20 +-------------------
1 file changed, 1 insertion(+), 19 deletions(-)
diff --git a/drivers/watchdog/mei_wdt.c b/drivers/watchdog/mei_wdt.c
index 630bd189f167..116be477c8fd 100644
--- a/drivers/watchdog/mei_wdt.c
+++ b/drivers/watchdog/mei_wdt.c
@@ -699,25 +699,7 @@ static struct mei_cl_driver mei_wdt_driver = {
.remove = mei_wdt_remove,
};
-static int __init mei_wdt_init(void)
-{
- int ret;
-
- ret = mei_cldev_driver_register(&mei_wdt_driver);
- if (ret) {
- pr_err(KBUILD_MODNAME ": module registration failed\n");
- return ret;
- }
- return 0;
-}
-
-static void __exit mei_wdt_exit(void)
-{
- mei_cldev_driver_unregister(&mei_wdt_driver);
-}
-
-module_init(mei_wdt_init);
-module_exit(mei_wdt_exit);
+module_mei_cl_driver(mei_wdt_driver);
MODULE_AUTHOR("Intel Corporation");
MODULE_LICENSE("GPL");
--
2.7.4
^ permalink raw reply related [flat|nested] 7+ messages in thread
* [char-misc-next 3/5] nfc: mei: use module_mei_cl_driver macro
2016-10-19 13:33 [char-misc-next 0/5] mei: mei client bus api changes Tomas Winkler
2016-10-19 13:33 ` [char-misc-next 1/5] mei: bus: add module_mei_cl_driver helper macro Tomas Winkler
2016-10-19 13:33 ` [char-misc-next 2/5] watchdog: mei_wdt: use module_mei_cl_driver macro Tomas Winkler
@ 2016-10-19 13:33 ` Tomas Winkler
2016-10-19 13:33 ` [char-misc-next 4/5] nfc: mei_phy: get phy from the driver data Tomas Winkler
2016-10-19 13:33 ` [char-misc-next 5/5] mei: bus: remove rx callback context Tomas Winkler
4 siblings, 0 replies; 7+ messages in thread
From: Tomas Winkler @ 2016-10-19 13:33 UTC (permalink / raw)
To: Greg Kroah-Hartman, Aloisio Almeida Jr, Samuel Ortiz,
Wim Van Sebroeck, Guenter Roeck
Cc: Alexander Usyskin, linux-kernel, linux-wireless, linux-watchdog,
Tomas Winkler
Replace boilerplate driver registration with module_mei_cl_driver
macro in pn544 and microread devices.
Signed-off-by: Tomas Winkler <tomas.winkler@intel.com>
---
drivers/nfc/microread/mei.c | 23 +----------------------
drivers/nfc/pn544/mei.c | 23 +----------------------
2 files changed, 2 insertions(+), 44 deletions(-)
diff --git a/drivers/nfc/microread/mei.c b/drivers/nfc/microread/mei.c
index 3092501f26c4..eb5eddf1794e 100644
--- a/drivers/nfc/microread/mei.c
+++ b/drivers/nfc/microread/mei.c
@@ -82,28 +82,7 @@ static struct mei_cl_driver microread_driver = {
.remove = microread_mei_remove,
};
-static int microread_mei_init(void)
-{
- int r;
-
- pr_debug(DRIVER_DESC ": %s\n", __func__);
-
- r = mei_cldev_driver_register(µread_driver);
- if (r) {
- pr_err(MICROREAD_DRIVER_NAME ": driver registration failed\n");
- return r;
- }
-
- return 0;
-}
-
-static void microread_mei_exit(void)
-{
- mei_cldev_driver_unregister(µread_driver);
-}
-
-module_init(microread_mei_init);
-module_exit(microread_mei_exit);
+module_mei_cl_driver(microread_driver);
MODULE_LICENSE("GPL");
MODULE_DESCRIPTION(DRIVER_DESC);
diff --git a/drivers/nfc/pn544/mei.c b/drivers/nfc/pn544/mei.c
index 46d0eb24eef9..ad57a8ec00d6 100644
--- a/drivers/nfc/pn544/mei.c
+++ b/drivers/nfc/pn544/mei.c
@@ -82,28 +82,7 @@ static struct mei_cl_driver pn544_driver = {
.remove = pn544_mei_remove,
};
-static int pn544_mei_init(void)
-{
- int r;
-
- pr_debug(DRIVER_DESC ": %s\n", __func__);
-
- r = mei_cldev_driver_register(&pn544_driver);
- if (r) {
- pr_err(PN544_DRIVER_NAME ": driver registration failed\n");
- return r;
- }
-
- return 0;
-}
-
-static void pn544_mei_exit(void)
-{
- mei_cldev_driver_unregister(&pn544_driver);
-}
-
-module_init(pn544_mei_init);
-module_exit(pn544_mei_exit);
+module_mei_cl_driver(pn544_driver);
MODULE_LICENSE("GPL");
MODULE_DESCRIPTION(DRIVER_DESC);
--
2.7.4
^ permalink raw reply related [flat|nested] 7+ messages in thread
* [char-misc-next 4/5] nfc: mei_phy: get phy from the driver data
2016-10-19 13:33 [char-misc-next 0/5] mei: mei client bus api changes Tomas Winkler
` (2 preceding siblings ...)
2016-10-19 13:33 ` [char-misc-next 3/5] nfc: mei: " Tomas Winkler
@ 2016-10-19 13:33 ` Tomas Winkler
2016-10-19 13:33 ` [char-misc-next 5/5] mei: bus: remove rx callback context Tomas Winkler
4 siblings, 0 replies; 7+ messages in thread
From: Tomas Winkler @ 2016-10-19 13:33 UTC (permalink / raw)
To: Greg Kroah-Hartman, Aloisio Almeida Jr, Samuel Ortiz,
Wim Van Sebroeck, Guenter Roeck
Cc: Alexander Usyskin, linux-kernel, linux-wireless, linux-watchdog,
Tomas Winkler
In order to remove rather redundant context from the callback
signature we the get nfc mei_phy from the driver's data.
Signed-off-by: Tomas Winkler <tomas.winkler@intel.com>
---
drivers/nfc/mei_phy.c | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/drivers/nfc/mei_phy.c b/drivers/nfc/mei_phy.c
index 83deda4bb4d6..66dfd81ffb18 100644
--- a/drivers/nfc/mei_phy.c
+++ b/drivers/nfc/mei_phy.c
@@ -300,7 +300,10 @@ static int mei_nfc_recv(struct nfc_mei_phy *phy, u8 *buf, size_t length)
static void nfc_mei_event_cb(struct mei_cl_device *cldev, u32 events,
void *context)
{
- struct nfc_mei_phy *phy = context;
+ struct nfc_mei_phy *phy = mei_cldev_get_drvdata(cldev);
+
+ if (!phy)
+ return;
if (phy->hard_fault != 0)
return;
--
2.7.4
^ permalink raw reply related [flat|nested] 7+ messages in thread
* [char-misc-next 5/5] mei: bus: remove rx callback context
2016-10-19 13:33 [char-misc-next 0/5] mei: mei client bus api changes Tomas Winkler
` (3 preceding siblings ...)
2016-10-19 13:33 ` [char-misc-next 4/5] nfc: mei_phy: get phy from the driver data Tomas Winkler
@ 2016-10-19 13:33 ` Tomas Winkler
4 siblings, 0 replies; 7+ messages in thread
From: Tomas Winkler @ 2016-10-19 13:33 UTC (permalink / raw)
To: Greg Kroah-Hartman, Aloisio Almeida Jr, Samuel Ortiz,
Wim Van Sebroeck, Guenter Roeck
Cc: Alexander Usyskin, linux-kernel, linux-wireless, linux-watchdog,
Tomas Winkler
The callback context is redunant as all the information can be
retrived from the device struture of its private data.
Signed-off-by: Tomas Winkler <tomas.winkler@intel.com>
---
drivers/misc/mei/bus.c | 6 ++----
drivers/nfc/mei_phy.c | 5 ++---
drivers/watchdog/mei_wdt.c | 6 ++----
include/linux/mei_cl_bus.h | 6 ++----
4 files changed, 8 insertions(+), 15 deletions(-)
diff --git a/drivers/misc/mei/bus.c b/drivers/misc/mei/bus.c
index 8cac7ef9ad0d..89a694ca624c 100644
--- a/drivers/misc/mei/bus.c
+++ b/drivers/misc/mei/bus.c
@@ -228,7 +228,7 @@ static void mei_cl_bus_event_work(struct work_struct *work)
bus = cldev->bus;
if (cldev->event_cb)
- cldev->event_cb(cldev, cldev->events, cldev->event_context);
+ cldev->event_cb(cldev, cldev->events);
cldev->events = 0;
@@ -301,7 +301,6 @@ bool mei_cl_bus_rx_event(struct mei_cl *cl)
* @cldev: me client devices
* @event_cb: callback function
* @events_mask: requested events bitmask
- * @context: driver context data
*
* Return: 0 on success
* -EALREADY if an callback is already registered
@@ -309,7 +308,7 @@ bool mei_cl_bus_rx_event(struct mei_cl *cl)
*/
int mei_cldev_register_event_cb(struct mei_cl_device *cldev,
unsigned long events_mask,
- mei_cldev_event_cb_t event_cb, void *context)
+ mei_cldev_event_cb_t event_cb)
{
struct mei_device *bus = cldev->bus;
int ret;
@@ -320,7 +319,6 @@ int mei_cldev_register_event_cb(struct mei_cl_device *cldev,
cldev->events = 0;
cldev->events_mask = events_mask;
cldev->event_cb = event_cb;
- cldev->event_context = context;
INIT_WORK(&cldev->event_work, mei_cl_bus_event_work);
if (cldev->events_mask & BIT(MEI_CL_EVENT_RX)) {
diff --git a/drivers/nfc/mei_phy.c b/drivers/nfc/mei_phy.c
index 66dfd81ffb18..07b4239585fa 100644
--- a/drivers/nfc/mei_phy.c
+++ b/drivers/nfc/mei_phy.c
@@ -297,8 +297,7 @@ static int mei_nfc_recv(struct nfc_mei_phy *phy, u8 *buf, size_t length)
}
-static void nfc_mei_event_cb(struct mei_cl_device *cldev, u32 events,
- void *context)
+static void nfc_mei_event_cb(struct mei_cl_device *cldev, u32 events)
{
struct nfc_mei_phy *phy = mei_cldev_get_drvdata(cldev);
@@ -360,7 +359,7 @@ static int nfc_mei_phy_enable(void *phy_id)
}
r = mei_cldev_register_event_cb(phy->cldev, BIT(MEI_CL_EVENT_RX),
- nfc_mei_event_cb, phy);
+ nfc_mei_event_cb);
if (r) {
pr_err("Event cb registration failed %d\n", r);
goto err;
diff --git a/drivers/watchdog/mei_wdt.c b/drivers/watchdog/mei_wdt.c
index 116be477c8fd..e0af52265511 100644
--- a/drivers/watchdog/mei_wdt.c
+++ b/drivers/watchdog/mei_wdt.c
@@ -501,10 +501,8 @@ static void mei_wdt_notify_event(struct mei_cl_device *cldev)
*
* @cldev: bus device
* @events: event mask
- * @context: callback context
*/
-static void mei_wdt_event(struct mei_cl_device *cldev,
- u32 events, void *context)
+static void mei_wdt_event(struct mei_cl_device *cldev, u32 events)
{
if (events & BIT(MEI_CL_EVENT_RX))
mei_wdt_event_rx(cldev);
@@ -626,7 +624,7 @@ static int mei_wdt_probe(struct mei_cl_device *cldev,
ret = mei_cldev_register_event_cb(wdt->cldev,
BIT(MEI_CL_EVENT_RX) |
BIT(MEI_CL_EVENT_NOTIF),
- mei_wdt_event, NULL);
+ mei_wdt_event);
/* on legacy devices notification is not supported
* this doesn't fail the registration for RX event
diff --git a/include/linux/mei_cl_bus.h b/include/linux/mei_cl_bus.h
index e6fbd98ea90e..4adb2e7c9f84 100644
--- a/include/linux/mei_cl_bus.h
+++ b/include/linux/mei_cl_bus.h
@@ -9,7 +9,7 @@ struct mei_cl_device;
struct mei_device;
typedef void (*mei_cldev_event_cb_t)(struct mei_cl_device *cldev,
- u32 events, void *context);
+ u32 events);
/**
* struct mei_cl_device - MEI device handle
@@ -27,7 +27,6 @@ typedef void (*mei_cldev_event_cb_t)(struct mei_cl_device *cldev,
* @event_work: async work to execute event callback
* @event_cb: Drivers register this callback to get asynchronous ME
* events (e.g. Rx buffer pending) notifications.
- * @event_context: event callback run context
* @events_mask: Events bit mask requested by driver.
* @events: Events bitmask sent to the driver.
*
@@ -46,7 +45,6 @@ struct mei_cl_device {
struct work_struct event_work;
mei_cldev_event_cb_t event_cb;
- void *event_context;
unsigned long events_mask;
unsigned long events;
@@ -92,7 +90,7 @@ ssize_t mei_cldev_recv(struct mei_cl_device *cldev, u8 *buf, size_t length);
int mei_cldev_register_event_cb(struct mei_cl_device *cldev,
unsigned long event_mask,
- mei_cldev_event_cb_t read_cb, void *context);
+ mei_cldev_event_cb_t read_cb);
#define MEI_CL_EVENT_RX 0
#define MEI_CL_EVENT_TX 1
--
2.7.4
^ permalink raw reply related [flat|nested] 7+ messages in thread
* Re: [char-misc-next 2/5] watchdog: mei_wdt: use module_mei_cl_driver macro
2016-10-19 13:33 ` [char-misc-next 2/5] watchdog: mei_wdt: use module_mei_cl_driver macro Tomas Winkler
@ 2016-10-20 1:49 ` Guenter Roeck
0 siblings, 0 replies; 7+ messages in thread
From: Guenter Roeck @ 2016-10-20 1:49 UTC (permalink / raw)
To: Tomas Winkler, Greg Kroah-Hartman, Aloisio Almeida Jr,
Samuel Ortiz, Wim Van Sebroeck
Cc: Alexander Usyskin, linux-kernel, linux-wireless, linux-watchdog
On 10/19/2016 06:33 AM, Tomas Winkler wrote:
> Replace boilerplate driver registration with module_mei_cl_driver macro.
>
> Signed-off-by: Tomas Winkler <tomas.winkler@intel.com>
Acked-by: Guenter Roeck <linux@roeck-us.net>
> ---
> drivers/watchdog/mei_wdt.c | 20 +-------------------
> 1 file changed, 1 insertion(+), 19 deletions(-)
>
> diff --git a/drivers/watchdog/mei_wdt.c b/drivers/watchdog/mei_wdt.c
> index 630bd189f167..116be477c8fd 100644
> --- a/drivers/watchdog/mei_wdt.c
> +++ b/drivers/watchdog/mei_wdt.c
> @@ -699,25 +699,7 @@ static struct mei_cl_driver mei_wdt_driver = {
> .remove = mei_wdt_remove,
> };
>
> -static int __init mei_wdt_init(void)
> -{
> - int ret;
> -
> - ret = mei_cldev_driver_register(&mei_wdt_driver);
> - if (ret) {
> - pr_err(KBUILD_MODNAME ": module registration failed\n");
> - return ret;
> - }
> - return 0;
> -}
> -
> -static void __exit mei_wdt_exit(void)
> -{
> - mei_cldev_driver_unregister(&mei_wdt_driver);
> -}
> -
> -module_init(mei_wdt_init);
> -module_exit(mei_wdt_exit);
> +module_mei_cl_driver(mei_wdt_driver);
>
> MODULE_AUTHOR("Intel Corporation");
> MODULE_LICENSE("GPL");
>
^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2016-10-20 1:49 UTC | newest]
Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2016-10-19 13:33 [char-misc-next 0/5] mei: mei client bus api changes Tomas Winkler
2016-10-19 13:33 ` [char-misc-next 1/5] mei: bus: add module_mei_cl_driver helper macro Tomas Winkler
2016-10-19 13:33 ` [char-misc-next 2/5] watchdog: mei_wdt: use module_mei_cl_driver macro Tomas Winkler
2016-10-20 1:49 ` Guenter Roeck
2016-10-19 13:33 ` [char-misc-next 3/5] nfc: mei: " Tomas Winkler
2016-10-19 13:33 ` [char-misc-next 4/5] nfc: mei_phy: get phy from the driver data Tomas Winkler
2016-10-19 13:33 ` [char-misc-next 5/5] mei: bus: remove rx callback context Tomas Winkler
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).