Lines Matching refs:dcb
1251 u8 *dcb = NULL;
1254 dcb = ROMPTR(dev, drm->vbios.data[0x36]);
1255 if (!dcb) {
1260 if (dcb[0] >= 0x42) {
1261 NV_WARN(drm, "DCB version 0x%02x unknown\n", dcb[0]);
1264 if (dcb[0] >= 0x30) {
1265 if (ROM32(dcb[6]) == 0x4edcbdcb)
1266 return dcb;
1268 if (dcb[0] >= 0x20) {
1269 if (ROM32(dcb[4]) == 0x4edcbdcb)
1270 return dcb;
1272 if (dcb[0] >= 0x15) {
1273 if (!memcmp(&dcb[-7], "DEV_REC", 7))
1274 return dcb;
1304 u8 *dcb = olddcb_table(dev);
1305 if (dcb && dcb[0] >= 0x30) {
1306 if (idx < dcb[2])
1307 return dcb + dcb[1] + (idx * dcb[3]);
1309 if (dcb && dcb[0] >= 0x20) {
1310 u8 *i2c = ROMPTR(dev, dcb[2]);
1311 u8 *ent = dcb + 8 + (idx * 8);
1315 if (dcb && dcb[0] >= 0x15) {
1316 u8 *i2c = ROMPTR(dev, dcb[2]);
1317 u8 *ent = dcb + 4 + (idx * 10);
1353 u8 *dcb = olddcb_table(dev);
1354 if (dcb && dcb[0] >= 0x30 && dcb[1] >= 0x16) {
1355 u8 *conntab = ROMPTR(dev, dcb[0x14]);
1371 static struct dcb_output *new_dcb_entry(struct dcb_table *dcb)
1373 struct dcb_output *entry = &dcb->entry[dcb->entries];
1376 entry->index = dcb->entries++;
1381 static void fabricate_dcb_output(struct dcb_table *dcb, int type, int i2c,
1384 struct dcb_output *entry = new_dcb_entry(dcb);
1395 parse_dcb20_entry(struct drm_device *dev, struct dcb_table *dcb,
1415 entry->crtconf.maxfreq = (dcb->version < 0x30) ?
1424 if (dcb->version < 0x22) {
1452 if (dcb->version >= 0x40)
1462 if (dcb->version >= 0x30)
1503 if (dcb->version >= 0x40) {
1508 else if (dcb->version >= 0x30)
1510 else if (dcb->version >= 0x22)
1515 dcb->entries--;
1521 if (dcb->version < 0x40) {
1542 parse_dcb15_entry(struct drm_device *dev, struct dcb_table *dcb,
1596 void merge_like_dcb_entries(struct drm_device *dev, struct dcb_table *dcb)
1607 for (i = 0; i < dcb->entries; i++) {
1608 struct dcb_output *ient = &dcb->entry[i];
1611 for (j = i + 1; j < dcb->entries; j++) {
1612 struct dcb_output *jent = &dcb->entry[j];
1630 /* Compact entries merged into others out of dcb */
1631 for (i = 0; i < dcb->entries; i++) {
1632 if (dcb->entry[i].type == 100)
1636 dcb->entry[newentries] = dcb->entry[i];
1637 dcb->entry[newentries].index = newentries;
1642 dcb->entries = newentries;
1649 struct dcb_table *dcb = &drm->vbios.dcb;
1675 fabricate_dcb_output(dcb, DCB_OUTPUT_TMDS, 1, 1, 1);
1755 struct dcb_table *dcb = &bios->dcb;
1761 fabricate_dcb_output(dcb, DCB_OUTPUT_TMDS, 0, all_heads, 1);
1762 fabricate_dcb_output(dcb, DCB_OUTPUT_ANALOG, 1, all_heads, 2);
1768 fabricate_dcb_output(dcb, DCB_OUTPUT_ANALOG,
1772 fabricate_dcb_output(dcb, DCB_OUTPUT_TV,
1778 fabricate_dcb_output(dcb, DCB_OUTPUT_TMDS,
1787 struct dcb_table *dcb = &drm->vbios.dcb;
1788 u32 conf = (dcb->version >= 0x20) ? ROM32(outp[4]) : ROM32(outp[6]);
1793 struct dcb_output *entry = new_dcb_entry(dcb);
1797 if (dcb->version >= 0x20)
1798 ret = parse_dcb20_entry(dev, dcb, conn, conf, entry);
1800 ret = parse_dcb15_entry(dev, dcb, conn, conf, entry);
1819 struct dcb_table *dcbt = &bios->dcb;
1866 struct dcb_table *dcb = &bios->dcb;
1883 dcb->version = dcbt[0];
1890 if (dcb->version < 0x21)
1891 merge_like_dcb_entries(dev, dcb);