[PATCH v4 1/6] media: get rid of unused extra_links param on media_entity_init()

2015-08-14 Thread Mauro Carvalho Chehab
Currently, media_entity_init() creates an array with the links,
allocated at init time. It provides a parameter (extra_links)
that would allocate more links than the current needs, but this
is not used by any driver.

As we want to be able to do dynamic link allocation/removal,
we'll need to change the implementation of the links. So,
before doing that, let's first remove that extra unused
parameter, in order to cleanup the interface first.

Signed-off-by: Mauro Carvalho Chehab mche...@osg.samsung.com
Acked-by: Sakari Ailus sakari.ai...@linux.intel.com

diff --git a/Documentation/media-framework.txt 
b/Documentation/media-framework.txt
index f552a75c0e70..2cc6019f7147 100644
--- a/Documentation/media-framework.txt
+++ b/Documentation/media-framework.txt
@@ -104,7 +104,7 @@ although drivers can allocate entities directly.
 Drivers initialize entities by calling
 
media_entity_init(struct media_entity *entity, u16 num_pads,
- struct media_pad *pads, u16 extra_links);
+ struct media_pad *pads);
 
 The media_entity name, type, flags, revision and group_id fields can be
 initialized before or after calling media_entity_init. Entities embedded in
diff --git a/Documentation/video4linux/v4l2-framework.txt 
b/Documentation/video4linux/v4l2-framework.txt
index 75d5c18d689a..109cc3792534 100644
--- a/Documentation/video4linux/v4l2-framework.txt
+++ b/Documentation/video4linux/v4l2-framework.txt
@@ -300,7 +300,7 @@ calling media_entity_init():
struct media_pad *pads = my_sd-pads;
int err;
 
-   err = media_entity_init(sd-entity, npads, pads, 0);
+   err = media_entity_init(sd-entity, npads, pads);
 
 The pads array must have been previously initialized. There is no need to
 manually set the struct media_entity type and name fields, but the revision
@@ -700,7 +700,7 @@ calling media_entity_init():
struct media_pad *pad = my_vdev-pad;
int err;
 
-   err = media_entity_init(vdev-entity, 1, pad, 0);
+   err = media_entity_init(vdev-entity, 1, pad);
 
 The pads array must have been previously initialized. There is no need to
 manually set the struct media_entity type and name fields.
diff --git a/Documentation/zh_CN/video4linux/v4l2-framework.txt 
b/Documentation/zh_CN/video4linux/v4l2-framework.txt
index 2b828e631e31..ff815cb92031 100644
--- a/Documentation/zh_CN/video4linux/v4l2-framework.txt
+++ b/Documentation/zh_CN/video4linux/v4l2-framework.txt
@@ -295,7 +295,7 @@ owner ??? i2c 
?
struct media_pad *pads = my_sd-pads;
int err;
 
-   err = media_entity_init(sd-entity, npads, pads, 0);
+   err = media_entity_init(sd-entity, npads, pads);
 
 pads  media_entity ??? type ???
 name revision ?
@@ -602,7 +602,7 @@ v4l2_file_operations  file_operations 
???
struct media_pad *pad = my_vdev-pad;
int err;
 
-   err = media_entity_init(vdev-entity, 1, pad, 0);
+   err = media_entity_init(vdev-entity, 1, pad);
 
 pads ?? media_entity ??? 
type ???
 name ??
diff --git a/drivers/media/dvb-core/dvbdev.c b/drivers/media/dvb-core/dvbdev.c
index 13bb57f0457f..2fdcbb5f000a 100644
--- a/drivers/media/dvb-core/dvbdev.c
+++ b/drivers/media/dvb-core/dvbdev.c
@@ -249,7 +249,7 @@ static void dvb_register_media_device(struct dvb_device 
*dvbdev,
}
 
if (npads)
-   ret = media_entity_init(dvbdev-entity, npads, dvbdev-pads, 0);
+   ret = media_entity_init(dvbdev-entity, npads, dvbdev-pads);
if (!ret)
ret = media_device_register_entity(dvbdev-adapter-mdev,
   dvbdev-entity);
