Module Name: src Committed By: jmcneill Date: Sat Nov 23 12:28:44 UTC 2019
Modified Files: src/sys/dev/ic: dw_hdmi.c dw_hdmi.h Log Message: Allow bus glue to setup DDC clocks To generate a diff of this commit: cvs rdiff -u -r1.4 -r1.5 src/sys/dev/ic/dw_hdmi.c src/sys/dev/ic/dw_hdmi.h Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/sys/dev/ic/dw_hdmi.c diff -u src/sys/dev/ic/dw_hdmi.c:1.4 src/sys/dev/ic/dw_hdmi.c:1.5 --- src/sys/dev/ic/dw_hdmi.c:1.4 Sat Nov 16 13:10:07 2019 +++ src/sys/dev/ic/dw_hdmi.c Sat Nov 23 12:28:44 2019 @@ -1,4 +1,4 @@ -/* $NetBSD: dw_hdmi.c,v 1.4 2019/11/16 13:10:07 jmcneill Exp $ */ +/* $NetBSD: dw_hdmi.c,v 1.5 2019/11/23 12:28:44 jmcneill Exp $ */ /*- * Copyright (c) 2019 Jared D. McNeill <jmcne...@invisible.ca> @@ -27,7 +27,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: dw_hdmi.c,v 1.4 2019/11/16 13:10:07 jmcneill Exp $"); +__KERNEL_RCSID(0, "$NetBSD: dw_hdmi.c,v 1.5 2019/11/23 12:28:44 jmcneill Exp $"); #include <sys/param.h> #include <sys/bus.h> @@ -239,6 +239,8 @@ __KERNEL_RCSID(0, "$NetBSD: dw_hdmi.c,v #define HDMI_I2CM_SOFTRSTZ 0x7e09 #define HDMI_I2CM_SOFTRSTZ_I2C_SOFTRST __BIT(0) #define HDMI_I2CM_SEGPTR 0x7e0a +#define HDMI_I2CM_SS_SCL_HCNT_0_ADDR 0x730c +#define HDMI_I2CM_SS_SCL_LCNT_0_ADDR 0x730e enum dwhdmi_dai_mixer_ctrl { DWHDMI_DAI_OUTPUT_CLASS, @@ -291,6 +293,10 @@ dwhdmi_ddc_exec(void *priv, i2c_op_t op, dwhdmi_write(sc, HDMI_I2CM_SOFTRSTZ, 0); dwhdmi_write(sc, HDMI_IH_I2CM_STAT0, dwhdmi_read(sc, HDMI_IH_I2CM_STAT0)); + if (sc->sc_scl_hcnt) + dwhdmi_write(sc, HDMI_I2CM_SS_SCL_HCNT_0_ADDR, sc->sc_scl_hcnt); + if (sc->sc_scl_lcnt) + dwhdmi_write(sc, HDMI_I2CM_SS_SCL_LCNT_0_ADDR, sc->sc_scl_lcnt); dwhdmi_write(sc, HDMI_I2CM_DIV, 0); dwhdmi_write(sc, HDMI_I2CM_SLAVE, DDC_ADDR); dwhdmi_write(sc, HDMI_I2CM_SEGADDR, DDC_SEGMENT_ADDR); @@ -299,6 +305,8 @@ dwhdmi_ddc_exec(void *priv, i2c_op_t op, operation = block ? HDMI_I2CM_OPERATION_RD_EXT : HDMI_I2CM_OPERATION_RD; off = (block & 1) ? 128 : 0; + dwhdmi_write(sc, HDMI_I2CM_SEGPTR, block >> 1); + for (n = 0; n < len; n++) { dwhdmi_write(sc, HDMI_I2CM_ADDRESS, n + off); dwhdmi_write(sc, HDMI_I2CM_OPERATION, operation); Index: src/sys/dev/ic/dw_hdmi.h diff -u src/sys/dev/ic/dw_hdmi.h:1.4 src/sys/dev/ic/dw_hdmi.h:1.5 --- src/sys/dev/ic/dw_hdmi.h:1.4 Sat Nov 16 13:10:07 2019 +++ src/sys/dev/ic/dw_hdmi.h Sat Nov 23 12:28:44 2019 @@ -1,4 +1,4 @@ -/* $NetBSD: dw_hdmi.h,v 1.4 2019/11/16 13:10:07 jmcneill Exp $ */ +/* $NetBSD: dw_hdmi.h,v 1.5 2019/11/23 12:28:44 jmcneill Exp $ */ /*- * Copyright (c) 2019 Jared D. McNeill <jmcne...@invisible.ca> @@ -67,6 +67,8 @@ struct dwhdmi_softc { u_int sc_reg_width; u_int sc_flags; #define DWHDMI_USE_INTERNAL_PHY __BIT(0) + u_int sc_scl_hcnt; + u_int sc_scl_lcnt; u_int sc_phytype; u_int sc_version;