mirror of
https://github.com/edk2-porting/linux-next.git
synced 2024-12-27 06:34:11 +08:00
drm/radeon/kms: store sink type in atom dig connector
This will be used laster when the encoder and transmitters are set up. Signed-off-by: Alex Deucher <alexdeucher@gmail.com> Signed-off-by: Dave Airlie <airlied@redhat.com>
This commit is contained in:
parent
6a93cb250a
commit
4143e919ea
@ -78,7 +78,7 @@ bool radeon_process_aux_ch(struct radeon_i2c_chan *chan, u8 *req_bytes,
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
int radeon_dp_encoder_service(struct radeon_device *rdev, int action, int dp_clock,
|
static u8 radeon_dp_encoder_service(struct radeon_device *rdev, int action, int dp_clock,
|
||||||
uint8_t ucconfig, uint8_t lane_num)
|
uint8_t ucconfig, uint8_t lane_num)
|
||||||
{
|
{
|
||||||
DP_ENCODER_SERVICE_PARAMETERS args;
|
DP_ENCODER_SERVICE_PARAMETERS args;
|
||||||
@ -95,7 +95,7 @@ int radeon_dp_encoder_service(struct radeon_device *rdev, int action, int dp_clo
|
|||||||
return args.ucStatus;
|
return args.ucStatus;
|
||||||
}
|
}
|
||||||
|
|
||||||
int radeon_dp_getsinktype(struct radeon_connector *radeon_connector)
|
u8 radeon_dp_getsinktype(struct radeon_connector *radeon_connector)
|
||||||
{
|
{
|
||||||
struct radeon_connector_atom_dig *radeon_dig_connector = radeon_connector->con_priv;
|
struct radeon_connector_atom_dig *radeon_dig_connector = radeon_connector->con_priv;
|
||||||
struct drm_device *dev = radeon_connector->base.dev;
|
struct drm_device *dev = radeon_connector->base.dev;
|
||||||
|
@ -908,13 +908,9 @@ static int radeon_dp_get_modes(struct drm_connector *connector)
|
|||||||
static enum drm_connector_status radeon_dp_detect(struct drm_connector *connector)
|
static enum drm_connector_status radeon_dp_detect(struct drm_connector *connector)
|
||||||
{
|
{
|
||||||
struct radeon_connector *radeon_connector = to_radeon_connector(connector);
|
struct radeon_connector *radeon_connector = to_radeon_connector(connector);
|
||||||
struct drm_encoder *encoder = NULL;
|
|
||||||
struct drm_encoder_helper_funcs *encoder_funcs;
|
|
||||||
struct drm_mode_object *obj;
|
|
||||||
int i;
|
|
||||||
enum drm_connector_status ret = connector_status_disconnected;
|
enum drm_connector_status ret = connector_status_disconnected;
|
||||||
int sink_type;
|
struct radeon_connector_atom_dig *radeon_dig_connector = radeon_connector->con_priv;
|
||||||
bool dret;
|
u8 sink_type;
|
||||||
|
|
||||||
if (radeon_connector->edid) {
|
if (radeon_connector->edid) {
|
||||||
kfree(radeon_connector->edid);
|
kfree(radeon_connector->edid);
|
||||||
@ -924,8 +920,17 @@ static enum drm_connector_status radeon_dp_detect(struct drm_connector *connecto
|
|||||||
sink_type = radeon_dp_getsinktype(radeon_connector);
|
sink_type = radeon_dp_getsinktype(radeon_connector);
|
||||||
if (sink_type == CONNECTOR_OBJECT_ID_DISPLAYPORT) {
|
if (sink_type == CONNECTOR_OBJECT_ID_DISPLAYPORT) {
|
||||||
radeon_dp_getdpcd(radeon_connector);
|
radeon_dp_getdpcd(radeon_connector);
|
||||||
|
radeon_dig_connector->dp_sink_type = sink_type;
|
||||||
|
ret = connector_status_connected;
|
||||||
|
} else {
|
||||||
|
radeon_i2c_do_lock(radeon_connector->ddc_bus, 1);
|
||||||
|
if (radeon_ddc_probe(radeon_connector)) {
|
||||||
|
radeon_dig_connector->dp_sink_type = sink_type;
|
||||||
ret = connector_status_connected;
|
ret = connector_status_connected;
|
||||||
}
|
}
|
||||||
|
radeon_i2c_do_lock(radeon_connector->ddc_bus, 0);
|
||||||
|
}
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -339,8 +339,10 @@ struct radeon_encoder {
|
|||||||
struct radeon_connector_atom_dig {
|
struct radeon_connector_atom_dig {
|
||||||
uint32_t igp_lane_info;
|
uint32_t igp_lane_info;
|
||||||
bool linkb;
|
bool linkb;
|
||||||
|
/* displayport */
|
||||||
struct radeon_i2c_chan *dp_i2c_bus;
|
struct radeon_i2c_chan *dp_i2c_bus;
|
||||||
u8 dpcd[8];
|
u8 dpcd[8];
|
||||||
|
u8 dp_sink_type;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct radeon_connector {
|
struct radeon_connector {
|
||||||
@ -364,7 +366,7 @@ struct radeon_framebuffer {
|
|||||||
struct drm_gem_object *obj;
|
struct drm_gem_object *obj;
|
||||||
};
|
};
|
||||||
|
|
||||||
extern int radeon_dp_getsinktype(struct radeon_connector *radeon_connector);
|
extern u8 radeon_dp_getsinktype(struct radeon_connector *radeon_connector);
|
||||||
extern void radeon_dp_getdpcd(struct radeon_connector *radeon_connector);
|
extern void radeon_dp_getdpcd(struct radeon_connector *radeon_connector);
|
||||||
extern int radeon_dp_i2c_aux_ch(struct i2c_adapter *adapter, int mode,
|
extern int radeon_dp_i2c_aux_ch(struct i2c_adapter *adapter, int mode,
|
||||||
uint8_t write_byte, uint8_t *read_byte);
|
uint8_t write_byte, uint8_t *read_byte);
|
||||||
|
Loading…
Reference in New Issue
Block a user