Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit b572376b authored by Alistair Delva's avatar Alistair Delva
Browse files

ANDROID: GKI: Add 'dsc_info' to struct drm_dp_mst_port



Resolves an abi diff. Also adds setter/getter functions which are also
exported.

Bug: 152417756
Signed-off-by: default avatarAlistair Delva <adelva@google.com>
Change-Id: Ieb567ae1915446720ed2e77651a9a49f1e295360
parent 27ac6136
Loading
Loading
Loading
Loading
+36 −0
Original line number Diff line number Diff line
@@ -1810,6 +1810,42 @@ int drm_dp_send_power_updown_phy(struct drm_dp_mst_topology_mgr *mgr,
}
EXPORT_SYMBOL(drm_dp_send_power_updown_phy);

int drm_dp_mst_get_dsc_info(struct drm_dp_mst_topology_mgr *mgr,
		struct drm_dp_mst_port *port,
		struct drm_dp_mst_dsc_info *dsc_info)
{
	if (!dsc_info)
		return -EINVAL;

	port = drm_dp_get_validated_port_ref(mgr, port);
	if (!port)
		return -EINVAL;

	memcpy(dsc_info, &port->dsc_info, sizeof(struct drm_dp_mst_dsc_info));
	drm_dp_put_port(port);

	return 0;
}
EXPORT_SYMBOL_GPL(drm_dp_mst_get_dsc_info);

int drm_dp_mst_update_dsc_info(struct drm_dp_mst_topology_mgr *mgr,
		struct drm_dp_mst_port *port,
		struct drm_dp_mst_dsc_info *dsc_info)
{
	if (!dsc_info)
		return -EINVAL;

	port = drm_dp_get_validated_port_ref(mgr, port);
	if (!port)
		return -EINVAL;

	memcpy(&port->dsc_info, dsc_info, sizeof(struct drm_dp_mst_dsc_info));
		drm_dp_put_port(port);

	return 0;
}
EXPORT_SYMBOL_GPL(drm_dp_mst_update_dsc_info);

static int drm_dp_create_payload_step1(struct drm_dp_mst_topology_mgr *mgr,
				       int id,
				       struct drm_dp_payload *payload)
+23 −0
Original line number Diff line number Diff line
@@ -27,6 +27,7 @@
#include <drm/drm_atomic.h>

struct drm_dp_mst_branch;
struct drm_dp_mst_port;

/**
 * struct drm_dp_vcpi - Virtual Channel Payload Identifier
@@ -42,6 +43,18 @@ struct drm_dp_vcpi {
	int num_slots;
};

struct drm_dp_mst_dsc_dpcd_cache {
	bool valid;
	bool use_parent_dpcd;
	u8 dsc_dpcd[16];
};

struct drm_dp_mst_dsc_info {
	bool dsc_support;
	struct drm_dp_mst_port *dsc_port;
	struct drm_dp_mst_dsc_dpcd_cache dsc_dpcd_cache;
};

/**
 * struct drm_dp_mst_port - MST port
 * @kref: reference count for this port.
@@ -100,6 +113,8 @@ struct drm_dp_mst_port {
	bool has_audio;

	bool fec_capable;

	struct drm_dp_mst_dsc_info dsc_info;
};

/**
@@ -637,4 +652,12 @@ int drm_dp_atomic_release_vcpi_slots(struct drm_atomic_state *state,
int drm_dp_send_power_updown_phy(struct drm_dp_mst_topology_mgr *mgr,
				 struct drm_dp_mst_port *port, bool power_up);

int drm_dp_mst_get_dsc_info(struct drm_dp_mst_topology_mgr *mgr,
			    struct drm_dp_mst_port *port,
			    struct drm_dp_mst_dsc_info *dsc_info);

int drm_dp_mst_update_dsc_info(struct drm_dp_mst_topology_mgr *mgr,
			       struct drm_dp_mst_port *port,
			       struct drm_dp_mst_dsc_info *dsc_info);

#endif