port_info
extern status_t _get_port_info(port_id port, port_info *portInfo,
port_info *portInfo, size_t portInfoSize);
radeon_connector port_info[2];
status_t _user_get_port_info(port_id id, struct port_info *info);
struct port_info *info);
extern status_t _kern_get_port_info(port_id id, struct port_info *info);
struct port_info *info);
if (routes->port_info[0].edid_valid)
else if (routes->port_info[1].edid_valid)
memcpy(info, &routes->port_info[index].edid, sizeof(struct edid1_info));
if (routes->port_info[0].edid_valid || routes->port_info[1].edid_valid) {
if (routes->port_info[i].tmds_type == tmds_ext){
if (Radeon_StoreFPEDID(ai, i, &routes->port_info[i].edid) == B_OK) {
routes->port_info[i].mon_type = mt_dfp;
if (Radeon_StoreFPEDID(ai, i, &routes->port_info[i].edid) == B_OK) {
routes->port_info[i].mon_type = mt_dfp;
routes->port_info[i].mon_type = mt_lcd;
routes->port_info[i].mon_type = mt_crt;
routes->port_info[i].mon_type = mt_crt;
if (!routes->port_info[0].edid_valid) {
routes->port_info[0].mon_type = mt_lcd;
if (!routes->port_info[1].edid_valid) {
routes->port_info[1].mon_type = mt_dfp;
if (routes->port_info[0].mon_type == mt_none) {
if (routes->port_info[1].mon_type == mt_none) {
routes->port_info[0].mon_type = mt_crt;
portSwapEntity = routes->port_info[0];
routes->port_info[0] = routes->port_info[1];
routes->port_info[1] = portSwapEntity;
if (routes->port_info[1].dac_type == dac_tvdac) {
const char* ddc = ptr_entity->port_info[port].ddc_type == ddc_none_detected
? "None" : ptr_entity->port_info[port].ddc_type == ddc_monid
? "Mon ID" : ptr_entity->port_info[port].ddc_type == ddc_dvi
? "DVI DDC" : ptr_entity->port_info[port].ddc_type == ddc_vga
? "VGA DDC" : ptr_entity->port_info[port].ddc_type == ddc_crt2
const char* tmds = ptr_entity->port_info[port].tmds_type == tmds_unknown
? "None" : ptr_entity->port_info[port].tmds_type == tmds_int
? "Internal" : ptr_entity->port_info[port].tmds_type == tmds_ext
const char* dac = ptr_entity->port_info[port].dac_type == dac_unknown
? "Unknown" : ptr_entity->port_info[port].dac_type == dac_primary
? "Primary" : ptr_entity->port_info[port].dac_type == dac_tvdac
con = ptr_entity->port_info[port].connector_type == connector_none_atom
? "None" : ptr_entity->port_info[port].connector_type == connector_vga_atom
? "VGA" : ptr_entity->port_info[port].connector_type == connector_dvi_i_atom
? "DVI-I" : ptr_entity->port_info[port].connector_type == connector_dvi_d_atom
? "DVI-D" : ptr_entity->port_info[port].connector_type == connector_dvi_a_atom
? "DVI-A" : ptr_entity->port_info[port].connector_type == connector_stv_atom
? "S-Video TV" : ptr_entity->port_info[port].connector_type == connector_ctv_atom
? "Composite TV" : ptr_entity->port_info[port].connector_type == connector_lvds_atom
? "LVDS" : ptr_entity->port_info[port].connector_type == connector_digital_atom
? "Digital" : ptr_entity->port_info[port].connector_type == connector_unsupported_atom
con = ptr_entity->port_info[port].connector_type == connector_none
? "None" : ptr_entity->port_info[port].connector_type == connector_crt
? "VGA" : ptr_entity->port_info[port].connector_type == connector_dvi_i
? "DVI-I" : ptr_entity->port_info[port].connector_type == connector_dvi_d
? "DVI-D" : ptr_entity->port_info[port].connector_type == connector_proprietary
? "Proprietary" : ptr_entity->port_info[port].connector_type == connector_stv
? "S-Video TV" : ptr_entity->port_info[port].connector_type == connector_ctv
? "Composite TV" : ptr_entity->port_info[port].connector_type == connector_unsupported
mon = ptr_entity->port_info[port].mon_type == mt_unknown ? "???"
: ptr_entity->port_info[port].mon_type == mt_none ? "None"
: ptr_entity->port_info[port].mon_type == mt_crt ? "CRT "
: ptr_entity->port_info[port].mon_type == mt_lcd ? "LCD "
: ptr_entity->port_info[port].mon_type == mt_dfp ? "DVI "
: ptr_entity->port_info[port].mon_type == mt_ctv ? "Composite TV"
: ptr_entity->port_info[port].mon_type == mt_stv ? "S-Video TV"
if (routes->port_info[1].tmds_type == tmds_int) {
swap_entity = routes->port_info[0];
routes->port_info[0] = routes->port_info[1];
routes->port_info[1] = swap_entity;
} else if (routes->port_info[0].tmds_type != tmds_int
&& routes->port_info[1].tmds_type != tmds_int) {
if (routes->port_info[1].dac_type == dac_primary
&& routes->port_info[0].dac_type != dac_primary) {
swap_entity = routes->port_info[0];
routes->port_info[0] = routes->port_info[1];
routes->port_info[1] = swap_entity;
if (routes->port_info[0].connector_type == connector_crt) {
routes->port_info[0].dac_type = dac_tvdac;
routes->port_info[1].dac_type = dac_primary;
routes->port_info[1].dac_type = dac_primary;
routes->port_info[0].dac_type = dac_tvdac;
routes->port_info[0].dac_type = dac_primary;
memset(&routes->port_info[i].edid , 0, sizeof(edid1_info));
switch (routes->port_info[i].ddc_type) {
edid_regs[routes->port_info[i].ddc_type],
&routes->port_info[i].edid)) {
routes->port_info[i].edid_valid = true;
SHOW_FLOW(2, "Edid Data for CRTC %d on line %d", i, routes->port_info[i].ddc_type);
edid_dump(&routes->port_info[i].edid);
routes->port_info[i].mon_type = mt_none;
routes->port_info[i].mon_type = mt_none;
if (routes->port_info[i].edid_valid) {
if (routes->port_info[i].edid.display.input_type == 1) {
di->routing.port_info[0].mon_type = mt_unknown;
di->routing.port_info[0].ddc_type = ddc_none_detected;
di->routing.port_info[0].dac_type = dac_unknown;
di->routing.port_info[0].tmds_type = tmds_unknown;
di->routing.port_info[0].connector_type = connector_none;
di->routing.port_info[1].mon_type = mt_unknown;
di->routing.port_info[1].ddc_type = ddc_none_detected;
di->routing.port_info[1].dac_type = dac_unknown;
di->routing.port_info[1].tmds_type = tmds_unknown;
di->routing.port_info[1].connector_type = connector_none;
di->routing.port_info[0].mon_type = mt_unknown;
di->routing.port_info[0].ddc_type = ddc_none_detected;
di->routing.port_info[0].dac_type = dac_tvdac;
di->routing.port_info[0].tmds_type = tmds_unknown;
di->routing.port_info[0].connector_type = connector_proprietary;
di->routing.port_info[1].mon_type = mt_unknown;
di->routing.port_info[1].ddc_type = ddc_none_detected;
di->routing.port_info[1].dac_type = dac_primary;
di->routing.port_info[1].tmds_type = tmds_ext;
di->routing.port_info[1].connector_type = connector_crt;
ptr_entity->port_info[0].tmds_type = tmds_int;
ptr_entity->port_info[0].tmds_type = tmds_ext;
if (ptr_entity->port_info[0].dac_type == dac_unknown)
ptr_entity->port_info[0].dac_type = (portinfo & 0xf) - 1;
ptr_entity->port_info[crtc].dac_type = (portinfo & 0xf) - 1;
ptr_entity->port_info[crtc].connector_type = (portinfo>>4) & 0xf;
ptr_entity->port_info[crtc].tmds_type = tmds_int;
ptr_entity->port_info[crtc].tmds_type = tmds_ext;
ptr_entity->port_info[crtc].ddc_type = ddc_monid;
ptr_entity->port_info[crtc].ddc_type = ddc_dvi;
ptr_entity->port_info[crtc].ddc_type = ddc_vga;
ptr_entity->port_info[crtc].ddc_type = ddc_crt2;
ptr_entity->port_info[crtc].ddc_type = ddc_none_detected;
ptr_entity->port_info[crtc].ddc_type = ddc_none_detected;
ptr_entity->port_info[j].tmds_type = tmds_int;
ptr_entity->port_info[j].tmds_type = tmds_ext;
if ( ptr_entity->port_info[j].dac_type == dac_unknown )
ptr_entity->port_info[j].dac_type = ( portinfo & 0xf ) - 1;
i, ptr_entity->port_info[i].ddc_type, ptr_entity->port_info[i].dac_type,
ptr_entity->port_info[i].tmds_type, ptr_entity->port_info[i].connector_type);
if (ptr_entity->port_info[tmp1].ddc_type == (( tmp0 >> 8 ) & 0x0f ))
ptr_entity->port_info[tmp1].ddc_type = (tmp0 >> 8) & 0x0f;
if (ptr_entity->port_info[tmp1].ddc_type > ddc_crt2)
ptr_entity->port_info[tmp1].ddc_type = ddc_none_detected;
ptr_entity->port_info[tmp1].dac_type = (tmp0 & 0x01) ? dac_tvdac : dac_primary;
ptr_entity->port_info[tmp1].connector_type = (tmp0 >> 12) & 0x0f;
if (ptr_entity->port_info[tmp1].connector_type > connector_unsupported)
ptr_entity->port_info[tmp1].connector_type = connector_unsupported;
ptr_entity->port_info[tmp1].tmds_type = ((tmp0 >> 4) & 0x01) ? tmds_ext : tmds_int;
if (((ptr_entity->port_info[tmp1].connector_type != connector_dvi_d) &&
(ptr_entity->port_info[tmp1].connector_type != connector_dvi_i)) &&
ptr_entity->port_info[tmp1].tmds_type == tmds_int)
ptr_entity->port_info[tmp1].tmds_type = tmds_unknown;
if ((connector_found < 3) && (ptr_entity->port_info[tmp1].connector_type == connector_crt)) {
memcpy (&ptr_entity->port_info[1],
&ptr_entity->port_info[0],
sizeof (ptr_entity->port_info[0]));
ptr_entity->port_info[0].dac_type = dac_tvdac;
ptr_entity->port_info[0].tmds_type = tmds_unknown;
ptr_entity->port_info[0].ddc_type = ddc_none_detected;
ptr_entity->port_info[0].connector_type = connector_proprietary;
ptr_entity->port_info[0].ddc_type = tmp1;
if (ptr_entity->port_info[0].ddc_type > ddc_crt2) {
ptr_entity->port_info[0].ddc_type);
ptr_entity->port_info[0].ddc_type = ddc_none_detected;
memcpy (&ptr_entity->port_info[0],
&ptr_entity->port_info[1],
sizeof (ptr_entity->port_info[0]));
ptr_entity->port_info[1].dac_type = dac_unknown;
ptr_entity->port_info[1].tmds_type = tmds_unknown;
ptr_entity->port_info[1].ddc_type = ddc_none_detected;
ptr_entity->port_info[1].connector_type = connector_none;
0, ptr_entity->port_info[0].ddc_type, ptr_entity->port_info[0].dac_type,
ptr_entity->port_info[0].tmds_type, ptr_entity->port_info[0].connector_type);
1, ptr_entity->port_info[1].ddc_type, ptr_entity->port_info[1].dac_type,
ptr_entity->port_info[1].tmds_type, ptr_entity->port_info[1].connector_type);
port_info portInfo;
port_info portInfo;
port_info portInfo;
port_info portInfo;
port_info portInfo;
port_info portInfo;
port_info portInfo;
port_info this_port;
port_info info;
port_info info;
port_info info;
port_info info;
port_info portInfo;
port_info portInfo;
port_info info;
port_info info;
port_info portInfo;
port_info debuggerPortInfo;
port_info portInfo;
port_info portInfo;
_get_port_info(port_id id, port_info* info, size_t size)
if (info == NULL || size != sizeof(port_info))
_get_next_port_info(team_id teamID, int32* _cookie, struct port_info* info,
if (info == NULL || size != sizeof(port_info) || _cookie == NULL
_user_get_port_info(port_id id, struct port_info *userInfo)
struct port_info info;
&& user_memcpy(userInfo, &info, sizeof(struct port_info)) < B_OK)
struct port_info *userInfo)
struct port_info info;
sizeof(struct port_info)) < B_OK))
fill_port_info(Port* port, port_info* info, size_t size)
port_info info;
_get_port_info(port_id port, port_info *info, size_t size)
_get_next_port_info(team_id team, int32 *cookie, port_info *info, size_t size)
port_info info;
port_info info;
port_info info;
port_info info;
port_info info;
port_info info;
port_info info;
port_info portInfo;
port_info info;