static void radeon_dp_probe_oui(struct radeon_connector *radeon_connector) { struct radeon_connector_atom_dig *dig_connector = radeon_connector->con_priv; u8 buf[3]; if (!(dig_connector->dpcd[DP_DOWN_STREAM_PORT_COUNT] & DP_OUI_SUPPORT)) return; if (radeon_dp_aux_native_read(radeon_connector, DP_SINK_OUI, buf, 3, 0)) DRM_DEBUG_KMS("Sink OUI: %02hhx%02hhx%02hhx\n", buf[0], buf[1], buf[2]); if (radeon_dp_aux_native_read(radeon_connector, DP_BRANCH_OUI, buf, 3, 0)) DRM_DEBUG_KMS("Branch OUI: %02hhx%02hhx%02hhx\n", buf[0], buf[1], buf[2]); }
static u8 radeon_read_dpcd_reg(struct radeon_connector *radeon_connector, u16 reg) { u8 val = 0; radeon_dp_aux_native_read(radeon_connector, reg, &val, 1, 0); return val; }
static bool radeon_dp_get_link_status(struct radeon_connector *radeon_connector, u8 link_status[DP_LINK_STATUS_SIZE]) { int ret; ret = radeon_dp_aux_native_read(radeon_connector, DP_LANE0_1_STATUS, link_status, DP_LINK_STATUS_SIZE, 100); if (ret <= 0) { return false; } DRM_DEBUG_KMS("link status %*ph\n", 6, link_status); return true; }
static bool radeon_dp_get_link_status(struct radeon_connector *radeon_connector, u8 link_status[DP_LINK_STATUS_SIZE]) { int ret; ret = radeon_dp_aux_native_read(radeon_connector, DP_LANE0_1_STATUS, link_status, DP_LINK_STATUS_SIZE, 100); if (ret <= 0) { DRM_ERROR("displayport link status failed\n"); return false; } DRM_DEBUG_KMS("link status %02x %02x %02x %02x %02x %02x\n", link_status[0], link_status[1], link_status[2], link_status[3], link_status[4], link_status[5]); return true; }
bool radeon_dp_getdpcd(struct radeon_connector *radeon_connector) { struct radeon_connector_atom_dig *dig_connector = radeon_connector->con_priv; u8 msg[25]; int ret, i; ret = radeon_dp_aux_native_read(radeon_connector, DP_DPCD_REV, msg, 8, 0); if (ret > 0) { memcpy(dig_connector->dpcd, msg, 8); DRM_DEBUG_KMS("DPCD: "); for (i = 0; i < 8; i++) DRM_DEBUG_KMS("%02x ", msg[i]); DRM_DEBUG_KMS("\n"); return true; } dig_connector->dpcd[0] = 0; return false; }