* [PATCH] [media] au0828: disable tuner->decoder on init
@ 2016-03-10 19:57 Mauro Carvalho Chehab
2016-03-10 21:56 ` Shuah Khan
0 siblings, 1 reply; 3+ messages in thread
From: Mauro Carvalho Chehab @ 2016-03-10 19:57 UTC (permalink / raw)
To: Linux Media Mailing List
Cc: Mauro Carvalho Chehab, Mauro Carvalho Chehab, Shuah Khan,
Hans Verkuil, Rafael Lourenço de Lima Chehab,
Javier Martinez Canillas
As au0828 assumes that all links to ATV decoder and DTV demod
should be disabled, make sure this is the case.
Signed-off-by: Mauro Carvalho Chehab <mchehab@osg.samsung.com>
---
drivers/media/usb/au0828/au0828-core.c | 19 +++++++++++--------
1 file changed, 11 insertions(+), 8 deletions(-)
diff --git a/drivers/media/usb/au0828/au0828-core.c b/drivers/media/usb/au0828/au0828-core.c
index 5dc82e8c8670..af68663915fd 100644
--- a/drivers/media/usb/au0828/au0828-core.c
+++ b/drivers/media/usb/au0828/au0828-core.c
@@ -456,7 +456,9 @@ static int au0828_media_device_register(struct au0828_dev *dev,
{
#ifdef CONFIG_MEDIA_CONTROLLER
int ret;
- struct media_entity *entity, *demod = NULL, *tuner = NULL;
+ struct media_entity *entity;
+ struct media_entity *demod = NULL, *tuner = NULL, *decoder = NULL;
+ struct media_link *link;
if (!dev->media_dev)
return 0;
@@ -490,18 +492,19 @@ static int au0828_media_device_register(struct au0828_dev *dev,
media_device_for_each_entity(entity, dev->media_dev) {
if (entity->function == MEDIA_ENT_F_DTV_DEMOD)
demod = entity;
+ else if (entity->function == MEDIA_ENT_F_ATV_DECODER)
+ decoder = entity;
else if (entity->function == MEDIA_ENT_F_TUNER)
tuner = entity;
}
- /* Disable link between tuner and demod */
- if (tuner && demod) {
- struct media_link *link;
- list_for_each_entry(link, &demod->links, list) {
- if (link->sink->entity == demod &&
- link->source->entity == tuner) {
+ /* Disable link between tuner->demod and/or tuner->decoder */
+ if (tuner) {
+ list_for_each_entry(link, &tuner->links, list) {
+ if (demod && link->sink->entity == demod)
+ media_entity_setup_link(link, 0);
+ if (decoder && link->sink->entity == decoder)
media_entity_setup_link(link, 0);
- }
}
}
--
2.5.0
^ permalink raw reply related [flat|nested] 3+ messages in thread
* Re: [PATCH] [media] au0828: disable tuner->decoder on init
2016-03-10 19:57 [PATCH] [media] au0828: disable tuner->decoder on init Mauro Carvalho Chehab
@ 2016-03-10 21:56 ` Shuah Khan
2016-03-11 16:00 ` Mauro Carvalho Chehab
0 siblings, 1 reply; 3+ messages in thread
From: Shuah Khan @ 2016-03-10 21:56 UTC (permalink / raw)
To: Mauro Carvalho Chehab, Linux Media Mailing List
Cc: Mauro Carvalho Chehab, Hans Verkuil,
Rafael Lourenço de Lima Chehab, Javier Martinez Canillas,
Shuah Khan
On 03/10/2016 12:57 PM, Mauro Carvalho Chehab wrote:
> As au0828 assumes that all links to ATV decoder and DTV demod
> should be disabled, make sure this is the case.
>
> Signed-off-by: Mauro Carvalho Chehab <mchehab@osg.samsung.com>
> ---
> drivers/media/usb/au0828/au0828-core.c | 19 +++++++++++--------
> 1 file changed, 11 insertions(+), 8 deletions(-)
>
> diff --git a/drivers/media/usb/au0828/au0828-core.c b/drivers/media/usb/au0828/au0828-core.c
> index 5dc82e8c8670..af68663915fd 100644
> --- a/drivers/media/usb/au0828/au0828-core.c
> +++ b/drivers/media/usb/au0828/au0828-core.c
> @@ -456,7 +456,9 @@ static int au0828_media_device_register(struct au0828_dev *dev,
> {
> #ifdef CONFIG_MEDIA_CONTROLLER
> int ret;
> - struct media_entity *entity, *demod = NULL, *tuner = NULL;
> + struct media_entity *entity;
> + struct media_entity *demod = NULL, *tuner = NULL, *decoder = NULL;
> + struct media_link *link;
>
> if (!dev->media_dev)
> return 0;
> @@ -490,18 +492,19 @@ static int au0828_media_device_register(struct au0828_dev *dev,
> media_device_for_each_entity(entity, dev->media_dev) {
> if (entity->function == MEDIA_ENT_F_DTV_DEMOD)
> demod = entity;
> + else if (entity->function == MEDIA_ENT_F_ATV_DECODER)
> + decoder = entity;
> else if (entity->function == MEDIA_ENT_F_TUNER)
> tuner = entity;
> }
> - /* Disable link between tuner and demod */
> - if (tuner && demod) {
> - struct media_link *link;
>
> - list_for_each_entry(link, &demod->links, list) {
> - if (link->sink->entity == demod &&
> - link->source->entity == tuner) {
> + /* Disable link between tuner->demod and/or tuner->decoder */
> + if (tuner) {
> + list_for_each_entry(link, &tuner->links, list) {
> + if (demod && link->sink->entity == demod)
> + media_entity_setup_link(link, 0);
> + if (decoder && link->sink->entity == decoder)
> media_entity_setup_link(link, 0);
> - }
> }
> }
>
>
You probably don't need this patch if we revert the common
graph create patch. We will need this when we get the common
routine working.
thanks,
-- Shuah
--
Shuah Khan
Sr. Linux Kernel Developer
Open Source Innovation Group
Samsung Research America (Silicon Valley)
shuahkh@osg.samsung.com | (970) 217-8978
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [PATCH] [media] au0828: disable tuner->decoder on init
2016-03-10 21:56 ` Shuah Khan
@ 2016-03-11 16:00 ` Mauro Carvalho Chehab
0 siblings, 0 replies; 3+ messages in thread
From: Mauro Carvalho Chehab @ 2016-03-11 16:00 UTC (permalink / raw)
To: Shuah Khan
Cc: Linux Media Mailing List, Mauro Carvalho Chehab, Hans Verkuil,
Rafael Lourenço de Lima Chehab, Javier Martinez Canillas
Em Thu, 10 Mar 2016 14:56:30 -0700
Shuah Khan <shuahkh@osg.samsung.com> escreveu:
> On 03/10/2016 12:57 PM, Mauro Carvalho Chehab wrote:
> > As au0828 assumes that all links to ATV decoder and DTV demod
> > should be disabled, make sure this is the case.
> >
> > Signed-off-by: Mauro Carvalho Chehab <mchehab@osg.samsung.com>
> > ---
> > drivers/media/usb/au0828/au0828-core.c | 19 +++++++++++--------
> > 1 file changed, 11 insertions(+), 8 deletions(-)
> >
> > diff --git a/drivers/media/usb/au0828/au0828-core.c b/drivers/media/usb/au0828/au0828-core.c
> > index 5dc82e8c8670..af68663915fd 100644
> > --- a/drivers/media/usb/au0828/au0828-core.c
> > +++ b/drivers/media/usb/au0828/au0828-core.c
> > @@ -456,7 +456,9 @@ static int au0828_media_device_register(struct au0828_dev *dev,
> > {
> > #ifdef CONFIG_MEDIA_CONTROLLER
> > int ret;
> > - struct media_entity *entity, *demod = NULL, *tuner = NULL;
> > + struct media_entity *entity;
> > + struct media_entity *demod = NULL, *tuner = NULL, *decoder = NULL;
> > + struct media_link *link;
> >
> > if (!dev->media_dev)
> > return 0;
> > @@ -490,18 +492,19 @@ static int au0828_media_device_register(struct au0828_dev *dev,
> > media_device_for_each_entity(entity, dev->media_dev) {
> > if (entity->function == MEDIA_ENT_F_DTV_DEMOD)
> > demod = entity;
> > + else if (entity->function == MEDIA_ENT_F_ATV_DECODER)
> > + decoder = entity;
> > else if (entity->function == MEDIA_ENT_F_TUNER)
> > tuner = entity;
> > }
> > - /* Disable link between tuner and demod */
> > - if (tuner && demod) {
> > - struct media_link *link;
> >
> > - list_for_each_entry(link, &demod->links, list) {
> > - if (link->sink->entity == demod &&
> > - link->source->entity == tuner) {
> > + /* Disable link between tuner->demod and/or tuner->decoder */
> > + if (tuner) {
> > + list_for_each_entry(link, &tuner->links, list) {
> > + if (demod && link->sink->entity == demod)
> > + media_entity_setup_link(link, 0);
> > + if (decoder && link->sink->entity == decoder)
> > media_entity_setup_link(link, 0);
> > - }
> > }
> > }
> >
> >
>
> You probably don't need this patch if we revert the common
> graph create patch. We will need this when we get the common
> routine working.
Yes. I actually folded it on the patch caching tuner and decoder,
with is also needed for the common routine to work (as the core
knows nothing about any au0828-specific caching).
At the end of the day, we'll need to remove the cache as a hole, as
we move the au0828_enable_source to the core.
Regards,
Mauro
Thanks,
Mauro
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2016-03-11 16:01 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2016-03-10 19:57 [PATCH] [media] au0828: disable tuner->decoder on init Mauro Carvalho Chehab
2016-03-10 21:56 ` Shuah Khan
2016-03-11 16:00 ` Mauro Carvalho Chehab
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).