staging: media: rkisp1: make links immutable by default
diff mbox series

Message ID 20200117201218.3745311-1-helen.koike@collabora.com
State New
Headers show
Series
  • staging: media: rkisp1: make links immutable by default
Related show

Commit Message

Helen Koike Jan. 17, 2020, 8:12 p.m. UTC
The only places which make sese to allow users to enable or disable
links are:

* between sensors and isp:
So users can select which sensor should be used while streaming

* between isp and the resizers:
              |
              v here
rkisp1_isp:2 -> rkisp1_resizer_mainpath -> rkisp1_mainpath (capture)
            \-> rkisp1_resizer_selfpath -> rkisp1_selfpath (capture)
              ^ here
              |

So users can disable one of the capture paths when unused, to avoid
worring about matching formats.

Make the following links immutable to simplify userspace:

rkisp1_resizer_mainpath -> rkisp1_mainpath
rkisp1_resizer_selfpath -> rkisp1_selfpath
rkisp1_params           -> rkisp1_isp
rkisp1_isp              -> rkisp1_stats

Signed-off-by: Helen Koike <helen.koike@collabora.com>

---
This is the topology graph after disabling all the links with
media -r
http://col.la/rkisp1immutable

Dashed links are the only one can can be enabled/disabled, the others
are immutable.

 drivers/staging/media/rkisp1/rkisp1-dev.c | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

Comments

Niklas Jan. 17, 2020, 10:36 p.m. UTC | #1
Hi Helen,

Thanks for your work.