diff --git a/drivers/media/i2c/ad9389b.c b/drivers/media/i2c/ad9389b.c
index 69094ab047b1..39d6ee681aeb 100644
--- a/drivers/media/i2c/ad9389b.c
+++ b/drivers/media/i2c/ad9389b.c
@@ -1158,7 +1158,7 @@ static int ad9389b_probe(struct i2c_client *client, const 
struct i2c_device_id *
state-rgb_quantization_range_ctrl-is_private = true;
 
state-pad.flags = MEDIA_PAD_FL_SINK;
-   err = media_entity_init(sd-entity, 1, state-pad, 0);
+   err = media_entity_init(sd-entity, 1, state-pad);
if (err)
goto err_hdl;
 
diff --git a/drivers/media/i2c/adp1653.c b/drivers/media/i2c/adp1653.c
index c70ababce954..5f76997f6e07 100644
--- a/drivers/media/i2c/adp1653.c
+++ b/drivers/media/i2c/adp1653.c
@@ -512,7 +512,7 @@ static int adp1653_probe(struct i2c_client *client,
if (ret)
goto free_and_quit;
 
-   ret = media_entity_init(flash-subdev.entity, 0, NULL, 0);
+   ret = media_entity_init(flash-subdev.entity, 0, NULL);
if (ret  0)
goto free_and_quit;
 
diff --git a/drivers/media/i2c/adv7180.c 

Re: [PATCH v4 1/6] media: get rid of unused extra_links param on media_entity_init()

2015-08-14 Thread Hans Verkuil
On 08/14/2015 04:56 PM, Mauro Carvalho Chehab wrote:
 Currently, media_entity_init() creates an array with the links,
 allocated at init time. It provides a parameter (extra_links)
 that would allocate more links than the current needs, but this
 is not used by any driver.
 
 As we want to be able to do dynamic link allocation/removal,
 we'll need to change the implementation of the links. So,
 before doing that, let's first remove that extra unused
 parameter, in order to cleanup the interface first.
 
 Signed-off-by: Mauro Carvalho Chehab mche...@osg.samsung.com
 Acked-by: Sakari Ailus sakari.ai...@linux.intel.com

Acked-by: Hans Verkuil hans.verk...@cisco.com

Thanks!

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


Re: [PATCH v4 1/6] media: get rid of unused extra_links param on media_entity_init()

2015-08-14 Thread Laurent Pinchart
Hi Mauro,

Thank you for the patch.

On Friday 14 August 2015 11:56:38 Mauro Carvalho Chehab wrote:
 Currently, media_entity_init() creates an array with the links,
 allocated at init time. It provides a parameter (extra_links)
 that would allocate more links than the current needs, but this
 is not used by any driver.
 
 As we want to be able to do dynamic link allocation/removal,
 we'll need to change the implementation of the links. So,
 before doing that, let's first remove that extra unused
 parameter, in order to cleanup the interface first.
 
 Signed-off-by: Mauro Carvalho Chehab mche...@osg.samsung.com
 Acked-by: Sakari Ailus sakari.ai...@linux.intel.com
 
 diff --git a/Documentation/media-framework.txt
 b/Documentation/media-framework.txt index f552a75c0e70..2cc6019f7147 100644
 --- a/Documentation/media-framework.txt
 +++ b/Documentation/media-framework.txt
 @@ -104,7 +104,7 @@ although drivers can allocate entities directly.
  Drivers initialize entities by calling
 
   media_entity_init(struct media_entity *entity, u16 num_pads,
 -   struct media_pad *pads, u16 extra_links);
 +   struct media_pad *pads);
 
  The media_entity name, type, flags, revision and group_id fields can be
  initialized before or after calling media_entity_init. Entities embedded in

The extra_links parameter is documented later on in this file. Could you 
replace the paragraph

Unlike the number of pads, the total number of links isn't always known in
advance by the entity driver. As an initial estimate, media_entity_init
pre-allocates a number of links equal to the number of pads plus an optional
number of extra links. The links array will be reallocated if it grows beyond
the initial estimate.

with

Unlike the number of pads, the total number of links isn't always known in
advance by the entity driver. As an initial estimate, media_entity_init
pre-allocates a number of links equal to the number of pads. The links array 
will be reallocated if it grows beyond the initial estimate.

?

[snip]

 diff --git a/drivers/media/media-entity.c b/drivers/media/media-entity.c
 index 4d8e01c7b1b2..78440c7aad94 100644
 --- a/drivers/media/media-entity.c
 +++ b/drivers/media/media-entity.c
 @@ -30,7 +30,6 @@
   * media_entity_init - Initialize a media entity
   *
   * @num_pads: Total number of sink and source pads.
 - * @extra_links: Initial estimate of the number of extra links.
   * @pads: Array of 'num_pads' pads.
   *
   * The total number of pads is an intrinsic property of entities known by
 the

Similarly here, I would rewrite the documentation as

 * The total number of pads is an intrinsic property of entities known by the
 * entity driver, while the total number of links depends on hardware design
 * and is an extrinsic property unknown to the entity driver. However, in most
 * use cases the number of links can safely be assumed to be equal to or
 * larger than the number of pads.
 *
 * For those reasons the links array can be preallocated based on the number
 * of pads and will be reallocated later if extra links need to be created.
 *
 * This function allocates a links array with enough space to hold at least
 * 'num_pads' elements. The media_entity::max_links field will be set to the
 * number of allocated elements.

With that fixed,

Acked-by: Laurent Pinchart laurent.pinch...@ideasonboard.com

And feel free to merge this patch for v4.3 independently of the rest.

 @@ -52,10 +51,10 @@
   */
  int
  media_entity_init(struct media_entity *entity, u16 num_pads,
 -   struct media_pad *pads, u16 extra_links)
 +   struct media_pad *pads)
  {
   struct media_link *links;
 - unsigned int max_links = num_pads + extra_links;
 + unsigned int max_links = num_pads;
   unsigned int i;
 
   links = kzalloc(max_links * sizeof(links[0]), GFP_KERNEL);

-- 
Regards,

Laurent Pinchart

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