* [PATCH v7 0/2] rcar-vin EDID control ioctls
@ 2016-09-15 12:14 Ulrich Hecht
2016-09-15 12:14 ` [PATCH v7 1/2] media: adv7604: automatic "default-input" selection Ulrich Hecht
2016-09-15 12:14 ` [PATCH v7 2/2] rcar-vin: implement EDID control ioctls Ulrich Hecht
0 siblings, 2 replies; 3+ messages in thread
From: Ulrich Hecht @ 2016-09-15 12:14 UTC (permalink / raw)
To: hans.verkuil, niklas.soderlund
Cc: linux-media, linux-renesas-soc, magnus.damm,
ulrich.hecht+renesas, laurent.pinchart, william.towle
Hi!
This is a spinoff of "Lager/Koelsch board HDMI input support" that excludes
the DT portions, and that works without the unmerged subdevice abstraction
layer.
CU
Uli
Changes since v6:
- work without subdev abstraction layer
- split off DT parts, to be handled separately
Changes since v5:
- implement vin/subdev pad translation
- move i2c devices
Changes since v4:
- drop merged patches
- adv7604: always fall back to input 0 if nothing else is specified
- rcar-vin: implement G_EDID, S_EDID in place of hard-coded EDID blob
Changes since v3:
- rvin_enum_dv_timings(): use vin->src_pad_idx
- rvin_dv_timings_cap(): likewise
- rvin_s_dv_timings(): update vin->format
- add Koelsch support
Changes since v2:
- rebased on top of rcar-vin driver v4
- removed "adv7604: fix SPA register location for ADV7612" (picked up)
- changed prefix of dts patch to "ARM: dts: lager: "
Ulrich Hecht (2):
media: adv7604: automatic "default-input" selection
rcar-vin: implement EDID control ioctls
drivers/media/i2c/adv7604.c | 5 +++-
drivers/media/platform/rcar-vin/rcar-v4l2.c | 44 +++++++++++++++++++++++++++++
drivers/media/platform/rcar-vin/rcar-vin.h | 1 +
3 files changed, 49 insertions(+), 1 deletion(-)
--
2.9.3
^ permalink raw reply [flat|nested] 3+ messages in thread
* [PATCH v7 1/2] media: adv7604: automatic "default-input" selection
2016-09-15 12:14 [PATCH v7 0/2] rcar-vin EDID control ioctls Ulrich Hecht
@ 2016-09-15 12:14 ` Ulrich Hecht
2016-09-15 12:14 ` [PATCH v7 2/2] rcar-vin: implement EDID control ioctls Ulrich Hecht
1 sibling, 0 replies; 3+ messages in thread
From: Ulrich Hecht @ 2016-09-15 12:14 UTC (permalink / raw)
To: hans.verkuil, niklas.soderlund
Cc: linux-media, linux-renesas-soc, magnus.damm,
ulrich.hecht+renesas, laurent.pinchart, william.towle
Fall back to input 0 if "default-input" property is not present.
Additionally, documentation in commit bf9c82278c34 ("[media]
media: adv7604: ability to read default input port from DT") states
that the "default-input" property should reside directly in the node
for adv7612. Hence, also adjust the parsing to make the implementation
consistent with this.
Based on patch by William Towle <william.towle@codethink.co.uk>.
Signed-off-by: Ulrich Hecht <ulrich.hecht+renesas@gmail.com>
---
drivers/media/i2c/adv7604.c | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/drivers/media/i2c/adv7604.c b/drivers/media/i2c/adv7604.c
index 4003831..055c9df 100644
--- a/drivers/media/i2c/adv7604.c
+++ b/drivers/media/i2c/adv7604.c
@@ -3077,10 +3077,13 @@ static int adv76xx_parse_dt(struct adv76xx_state *state)
if (!of_property_read_u32(endpoint, "default-input", &v))
state->pdata.default_input = v;
else
- state->pdata.default_input = -1;
+ state->pdata.default_input = 0;
of_node_put(endpoint);
+ if (!of_property_read_u32(np, "default-input", &v))
+ state->pdata.default_input = v;
+
flags = bus_cfg.bus.parallel.flags;
if (flags & V4L2_MBUS_HSYNC_ACTIVE_HIGH)
--
2.9.3
^ permalink raw reply related [flat|nested] 3+ messages in thread
* [PATCH v7 2/2] rcar-vin: implement EDID control ioctls
2016-09-15 12:14 [PATCH v7 0/2] rcar-vin EDID control ioctls Ulrich Hecht
2016-09-15 12:14 ` [PATCH v7 1/2] media: adv7604: automatic "default-input" selection Ulrich Hecht
@ 2016-09-15 12:14 ` Ulrich Hecht
1 sibling, 0 replies; 3+ messages in thread
From: Ulrich Hecht @ 2016-09-15 12:14 UTC (permalink / raw)
To: hans.verkuil, niklas.soderlund
Cc: linux-media, linux-renesas-soc, magnus.damm,
ulrich.hecht+renesas, laurent.pinchart, william.towle
Adds G_EDID and S_EDID.
Signed-off-by: Ulrich Hecht <ulrich.hecht+renesas@gmail.com>
---
drivers/media/platform/rcar-vin/rcar-v4l2.c | 44 +++++++++++++++++++++++++++++
drivers/media/platform/rcar-vin/rcar-vin.h | 1 +
2 files changed, 45 insertions(+)
diff --git a/drivers/media/platform/rcar-vin/rcar-v4l2.c b/drivers/media/platform/rcar-vin/rcar-v4l2.c
index 62ca7e3..ac26738 100644
--- a/drivers/media/platform/rcar-vin/rcar-v4l2.c
+++ b/drivers/media/platform/rcar-vin/rcar-v4l2.c
@@ -557,6 +557,38 @@ static int rvin_dv_timings_cap(struct file *file, void *priv_fh,
return ret;
}
+static int rvin_g_edid(struct file *file, void *fh, struct v4l2_edid *edid)
+{
+ struct rvin_dev *vin = video_drvdata(file);
+ struct v4l2_subdev *sd = vin_to_source(vin);
+ int input, ret;
+
+ input = edid->pad;
+ edid->pad = vin->sink_pad_idx;
+
+ ret = v4l2_subdev_call(sd, pad, get_edid, edid);
+
+ edid->pad = input;
+
+ return ret;
+}
+
+static int rvin_s_edid(struct file *file, void *fh, struct v4l2_edid *edid)
+{
+ struct rvin_dev *vin = video_drvdata(file);
+ struct v4l2_subdev *sd = vin_to_source(vin);
+ int input, ret;
+
+ input = edid->pad;
+ edid->pad = vin->sink_pad_idx;
+
+ ret = v4l2_subdev_call(sd, pad, set_edid, edid);
+
+ edid->pad = input;
+
+ return ret;
+}
+
static const struct v4l2_ioctl_ops rvin_ioctl_ops = {
.vidioc_querycap = rvin_querycap,
.vidioc_try_fmt_vid_cap = rvin_try_fmt_vid_cap,
@@ -579,6 +611,9 @@ static const struct v4l2_ioctl_ops rvin_ioctl_ops = {
.vidioc_s_dv_timings = rvin_s_dv_timings,
.vidioc_query_dv_timings = rvin_query_dv_timings,
+ .vidioc_g_edid = rvin_g_edid,
+ .vidioc_s_edid = rvin_s_edid,
+
.vidioc_querystd = rvin_querystd,
.vidioc_g_std = rvin_g_std,
.vidioc_s_std = rvin_s_std,
@@ -832,6 +867,15 @@ int rvin_v4l2_probe(struct rvin_dev *vin)
vin->src_pad_idx = pad_idx;
fmt.pad = vin->src_pad_idx;
+ vin->sink_pad_idx = 0;
+ for (pad_idx = 0; pad_idx < sd->entity.num_pads; pad_idx++)
+ if (sd->entity.pads[pad_idx].flags == MEDIA_PAD_FL_SINK)
+ break;
+ if (pad_idx >= sd->entity.num_pads)
+ return -EINVAL;
+
+ vin->sink_pad_idx = pad_idx;
+
/* Try to improve our guess of a reasonable window format */
ret = v4l2_subdev_call(sd, pad, get_fmt, NULL, &fmt);
if (ret) {
diff --git a/drivers/media/platform/rcar-vin/rcar-vin.h b/drivers/media/platform/rcar-vin/rcar-vin.h
index 793184d..af815cc 100644
--- a/drivers/media/platform/rcar-vin/rcar-vin.h
+++ b/drivers/media/platform/rcar-vin/rcar-vin.h
@@ -121,6 +121,7 @@ struct rvin_dev {
struct video_device vdev;
struct v4l2_device v4l2_dev;
int src_pad_idx;
+ int sink_pad_idx;
struct v4l2_ctrl_handler ctrl_handler;
struct v4l2_async_notifier notifier;
struct rvin_graph_entity digital;
--
2.9.3
^ permalink raw reply related [flat|nested] 3+ messages in thread
end of thread, other threads:[~2016-09-15 12:15 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2016-09-15 12:14 [PATCH v7 0/2] rcar-vin EDID control ioctls Ulrich Hecht
2016-09-15 12:14 ` [PATCH v7 1/2] media: adv7604: automatic "default-input" selection Ulrich Hecht
2016-09-15 12:14 ` [PATCH v7 2/2] rcar-vin: implement EDID control ioctls Ulrich Hecht
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.