diff options
author | Victor Ryabukhin <vryabukhin@nvidia.com> | 2011-12-07 15:16:47 +0900 |
---|---|---|
committer | Varun Wadekar <vwadekar@nvidia.com> | 2011-12-15 11:52:09 +0530 |
commit | 6992959b717c58e6bd70daa1886ed5d401f8edb2 (patch) | |
tree | f1faf026cb29b5b070ab93eaedc6a49b081b9dd9 /drivers/video/tegra/dc/edid.c | |
parent | 115a6e6335f77705055c8c71aa22fffddb5b8cfb (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.c | 16 |
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) |