On 2020-01-17 17:12:18 -0300, Helen Koike wrote:
> The only places which make sese to allow users to enable or disable
> links are:
> 
> * between sensors and isp:
> So users can select which sensor should be used while streaming
> 
> * between isp and the resizers:
>               |
>               v here
> rkisp1_isp:2 -> rkisp1_resizer_mainpath -> rkisp1_mainpath (capture)
>             \-> rkisp1_resizer_selfpath -> rkisp1_selfpath (capture)
>               ^ here
>               |
> 
> So users can disable one of the capture paths when unused, to avoid
> worring about matching formats.
> 
> Make the following links immutable to simplify userspace:
> 
> rkisp1_resizer_mainpath -> rkisp1_mainpath
> rkisp1_resizer_selfpath -> rkisp1_selfpath
> rkisp1_params           -> rkisp1_isp
> rkisp1_isp              -> rkisp1_stats
> 
> Signed-off-by: Helen Koike <helen.koike@collabora.com>
> 
> ---
> This is the topology graph after disabling all the links with
> media -r
> http://col.la/rkisp1immutable
> 
> Dashed links are the only one can can be enabled/disabled, the others
> are immutable.
> 
>  drivers/staging/media/rkisp1/rkisp1-dev.c | 5 +++--
>  1 file changed, 3 insertions(+), 2 deletions(-)
> 
> diff --git a/drivers/staging/media/rkisp1/rkisp1-dev.c b/drivers/staging/media/rkisp1/rkisp1-dev.c
> index 558126e66465..4030d5e71af1 100644
> --- a/drivers/staging/media/rkisp1/rkisp1-dev.c
> +++ b/drivers/staging/media/rkisp1/rkisp1-dev.c
> @@ -145,14 +145,15 @@ static int rkisp1_create_links(struct rkisp1_device *rkisp1)
>  		flags = 0;
>  	}
>  
> -	flags = MEDIA_LNK_FL_ENABLED;
> +	flags = MEDIA_LNK_FL_ENABLED | MEDIA_LNK_FL_IMMUTABLE;
>  
>  	/* create ISP->RSZ->CAP links */
>  	for (i = 0; i < 2; i++) {
>  		source = &rkisp1->isp.sd.entity;
>  		sink = &rkisp1->resizer_devs[i].sd.entity;

nit: To keep with the style of the rest of the function I would set 
flags here and once more bellow in the same loop.

With or without this fixed,

Reviewed-by: Niklas Söderlund <niklas.soderlund@ragnatech.se>

>  		ret = media_create_pad_link(source, RKISP1_ISP_PAD_SOURCE_VIDEO,
> -					    sink, RKISP1_RSZ_PAD_SINK, flags);
> +					    sink, RKISP1_RSZ_PAD_SINK,
> +					    MEDIA_LNK_FL_ENABLED);
>  		if (ret)
>  			return ret;
>  
> -- 
> 2.24.0
>
Helen Koike Jan. 19, 2020, 3:14 p.m. UTC | #2
On 1/17/20 8:36 PM, Niklas Söderlund wrote:
> Hi Helen,
> 
> Thanks for your work.
> 
> On 2020-01-17 17:12:18 -0300, Helen Koike wrote:
>> The only places which make sese to allow users to enable or disable
>> links are:
>>
>> * between sensors and isp:
>> So users can select which sensor should be used while streaming
>>
>> * between isp and the resizers:
>>               |
>>               v here
>> rkisp1_isp:2 -> rkisp1_resizer_mainpath -> rkisp1_mainpath (capture)
>>             \-> rkisp1_resizer_selfpath -> rkisp1_selfpath (capture)
>>               ^ here
>>               |
>>
>> So users can disable one of the capture paths when unused, to avoid
>> worring about matching formats.
>>
>> Make the following links immutable to simplify userspace:
>>
>> rkisp1_resizer_mainpath -> rkisp1_mainpath
>> rkisp1_resizer_selfpath -> rkisp1_selfpath
>> rkisp1_params           -> rkisp1_isp
>> rkisp1_isp              -> rkisp1_stats
>>
>> Signed-off-by: Helen Koike <helen.koike@collabora.com>
>>
>> ---
>> This is the topology graph after disabling all the links with
>> media -r
>> http://col.la/rkisp1immutable
>>
>> Dashed links are the only one can can be enabled/disabled, the others
>> are immutable.
>>
>>  drivers/staging/media/rkisp1/rkisp1-dev.c | 5 +++--
>>  1 file changed, 3 insertions(+), 2 deletions(-)
>>
>> diff --git a/drivers/staging/media/rkisp1/rkisp1-dev.c b/drivers/staging/media/rkisp1/rkisp1-dev.c
>> index 558126e66465..4030d5e71af1 100644
>> --- a/drivers/staging/media/rkisp1/rkisp1-dev.c
>> +++ b/drivers/staging/media/rkisp1/rkisp1-dev.c
>> @@ -145,14 +145,15 @@ static int rkisp1_create_links(struct rkisp1_device *rkisp1)
>>  		flags = 0;
>>  	}
>>  
>> -	flags = MEDIA_LNK_FL_ENABLED;
>> +	flags = MEDIA_LNK_FL_ENABLED | MEDIA_LNK_FL_IMMUTABLE;
>>  
>>  	/* create ISP->RSZ->CAP links */
>>  	for (i = 0; i < 2; i++) {
>>  		source = &rkisp1->isp.sd.entity;
>>  		sink = &rkisp1->resizer_devs[i].sd.entity;
> 
> nit: To keep with the style of the rest of the function I would set 
> flags here and once more bellow in the same loop.


Do you mean this: http://ix.io/27Pm ?
hmm, I don't see why to assign flags inside the loop.
the previous loop is a different case, since it sets the link
to the first sensor as enabled, but the other sensor links are disabled
(in case there are more then one link).

> 
> With or without this fixed,
> 
> Reviewed-by: Niklas Söderlund <niklas.soderlund@ragnatech.se>

Thanks,
Helen

> 
>>  		ret = media_create_pad_link(source, RKISP1_ISP_PAD_SOURCE_VIDEO,
>> -					    sink, RKISP1_RSZ_PAD_SINK, flags);
>> +					    sink, RKISP1_RSZ_PAD_SINK,
>> +					    MEDIA_LNK_FL_ENABLED);
>>  		if (ret)
>>  			return ret;
>>  
>> -- 
>> 2.24.0
>>
>

Patch
diff mbox series

diff --git a/drivers/staging/media/rkisp1/rkisp1-dev.c b/drivers/staging/media/rkisp1/rkisp1-dev.c
index 558126e66465..4030d5e71af1 100644
--- a/drivers/staging/media/rkisp1/rkisp1-dev.c
+++ b/drivers/staging/media/rkisp1/rkisp1-dev.c
@@ -145,14 +145,15 @@  static int rkisp1_create_links(struct rkisp1_device *rkisp1)
 		flags = 0;
 	}
 
-	flags = MEDIA_LNK_FL_ENABLED;
+	flags = MEDIA_LNK_FL_ENABLED | MEDIA_LNK_FL_IMMUTABLE;
 
 	/* create ISP->RSZ->CAP links */
 	for (i = 0; i < 2; i++) {
 		source = &rkisp1->isp.sd.entity;
 		sink = &rkisp1->resizer_devs[i].sd.entity;
 		ret = media_create_pad_link(source, RKISP1_ISP_PAD_SOURCE_VIDEO,
-					    sink, RKISP1_RSZ_PAD_SINK, flags);
+					    sink, RKISP1_RSZ_PAD_SINK,
+					    MEDIA_LNK_FL_ENABLED);
 		if (ret)
 			return ret;