All of lore.kernel.org
 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 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.