Lines Matching +full:addr +full:- +full:mode
1 /*-
57 #define MKREG(page, addr) (((page) << 8) | (addr)) argument
253 uint8_t addr = TDA_CURPAGE_ADDR; in tda19988_set_page() local
257 { sc->sc_addr, IIC_M_WR, 2, cmd }, in tda19988_set_page()
260 cmd[0] = addr; in tda19988_set_page()
263 result = (iicbus_transfer(sc->sc_dev, msg, 1)); in tda19988_set_page()
267 sc->sc_current_page = page; in tda19988_set_page()
273 tda19988_cec_read(struct tda19988_softc *sc, uint8_t addr, uint8_t *data) in tda19988_cec_read() argument
277 { sc->sc_cec_addr, IIC_M_WR, 1, &addr }, in tda19988_cec_read()
278 { sc->sc_cec_addr, IIC_M_RD, 1, data }, in tda19988_cec_read()
281 result = iicbus_transfer(sc->sc_dev, msg, 2); in tda19988_cec_read()
293 { sc->sc_cec_addr, IIC_M_WR, 2, cmd }, in tda19988_cec_write()
299 result = iicbus_transfer(sc->sc_dev, msg, 1); in tda19988_cec_write()
306 tda19988_block_read(struct tda19988_softc *sc, uint16_t addr, uint8_t *data, int len) in tda19988_block_read() argument
311 { sc->sc_addr, IIC_M_WR, 1, ® }, in tda19988_block_read()
312 { sc->sc_addr, IIC_M_RD, len, data }, in tda19988_block_read()
315 reg = REGADDR(addr); in tda19988_block_read()
317 if (sc->sc_current_page != REGPAGE(addr)) in tda19988_block_read()
318 tda19988_set_page(sc, REGPAGE(addr)); in tda19988_block_read()
320 result = (iicbus_transfer(sc->sc_dev, msg, 2)); in tda19988_block_read()
322 device_printf(sc->sc_dev, "tda19988_block_read failed: %d\n", result); in tda19988_block_read()
327 tda19988_reg_read(struct tda19988_softc *sc, uint16_t addr, uint8_t *data) in tda19988_reg_read() argument
332 { sc->sc_addr, IIC_M_WR, 1, ® }, in tda19988_reg_read()
333 { sc->sc_addr, IIC_M_RD, 1, data }, in tda19988_reg_read()
336 reg = REGADDR(addr); in tda19988_reg_read()
338 if (sc->sc_current_page != REGPAGE(addr)) in tda19988_reg_read()
339 tda19988_set_page(sc, REGPAGE(addr)); in tda19988_reg_read()
341 result = (iicbus_transfer(sc->sc_dev, msg, 2)); in tda19988_reg_read()
343 device_printf(sc->sc_dev, "tda19988_reg_read failed: %d\n", result); in tda19988_reg_read()
353 { sc->sc_addr, IIC_M_WR, 2, cmd }, in tda19988_reg_write()
359 if (sc->sc_current_page != REGPAGE(address)) in tda19988_reg_write()
362 result = iicbus_transfer(sc->sc_dev, msg, 1); in tda19988_reg_write()
364 device_printf(sc->sc_dev, "tda19988_reg_write failed: %d\n", result); in tda19988_reg_write()
375 { sc->sc_addr, IIC_M_WR, 3, cmd }, in tda19988_reg_write2()
382 if (sc->sc_current_page != REGPAGE(address)) in tda19988_reg_write2()
385 result = iicbus_transfer(sc->sc_dev, msg, 1); in tda19988_reg_write2()
387 device_printf(sc->sc_dev, "tda19988_reg_write2 failed: %d\n", result); in tda19988_reg_write2()
393 tda19988_reg_set(struct tda19988_softc *sc, uint16_t addr, uint8_t flags) in tda19988_reg_set() argument
397 tda19988_reg_read(sc, addr, &data); in tda19988_reg_set()
399 tda19988_reg_write(sc, addr, data); in tda19988_reg_set()
403 tda19988_reg_clear(struct tda19988_softc *sc, uint16_t addr, uint8_t flags) in tda19988_reg_clear() argument
407 tda19988_reg_read(sc, addr, &data); in tda19988_reg_clear()
409 tda19988_reg_write(sc, addr, data); in tda19988_reg_clear()
423 tda19988_init_encoder(struct tda19988_softc *sc, const struct videomode *mode) in tda19988_init_encoder() argument
436 n_pix = mode->htotal; in tda19988_init_encoder()
437 n_line = mode->vtotal; in tda19988_init_encoder()
439 hs_pix_stop = mode->hsync_end - mode->hdisplay; in tda19988_init_encoder()
440 hs_pix_start = mode->hsync_start - mode->hdisplay; in tda19988_init_encoder()
442 de_stop = mode->htotal; in tda19988_init_encoder()
443 de_start = mode->htotal - mode->hdisplay; in tda19988_init_encoder()
446 if (mode->flags & VID_HSKEW) in tda19988_init_encoder()
447 ref_pix += mode->hskew; in tda19988_init_encoder()
449 if ((mode->flags & VID_INTERLACE) == 0) { in tda19988_init_encoder()
450 ref_line = 1 + mode->vsync_start - mode->vdisplay; in tda19988_init_encoder()
451 vwin1_line_start = mode->vtotal - mode->vdisplay - 1; in tda19988_init_encoder()
452 vwin1_line_end = vwin1_line_start + mode->vdisplay; in tda19988_init_encoder()
455 vs1_line_start = mode->vsync_start - mode->vdisplay; in tda19988_init_encoder()
456 vs1_line_end = vs1_line_start + mode->vsync_end - mode->vsync_start; in tda19988_init_encoder()
462 ref_line = 1 + (mode->vsync_start - mode->vdisplay)/2; in tda19988_init_encoder()
463 vwin1_line_start = (mode->vtotal - mode->vdisplay)/2; in tda19988_init_encoder()
464 vwin1_line_end = vwin1_line_start + mode->vdisplay/2; in tda19988_init_encoder()
467 vs1_line_start = (mode->vsync_start - mode->vdisplay)/2; in tda19988_init_encoder()
468 vs1_line_end = vs1_line_start + (mode->vsync_end - mode->vsync_start)/2; in tda19988_init_encoder()
470 vwin2_line_start = vwin1_line_start + mode->vtotal/2; in tda19988_init_encoder()
471 vwin2_line_end = vwin2_line_start + mode->vdisplay/2; in tda19988_init_encoder()
473 vs2_pix_start = vs2_pix_stop = hs_pix_start + mode->htotal/2; in tda19988_init_encoder()
474 vs2_line_start = vs1_line_start + mode->vtotal/2 ; in tda19988_init_encoder()
475 vs2_line_end = vs2_line_start + (mode->vsync_end - mode->vsync_start)/2; in tda19988_init_encoder()
478 div = 148500 / mode->dot_clock; in tda19988_init_encoder()
480 div--; in tda19988_init_encoder()
485 /* set HDMI HDCP mode off */ in tda19988_init_encoder()
490 /* no pre-filter or interpolator */ in tda19988_init_encoder()
520 if (mode->flags & VID_NHSYNC) in tda19988_init_encoder()
522 if (mode->flags & VID_NVSYNC) in tda19988_init_encoder()
527 if (mode->flags & VID_NHSYNC) in tda19988_init_encoder()
529 if (mode->flags & VID_NVSYNC) in tda19988_init_encoder()
558 if (sc->sc_version == TDA19988) in tda19988_init_encoder()
593 err = -1; in tda19988_read_edid_block()
598 err = -1; in tda19988_read_edid_block()
616 if (sc->sc_version == TDA19988) in tda19988_read_edid()
619 err = tda19988_read_edid_block(sc, sc->sc_edid, 0); in tda19988_read_edid()
623 blocks = sc->sc_edid[0x7e]; in tda19988_read_edid()
625 sc->sc_edid = realloc(sc->sc_edid, in tda19988_read_edid()
627 sc->sc_edid_len = EDID_LENGTH*(blocks+1); in tda19988_read_edid()
630 buf = sc->sc_edid + EDID_LENGTH*(i+1); in tda19988_read_edid()
637 EVENTHANDLER_INVOKE(hdmi_event, sc->sc_dev, HDMI_EVENT_CONNECTED); in tda19988_read_edid()
639 if (sc->sc_version == TDA19988) in tda19988_read_edid()
652 dev = sc->sc_dev; in tda19988_start()
692 sc->sc_version = version & ~0x30; in tda19988_start()
693 switch (sc->sc_version) { in tda19988_start()
698 device_printf(dev, "Unknown device: %04x\n", sc->sc_version); in tda19988_start()
727 sc->sc_dev = dev; in tda19988_attach()
728 sc->sc_addr = iicbus_get_addr(dev); in tda19988_attach()
729 sc->sc_cec_addr = (0x34 << 1); /* hardcoded */ in tda19988_attach()
730 sc->sc_edid = malloc(EDID_LENGTH, M_DEVBUF, M_WAITOK | M_ZERO); in tda19988_attach()
731 sc->sc_edid_len = EDID_LENGTH; in tda19988_attach()
758 if (sc->sc_edid) { in tda19988_get_edid()
759 *edid = sc->sc_edid; in tda19988_get_edid()
760 *edid_len = sc->sc_edid_len; in tda19988_get_edid()
768 tda19988_set_videomode(device_t dev, const struct videomode *mode) in tda19988_set_videomode() argument
774 tda19988_init_encoder(sc, mode); in tda19988_set_videomode()