0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020
0021
0022
0023
0024
0025
0026 #include "bios_parser_common.h"
0027 #include "include/grph_object_ctrl_defs.h"
0028
0029 static enum object_type object_type_from_bios_object_id(uint32_t bios_object_id)
0030 {
0031 uint32_t bios_object_type = (bios_object_id & OBJECT_TYPE_MASK)
0032 >> OBJECT_TYPE_SHIFT;
0033 enum object_type object_type;
0034
0035 switch (bios_object_type) {
0036 case GRAPH_OBJECT_TYPE_GPU:
0037 object_type = OBJECT_TYPE_GPU;
0038 break;
0039 case GRAPH_OBJECT_TYPE_ENCODER:
0040 object_type = OBJECT_TYPE_ENCODER;
0041 break;
0042 case GRAPH_OBJECT_TYPE_CONNECTOR:
0043 object_type = OBJECT_TYPE_CONNECTOR;
0044 break;
0045 case GRAPH_OBJECT_TYPE_ROUTER:
0046 object_type = OBJECT_TYPE_ROUTER;
0047 break;
0048 case GRAPH_OBJECT_TYPE_GENERIC:
0049 object_type = OBJECT_TYPE_GENERIC;
0050 break;
0051 default:
0052 object_type = OBJECT_TYPE_UNKNOWN;
0053 break;
0054 }
0055
0056 return object_type;
0057 }
0058
0059 static enum object_enum_id enum_id_from_bios_object_id(uint32_t bios_object_id)
0060 {
0061 uint32_t bios_enum_id =
0062 (bios_object_id & ENUM_ID_MASK) >> ENUM_ID_SHIFT;
0063 enum object_enum_id id;
0064
0065 switch (bios_enum_id) {
0066 case GRAPH_OBJECT_ENUM_ID1:
0067 id = ENUM_ID_1;
0068 break;
0069 case GRAPH_OBJECT_ENUM_ID2:
0070 id = ENUM_ID_2;
0071 break;
0072 case GRAPH_OBJECT_ENUM_ID3:
0073 id = ENUM_ID_3;
0074 break;
0075 case GRAPH_OBJECT_ENUM_ID4:
0076 id = ENUM_ID_4;
0077 break;
0078 case GRAPH_OBJECT_ENUM_ID5:
0079 id = ENUM_ID_5;
0080 break;
0081 case GRAPH_OBJECT_ENUM_ID6:
0082 id = ENUM_ID_6;
0083 break;
0084 case GRAPH_OBJECT_ENUM_ID7:
0085 id = ENUM_ID_7;
0086 break;
0087 default:
0088 id = ENUM_ID_UNKNOWN;
0089 break;
0090 }
0091
0092 return id;
0093 }
0094
0095 static uint32_t gpu_id_from_bios_object_id(uint32_t bios_object_id)
0096 {
0097 return (bios_object_id & OBJECT_ID_MASK) >> OBJECT_ID_SHIFT;
0098 }
0099
0100 static enum encoder_id encoder_id_from_bios_object_id(uint32_t bios_object_id)
0101 {
0102 uint32_t bios_encoder_id = gpu_id_from_bios_object_id(bios_object_id);
0103 enum encoder_id id;
0104
0105 switch (bios_encoder_id) {
0106 case ENCODER_OBJECT_ID_INTERNAL_LVDS:
0107 id = ENCODER_ID_INTERNAL_LVDS;
0108 break;
0109 case ENCODER_OBJECT_ID_INTERNAL_TMDS1:
0110 id = ENCODER_ID_INTERNAL_TMDS1;
0111 break;
0112 case ENCODER_OBJECT_ID_INTERNAL_TMDS2:
0113 id = ENCODER_ID_INTERNAL_TMDS2;
0114 break;
0115 case ENCODER_OBJECT_ID_INTERNAL_DAC1:
0116 id = ENCODER_ID_INTERNAL_DAC1;
0117 break;
0118 case ENCODER_OBJECT_ID_INTERNAL_DAC2:
0119 id = ENCODER_ID_INTERNAL_DAC2;
0120 break;
0121 case ENCODER_OBJECT_ID_INTERNAL_LVTM1:
0122 id = ENCODER_ID_INTERNAL_LVTM1;
0123 break;
0124 case ENCODER_OBJECT_ID_HDMI_INTERNAL:
0125 id = ENCODER_ID_INTERNAL_HDMI;
0126 break;
0127 case ENCODER_OBJECT_ID_INTERNAL_KLDSCP_TMDS1:
0128 id = ENCODER_ID_INTERNAL_KLDSCP_TMDS1;
0129 break;
0130 case ENCODER_OBJECT_ID_INTERNAL_KLDSCP_DAC1:
0131 id = ENCODER_ID_INTERNAL_KLDSCP_DAC1;
0132 break;
0133 case ENCODER_OBJECT_ID_INTERNAL_KLDSCP_DAC2:
0134 id = ENCODER_ID_INTERNAL_KLDSCP_DAC2;
0135 break;
0136 case ENCODER_OBJECT_ID_MVPU_FPGA:
0137 id = ENCODER_ID_EXTERNAL_MVPU_FPGA;
0138 break;
0139 case ENCODER_OBJECT_ID_INTERNAL_DDI:
0140 id = ENCODER_ID_INTERNAL_DDI;
0141 break;
0142 case ENCODER_OBJECT_ID_INTERNAL_UNIPHY:
0143 id = ENCODER_ID_INTERNAL_UNIPHY;
0144 break;
0145 case ENCODER_OBJECT_ID_INTERNAL_KLDSCP_LVTMA:
0146 id = ENCODER_ID_INTERNAL_KLDSCP_LVTMA;
0147 break;
0148 case ENCODER_OBJECT_ID_INTERNAL_UNIPHY1:
0149 id = ENCODER_ID_INTERNAL_UNIPHY1;
0150 break;
0151 case ENCODER_OBJECT_ID_INTERNAL_UNIPHY2:
0152 id = ENCODER_ID_INTERNAL_UNIPHY2;
0153 break;
0154 case ENCODER_OBJECT_ID_ALMOND:
0155 id = ENCODER_ID_EXTERNAL_NUTMEG;
0156 break;
0157 case ENCODER_OBJECT_ID_TRAVIS:
0158 id = ENCODER_ID_EXTERNAL_TRAVIS;
0159 break;
0160 case ENCODER_OBJECT_ID_INTERNAL_UNIPHY3:
0161 id = ENCODER_ID_INTERNAL_UNIPHY3;
0162 break;
0163 default:
0164 id = ENCODER_ID_UNKNOWN;
0165 ASSERT(0);
0166 break;
0167 }
0168
0169 return id;
0170 }
0171
0172 static enum connector_id connector_id_from_bios_object_id(
0173 uint32_t bios_object_id)
0174 {
0175 uint32_t bios_connector_id = gpu_id_from_bios_object_id(bios_object_id);
0176
0177 enum connector_id id;
0178
0179 switch (bios_connector_id) {
0180 case CONNECTOR_OBJECT_ID_SINGLE_LINK_DVI_I:
0181 id = CONNECTOR_ID_SINGLE_LINK_DVII;
0182 break;
0183 case CONNECTOR_OBJECT_ID_DUAL_LINK_DVI_I:
0184 id = CONNECTOR_ID_DUAL_LINK_DVII;
0185 break;
0186 case CONNECTOR_OBJECT_ID_SINGLE_LINK_DVI_D:
0187 id = CONNECTOR_ID_SINGLE_LINK_DVID;
0188 break;
0189 case CONNECTOR_OBJECT_ID_DUAL_LINK_DVI_D:
0190 id = CONNECTOR_ID_DUAL_LINK_DVID;
0191 break;
0192 case CONNECTOR_OBJECT_ID_VGA:
0193 id = CONNECTOR_ID_VGA;
0194 break;
0195 case CONNECTOR_OBJECT_ID_HDMI_TYPE_A:
0196 id = CONNECTOR_ID_HDMI_TYPE_A;
0197 break;
0198 case CONNECTOR_OBJECT_ID_LVDS:
0199 id = CONNECTOR_ID_LVDS;
0200 break;
0201 case CONNECTOR_OBJECT_ID_PCIE_CONNECTOR:
0202 id = CONNECTOR_ID_PCIE;
0203 break;
0204 case CONNECTOR_OBJECT_ID_HARDCODE_DVI:
0205 id = CONNECTOR_ID_HARDCODE_DVI;
0206 break;
0207 case CONNECTOR_OBJECT_ID_DISPLAYPORT:
0208 id = CONNECTOR_ID_DISPLAY_PORT;
0209 break;
0210 case CONNECTOR_OBJECT_ID_eDP:
0211 id = CONNECTOR_ID_EDP;
0212 break;
0213 case CONNECTOR_OBJECT_ID_MXM:
0214 id = CONNECTOR_ID_MXM;
0215 break;
0216 case CONNECTOR_OBJECT_ID_USBC:
0217 id = CONNECTOR_ID_USBC;
0218 break;
0219 default:
0220 id = CONNECTOR_ID_UNKNOWN;
0221 break;
0222 }
0223
0224 return id;
0225 }
0226
0227 static enum generic_id generic_id_from_bios_object_id(uint32_t bios_object_id)
0228 {
0229 uint32_t bios_generic_id = gpu_id_from_bios_object_id(bios_object_id);
0230
0231 enum generic_id id;
0232
0233 switch (bios_generic_id) {
0234 case GENERIC_OBJECT_ID_MXM_OPM:
0235 id = GENERIC_ID_MXM_OPM;
0236 break;
0237 case GENERIC_OBJECT_ID_GLSYNC:
0238 id = GENERIC_ID_GLSYNC;
0239 break;
0240 case GENERIC_OBJECT_ID_STEREO_PIN:
0241 id = GENERIC_ID_STEREO;
0242 break;
0243 default:
0244 id = GENERIC_ID_UNKNOWN;
0245 break;
0246 }
0247
0248 return id;
0249 }
0250
0251 static uint32_t id_from_bios_object_id(enum object_type type,
0252 uint32_t bios_object_id)
0253 {
0254 switch (type) {
0255 case OBJECT_TYPE_GPU:
0256 return gpu_id_from_bios_object_id(bios_object_id);
0257 case OBJECT_TYPE_ENCODER:
0258 return (uint32_t)encoder_id_from_bios_object_id(bios_object_id);
0259 case OBJECT_TYPE_CONNECTOR:
0260 return (uint32_t)connector_id_from_bios_object_id(
0261 bios_object_id);
0262 case OBJECT_TYPE_GENERIC:
0263 return generic_id_from_bios_object_id(bios_object_id);
0264 default:
0265 return 0;
0266 }
0267 }
0268
0269 struct graphics_object_id object_id_from_bios_object_id(uint32_t bios_object_id)
0270 {
0271 enum object_type type;
0272 enum object_enum_id enum_id;
0273 struct graphics_object_id go_id = { 0 };
0274
0275 type = object_type_from_bios_object_id(bios_object_id);
0276
0277 if (OBJECT_TYPE_UNKNOWN == type)
0278 return go_id;
0279
0280 enum_id = enum_id_from_bios_object_id(bios_object_id);
0281
0282 if (ENUM_ID_UNKNOWN == enum_id)
0283 return go_id;
0284
0285 go_id = dal_graphics_object_id_init(
0286 id_from_bios_object_id(type, bios_object_id), enum_id, type);
0287
0288 return go_id;
0289 }
0290
0291