| 390 | } |
| 391 | |
| 392 | static int |
| 393 | a10hdmi_ddc_read(struct a10hdmi_softc *sc, int block, uint8_t *edid) |
| 394 | { |
| 395 | int resid, off, len, error; |
| 396 | uint8_t *pbuf; |
| 397 | |
| 398 | pbuf = edid; |
| 399 | resid = EDID_LENGTH; |
| 400 | off = (block & 1) ? EDID_LENGTH : 0; |
| 401 | |
| 402 | while (resid > 0) { |
| 403 | len = min(resid, DDC_BLKLEN); |
| 404 | error = a10hdmi_ddc_xfer(sc, DDC_ADDR, block >> 1, off, len); |
| 405 | if (error != 0) |
| 406 | return (error); |
| 407 | |
| 408 | bus_read_multi_1(sc->res, DDC_FIFO, pbuf, len); |
| 409 | |
| 410 | pbuf += len; |
| 411 | off += len; |
| 412 | resid -= len; |
| 413 | } |
| 414 | |
| 415 | return (0); |
| 416 | } |
| 417 | |
| 418 | static int |
| 419 | a10hdmi_detect_hdmi_vsdb(uint8_t *edid) |
no test coverage detected