On 08/30/2015 05:06 AM, Mauro Carvalho Chehab wrote:
> The Media Controller New Generation redefines the types for both
> interfaces and entities to be used on DVB. Make the needed
> changes at the DVB core for all interfaces, entities and
> data and interface links to appear in the graph.
> 
> Signed-off-by: Mauro Carvalho Chehab <mche...@osg.samsung.com>
> 
> diff --git a/drivers/media/dvb-core/dmxdev.c b/drivers/media/dvb-core/dmxdev.c
> index d0e3f9d85f34..baaed28ee975 100644
> --- a/drivers/media/dvb-core/dmxdev.c
> +++ b/drivers/media/dvb-core/dmxdev.c
> @@ -1242,9 +1242,9 @@ int dvb_dmxdev_init(struct dmxdev *dmxdev, struct 
> dvb_adapter *dvb_adapter)
>       }
>  
>       dvb_register_device(dvb_adapter, &dmxdev->dvbdev, &dvbdev_demux, dmxdev,
> -                         DVB_DEVICE_DEMUX);
> +                         DVB_DEVICE_DEMUX, dmxdev->filternum);
>       dvb_register_device(dvb_adapter, &dmxdev->dvr_dvbdev, &dvbdev_dvr,
> -                         dmxdev, DVB_DEVICE_DVR);
> +                         dmxdev, DVB_DEVICE_DVR, dmxdev->filternum);
>  
>       dvb_ringbuffer_init(&dmxdev->dvr_buffer, NULL, 8192);
>  
> diff --git a/drivers/media/dvb-core/dvb_ca_en50221.c 
> b/drivers/media/dvb-core/dvb_ca_en50221.c
> index fb66184dc9b6..f82cd1ff4f3a 100644
> --- a/drivers/media/dvb-core/dvb_ca_en50221.c
> +++ b/drivers/media/dvb-core/dvb_ca_en50221.c
> @@ -1695,7 +1695,7 @@ int dvb_ca_en50221_init(struct dvb_adapter *dvb_adapter,
>       pubca->private = ca;
>  
>       /* register the DVB device */
> -     ret = dvb_register_device(dvb_adapter, &ca->dvbdev, &dvbdev_ca, ca, 
> DVB_DEVICE_CA);
> +     ret = dvb_register_device(dvb_adapter, &ca->dvbdev, &dvbdev_ca, ca, 
> DVB_DEVICE_CA, 0);
>       if (ret)
>               goto free_slot_info;
>  
> diff --git a/drivers/media/dvb-core/dvb_frontend.c 
> b/drivers/media/dvb-core/dvb_frontend.c
> index 2d06bcff0946..58601bfe0b8d 100644
> --- a/drivers/media/dvb-core/dvb_frontend.c
> +++ b/drivers/media/dvb-core/dvb_frontend.c
> @@ -2754,7 +2754,7 @@ int dvb_register_frontend(struct dvb_adapter* dvb,
>                       fe->dvb->num, fe->id, fe->ops.info.name);
>  
>       dvb_register_device (fe->dvb, &fepriv->dvbdev, &dvbdev_template,
> -                          fe, DVB_DEVICE_FRONTEND);
> +                          fe, DVB_DEVICE_FRONTEND, 0);
>  
>       /*
>        * Initialize the cache to the proper values according with the
> diff --git a/drivers/media/dvb-core/dvb_net.c 
> b/drivers/media/dvb-core/dvb_net.c
> index b81e026edab3..14f51b68f4fe 100644
> --- a/drivers/media/dvb-core/dvb_net.c
> +++ b/drivers/media/dvb-core/dvb_net.c
> @@ -1503,6 +1503,6 @@ int dvb_net_init (struct dvb_adapter *adap, struct 
> dvb_net *dvbnet,
>               dvbnet->state[i] = 0;
>  
>       return dvb_register_device(adap, &dvbnet->dvbdev, &dvbdev_net,
> -                          dvbnet, DVB_DEVICE_NET);
> +                          dvbnet, DVB_DEVICE_NET, 0);
>  }
>  EXPORT_SYMBOL(dvb_net_init);
> diff --git a/drivers/media/dvb-core/dvbdev.c b/drivers/media/dvb-core/dvbdev.c
> index 88013d1a2c39..f638c67defbe 100644
> --- a/drivers/media/dvb-core/dvbdev.c
> +++ b/drivers/media/dvb-core/dvbdev.c
> @@ -180,18 +180,86 @@ skip:
>       return -ENFILE;
>  }
>  
> +static void dvb_create_tsout_entity(struct dvb_device *dvbdev,
> +                                 const char *name, int npads)
> +{
> +#if defined(CONFIG_MEDIA_CONTROLLER_DVB)
> +     int i, ret = 0;
> +
> +     dvbdev->tsout_pads = kcalloc(npads, sizeof(*dvbdev->tsout_pads),
> +                                  GFP_KERNEL);
> +     if (!dvbdev->tsout_pads)
> +             return;
> +     dvbdev->tsout_entity = kcalloc(npads, sizeof(*dvbdev->tsout_entity),
> +                                    GFP_KERNEL);
> +     if (!dvbdev->tsout_entity) {
> +             kfree(dvbdev->tsout_pads);
> +             dvbdev->tsout_pads = NULL;
> +             return;
> +     }
> +     for (i = 0; i < npads; i++) {
> +             struct media_pad *pads = &dvbdev->tsout_pads[i];
> +             struct media_entity *entity = &dvbdev->tsout_entity[i];
> +
> +             entity->name = kasprintf(GFP_KERNEL, "%s #%d", name, i);
> +             if (!entity->name) {
> +                     ret = -ENOMEM;
> +                     break;
> +             }
> +
> +             entity->type = MEDIA_ENT_T_DVB_TSOUT;
> +             pads->flags = MEDIA_PAD_FL_SINK;
> +
> +             ret = media_entity_init(entity, 1, pads);
> +             if (ret < 0)
> +                     break;
> +
> +             ret = media_device_register_entity(dvbdev->adapter->mdev,
> +                                                entity);
> +             if (ret < 0)
> +                     break;
> +     }
> +
> +     if (!ret) {
> +             dvbdev->tsout_num_entities = npads;
> +             return;
> +     }
> +
> +     for (i--; i >= 0; i--) {
> +             media_device_unregister_entity(&dvbdev->tsout_entity[i]);
> +             kfree(dvbdev->tsout_entity[i].name);
> +     }
> +
> +     printk(KERN_ERR
> +             "%s: media_device_register_entity failed for %s\n",
> +             __func__, name);
> +
> +     kfree(dvbdev->tsout_entity);
> +     kfree(dvbdev->tsout_pads);
> +     dvbdev->tsout_entity = NULL;
> +     dvbdev->tsout_pads = NULL;
> +#endif
> +}
> +
> +#define DEMUX_TSOUT  "demux_tsout"
> +#define DVR_TSOUT    "dvr_tsout"
> +

I have a preference for - instead of _.

Your choice, though.

Regards,

        Hans
--
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

Reply via email to