public inbox for linux-media@vger.kernel.org
 help / color / mirror / Atom feed
* [PATCH] cec: fix Kconfig dependency problems
@ 2016-07-01 10:37 Hans Verkuil
  2016-07-01 10:55 ` Arnd Bergmann
  2016-07-01 14:33 ` Arnd Bergmann
  0 siblings, 2 replies; 3+ messages in thread
From: Hans Verkuil @ 2016-07-01 10:37 UTC (permalink / raw)
  To: Linux Media Mailing List; +Cc: Arnd Bergmann

- Use IS_REACHABLE(RC_CORE) instead of IS_ENABLED: if cec is built-in and
  RC_CORE is a module, then CEC can't reach the RC symbols.
- Both cec and cec-edid should be bool and use the same build 'mode' as
  MEDIA_SUPPORT (just as is done for the media controller code).
- Add a note to staging that this should be changed once the cec framework
  is moved out of staging.

Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com>
Reported-by: Arnd Bergmann <arnd@arndb.de>
---
 drivers/media/Kconfig                |  2 +-
 drivers/media/Makefile               |  4 +++-
 drivers/staging/media/cec/Kconfig    |  2 +-
 drivers/staging/media/cec/Makefile   |  4 +++-
 drivers/staging/media/cec/TODO       |  5 +++++
 drivers/staging/media/cec/cec-adap.c |  4 ++--
 drivers/staging/media/cec/cec-core.c | 10 +++++-----
 7 files changed, 20 insertions(+), 11 deletions(-)

diff --git a/drivers/media/Kconfig b/drivers/media/Kconfig
index 052dcf7..962f2a9 100644
--- a/drivers/media/Kconfig
+++ b/drivers/media/Kconfig
@@ -81,7 +81,7 @@ config MEDIA_RC_SUPPORT
 	  Say Y when you have a TV or an IR device.

 config MEDIA_CEC_EDID
-	tristate
+	bool

 #
 # Media controller
diff --git a/drivers/media/Makefile b/drivers/media/Makefile
index b56f013..081a786 100644
--- a/drivers/media/Makefile
+++ b/drivers/media/Makefile
@@ -2,7 +2,9 @@
 # Makefile for the kernel multimedia device drivers.
 #

-obj-$(CONFIG_MEDIA_CEC_EDID) += cec-edid.o
+ifeq ($(CONFIG_MEDIA_CEC_EDID),y)
+  obj-$(CONFIG_MEDIA_SUPPORT) += cec-edid.o
+endif

 media-objs	:= media-device.o media-devnode.o media-entity.o

diff --git a/drivers/staging/media/cec/Kconfig b/drivers/staging/media/cec/Kconfig
index cd52359..21457a1 100644
--- a/drivers/staging/media/cec/Kconfig
+++ b/drivers/staging/media/cec/Kconfig
@@ -1,5 +1,5 @@
 config MEDIA_CEC
-	tristate "CEC API (EXPERIMENTAL)"
+	bool "CEC API (EXPERIMENTAL)"
 	depends on MEDIA_SUPPORT
 	select MEDIA_CEC_EDID
 	---help---
diff --git a/drivers/staging/media/cec/Makefile b/drivers/staging/media/cec/Makefile
index 426ef73..bd7f3c5 100644
--- a/drivers/staging/media/cec/Makefile
+++ b/drivers/staging/media/cec/Makefile
@@ -1,3 +1,5 @@
 cec-objs := cec-core.o cec-adap.o cec-api.o

-obj-$(CONFIG_MEDIA_CEC) += cec.o
+ifeq ($(CONFIG_MEDIA_CEC),y)
+  obj-$(CONFIG_MEDIA_SUPPORT) += cec.o
+endif
diff --git a/drivers/staging/media/cec/TODO b/drivers/staging/media/cec/TODO
index a8f4b7d..8221d44 100644
--- a/drivers/staging/media/cec/TODO
+++ b/drivers/staging/media/cec/TODO
@@ -23,5 +23,10 @@ Other TODOs:
   And also TYPE_SWITCH and TYPE_CDC_ONLY in addition to the TYPE_UNREGISTERED?
   This should give the framework more information about the device type
   since SPECIFIC and UNREGISTERED give no useful information.
+- Once this is out of staging this should no longer be a separate
+  config option, instead it should be selected by drivers that want it.
+- Revisit the IS_REACHABLE(RC_CORE): perhaps the RC_CORE support should
+  be enabled through a separate config option in drivers/media/Kconfig
+  or rc/Kconfig?

 Hans Verkuil <hans.verkuil@cisco.com>
