Lines Matching refs:hdmi

22 void hdmi_set_mode(struct hdmi *hdmi, bool power_on)  in hdmi_set_mode()  argument
27 spin_lock_irqsave(&hdmi->reg_lock, flags); in hdmi_set_mode()
30 if (!hdmi->hdmi_mode) { in hdmi_set_mode()
32 hdmi_write(hdmi, REG_HDMI_CTRL, ctrl); in hdmi_set_mode()
41 hdmi_write(hdmi, REG_HDMI_CTRL, ctrl); in hdmi_set_mode()
42 spin_unlock_irqrestore(&hdmi->reg_lock, flags); in hdmi_set_mode()
49 struct hdmi *hdmi = dev_id; in hdmi_irq() local
52 hdmi_connector_irq(hdmi->connector); in hdmi_irq()
55 hdmi_i2c_irq(hdmi->i2c); in hdmi_irq()
58 if (hdmi->hdcp_ctrl) in hdmi_irq()
59 hdmi_hdcp_irq(hdmi->hdcp_ctrl); in hdmi_irq()
66 static void hdmi_destroy(struct hdmi *hdmi) in hdmi_destroy() argument
68 struct hdmi_phy *phy = hdmi->phy; in hdmi_destroy()
74 if (hdmi->workq) { in hdmi_destroy()
75 flush_workqueue(hdmi->workq); in hdmi_destroy()
76 destroy_workqueue(hdmi->workq); in hdmi_destroy()
78 hdmi_hdcp_destroy(hdmi); in hdmi_destroy()
82 if (hdmi->i2c) in hdmi_destroy()
83 hdmi_i2c_destroy(hdmi->i2c); in hdmi_destroy()
85 platform_set_drvdata(hdmi->pdev, NULL); in hdmi_destroy()
92 static struct hdmi *hdmi_init(struct platform_device *pdev) in hdmi_init()
95 struct hdmi *hdmi = NULL; in hdmi_init() local
99 hdmi = devm_kzalloc(&pdev->dev, sizeof(*hdmi), GFP_KERNEL); in hdmi_init()
100 if (!hdmi) { in hdmi_init()
105 hdmi->pdev = pdev; in hdmi_init()
106 hdmi->config = config; in hdmi_init()
107 spin_lock_init(&hdmi->reg_lock); in hdmi_init()
111 hdmi->phy = config->phy_init(hdmi); in hdmi_init()
113 if (IS_ERR(hdmi->phy)) { in hdmi_init()
114 ret = PTR_ERR(hdmi->phy); in hdmi_init()
116 hdmi->phy = NULL; in hdmi_init()
121 hdmi->mmio = msm_ioremap(pdev, config->mmio_name, "HDMI"); in hdmi_init()
122 if (IS_ERR(hdmi->mmio)) { in hdmi_init()
123 ret = PTR_ERR(hdmi->mmio); in hdmi_init()
130 hdmi->mmio_phy_addr = res->start; in hdmi_init()
132 hdmi->qfprom_mmio = msm_ioremap(pdev, in hdmi_init()
134 if (IS_ERR(hdmi->qfprom_mmio)) { in hdmi_init()
136 hdmi->qfprom_mmio = NULL; in hdmi_init()
139 hdmi->hpd_regs = devm_kzalloc(&pdev->dev, sizeof(hdmi->hpd_regs[0]) * in hdmi_init()
141 if (!hdmi->hpd_regs) { in hdmi_init()
157 hdmi->hpd_regs[i] = reg; in hdmi_init()
160 hdmi->pwr_regs = devm_kzalloc(&pdev->dev, sizeof(hdmi->pwr_regs[0]) * in hdmi_init()
162 if (!hdmi->pwr_regs) { in hdmi_init()
178 hdmi->pwr_regs[i] = reg; in hdmi_init()
181 hdmi->hpd_clks = devm_kzalloc(&pdev->dev, sizeof(hdmi->hpd_clks[0]) * in hdmi_init()
183 if (!hdmi->hpd_clks) { in hdmi_init()
198 hdmi->hpd_clks[i] = clk; in hdmi_init()
201 hdmi->pwr_clks = devm_kzalloc(&pdev->dev, sizeof(hdmi->pwr_clks[0]) * in hdmi_init()
203 if (!hdmi->pwr_clks) { in hdmi_init()
218 hdmi->pwr_clks[i] = clk; in hdmi_init()
221 hdmi->workq = alloc_ordered_workqueue("msm_hdmi", 0); in hdmi_init()
223 hdmi->i2c = hdmi_i2c_init(hdmi); in hdmi_init()
224 if (IS_ERR(hdmi->i2c)) { in hdmi_init()
225 ret = PTR_ERR(hdmi->i2c); in hdmi_init()
227 hdmi->i2c = NULL; in hdmi_init()
231 hdmi->hdcp_ctrl = hdmi_hdcp_init(hdmi); in hdmi_init()
232 if (IS_ERR(hdmi->hdcp_ctrl)) { in hdmi_init()
234 hdmi->hdcp_ctrl = NULL; in hdmi_init()
237 return hdmi; in hdmi_init()
240 if (hdmi) in hdmi_init()
241 hdmi_destroy(hdmi); in hdmi_init()
254 int hdmi_modeset_init(struct hdmi *hdmi, in hdmi_modeset_init() argument
258 struct platform_device *pdev = hdmi->pdev; in hdmi_modeset_init()
261 hdmi->dev = dev; in hdmi_modeset_init()
262 hdmi->encoder = encoder; in hdmi_modeset_init()
264 hdmi_audio_infoframe_init(&hdmi->audio.infoframe); in hdmi_modeset_init()
266 hdmi->bridge = hdmi_bridge_init(hdmi); in hdmi_modeset_init()
267 if (IS_ERR(hdmi->bridge)) { in hdmi_modeset_init()
268 ret = PTR_ERR(hdmi->bridge); in hdmi_modeset_init()
270 hdmi->bridge = NULL; in hdmi_modeset_init()
274 hdmi->connector = hdmi_connector_init(hdmi); in hdmi_modeset_init()
275 if (IS_ERR(hdmi->connector)) { in hdmi_modeset_init()
276 ret = PTR_ERR(hdmi->connector); in hdmi_modeset_init()
278 hdmi->connector = NULL; in hdmi_modeset_init()
282 hdmi->irq = irq_of_parse_and_map(pdev->dev.of_node, 0); in hdmi_modeset_init()
283 if (hdmi->irq < 0) { in hdmi_modeset_init()
284 ret = hdmi->irq; in hdmi_modeset_init()
289 ret = devm_request_irq(&pdev->dev, hdmi->irq, in hdmi_modeset_init()
291 "hdmi_isr", hdmi); in hdmi_modeset_init()
294 hdmi->irq, ret); in hdmi_modeset_init()
298 encoder->bridge = hdmi->bridge; in hdmi_modeset_init()
300 priv->bridges[priv->num_bridges++] = hdmi->bridge; in hdmi_modeset_init()
301 priv->connectors[priv->num_connectors++] = hdmi->connector; in hdmi_modeset_init()
303 platform_set_drvdata(pdev, hdmi); in hdmi_modeset_init()
309 if (hdmi->bridge) { in hdmi_modeset_init()
310 hdmi_bridge_destroy(hdmi->bridge); in hdmi_modeset_init()
311 hdmi->bridge = NULL; in hdmi_modeset_init()
313 if (hdmi->connector) { in hdmi_modeset_init()
314 hdmi->connector->funcs->destroy(hdmi->connector); in hdmi_modeset_init()
315 hdmi->connector = NULL; in hdmi_modeset_init()
423 struct hdmi *hdmi; in hdmi_bind() local
497 hdmi = hdmi_init(to_platform_device(dev)); in hdmi_bind()
498 if (IS_ERR(hdmi)) in hdmi_bind()
499 return PTR_ERR(hdmi); in hdmi_bind()
500 priv->hdmi = hdmi; in hdmi_bind()
510 if (priv->hdmi) { in hdmi_unbind()
511 hdmi_destroy(priv->hdmi); in hdmi_unbind()
512 priv->hdmi = NULL; in hdmi_unbind()