Lines Matching +full:msm +full:- +full:timer

1 // SPDX-License-Identifier: GPL-2.0-only
19 struct hdmi *hdmi = hdmi_i2c->hdmi; in init_ddc()
33 /* enable reference timer for 27us */ in init_ddc()
41 struct hdmi *hdmi = hdmi_i2c->hdmi; in ddc_clear_irq()
42 struct drm_device *dev = hdmi->dev; in ddc_clear_irq()
47 --retry; in ddc_clear_irq()
58 DRM_DEV_ERROR(dev->dev, "timeout waiting for DDC\n"); in ddc_clear_irq()
59 return -ETIMEDOUT; in ddc_clear_irq()
62 hdmi_i2c->sw_done = false; in ddc_clear_irq()
71 struct hdmi *hdmi = hdmi_i2c->hdmi; in sw_done()
73 if (!hdmi_i2c->sw_done) { in sw_done()
80 hdmi_i2c->sw_done = true; in sw_done()
86 return hdmi_i2c->sw_done; in sw_done()
93 struct hdmi *hdmi = hdmi_i2c->hdmi; in msm_hdmi_i2c_xfer()
94 struct drm_device *dev = hdmi->dev; in msm_hdmi_i2c_xfer()
118 uint32_t raw_addr = p->addr << 1; in msm_hdmi_i2c_xfer()
120 if (p->flags & I2C_M_RD) in msm_hdmi_i2c_xfer()
136 if (p->flags & I2C_M_RD) { in msm_hdmi_i2c_xfer()
137 index += p->len; in msm_hdmi_i2c_xfer()
139 for (j = 0; j < p->len; j++) { in msm_hdmi_i2c_xfer()
140 ddc_data = HDMI_DDC_DATA_DATA(p->buf[j]) | in msm_hdmi_i2c_xfer()
147 i2c_trans = HDMI_I2C_TRANSACTION_REG_CNT(p->len) | in msm_hdmi_i2c_xfer()
149 (p->flags & I2C_M_RD) ? DDC_READ : DDC_WRITE) | in msm_hdmi_i2c_xfer()
152 if (i == (num - 1)) in msm_hdmi_i2c_xfer()
160 HDMI_DDC_CTRL_TRANSACTION_CNT(num - 1) | in msm_hdmi_i2c_xfer()
163 ret = wait_event_timeout(hdmi_i2c->ddc_event, sw_done(hdmi_i2c), HZ/4); in msm_hdmi_i2c_xfer()
166 ret = -ETIMEDOUT; in msm_hdmi_i2c_xfer()
167 dev_warn(dev->dev, "DDC timeout: %d\n", ret); in msm_hdmi_i2c_xfer()
181 if (!(p->flags & I2C_M_RD)) in msm_hdmi_i2c_xfer()
199 for (j = 0; j < p->len; j++) { in msm_hdmi_i2c_xfer()
201 p->buf[j] = FIELD(ddc_data, HDMI_DDC_DATA_DATA); in msm_hdmi_i2c_xfer()
223 wake_up_all(&hdmi_i2c->ddc_event); in msm_hdmi_i2c_irq()
241 ret = -ENOMEM; in msm_hdmi_i2c_init()
245 i2c = &hdmi_i2c->base; in msm_hdmi_i2c_init()
247 hdmi_i2c->hdmi = hdmi; in msm_hdmi_i2c_init()
248 init_waitqueue_head(&hdmi_i2c->ddc_event); in msm_hdmi_i2c_init()
251 i2c->owner = THIS_MODULE; in msm_hdmi_i2c_init()
252 snprintf(i2c->name, sizeof(i2c->name), "msm hdmi i2c"); in msm_hdmi_i2c_init()
253 i2c->dev.parent = &hdmi->pdev->dev; in msm_hdmi_i2c_init()
254 i2c->algo = &msm_hdmi_i2c_algorithm; in msm_hdmi_i2c_init()