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

1 // SPDX-License-Identifier: GPL-2.0-only
19 struct hdmi *hdmi = hdmi_i2c->hdmi;
33 /* enable reference timer for 27us */
41 struct hdmi *hdmi = hdmi_i2c->hdmi;
42 struct drm_device *dev = hdmi->dev;
47 --retry;
58 DRM_DEV_ERROR(dev->dev, "timeout waiting for DDC\n");
59 return -ETIMEDOUT;
62 hdmi_i2c->sw_done = false;
71 struct hdmi *hdmi = hdmi_i2c->hdmi;
73 if (!hdmi_i2c->sw_done) {
80 hdmi_i2c->sw_done = true;
86 return hdmi_i2c->sw_done;
93 struct hdmi *hdmi = hdmi_i2c->hdmi;
94 struct drm_device *dev = hdmi->dev;
110 ret = pm_runtime_resume_and_get(&hdmi->pdev->dev);
122 uint32_t raw_addr = p->addr << 1;
124 if (p->flags & I2C_M_RD)
140 if (p->flags & I2C_M_RD) {
141 index += p->len;
143 for (j = 0; j < p->len; j++) {
144 ddc_data = HDMI_DDC_DATA_DATA(p->buf[j]) |
151 i2c_trans = HDMI_I2C_TRANSACTION_REG_CNT(p->len) |
153 (p->flags & I2C_M_RD) ? DDC_READ : DDC_WRITE) |
156 if (i == (num - 1))
164 HDMI_DDC_CTRL_TRANSACTION_CNT(num - 1) |
167 ret = wait_event_timeout(hdmi_i2c->ddc_event, sw_done(hdmi_i2c), HZ/4);
170 ret = -ETIMEDOUT;
171 dev_warn(dev->dev, "DDC timeout: %d\n", ret);
185 if (!(p->flags & I2C_M_RD))
203 for (j = 0; j < p->len; j++) {
205 p->buf[j] = FIELD(ddc_data, HDMI_DDC_DATA_DATA);
209 pm_runtime_put(&hdmi->pdev->dev);
214 pm_runtime_put(&hdmi->pdev->dev);
233 wake_up_all(&hdmi_i2c->ddc_event);
251 ret = -ENOMEM;
255 i2c = &hdmi_i2c->base;
257 hdmi_i2c->hdmi = hdmi;
258 init_waitqueue_head(&hdmi_i2c->ddc_event);
261 i2c->owner = THIS_MODULE;
262 snprintf(i2c->name, sizeof(i2c->name), "msm hdmi i2c");
263 i2c->dev.parent = &hdmi->pdev->dev;
264 i2c->algo = &msm_hdmi_i2c_algorithm;