summaryrefslogtreecommitdiff
path: root/drivers/video/tegra/dc/edid.c
diff options
context:
space:
mode:
authorVictor Ryabukhin <vryabukhin@nvidia.com>2011-12-07 15:16:47 +0900
committerVarun Wadekar <vwadekar@nvidia.com>2011-12-15 11:52:09 +0530
commit6992959b717c58e6bd70daa1886ed5d401f8edb2 (patch)
treef1faf026cb29b5b070ab93eaedc6a49b081b9dd9 /drivers/video/tegra/dc/edid.c
parent115a6e6335f77705055c8c71aa22fffddb5b8cfb (diff)
tegra: HDMI: add underscan capability exposure via sysfs
TVs/monitors which do not support underscan will crop HDMI picture. Underscan information might be needed in userspace to adjust HDMI resolution so that the picture will be shown correctly on such devices. Bug 911580 Bug 912187 Change-Id: I1eec810d860e13dafef895cb85b32fd8187a4e02 Signed-off-by: Victor Ryabukhin <vryabukhin@nvidia.com> Reviewed-on: http://git-master/r/68616 Reviewed-by: Bharat Nihalani <bnihalani@nvidia.com>
Diffstat (limited to 'drivers/video/tegra/dc/edid.c')
-rw-r--r--drivers/video/tegra/dc/edid.c16
1 files changed, 16 insertions, 0 deletions
diff --git a/drivers/video/tegra/dc/edid.c b/drivers/video/tegra/dc/edid.c
index 21445f95263a..dd92154c1d19 100644
--- a/drivers/video/tegra/dc/edid.c
+++ b/drivers/video/tegra/dc/edid.c
@@ -30,6 +30,7 @@ struct tegra_edid_pvt {
struct kref refcnt;
struct tegra_edid_hdmi_eld eld;
bool support_stereo;
+ bool support_underscan;
/* Note: dc_edid must remain the last member */
struct tegra_dc_edid dc_edid;
};
@@ -210,6 +211,12 @@ int tegra_edid_parse_ext_block(const u8 *raw, int idx,
basic_audio = true;
}
}
+
+ if (raw[3] & 0x80)
+ edid->support_underscan = 1;
+ else
+ edid->support_underscan = 0;
+
ptr = &raw[4];
while (ptr < &raw[idx]) {
@@ -344,6 +351,7 @@ int tegra_edid_get_monspecs_test(struct tegra_edid *edid,
kref_init(&new_data->refcnt);
new_data->support_stereo = 0;
+ new_data->support_underscan = 0;
data = new_data->dc_edid.buf;
memcpy(data, edid_ptr, 128);
@@ -482,6 +490,14 @@ fail:
return ret;
}
+int tegra_edid_underscan_supported(struct tegra_edid *edid)
+{
+ if ((!edid) || (!edid->data))
+ return 0;
+
+ return edid->data->support_underscan;
+}
+
int tegra_edid_get_eld(struct tegra_edid *edid, struct tegra_edid_hdmi_eld *elddata)
{
if (!elddata || !edid->data)