diff --git a/drivers/staging/media/cec/cec-adap.c b/drivers/staging/media/cec/cec-adap.c
index 307af43..7df6187 100644
--- a/drivers/staging/media/cec/cec-adap.c
+++ b/drivers/staging/media/cec/cec-adap.c
@@ -1456,7 +1456,7 @@ static int cec_receive_notify(struct cec_adapter *adap, struct cec_msg *msg,
 		if (!(adap->capabilities & CEC_CAP_RC))
 			break;

-#if IS_ENABLED(CONFIG_RC_CORE)
+#if IS_REACHABLE(CONFIG_RC_CORE)
 		switch (msg->msg[2]) {
 		/*
 		 * Play function, this message can have variable length
@@ -1492,7 +1492,7 @@ static int cec_receive_notify(struct cec_adapter *adap, struct cec_msg *msg,
 	case CEC_MSG_USER_CONTROL_RELEASED:
 		if (!(adap->capabilities & CEC_CAP_RC))
 			break;
-#if IS_ENABLED(CONFIG_RC_CORE)
+#if IS_REACHABLE(CONFIG_RC_CORE)
 		rc_keyup(adap->rc);
 #endif
 		break;
diff --git a/drivers/staging/media/cec/cec-core.c b/drivers/staging/media/cec/cec-core.c
index 61a1e69..112a5fa 100644
--- a/drivers/staging/media/cec/cec-core.c
+++ b/drivers/staging/media/cec/cec-core.c
@@ -239,7 +239,7 @@ struct cec_adapter *cec_allocate_adapter(const struct cec_adap_ops *ops,
 	if (!(caps & CEC_CAP_RC))
 		return adap;

-#if IS_ENABLED(CONFIG_RC_CORE)
+#if IS_REACHABLE(CONFIG_RC_CORE)
 	/* Prepare the RC input device */
 	adap->rc = rc_allocate_device();
 	if (!adap->rc) {
@@ -282,7 +282,7 @@ int cec_register_adapter(struct cec_adapter *adap)
 	if (IS_ERR_OR_NULL(adap))
 		return 0;

-#if IS_ENABLED(CONFIG_RC_CORE)
+#if IS_REACHABLE(CONFIG_RC_CORE)
 	if (adap->capabilities & CEC_CAP_RC) {
 		res = rc_register_device(adap->rc);

@@ -298,7 +298,7 @@ int cec_register_adapter(struct cec_adapter *adap)

 	res = cec_devnode_register(&adap->devnode, adap->owner);
 	if (res) {
-#if IS_ENABLED(CONFIG_RC_CORE)
+#if IS_REACHABLE(CONFIG_RC_CORE)
 		/* Note: rc_unregister also calls rc_free */
 		rc_unregister_device(adap->rc);
 		adap->rc = NULL;
@@ -333,7 +333,7 @@ void cec_unregister_adapter(struct cec_adapter *adap)
 	if (IS_ERR_OR_NULL(adap))
 		return;

-#if IS_ENABLED(CONFIG_RC_CORE)
+#if IS_REACHABLE(CONFIG_RC_CORE)
 	/* Note: rc_unregister also calls rc_free */
 	rc_unregister_device(adap->rc);
 	adap->rc = NULL;
@@ -353,7 +353,7 @@ void cec_delete_adapter(struct cec_adapter *adap)
 	kthread_stop(adap->kthread);
 	if (adap->kthread_config)
 		kthread_stop(adap->kthread_config);
-#if IS_ENABLED(CONFIG_RC_CORE)
+#if IS_REACHABLE(CONFIG_RC_CORE)
 	if (adap->rc)
 		rc_free_device(adap->rc);
 #endif
-- 
2.8.1


^ permalink raw reply related	[flat|nested] 3+ messages in thread

* Re: [PATCH] cec: fix Kconfig dependency problems
  2016-07-01 10:37 [PATCH] cec: fix Kconfig dependency problems Hans Verkuil
@ 2016-07-01 10:55 ` Arnd Bergmann
  2016-07-01 14:33 ` Arnd Bergmann
  1 sibling, 0 replies; 3+ messages in thread
From: Arnd Bergmann @ 2016-07-01 10:55 UTC (permalink / raw)
  To: Hans Verkuil; +Cc: Linux Media Mailing List

On Friday, July 1, 2016 12:37:06 PM CEST Hans Verkuil wrote:
> - Use IS_REACHABLE(RC_CORE) instead of IS_ENABLED: if cec is built-in and
>   RC_CORE is a module, then CEC can't reach the RC symbols.
> - Both cec and cec-edid should be bool and use the same build 'mode' as
>   MEDIA_SUPPORT (just as is done for the media controller code).
> - Add a note to staging that this should be changed once the cec framework
>   is moved out of staging.
> 
> Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com>
> Reported-by: Arnd Bergmann <arnd@arndb.de>

This looks ok, but I'll give it some more randconfig build testing and will
try to report back later today. If you don't hear from me, it's probably
ok.

There is still another issue with the header, I'll send a patch for it
since I've already done one.

	Arnd

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [PATCH] cec: fix Kconfig dependency problems
  2016-07-01 10:37 [PATCH] cec: fix Kconfig dependency problems Hans Verkuil
  2016-07-01 10:55 ` Arnd Bergmann
@ 2016-07-01 14:33 ` Arnd Bergmann
  1 sibling, 0 replies; 3+ messages in thread
From: Arnd Bergmann @ 2016-07-01 14:33 UTC (permalink / raw)
  To: Hans Verkuil; +Cc: Linux Media Mailing List

On Friday, July 1, 2016 12:37:06 PM CEST Hans Verkuil wrote:
> - Use IS_REACHABLE(RC_CORE) instead of IS_ENABLED: if cec is built-in and
>   RC_CORE is a module, then CEC can't reach the RC symbols.
> - Both cec and cec-edid should be bool and use the same build 'mode' as
>   MEDIA_SUPPORT (just as is done for the media controller code).
> - Add a note to staging that this should be changed once the cec framework
>   is moved out of staging.
> 
> Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com>
> Reported-by: Arnd Bergmann <arnd@arndb.de>
> 

I see no further build failures with this and my "[media] cec:
add missing inline stubs" patch applied.

	ARnd

^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2016-07-01 14:30 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2016-07-01 10:37 [PATCH] cec: fix Kconfig dependency problems Hans Verkuil
2016-07-01 10:55 ` Arnd Bergmann
2016-07-01 14:33 ` Arnd Bergmann

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox