Re: [PATCH v2] [media] of: move graph helpers from drivers/media/v4l2-core to drivers/media

2014-02-12 Thread Philipp Zabel
Hi Mauro,

Am Mittwoch, den 12.02.2014, 06:53 +0900 schrieb Mauro Carvalho Chehab:
[...]
  diff --git a/include/media/of_graph.h b/include/media/of_graph.h
  new file mode 100644
  index 000..3bbeb60
  --- /dev/null
  +++ b/include/media/of_graph.h
  @@ -0,0 +1,46 @@
  +/*
  + * OF graph binding parsing helpers
  + *
  + * Copyright (C) 2012 - 2013 Samsung Electronics Co., Ltd.
  + * Author: Sylwester Nawrocki s.nawro...@samsung.com
  + *
  + * Copyright (C) 2012 Renesas Electronics Corp.
  + * Author: Guennadi Liakhovetski g.liakhovet...@gmx.de
  + *
  + * This program is free software; you can redistribute it and/or modify
  + * it under the terms of version 2 of the GNU General Public License as
  + * published by the Free Software Foundation.
  + */
  +#ifndef __LINUX_OF_GRAPH_H
  +#define __LINUX_OF_GRAPH_H
  +
  +#ifdef CONFIG_OF
 
 As a matter of consistency, it would be better to test here for
 CONFIG_OF_GRAPH instead, to reflect the same symbol that enables such
 functions as used on Kconfig/Makefile.

Maybe I'm trying to be too clever for my own good, but my reasoning was
as follows:

Suppose I newly use the of_graph_ helpers in a subsystem that does not
yet select OF_GRAPH. In that case I'd rather get linking errors earlier
rather than stubbed out functions that silently fail to parse the DT
later.

Since there is
config VIDEO_DEV
select OF_GRAPH if OF
already and the same should be added for other users of device tree
graphs, I think stubbing out the functions only if OF is disabled should
be enough.

regards
Philipp

--
To unsubscribe from this list: send the line unsubscribe linux-media in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH v2] [media] of: move graph helpers from drivers/media/v4l2-core to drivers/media

2014-02-12 Thread Mauro Carvalho Chehab
Em Wed, 12 Feb 2014 10:11:54 +0100
Philipp Zabel p.za...@pengutronix.de escreveu:

 Hi Mauro,
 
 Am Mittwoch, den 12.02.2014, 06:53 +0900 schrieb Mauro Carvalho Chehab:
 [...]
   diff --git a/include/media/of_graph.h b/include/media/of_graph.h
   new file mode 100644
   index 000..3bbeb60
   --- /dev/null
   +++ b/include/media/of_graph.h
   @@ -0,0 +1,46 @@
   +/*
   + * OF graph binding parsing helpers
   + *
   + * Copyright (C) 2012 - 2013 Samsung Electronics Co., Ltd.
   + * Author: Sylwester Nawrocki s.nawro...@samsung.com
   + *
   + * Copyright (C) 2012 Renesas Electronics Corp.
   + * Author: Guennadi Liakhovetski g.liakhovet...@gmx.de
   + *
   + * This program is free software; you can redistribute it and/or modify
   + * it under the terms of version 2 of the GNU General Public License as
   + * published by the Free Software Foundation.
   + */
   +#ifndef __LINUX_OF_GRAPH_H
   +#define __LINUX_OF_GRAPH_H
   +
   +#ifdef CONFIG_OF
  
  As a matter of consistency, it would be better to test here for
  CONFIG_OF_GRAPH instead, to reflect the same symbol that enables such
  functions as used on Kconfig/Makefile.
 
 Maybe I'm trying to be too clever for my own good, but my reasoning was
 as follows:
 
 Suppose I newly use the of_graph_ helpers in a subsystem that does not
 yet select OF_GRAPH. In that case I'd rather get linking errors earlier
 rather than stubbed out functions that silently fail to parse the DT
 later.

I see your point, but, imagining that someone pushed a patch using those
symbols upstream, that would break compilation and git bisection, with 
will hurt everyone, and not only the very few of us that would actually
need the OF_GRAPH symbol for an specific driver.

Also, such push would mean that someone forgot to do his homework and
to test if the committed functionality is actually working.

So, it seems more fair that the one that did the mistake will be the one
that will suffer the consequences for his errors instead of applying a
penalty to everybody's else ;)

 Since there is
 config VIDEO_DEV
   select OF_GRAPH if OF
 already and the same should be added for other users of device tree
 graphs, I think stubbing out the functions only if OF is disabled should
 be enough.

Well, if you want to be sure that the graph will always be there if OF, then
you could do, instead:

config OF_GRAPH
bool
default OF

(that would actually make OF_GRAPH just an alias to OF - so we could just
use OF instead).

In any case, I think that we should use the same config name at Makefile, 
Kconfig and of_graph.h (either OF_GRAPH or just OF).

Regards,
Mauro
--
To unsubscribe from this list: send the line unsubscribe linux-media in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH v2] [media] of: move graph helpers from drivers/media/v4l2-core to drivers/media

2014-02-12 Thread Philipp Zabel
Hi Mauro,

Am Mittwoch, den 12.02.2014, 22:35 +0900 schrieb Mauro Carvalho Chehab:
 Em Wed, 12 Feb 2014 10:11:54 +0100
 Philipp Zabel p.za...@pengutronix.de escreveu:
 
  Hi Mauro,
  
  Am Mittwoch, den 12.02.2014, 06:53 +0900 schrieb Mauro Carvalho Chehab:
  [...]
diff --git a/include/media/of_graph.h b/include/media/of_graph.h
new file mode 100644
index 000..3bbeb60
--- /dev/null
+++ b/include/media/of_graph.h
@@ -0,0 +1,46 @@
+/*
+ * OF graph binding parsing helpers
+ *
+ * Copyright (C) 2012 - 2013 Samsung Electronics Co., Ltd.
+ * Author: Sylwester Nawrocki s.nawro...@samsung.com
+ *
+ * Copyright (C) 2012 Renesas Electronics Corp.
+ * Author: Guennadi Liakhovetski g.liakhovet...@gmx.de
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of version 2 of the GNU General Public License as
+ * published by the Free Software Foundation.
+ */
+#ifndef __LINUX_OF_GRAPH_H
+#define __LINUX_OF_GRAPH_H
+
+#ifdef CONFIG_OF
   
   As a matter of consistency, it would be better to test here for
   CONFIG_OF_GRAPH instead, to reflect the same symbol that enables such
   functions as used on Kconfig/Makefile.
  
  Maybe I'm trying to be too clever for my own good, but my reasoning was
  as follows:
  
  Suppose I newly use the of_graph_ helpers in a subsystem that does not
  yet select OF_GRAPH. In that case I'd rather get linking errors earlier
  rather than stubbed out functions that silently fail to parse the DT
  later.
 
 I see your point, but, imagining that someone pushed a patch using those
 symbols upstream, that would break compilation and git bisection, with 
 will hurt everyone, and not only the very few of us that would actually
 need the OF_GRAPH symbol for an specific driver.
 
 Also, such push would mean that someone forgot to do his homework and
 to test if the committed functionality is actually working.
 
 So, it seems more fair that the one that did the mistake will be the one
 that will suffer the consequences for his errors instead of applying a
 penalty to everybody's else ;)

point taken.

  Since there is
  config VIDEO_DEV
  select OF_GRAPH if OF
  already and the same should be added for other users of device tree
  graphs, I think stubbing out the functions only if OF is disabled should
  be enough.
 
 Well, if you want to be sure that the graph will always be there if OF, then
 you could do, instead:
 
 config OF_GRAPH
   bool
   default OF
 
 (that would actually make OF_GRAPH just an alias to OF - so we could just
 use OF instead).
 
 In any case, I think that we should use the same config name at Makefile, 
 Kconfig and of_graph.h (either OF_GRAPH or just OF).

If nobody states a strong preference, I'll just get rid of the
CONFIG_OF_GRAPH option altogether and use CONFIG_OF directly.

regards
Philipp

--
To unsubscribe from this list: send the line unsubscribe linux-media in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[PATCH v2] [media] of: move graph helpers from drivers/media/v4l2-core to drivers/media

2014-02-11 Thread Philipp Zabel
From: Philipp Zabel philipp.za...@gmail.com

This patch moves the parsing helpers used to parse connected graphs
in the device tree, like the video interface bindings documented in
Documentation/devicetree/bindings/media/video-interfaces.txt, from
drivers/media/v4l2-core to drivers/media.

This allows to reuse the same parser code from outside the V4L2
framework, most importantly from display drivers.
The functions v4l2_of_get_next_endpoint, v4l2_of_get_remote_port,
and v4l2_of_get_remote_port_parent are moved. They are renamed to
of_graph_get_next_endpoint, of_graph_get_remote_port, and
of_graph_get_remote_port_parent, respectively.
Since there are not that many current users, switch all of them
to the new functions right away.

Signed-off-by: Philipp Zabel p.za...@pengutronix.de
Acked-by: Mauro Carvalho Chehab m.che...@samsung.com
Acked-by: Guennadi Liakhovetski g.liakhovet...@gmx.de
---
Changes since v1:
 - Moved to drivers/media instead of drives/of
 - Removed v4l2_of_get_ functions and changed all users in one step
 - Keep providing stubs for !OF case
---
 drivers/media/Kconfig |   4 +
 drivers/media/Makefile|   2 +
 drivers/media/i2c/adv7343.c   |   4 +-
 drivers/media/i2c/mt9p031.c   |   4 +-
 drivers/media/i2c/s5k5baf.c   |   3 +-
 drivers/media/i2c/tvp514x.c   |   3 +-
 drivers/media/i2c/tvp7002.c   |   3 +-
 drivers/media/of_graph.c  | 133 ++
 drivers/media/platform/exynos4-is/fimc-is.c   |   6 +-
 drivers/media/platform/exynos4-is/media-dev.c |   3 +-
 drivers/media/platform/exynos4-is/mipi-csis.c |   3 +-
 drivers/media/v4l2-core/v4l2-of.c | 117 --
 include/media/of_graph.h  |  46 +
 include/media/v4l2-of.h   |  24 -
 14 files changed, 202 insertions(+), 153 deletions(-)
 create mode 100644 drivers/media/of_graph.c
 create mode 100644 include/media/of_graph.h

diff --git a/drivers/media/Kconfig b/drivers/media/Kconfig
index 1d0758a..7681026 100644
--- a/drivers/media/Kconfig
+++ b/drivers/media/Kconfig
@@ -96,6 +96,7 @@ config VIDEO_DEV
tristate
depends on MEDIA_SUPPORT
depends on MEDIA_CAMERA_SUPPORT || MEDIA_ANALOG_TV_SUPPORT || 
MEDIA_RADIO_SUPPORT
+   select OF_GRAPH if OF
default y
 
 config VIDEO_V4L2_SUBDEV_API
@@ -203,3 +204,6 @@ source drivers/media/tuners/Kconfig
 source drivers/media/dvb-frontends/Kconfig
 
 endif # MEDIA_SUPPORT
+
+config OF_GRAPH
+bool
diff --git a/drivers/media/Makefile b/drivers/media/Makefile
index 620f275..ff980bd 100644
--- a/drivers/media/Makefile
+++ b/drivers/media/Makefile
@@ -18,6 +18,8 @@ ifeq ($(CONFIG_MEDIA_CONTROLLER),y)
   obj-$(CONFIG_MEDIA_SUPPORT) += media.o
 endif
 
+obj-$(CONFIG_OF_GRAPH)  += of_graph.o
+
 obj-$(CONFIG_VIDEO_DEV) += v4l2-core/
 obj-$(CONFIG_DVB_CORE)  += dvb-core/
 
diff --git a/drivers/media/i2c/adv7343.c b/drivers/media/i2c/adv7343.c
index d4e15a6..74a1507 100644
--- a/drivers/media/i2c/adv7343.c
+++ b/drivers/media/i2c/adv7343.c
@@ -28,10 +28,10 @@
 #include linux/of.h
 
 #include media/adv7343.h
+#include media/of_graph.h
 #include media/v4l2-async.h
 #include media/v4l2-device.h
 #include media/v4l2-ctrls.h
-#include media/v4l2-of.h
 
 #include adv7343_regs.h
 
@@ -410,7 +410,7 @@ adv7343_get_pdata(struct i2c_client *client)
if (!IS_ENABLED(CONFIG_OF) || !client-dev.of_node)
return client-dev.platform_data;
 
-   np = v4l2_of_get_next_endpoint(client-dev.of_node, NULL);
+   np = of_graph_get_next_endpoint(client-dev.of_node, NULL);
if (!np)
return NULL;
 
diff --git a/drivers/media/i2c/mt9p031.c b/drivers/media/i2c/mt9p031.c
index e5ddf47..60f36dc 100644
--- a/drivers/media/i2c/mt9p031.c
+++ b/drivers/media/i2c/mt9p031.c
@@ -27,9 +27,9 @@
 #include linux/videodev2.h
 
 #include media/mt9p031.h
+#include media/of_graph.h
 #include media/v4l2-ctrls.h
 #include media/v4l2-device.h
-#include media/v4l2-of.h
 #include media/v4l2-subdev.h
 
 #include aptina-pll.h
@@ -943,7 +943,7 @@ mt9p031_get_pdata(struct i2c_client *client)
if (!IS_ENABLED(CONFIG_OF) || !client-dev.of_node)
return client-dev.platform_data;
 
-   np = v4l2_of_get_next_endpoint(client-dev.of_node, NULL);
+   np = of_graph_get_next_endpoint(client-dev.of_node, NULL);
if (!np)
return NULL;
 
diff --git a/drivers/media/i2c/s5k5baf.c b/drivers/media/i2c/s5k5baf.c
index 77e10e0..06261ee 100644
--- a/drivers/media/i2c/s5k5baf.c
+++ b/drivers/media/i2c/s5k5baf.c
@@ -25,6 +25,7 @@
 #include linux/slab.h
 
 #include media/media-entity.h
+#include media/of_graph.h
 #include media/v4l2-ctrls.h
 #include media/v4l2-device.h
 #include media/v4l2-subdev.h
@@ -1855,7 +1856,7 @@ static int s5k5baf_parse_device_node(struct s5k5baf 
*state, struct device *dev)
if 

Re: [PATCH v2] [media] of: move graph helpers from drivers/media/v4l2-core to drivers/media

2014-02-11 Thread Mauro Carvalho Chehab
Em Tue, 11 Feb 2014 22:41:45 +0100
Philipp Zabel p.za...@pengutronix.de escreveu:

 From: Philipp Zabel philipp.za...@gmail.com
 
 This patch moves the parsing helpers used to parse connected graphs
 in the device tree, like the video interface bindings documented in
 Documentation/devicetree/bindings/media/video-interfaces.txt, from
 drivers/media/v4l2-core to drivers/media.
 
 This allows to reuse the same parser code from outside the V4L2
 framework, most importantly from display drivers.
 The functions v4l2_of_get_next_endpoint, v4l2_of_get_remote_port,
 and v4l2_of_get_remote_port_parent are moved. They are renamed to
 of_graph_get_next_endpoint, of_graph_get_remote_port, and
 of_graph_get_remote_port_parent, respectively.
 Since there are not that many current users, switch all of them
 to the new functions right away.
 
 Signed-off-by: Philipp Zabel p.za...@pengutronix.de
 Acked-by: Mauro Carvalho Chehab m.che...@samsung.com
 Acked-by: Guennadi Liakhovetski g.liakhovet...@gmx.de
 ---
 Changes since v1:
  - Moved to drivers/media instead of drives/of
  - Removed v4l2_of_get_ functions and changed all users in one step
  - Keep providing stubs for !OF case
 ---
  drivers/media/Kconfig |   4 +
  drivers/media/Makefile|   2 +
  drivers/media/i2c/adv7343.c   |   4 +-
  drivers/media/i2c/mt9p031.c   |   4 +-
  drivers/media/i2c/s5k5baf.c   |   3 +-
  drivers/media/i2c/tvp514x.c   |   3 +-
  drivers/media/i2c/tvp7002.c   |   3 +-
  drivers/media/of_graph.c  | 133 
 ++
  drivers/media/platform/exynos4-is/fimc-is.c   |   6 +-
  drivers/media/platform/exynos4-is/media-dev.c |   3 +-
  drivers/media/platform/exynos4-is/mipi-csis.c |   3 +-
  drivers/media/v4l2-core/v4l2-of.c | 117 --
  include/media/of_graph.h  |  46 +
  include/media/v4l2-of.h   |  24 -
  14 files changed, 202 insertions(+), 153 deletions(-)
  create mode 100644 drivers/media/of_graph.c
  create mode 100644 include/media/of_graph.h
 
 diff --git a/drivers/media/Kconfig b/drivers/media/Kconfig
 index 1d0758a..7681026 100644
 --- a/drivers/media/Kconfig
 +++ b/drivers/media/Kconfig
 @@ -96,6 +96,7 @@ config VIDEO_DEV
   tristate
   depends on MEDIA_SUPPORT
   depends on MEDIA_CAMERA_SUPPORT || MEDIA_ANALOG_TV_SUPPORT || 
 MEDIA_RADIO_SUPPORT
 + select OF_GRAPH if OF
   default y
  
  config VIDEO_V4L2_SUBDEV_API
 @@ -203,3 +204,6 @@ source drivers/media/tuners/Kconfig
  source drivers/media/dvb-frontends/Kconfig
  
  endif # MEDIA_SUPPORT
 +
 +config OF_GRAPH
 +bool
 diff --git a/drivers/media/Makefile b/drivers/media/Makefile
 index 620f275..ff980bd 100644
 --- a/drivers/media/Makefile
 +++ b/drivers/media/Makefile
 @@ -18,6 +18,8 @@ ifeq ($(CONFIG_MEDIA_CONTROLLER),y)
obj-$(CONFIG_MEDIA_SUPPORT) += media.o
  endif
  
 +obj-$(CONFIG_OF_GRAPH)  += of_graph.o
 +
  obj-$(CONFIG_VIDEO_DEV) += v4l2-core/
  obj-$(CONFIG_DVB_CORE)  += dvb-core/
  
 diff --git a/drivers/media/i2c/adv7343.c b/drivers/media/i2c/adv7343.c
 index d4e15a6..74a1507 100644
 --- a/drivers/media/i2c/adv7343.c
 +++ b/drivers/media/i2c/adv7343.c
 @@ -28,10 +28,10 @@
  #include linux/of.h
  
  #include media/adv7343.h
 +#include media/of_graph.h
  #include media/v4l2-async.h
  #include media/v4l2-device.h
  #include media/v4l2-ctrls.h
 -#include media/v4l2-of.h
  
  #include adv7343_regs.h
  
 @@ -410,7 +410,7 @@ adv7343_get_pdata(struct i2c_client *client)
   if (!IS_ENABLED(CONFIG_OF) || !client-dev.of_node)
   return client-dev.platform_data;
  
 - np = v4l2_of_get_next_endpoint(client-dev.of_node, NULL);
 + np = of_graph_get_next_endpoint(client-dev.of_node, NULL);
   if (!np)
   return NULL;
  
 diff --git a/drivers/media/i2c/mt9p031.c b/drivers/media/i2c/mt9p031.c
 index e5ddf47..60f36dc 100644
 --- a/drivers/media/i2c/mt9p031.c
 +++ b/drivers/media/i2c/mt9p031.c
 @@ -27,9 +27,9 @@
  #include linux/videodev2.h
  
  #include media/mt9p031.h
 +#include media/of_graph.h
  #include media/v4l2-ctrls.h
  #include media/v4l2-device.h
 -#include media/v4l2-of.h
  #include media/v4l2-subdev.h
  
  #include aptina-pll.h
 @@ -943,7 +943,7 @@ mt9p031_get_pdata(struct i2c_client *client)
   if (!IS_ENABLED(CONFIG_OF) || !client-dev.of_node)
   return client-dev.platform_data;
  
 - np = v4l2_of_get_next_endpoint(client-dev.of_node, NULL);
 + np = of_graph_get_next_endpoint(client-dev.of_node, NULL);
   if (!np)
   return NULL;
  
 diff --git a/drivers/media/i2c/s5k5baf.c b/drivers/media/i2c/s5k5baf.c
 index 77e10e0..06261ee 100644
 --- a/drivers/media/i2c/s5k5baf.c
 +++ b/drivers/media/i2c/s5k5baf.c
 @@ -25,6 +25,7 @@
  #include linux/slab.h
  
  #include media/media-entity.h
 +#include media/of_graph.h
  #include 

Re: [PATCH v2] [media] of: move graph helpers from drivers/media/v4l2-core to drivers/media

2014-02-11 Thread Tomi Valkeinen
Hi,

On 11/02/14 23:41, Philipp Zabel wrote:
 From: Philipp Zabel philipp.za...@gmail.com
 
 This patch moves the parsing helpers used to parse connected graphs
 in the device tree, like the video interface bindings documented in
 Documentation/devicetree/bindings/media/video-interfaces.txt, from
 drivers/media/v4l2-core to drivers/media.
 
 This allows to reuse the same parser code from outside the V4L2
 framework, most importantly from display drivers.
 The functions v4l2_of_get_next_endpoint, v4l2_of_get_remote_port,
 and v4l2_of_get_remote_port_parent are moved. They are renamed to
 of_graph_get_next_endpoint, of_graph_get_remote_port, and
 of_graph_get_remote_port_parent, respectively.
 Since there are not that many current users, switch all of them
 to the new functions right away.
 
 Signed-off-by: Philipp Zabel p.za...@pengutronix.de
 Acked-by: Mauro Carvalho Chehab m.che...@samsung.com
 Acked-by: Guennadi Liakhovetski g.liakhovet...@gmx.de

I don't think the graphs or the parsing code has anything video
specific. It could well be used for anything, whenever there's need to
describe connections between devices which are not handled by the normal
child-parent relationships. So the code could well reside in some
generic place, in my opinion.

Also, I have no problem with having it in drivers/media, but
drivers/video should work also. We already have other, generic, video
related things there like hdmi infoframes and display timings.

And last, it's fine to move the funcs as-is in the first place, but I
think they should be improved a bit before non-v4l2 users use them.
There are a couple of things I tried to accomplish with the omapdss
specific versions in
https://www.mail-archive.com/linux-omap@vger.kernel.org/msg100761.html:

- Iterating ports and endpoints separately. If a node has multiple
ports, I would think that the driver needs to know which port and
endpoint combination is the current one during iteration. It's not
enough to just get the endpoint.

- Simplify cases when there's just one port and one endpoint, in which
case the port node can be omitted from the DT data.

 Tomi




signature.asc
Description: OpenPGP digital signature