Commit 82b599ec authored by Jani Nikula's avatar Jani Nikula

drm/edid: parse source physical address

CEC needs the source physical address. Parsing it is trivial with the
existing EDID CEA DB infrastructure.

Default to CEC_PHYS_ADDR_INVALID (0xffff) instead of 0 to cater for
easier CEC usage.

Cc: Hans Verkuil <hverkuil-cisco@xs4all.nl>
Cc: linux-media@vger.kernel.org
Signed-off-by: default avatarJani Nikula <jani.nikula@intel.com>
Reviewed-by: default avatarHans Verkuil <hverkuil-cisco@xs4all.nl>
Acked-by: default avatarMaxime Ripard <mripard@kernel.org>
Link: https://patchwork.freedesktop.org/patch/msgid/8c6b6403932536b6849e0b44e1ee6e7ebdbe4a69.1692884619.git.jani.nikula@intel.com
parent e1039cde
...@@ -29,6 +29,7 @@ ...@@ -29,6 +29,7 @@
*/ */
#include <linux/bitfield.h> #include <linux/bitfield.h>
#include <linux/cec.h>
#include <linux/hdmi.h> #include <linux/hdmi.h>
#include <linux/i2c.h> #include <linux/i2c.h>
#include <linux/kernel.h> #include <linux/kernel.h>
...@@ -6205,6 +6206,8 @@ drm_parse_hdmi_vsdb_video(struct drm_connector *connector, const u8 *db) ...@@ -6205,6 +6206,8 @@ drm_parse_hdmi_vsdb_video(struct drm_connector *connector, const u8 *db)
info->is_hdmi = true; info->is_hdmi = true;
info->source_physical_address = (db[4] << 8) | db[5];
if (len >= 6) if (len >= 6)
info->dvi_dual = db[6] & 1; info->dvi_dual = db[6] & 1;
if (len >= 7) if (len >= 7)
...@@ -6483,6 +6486,8 @@ static void drm_reset_display_info(struct drm_connector *connector) ...@@ -6483,6 +6486,8 @@ static void drm_reset_display_info(struct drm_connector *connector)
info->vics_len = 0; info->vics_len = 0;
info->quirks = 0; info->quirks = 0;
info->source_physical_address = CEC_PHYS_ADDR_INVALID;
} }
static void update_displayid_info(struct drm_connector *connector, static void update_displayid_info(struct drm_connector *connector,
......
...@@ -816,6 +816,14 @@ struct drm_display_info { ...@@ -816,6 +816,14 @@ struct drm_display_info {
* @quirks: EDID based quirks. Internal to EDID parsing. * @quirks: EDID based quirks. Internal to EDID parsing.
*/ */
u32 quirks; u32 quirks;
/**
* @source_physical_address: Source Physical Address from HDMI
* Vendor-Specific Data Block, for CEC usage.
*
* Defaults to CEC_PHYS_ADDR_INVALID (0xffff).
*/
u16 source_physical_address;
}; };
int drm_display_info_set_bus_formats(struct drm_display_info *info, int drm_display_info_set_bus_formats(struct drm_display_info *info,
......
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