mirror of
https://github.com/tbsdtv/linux_media.git
synced 2025-07-23 04:33:26 +02:00
media: mc: Make media_get_pad_index() use pad type flag
Use the pad flag specifying the pad type instead of a boolean in preparation for internal source pads. Also make the loop variable unsigned. Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com> Reviewed-by: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com> Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
This commit is contained in:
committed by
Hans Verkuil
parent
7ab9484332
commit
4fd463e938
@@ -730,7 +730,7 @@ int dvb_create_media_graph(struct dvb_adapter *adap,
|
||||
MEDIA_LNK_FL_ENABLED,
|
||||
false);
|
||||
} else {
|
||||
pad_sink = media_get_pad_index(tuner, true,
|
||||
pad_sink = media_get_pad_index(tuner, MEDIA_PAD_FL_SINK,
|
||||
PAD_SIGNAL_ANALOG);
|
||||
if (pad_sink < 0)
|
||||
return -EINVAL;
|
||||
@@ -748,7 +748,7 @@ int dvb_create_media_graph(struct dvb_adapter *adap,
|
||||
|
||||
if (ntuner && ndemod) {
|
||||
/* NOTE: first found tuner source pad presumed correct */
|
||||
pad_source = media_get_pad_index(tuner, false,
|
||||
pad_source = media_get_pad_index(tuner, MEDIA_PAD_FL_SOURCE,
|
||||
PAD_SIGNAL_ANALOG);
|
||||
if (pad_source < 0)
|
||||
return -EINVAL;
|
||||
|
@@ -1052,25 +1052,19 @@ static void __media_entity_remove_link(struct media_entity *entity,
|
||||
kfree(link);
|
||||
}
|
||||
|
||||
int media_get_pad_index(struct media_entity *entity, bool is_sink,
|
||||
int media_get_pad_index(struct media_entity *entity, u32 pad_type,
|
||||
enum media_pad_signal_type sig_type)
|
||||
{
|
||||
int i;
|
||||
bool pad_is_sink;
|
||||
unsigned int i;
|
||||
|
||||
if (!entity)
|
||||
return -EINVAL;
|
||||
|
||||
for (i = 0; i < entity->num_pads; i++) {
|
||||
if (entity->pads[i].flags & MEDIA_PAD_FL_SINK)
|
||||
pad_is_sink = true;
|
||||
else if (entity->pads[i].flags & MEDIA_PAD_FL_SOURCE)
|
||||
pad_is_sink = false;
|
||||
else
|
||||
continue; /* This is an error! */
|
||||
|
||||
if (pad_is_sink != is_sink)
|
||||
if ((entity->pads[i].flags &
|
||||
(MEDIA_PAD_FL_SINK | MEDIA_PAD_FL_SOURCE)) != pad_type)
|
||||
continue;
|
||||
|
||||
if (entity->pads[i].sig_type == sig_type)
|
||||
return i;
|
||||
}
|
||||
|
@@ -250,7 +250,7 @@ static void au0828_media_graph_notify(struct media_entity *new,
|
||||
|
||||
create_link:
|
||||
if (decoder && mixer) {
|
||||
ret = media_get_pad_index(decoder, false,
|
||||
ret = media_get_pad_index(decoder, MEDIA_PAD_FL_SOURCE,
|
||||
PAD_SIGNAL_AUDIO);
|
||||
if (ret >= 0)
|
||||
ret = media_create_pad_link(decoder, ret,
|
||||
|
@@ -105,9 +105,11 @@ int v4l2_mc_create_media_graph(struct media_device *mdev)
|
||||
/* Link the tuner and IF video output pads */
|
||||
if (tuner) {
|
||||
if (if_vid) {
|
||||
pad_source = media_get_pad_index(tuner, false,
|
||||
pad_source = media_get_pad_index(tuner,
|
||||
MEDIA_PAD_FL_SOURCE,
|
||||
PAD_SIGNAL_ANALOG);
|
||||
pad_sink = media_get_pad_index(if_vid, true,
|
||||
pad_sink = media_get_pad_index(if_vid,
|
||||
MEDIA_PAD_FL_SINK,
|
||||
PAD_SIGNAL_ANALOG);
|
||||
if (pad_source < 0 || pad_sink < 0) {
|
||||
dev_warn(mdev->dev, "Couldn't get tuner and/or PLL pad(s): (%d, %d)\n",
|
||||
@@ -122,9 +124,11 @@ int v4l2_mc_create_media_graph(struct media_device *mdev)
|
||||
return ret;
|
||||
}
|
||||
|
||||
pad_source = media_get_pad_index(if_vid, false,
|
||||
pad_source = media_get_pad_index(if_vid,
|
||||
MEDIA_PAD_FL_SOURCE,
|
||||
PAD_SIGNAL_ANALOG);
|
||||
pad_sink = media_get_pad_index(decoder, true,
|
||||
pad_sink = media_get_pad_index(decoder,
|
||||
MEDIA_PAD_FL_SINK,
|
||||
PAD_SIGNAL_ANALOG);
|
||||
if (pad_source < 0 || pad_sink < 0) {
|
||||
dev_warn(mdev->dev, "get decoder and/or PLL pad(s): (%d, %d)\n",
|
||||
@@ -139,9 +143,11 @@ int v4l2_mc_create_media_graph(struct media_device *mdev)
|
||||
return ret;
|
||||
}
|
||||
} else {
|
||||
pad_source = media_get_pad_index(tuner, false,
|
||||
pad_source = media_get_pad_index(tuner,
|
||||
MEDIA_PAD_FL_SOURCE,
|
||||
PAD_SIGNAL_ANALOG);
|
||||
pad_sink = media_get_pad_index(decoder, true,
|
||||
pad_sink = media_get_pad_index(decoder,
|
||||
MEDIA_PAD_FL_SINK,
|
||||
PAD_SIGNAL_ANALOG);
|
||||
if (pad_source < 0 || pad_sink < 0) {
|
||||
dev_warn(mdev->dev, "couldn't get tuner and/or decoder pad(s): (%d, %d)\n",
|
||||
@@ -156,9 +162,11 @@ int v4l2_mc_create_media_graph(struct media_device *mdev)
|
||||
}
|
||||
|
||||
if (if_aud) {
|
||||
pad_source = media_get_pad_index(tuner, false,
|
||||
pad_source = media_get_pad_index(tuner,
|
||||
MEDIA_PAD_FL_SOURCE,
|
||||
PAD_SIGNAL_AUDIO);
|
||||
pad_sink = media_get_pad_index(if_aud, true,
|
||||
pad_sink = media_get_pad_index(if_aud,
|
||||
MEDIA_PAD_FL_SINK,
|
||||
PAD_SIGNAL_AUDIO);
|
||||
if (pad_source < 0 || pad_sink < 0) {
|
||||
dev_warn(mdev->dev, "couldn't get tuner and/or decoder pad(s) for audio: (%d, %d)\n",
|
||||
@@ -180,7 +188,8 @@ int v4l2_mc_create_media_graph(struct media_device *mdev)
|
||||
|
||||
/* Create demod to V4L, VBI and SDR radio links */
|
||||
if (io_v4l) {
|
||||
pad_source = media_get_pad_index(decoder, false, PAD_SIGNAL_DV);
|
||||
pad_source = media_get_pad_index(decoder, MEDIA_PAD_FL_SOURCE,
|
||||
PAD_SIGNAL_DV);
|
||||
if (pad_source < 0) {
|
||||
dev_warn(mdev->dev, "couldn't get decoder output pad for V4L I/O\n");
|
||||
return -EINVAL;
|
||||
@@ -195,7 +204,8 @@ int v4l2_mc_create_media_graph(struct media_device *mdev)
|
||||
}
|
||||
|
||||
if (io_swradio) {
|
||||
pad_source = media_get_pad_index(decoder, false, PAD_SIGNAL_DV);
|
||||
pad_source = media_get_pad_index(decoder, MEDIA_PAD_FL_SOURCE,
|
||||
PAD_SIGNAL_DV);
|
||||
if (pad_source < 0) {
|
||||
dev_warn(mdev->dev, "couldn't get decoder output pad for SDR\n");
|
||||
return -EINVAL;
|
||||
@@ -210,7 +220,8 @@ int v4l2_mc_create_media_graph(struct media_device *mdev)
|
||||
}
|
||||
|
||||
if (io_vbi) {
|
||||
pad_source = media_get_pad_index(decoder, false, PAD_SIGNAL_DV);
|
||||
pad_source = media_get_pad_index(decoder, MEDIA_PAD_FL_SOURCE,
|
||||
PAD_SIGNAL_DV);
|
||||
if (pad_source < 0) {
|
||||
dev_warn(mdev->dev, "couldn't get decoder output pad for VBI\n");
|
||||
return -EINVAL;
|
||||
@@ -231,7 +242,7 @@ int v4l2_mc_create_media_graph(struct media_device *mdev)
|
||||
case MEDIA_ENT_F_CONN_RF:
|
||||
if (!tuner)
|
||||
continue;
|
||||
pad_sink = media_get_pad_index(tuner, true,
|
||||
pad_sink = media_get_pad_index(tuner, MEDIA_PAD_FL_SINK,
|
||||
PAD_SIGNAL_ANALOG);
|
||||
if (pad_sink < 0) {
|
||||
dev_warn(mdev->dev, "couldn't get tuner analog pad sink\n");
|
||||
@@ -243,7 +254,8 @@ int v4l2_mc_create_media_graph(struct media_device *mdev)
|
||||
break;
|
||||
case MEDIA_ENT_F_CONN_SVIDEO:
|
||||
case MEDIA_ENT_F_CONN_COMPOSITE:
|
||||
pad_sink = media_get_pad_index(decoder, true,
|
||||
pad_sink = media_get_pad_index(decoder,
|
||||
MEDIA_PAD_FL_SINK,
|
||||
PAD_SIGNAL_ANALOG);
|
||||
if (pad_sink < 0) {
|
||||
dev_warn(mdev->dev, "couldn't get decoder analog pad sink\n");
|
||||
|
@@ -741,7 +741,7 @@ static inline void media_entity_cleanup(struct media_entity *entity) {}
|
||||
* media_get_pad_index() - retrieves a pad index from an entity
|
||||
*
|
||||
* @entity: entity where the pads belong
|
||||
* @is_sink: true if the pad is a sink, false if it is a source
|
||||
* @pad_type: the type of the pad, one of MEDIA_PAD_FL_* pad types
|
||||
* @sig_type: type of signal of the pad to be search
|
||||
*
|
||||
* This helper function finds the first pad index inside an entity that
|
||||
@@ -752,7 +752,7 @@ static inline void media_entity_cleanup(struct media_entity *entity) {}
|
||||
* On success, return the pad number. If the pad was not found or the media
|
||||
* entity is a NULL pointer, return -EINVAL.
|
||||
*/
|
||||
int media_get_pad_index(struct media_entity *entity, bool is_sink,
|
||||
int media_get_pad_index(struct media_entity *entity, u32 pad_type,
|
||||
enum media_pad_signal_type sig_type);
|
||||
|
||||
/**
|
||||
|
Reference in New Issue
Block a user