linux-wireless.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [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(&microread_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(&microread_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).