Commit a080a92a authored by Javier Martinez Canillas's avatar Javier Martinez Canillas Committed by Mauro Carvalho Chehab

media: partial revert of "[media] tvp5150: add HW input connectors support"

Commit f7b4b54e ("[media] tvp5150: add HW input connectors support")
added input signals support for the tvp5150, but the approach was found
to be incorrect so the corresponding DT binding commit 82c2ffeb
("[media] tvp5150: document input connectors DT bindings") was reverted.

This left the driver with an undocumented (and wrong) DT parsing logic,
so lets get rid of this code as well until the input connectors support
is implemented properly.

It's a partial revert due other patches added on top of mentioned commit
not allowing the commit to be reverted cleanly anymore. But all the code
related to the DT parsing logic and input entities creation are removed.
Suggested-by: default avatarLaurent Pinchart <laurent.pinchart@ideasonboard.com>
Signed-off-by: default avatarJavier Martinez Canillas <javierm@redhat.com>
Acked-by: default avatarLaurent Pinchart <laurent.pinchart@ideasonboard.com>
[m.felsch@pengutronix.de: rm TVP5150_INPUT_NUM define]
Signed-off-by: default avatarMarco Felsch <m.felsch@pengutronix.de>
Signed-off-by: default avatarMauro Carvalho Chehab <mchehab+samsung@kernel.org>
Acked-by: default avatarRob Herring <robh@kernel.org>
Signed-off-by: default avatarHans Verkuil <hverkuil-cisco@xs4all.nl>
Signed-off-by: default avatarMauro Carvalho Chehab <mchehab+huawei@kernel.org>
parent dfc22c07
...@@ -53,8 +53,6 @@ struct tvp5150 { ...@@ -53,8 +53,6 @@ struct tvp5150 {
struct v4l2_subdev sd; struct v4l2_subdev sd;
#ifdef CONFIG_MEDIA_CONTROLLER #ifdef CONFIG_MEDIA_CONTROLLER
struct media_pad pads[TVP5150_NUM_PADS]; struct media_pad pads[TVP5150_NUM_PADS];
struct media_entity input_ent[TVP5150_INPUT_NUM];
struct media_pad input_pad[TVP5150_INPUT_NUM];
#endif #endif
struct v4l2_ctrl_handler hdl; struct v4l2_ctrl_handler hdl;
struct v4l2_rect rect; struct v4l2_rect rect;
...@@ -1169,40 +1167,6 @@ static int tvp5150_enum_frame_size(struct v4l2_subdev *sd, ...@@ -1169,40 +1167,6 @@ static int tvp5150_enum_frame_size(struct v4l2_subdev *sd,
return 0; return 0;
} }
/****************************************************************************
Media entity ops
****************************************************************************/
#ifdef CONFIG_MEDIA_CONTROLLER
static int tvp5150_link_setup(struct media_entity *entity,
const struct media_pad *local,
const struct media_pad *remote, u32 flags)
{
struct v4l2_subdev *sd = media_entity_to_v4l2_subdev(entity);
struct tvp5150 *decoder = to_tvp5150(sd);
int i;
for (i = 0; i < TVP5150_INPUT_NUM; i++) {
if (remote->entity == &decoder->input_ent[i])
break;
}
/* Do nothing for entities that are not input connectors */
if (i == TVP5150_INPUT_NUM)
return 0;
decoder->input = i;
tvp5150_selmux(sd);
return 0;
}
static const struct media_entity_operations tvp5150_sd_media_ops = {
.link_setup = tvp5150_link_setup,
};
#endif
/**************************************************************************** /****************************************************************************
I2C Command I2C Command
****************************************************************************/ ****************************************************************************/
...@@ -1350,42 +1314,6 @@ static int tvp5150_g_tuner(struct v4l2_subdev *sd, struct v4l2_tuner *vt) ...@@ -1350,42 +1314,6 @@ static int tvp5150_g_tuner(struct v4l2_subdev *sd, struct v4l2_tuner *vt)
return 0; return 0;
} }
static int tvp5150_registered(struct v4l2_subdev *sd)
{
#ifdef CONFIG_MEDIA_CONTROLLER
struct tvp5150 *decoder = to_tvp5150(sd);
int ret = 0;
int i;
for (i = 0; i < TVP5150_INPUT_NUM; i++) {
struct media_entity *input = &decoder->input_ent[i];
struct media_pad *pad = &decoder->input_pad[i];
if (!input->name)
continue;
decoder->input_pad[i].flags = MEDIA_PAD_FL_SOURCE;
ret = media_entity_pads_init(input, 1, pad);
if (ret < 0)
return ret;
ret = media_device_register_entity(sd->v4l2_dev->mdev, input);
if (ret < 0)
return ret;
ret = media_create_pad_link(input, 0, &sd->entity,
TVP5150_PAD_IF_INPUT, 0);
if (ret < 0) {
media_device_unregister_entity(input);
return ret;
}
}
#endif
return 0;
}
/* ----------------------------------------------------------------------- */ /* ----------------------------------------------------------------------- */
static const struct v4l2_ctrl_ops tvp5150_ctrl_ops = { static const struct v4l2_ctrl_ops tvp5150_ctrl_ops = {
...@@ -1439,10 +1367,6 @@ static const struct v4l2_subdev_ops tvp5150_ops = { ...@@ -1439,10 +1367,6 @@ static const struct v4l2_subdev_ops tvp5150_ops = {
.pad = &tvp5150_pad_ops, .pad = &tvp5150_pad_ops,
}; };
static const struct v4l2_subdev_internal_ops tvp5150_internal_ops = {
.registered = tvp5150_registered,
};
/**************************************************************************** /****************************************************************************
I2C Client & Driver I2C Client & Driver
****************************************************************************/ ****************************************************************************/
...@@ -1595,12 +1519,6 @@ static int tvp5150_parse_dt(struct tvp5150 *decoder, struct device_node *np) ...@@ -1595,12 +1519,6 @@ static int tvp5150_parse_dt(struct tvp5150 *decoder, struct device_node *np)
{ {
struct v4l2_fwnode_endpoint bus_cfg = { .bus_type = 0 }; struct v4l2_fwnode_endpoint bus_cfg = { .bus_type = 0 };
struct device_node *ep; struct device_node *ep;
#ifdef CONFIG_MEDIA_CONTROLLER
struct device_node *connectors, *child;
struct media_entity *input;
const char *name;
u32 input_type;
#endif
unsigned int flags; unsigned int flags;
int ret = 0; int ret = 0;
...@@ -1624,67 +1542,6 @@ static int tvp5150_parse_dt(struct tvp5150 *decoder, struct device_node *np) ...@@ -1624,67 +1542,6 @@ static int tvp5150_parse_dt(struct tvp5150 *decoder, struct device_node *np)
decoder->mbus_type = bus_cfg.bus_type; decoder->mbus_type = bus_cfg.bus_type;
#ifdef CONFIG_MEDIA_CONTROLLER
connectors = of_get_child_by_name(np, "connectors");
if (!connectors)
goto err;
for_each_available_child_of_node(connectors, child) {
ret = of_property_read_u32(child, "input", &input_type);
if (ret) {
dev_err(decoder->sd.dev,
"missing type property in node %pOFn\n",
child);
of_node_put(child);
goto err_connector;
}
if (input_type >= TVP5150_INPUT_NUM) {
ret = -EINVAL;
of_node_put(child);
goto err_connector;
}
input = &decoder->input_ent[input_type];
/* Each input connector can only be defined once */
if (input->name) {
dev_err(decoder->sd.dev,
"input %s with same type already exists\n",
input->name);
of_node_put(child);
ret = -EINVAL;
goto err_connector;
}
switch (input_type) {
case TVP5150_COMPOSITE0:
case TVP5150_COMPOSITE1:
input->function = MEDIA_ENT_F_CONN_COMPOSITE;
break;
case TVP5150_SVIDEO:
input->function = MEDIA_ENT_F_CONN_SVIDEO;
break;
}
input->flags = MEDIA_ENT_FL_CONNECTOR;
ret = of_property_read_string(child, "label", &name);
if (ret < 0) {
dev_err(decoder->sd.dev,
"missing label property in node %pOFn\n",
child);
of_node_put(child);
goto err_connector;
}
input->name = name;
}
err_connector:
of_node_put(connectors);
#endif
err: err:
of_node_put(ep); of_node_put(ep);
return ret; return ret;
...@@ -1735,7 +1592,6 @@ static int tvp5150_probe(struct i2c_client *c) ...@@ -1735,7 +1592,6 @@ static int tvp5150_probe(struct i2c_client *c)
} }
v4l2_i2c_subdev_init(sd, c, &tvp5150_ops); v4l2_i2c_subdev_init(sd, c, &tvp5150_ops);
sd->internal_ops = &tvp5150_internal_ops;
sd->flags |= V4L2_SUBDEV_FL_HAS_DEVNODE; sd->flags |= V4L2_SUBDEV_FL_HAS_DEVNODE;
#if defined(CONFIG_MEDIA_CONTROLLER) #if defined(CONFIG_MEDIA_CONTROLLER)
...@@ -1750,7 +1606,6 @@ static int tvp5150_probe(struct i2c_client *c) ...@@ -1750,7 +1606,6 @@ static int tvp5150_probe(struct i2c_client *c)
if (res < 0) if (res < 0)
return res; return res;
sd->entity.ops = &tvp5150_sd_media_ops;
#endif #endif
res = tvp5150_detect_version(core); res = tvp5150_detect_version(core);
......
...@@ -14,8 +14,6 @@ ...@@ -14,8 +14,6 @@
#define TVP5150_COMPOSITE1 1 #define TVP5150_COMPOSITE1 1
#define TVP5150_SVIDEO 2 #define TVP5150_SVIDEO 2
#define TVP5150_INPUT_NUM 3
/* TVP5150 HW outputs */ /* TVP5150 HW outputs */
#define TVP5150_NORMAL 0 #define TVP5150_NORMAL 0
#define TVP5150_BLACK_SCREEN 1 #define TVP5150_BLACK_SCREEN 1
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment