summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMaxime Ripard <maxime@cerno.tech>2022-09-29 18:31:00 +0200
committerMaxime Ripard <maxime@cerno.tech>2022-10-10 13:56:42 +0200
commit941731a2684251e8854366c75df19185f586c784 (patch)
tree94fb3bf6da98739c513f67fb41d93da8d0409c02
parentdrm/connector: Rename subconnector state variable (diff)
downloadlinux-941731a2684251e8854366c75df19185f586c784.tar.xz
linux-941731a2684251e8854366c75df19185f586c784.zip
drm/atomic: Add TV subconnector property to get/set_property
The subconnector property was created by drm_mode_create_tv_properties(), but wasn't exposed to the userspace through the generic atomic_get/set_property implementation, and wasn't stored in any generic state structure. Let's solve this. Reviewed-by: Noralf Trønnes <noralf@tronnes.org> Link: https://lore.kernel.org/r/20220728-rpi-analog-tv-properties-v4-6-60d38873f782@cerno.tech Signed-off-by: Maxime Ripard <maxime@cerno.tech>
-rw-r--r--drivers/gpu/drm/drm_atomic_uapi.c4
-rw-r--r--include/drm/drm_connector.h2
2 files changed, 6 insertions, 0 deletions
diff --git a/drivers/gpu/drm/drm_atomic_uapi.c b/drivers/gpu/drm/drm_atomic_uapi.c
index c74c78a28171..c06d0639d552 100644
--- a/drivers/gpu/drm/drm_atomic_uapi.c
+++ b/drivers/gpu/drm/drm_atomic_uapi.c
@@ -688,6 +688,8 @@ static int drm_atomic_connector_set_property(struct drm_connector *connector,
return -EINVAL;
} else if (property == config->tv_select_subconnector_property) {
state->tv.select_subconnector = val;
+ } else if (property == config->tv_subconnector_property) {
+ state->tv.subconnector = val;
} else if (property == config->tv_left_margin_property) {
state->tv.margins.left = val;
} else if (property == config->tv_right_margin_property) {
@@ -796,6 +798,8 @@ drm_atomic_connector_get_property(struct drm_connector *connector,
*val = connector->dpms;
} else if (property == config->tv_select_subconnector_property) {
*val = state->tv.select_subconnector;
+ } else if (property == config->tv_subconnector_property) {
+ *val = state->tv.subconnector;
} else if (property == config->tv_left_margin_property) {
*val = state->tv.margins.left;
} else if (property == config->tv_right_margin_property) {
diff --git a/include/drm/drm_connector.h b/include/drm/drm_connector.h
index 60b5662dec7c..1d5e3cccb9e3 100644
--- a/include/drm/drm_connector.h
+++ b/include/drm/drm_connector.h
@@ -693,6 +693,7 @@ struct drm_connector_tv_margins {
/**
* struct drm_tv_connector_state - TV connector related states
* @select_subconnector: selected subconnector
+ * @subconnector: detected subconnector
* @margins: TV margins
* @mode: TV mode
* @brightness: brightness in percent
@@ -704,6 +705,7 @@ struct drm_connector_tv_margins {
*/
struct drm_tv_connector_state {
enum drm_mode_subconnector select_subconnector;
+ enum drm_mode_subconnector subconnector;
struct drm_connector_tv_margins margins;
unsigned int mode;
unsigned int brightness;