Lines Matching full:hdmi

5 #include "hdmi.h"
21 /* QFPROM Registers for HDMI/HDCP */
49 struct hdmi *hdmi; member
78 static int msm_hdmi_ddc_read(struct hdmi *hdmi, u16 addr, u8 offset, in msm_hdmi_ddc_read() argument
99 rc = i2c_transfer(hdmi->i2c, msgs, 2); in msm_hdmi_ddc_read()
116 static int msm_hdmi_ddc_write(struct hdmi *hdmi, u16 addr, u8 offset, in msm_hdmi_ddc_write() argument
141 rc = i2c_transfer(hdmi->i2c, msgs, 1); in msm_hdmi_ddc_write()
159 struct hdmi *hdmi = hdcp_ctrl->hdmi; in msm_hdmi_hdcp_scm_wr() local
167 phy_addr = (u32)hdmi->mmio_phy_addr; in msm_hdmi_hdcp_scm_wr()
190 hdmi_write(hdmi, preg[i], pdata[i]); in msm_hdmi_hdcp_scm_wr()
198 struct hdmi *hdmi = hdcp_ctrl->hdmi; in msm_hdmi_hdcp_irq() local
202 spin_lock_irqsave(&hdmi->reg_lock, flags); in msm_hdmi_hdcp_irq()
203 reg_val = hdmi_read(hdmi, REG_HDMI_HDCP_INT_CTRL); in msm_hdmi_hdcp_irq()
206 spin_unlock_irqrestore(&hdmi->reg_lock, flags); in msm_hdmi_hdcp_irq()
214 hdmi_write(hdmi, REG_HDMI_HDCP_INT_CTRL, reg_val); in msm_hdmi_hdcp_irq()
215 spin_unlock_irqrestore(&hdmi->reg_lock, flags); in msm_hdmi_hdcp_irq()
228 reg_val = hdmi_read(hdmi, REG_HDMI_HDCP_LINK0_STATUS); in msm_hdmi_hdcp_irq()
232 queue_work(hdmi->workq, &hdcp_ctrl->hdcp_reauth_work); in msm_hdmi_hdcp_irq()
260 struct hdmi *hdmi = hdcp_ctrl->hdmi; in msm_hdmi_hdcp_read_validate_aksv() local
263 hdcp_ctrl->aksv_lsb = hdmi_qfprom_read(hdmi, HDCP_KSV_LSB); in msm_hdmi_hdcp_read_validate_aksv()
264 hdcp_ctrl->aksv_msb = hdmi_qfprom_read(hdmi, HDCP_KSV_MSB); in msm_hdmi_hdcp_read_validate_aksv()
283 struct hdmi *hdmi = hdcp_ctrl->hdmi; in msm_reset_hdcp_ddc_failures() local
288 reg_val = hdmi_read(hdmi, REG_HDMI_HDCP_DDC_STATUS); in msm_reset_hdcp_ddc_failures()
305 hdmi_write(hdmi, REG_HDMI_HDCP_DDC_CTRL_0, in msm_reset_hdcp_ddc_failures()
309 reg_val = hdmi_read(hdmi, REG_HDMI_HDCP_DDC_CTRL_1); in msm_reset_hdcp_ddc_failures()
311 hdmi_write(hdmi, REG_HDMI_HDCP_DDC_CTRL_1, reg_val); in msm_reset_hdcp_ddc_failures()
314 reg_val = hdmi_read(hdmi, REG_HDMI_HDCP_DDC_STATUS); in msm_reset_hdcp_ddc_failures()
320 hdmi_write(hdmi, REG_HDMI_HDCP_DDC_CTRL_0, 0); in msm_reset_hdcp_ddc_failures()
325 hdmi_read(hdmi, REG_HDMI_DDC_SW_STATUS)); in msm_reset_hdcp_ddc_failures()
326 /* Reset HDMI DDC software status */ in msm_reset_hdcp_ddc_failures()
327 reg_val = hdmi_read(hdmi, REG_HDMI_DDC_CTRL); in msm_reset_hdcp_ddc_failures()
329 hdmi_write(hdmi, REG_HDMI_DDC_CTRL, reg_val); in msm_reset_hdcp_ddc_failures()
333 reg_val = hdmi_read(hdmi, REG_HDMI_DDC_CTRL); in msm_reset_hdcp_ddc_failures()
335 hdmi_write(hdmi, REG_HDMI_DDC_CTRL, reg_val); in msm_reset_hdcp_ddc_failures()
337 /* Reset HDMI DDC Controller */ in msm_reset_hdcp_ddc_failures()
338 reg_val = hdmi_read(hdmi, REG_HDMI_DDC_CTRL); in msm_reset_hdcp_ddc_failures()
340 hdmi_write(hdmi, REG_HDMI_DDC_CTRL, reg_val); in msm_reset_hdcp_ddc_failures()
346 reg_val = hdmi_read(hdmi, REG_HDMI_DDC_CTRL); in msm_reset_hdcp_ddc_failures()
348 hdmi_write(hdmi, REG_HDMI_DDC_CTRL, reg_val); in msm_reset_hdcp_ddc_failures()
350 hdmi_read(hdmi, REG_HDMI_DDC_SW_STATUS)); in msm_reset_hdcp_ddc_failures()
363 struct hdmi *hdmi = hdcp_ctrl->hdmi; in msm_hdmi_hdcp_hw_ddc_clean() local
365 if (hdmi_read(hdmi, REG_HDMI_DDC_HW_STATUS) == 0) in msm_hdmi_hdcp_hw_ddc_clean()
371 hdcp_ddc_status = hdmi_read(hdmi, REG_HDMI_HDCP_DDC_STATUS); in msm_hdmi_hdcp_hw_ddc_clean()
372 ddc_hw_status = hdmi_read(hdmi, REG_HDMI_DDC_HW_STATUS); in msm_hdmi_hdcp_hw_ddc_clean()
400 struct hdmi *hdmi = hdcp_ctrl->hdmi; in msm_hdmi_hdcp_reauth_work() local
411 spin_lock_irqsave(&hdmi->reg_lock, flags); in msm_hdmi_hdcp_reauth_work()
412 reg_val = hdmi_read(hdmi, REG_HDMI_HPD_CTRL); in msm_hdmi_hdcp_reauth_work()
414 hdmi_write(hdmi, REG_HDMI_HPD_CTRL, reg_val); in msm_hdmi_hdcp_reauth_work()
417 hdmi_write(hdmi, REG_HDMI_HDCP_INT_CTRL, 0); in msm_hdmi_hdcp_reauth_work()
418 spin_unlock_irqrestore(&hdmi->reg_lock, flags); in msm_hdmi_hdcp_reauth_work()
420 hdmi_write(hdmi, REG_HDMI_HDCP_RESET, in msm_hdmi_hdcp_reauth_work()
430 hdmi_write(hdmi, REG_HDMI_HDCP_CTRL, 0); in msm_hdmi_hdcp_reauth_work()
433 spin_lock_irqsave(&hdmi->reg_lock, flags); in msm_hdmi_hdcp_reauth_work()
434 reg_val = hdmi_read(hdmi, REG_HDMI_HPD_CTRL); in msm_hdmi_hdcp_reauth_work()
436 hdmi_write(hdmi, REG_HDMI_HPD_CTRL, reg_val); in msm_hdmi_hdcp_reauth_work()
437 spin_unlock_irqrestore(&hdmi->reg_lock, flags); in msm_hdmi_hdcp_reauth_work()
452 queue_work(hdmi->workq, &hdcp_ctrl->hdcp_auth_work); in msm_hdmi_hdcp_reauth_work()
457 struct hdmi *hdmi = hdcp_ctrl->hdmi; in msm_hdmi_hdcp_auth_prepare() local
473 spin_lock_irqsave(&hdmi->reg_lock, flags); in msm_hdmi_hdcp_auth_prepare()
474 /* disable HDMI Encrypt */ in msm_hdmi_hdcp_auth_prepare()
475 reg_val = hdmi_read(hdmi, REG_HDMI_CTRL); in msm_hdmi_hdcp_auth_prepare()
477 hdmi_write(hdmi, REG_HDMI_CTRL, reg_val); in msm_hdmi_hdcp_auth_prepare()
480 reg_val = hdmi_read(hdmi, REG_HDMI_DDC_ARBITRATION); in msm_hdmi_hdcp_auth_prepare()
482 hdmi_write(hdmi, REG_HDMI_DDC_ARBITRATION, reg_val); in msm_hdmi_hdcp_auth_prepare()
483 spin_unlock_irqrestore(&hdmi->reg_lock, flags); in msm_hdmi_hdcp_auth_prepare()
490 hdmi_write(hdmi, REG_HDMI_HDCP_SW_LOWER_AKSV, hdcp_ctrl->aksv_lsb); in msm_hdmi_hdcp_auth_prepare()
491 hdmi_write(hdmi, REG_HDMI_HDCP_SW_UPPER_AKSV, hdcp_ctrl->aksv_msb); in msm_hdmi_hdcp_auth_prepare()
497 hdmi_write(hdmi, REG_HDMI_HDCP_ENTROPY_CTRL0, 0xB1FFB0FF); in msm_hdmi_hdcp_auth_prepare()
498 hdmi_write(hdmi, REG_HDMI_HDCP_ENTROPY_CTRL1, 0xF00DFACE); in msm_hdmi_hdcp_auth_prepare()
501 reg_val = hdmi_read(hdmi, REG_HDMI_HDCP_DEBUG_CTRL); in msm_hdmi_hdcp_auth_prepare()
503 hdmi_write(hdmi, REG_HDMI_HDCP_DEBUG_CTRL, reg_val); in msm_hdmi_hdcp_auth_prepare()
505 hdmi_read(hdmi, REG_HDMI_HDCP_DEBUG_CTRL)); in msm_hdmi_hdcp_auth_prepare()
518 hdmi_write(hdmi, REG_HDMI_HDCP_CTRL, HDMI_HDCP_CTRL_ENABLE); in msm_hdmi_hdcp_auth_prepare()
524 link0_status = hdmi_read(hdmi, REG_HDMI_HDCP_LINK0_STATUS); in msm_hdmi_hdcp_auth_prepare()
539 struct hdmi *hdmi = hdcp_ctrl->hdmi; in msm_hdmi_hdcp_auth_fail() local
544 /* clear HDMI Encrypt */ in msm_hdmi_hdcp_auth_fail()
545 spin_lock_irqsave(&hdmi->reg_lock, flags); in msm_hdmi_hdcp_auth_fail()
546 reg_val = hdmi_read(hdmi, REG_HDMI_CTRL); in msm_hdmi_hdcp_auth_fail()
548 hdmi_write(hdmi, REG_HDMI_CTRL, reg_val); in msm_hdmi_hdcp_auth_fail()
549 spin_unlock_irqrestore(&hdmi->reg_lock, flags); in msm_hdmi_hdcp_auth_fail()
552 queue_work(hdmi->workq, &hdcp_ctrl->hdcp_reauth_work); in msm_hdmi_hdcp_auth_fail()
557 struct hdmi *hdmi = hdcp_ctrl->hdmi; in msm_hdmi_hdcp_auth_done() local
565 spin_lock_irqsave(&hdmi->reg_lock, flags); in msm_hdmi_hdcp_auth_done()
566 reg_val = hdmi_read(hdmi, REG_HDMI_DDC_ARBITRATION); in msm_hdmi_hdcp_auth_done()
568 hdmi_write(hdmi, REG_HDMI_DDC_ARBITRATION, reg_val); in msm_hdmi_hdcp_auth_done()
569 spin_unlock_irqrestore(&hdmi->reg_lock, flags); in msm_hdmi_hdcp_auth_done()
571 /* enable HDMI Encrypt */ in msm_hdmi_hdcp_auth_done()
572 spin_lock_irqsave(&hdmi->reg_lock, flags); in msm_hdmi_hdcp_auth_done()
573 reg_val = hdmi_read(hdmi, REG_HDMI_CTRL); in msm_hdmi_hdcp_auth_done()
575 hdmi_write(hdmi, REG_HDMI_CTRL, reg_val); in msm_hdmi_hdcp_auth_done()
576 spin_unlock_irqrestore(&hdmi->reg_lock, flags); in msm_hdmi_hdcp_auth_done()
593 struct hdmi *hdmi = hdcp_ctrl->hdmi; in msm_hdmi_hdcp_wait_key_an_ready() local
601 link0_status = hdmi_read(hdmi, REG_HDMI_HDCP_LINK0_STATUS); in msm_hdmi_hdcp_wait_key_an_ready()
622 link0_status = hdmi_read(hdmi, REG_HDMI_HDCP_LINK0_STATUS); in msm_hdmi_hdcp_wait_key_an_ready()
648 struct hdmi *hdmi = hdcp_ctrl->hdmi; in msm_hdmi_hdcp_send_aksv_an() local
654 link0_an[0] = hdmi_read(hdmi, REG_HDMI_HDCP_RCVPORT_DATA5); in msm_hdmi_hdcp_send_aksv_an()
655 link0_an[1] = hdmi_read(hdmi, REG_HDMI_HDCP_RCVPORT_DATA6); in msm_hdmi_hdcp_send_aksv_an()
658 link0_aksv_0 = hdmi_read(hdmi, REG_HDMI_HDCP_RCVPORT_DATA3); in msm_hdmi_hdcp_send_aksv_an()
659 link0_aksv_1 = hdmi_read(hdmi, REG_HDMI_HDCP_RCVPORT_DATA4); in msm_hdmi_hdcp_send_aksv_an()
670 rc = msm_hdmi_ddc_write(hdmi, HDCP_PORT_ADDR, 0x18, (u8 *)link0_an, in msm_hdmi_hdcp_send_aksv_an()
679 rc = msm_hdmi_ddc_write(hdmi, HDCP_PORT_ADDR, 0x10, aksv, 5); in msm_hdmi_hdcp_send_aksv_an()
692 struct hdmi *hdmi = hdcp_ctrl->hdmi; in msm_hdmi_hdcp_recv_bksv() local
697 rc = msm_hdmi_ddc_read(hdmi, HDCP_PORT_ADDR, 0x00, bksv, 5); in msm_hdmi_hdcp_recv_bksv()
730 struct hdmi *hdmi = hdcp_ctrl->hdmi; in msm_hdmi_hdcp_recv_bcaps() local
734 rc = msm_hdmi_ddc_read(hdmi, HDCP_PORT_ADDR, 0x40, &bcaps, 1); in msm_hdmi_hdcp_recv_bcaps()
754 struct hdmi *hdmi = hdcp_ctrl->hdmi; in msm_hdmi_hdcp_auth_part1_key_exchange() local
776 hdmi_write(hdmi, REG_HDMI_HDCP_RCVPORT_DATA4, 0); in msm_hdmi_hdcp_auth_part1_key_exchange()
793 spin_lock_irqsave(&hdmi->reg_lock, flags); in msm_hdmi_hdcp_auth_part1_key_exchange()
794 hdmi_write(hdmi, REG_HDMI_HDCP_INT_CTRL, in msm_hdmi_hdcp_auth_part1_key_exchange()
800 spin_unlock_irqrestore(&hdmi->reg_lock, flags); in msm_hdmi_hdcp_auth_part1_key_exchange()
808 struct hdmi *hdmi = hdcp_ctrl->hdmi; in msm_hdmi_hdcp_auth_part1_recv_r0() local
821 rc = msm_hdmi_ddc_read(hdmi, HDCP_PORT_ADDR, 0x08, buf, 2); in msm_hdmi_hdcp_auth_part1_recv_r0()
829 hdmi_write(hdmi, REG_HDMI_HDCP_RCVPORT_DATA2_0, in msm_hdmi_hdcp_auth_part1_recv_r0()
838 struct hdmi *hdmi = hdcp_ctrl->hdmi; in msm_hdmi_hdcp_auth_part1_verify_r0() local
849 link0_status = hdmi_read(hdmi, REG_HDMI_HDCP_LINK0_STATUS); in msm_hdmi_hdcp_auth_part1_verify_r0()
856 hdmi_write(hdmi, REG_HDMI_HDCP_CTRL, in msm_hdmi_hdcp_auth_part1_verify_r0()
867 struct hdmi *hdmi = hdcp_ctrl->hdmi; in msm_hdmi_hdcp_recv_check_bstatus() local
874 rc = msm_hdmi_ddc_read(hdmi, HDCP_PORT_ADDR, 0x41, buf, 2); in msm_hdmi_hdcp_recv_check_bstatus()
934 struct hdmi *hdmi = hdcp_ctrl->hdmi; in msm_hdmi_hdcp_auth_part2_wait_ksv_fifo_ready() local
947 rc = msm_hdmi_ddc_read(hdmi, HDCP_PORT_ADDR, 0x40, &bcaps, 1); in msm_hdmi_hdcp_auth_part2_wait_ksv_fifo_ready()
993 struct hdmi *hdmi = hdcp_ctrl->hdmi; in msm_hdmi_hdcp_transfer_v_h() local
1010 rc = msm_hdmi_ddc_read(hdmi, HDCP_PORT_ADDR, in msm_hdmi_hdcp_transfer_v_h()
1030 struct hdmi *hdmi = hdcp_ctrl->hdmi; in msm_hdmi_hdcp_recv_ksv_fifo() local
1035 rc = msm_hdmi_ddc_read(hdmi, HDCP_PORT_ADDR, 0x43, in msm_hdmi_hdcp_recv_ksv_fifo()
1117 struct hdmi *hdmi = hdcp_ctrl->hdmi; in msm_hdmi_hdcp_write_ksv_fifo() local
1127 reg_val = hdmi_read(hdmi, REG_HDMI_HDCP_SHA_STATUS); in msm_hdmi_hdcp_write_ksv_fifo()
1211 struct hdmi *hdmi = hdcp_ctrl->hdmi; in msm_hdmi_hdcp_auth_part2_check_v_match() local
1216 link0_status = hdmi_read(hdmi, REG_HDMI_HDCP_LINK0_STATUS); in msm_hdmi_hdcp_auth_part2_check_v_match()
1306 struct hdmi *hdmi = hdcp_ctrl->hdmi; in msm_hdmi_hdcp_on() local
1316 /* clear HDMI Encrypt */ in msm_hdmi_hdcp_on()
1317 spin_lock_irqsave(&hdmi->reg_lock, flags); in msm_hdmi_hdcp_on()
1318 reg_val = hdmi_read(hdmi, REG_HDMI_CTRL); in msm_hdmi_hdcp_on()
1320 hdmi_write(hdmi, REG_HDMI_CTRL, reg_val); in msm_hdmi_hdcp_on()
1321 spin_unlock_irqrestore(&hdmi->reg_lock, flags); in msm_hdmi_hdcp_on()
1326 queue_work(hdmi->workq, &hdcp_ctrl->hdcp_auth_work); in msm_hdmi_hdcp_on()
1331 struct hdmi *hdmi = hdcp_ctrl->hdmi; in msm_hdmi_hdcp_off() local
1347 spin_lock_irqsave(&hdmi->reg_lock, flags); in msm_hdmi_hdcp_off()
1348 reg_val = hdmi_read(hdmi, REG_HDMI_HPD_CTRL); in msm_hdmi_hdcp_off()
1350 hdmi_write(hdmi, REG_HDMI_HPD_CTRL, reg_val); in msm_hdmi_hdcp_off()
1357 hdmi_write(hdmi, REG_HDMI_HDCP_INT_CTRL, 0); in msm_hdmi_hdcp_off()
1358 spin_unlock_irqrestore(&hdmi->reg_lock, flags); in msm_hdmi_hdcp_off()
1371 hdmi_write(hdmi, REG_HDMI_HDCP_RESET, in msm_hdmi_hdcp_off()
1375 hdmi_write(hdmi, REG_HDMI_HDCP_CTRL, 0); in msm_hdmi_hdcp_off()
1377 spin_lock_irqsave(&hdmi->reg_lock, flags); in msm_hdmi_hdcp_off()
1378 reg_val = hdmi_read(hdmi, REG_HDMI_CTRL); in msm_hdmi_hdcp_off()
1380 hdmi_write(hdmi, REG_HDMI_CTRL, reg_val); in msm_hdmi_hdcp_off()
1383 reg_val = hdmi_read(hdmi, REG_HDMI_HPD_CTRL); in msm_hdmi_hdcp_off()
1385 hdmi_write(hdmi, REG_HDMI_HPD_CTRL, reg_val); in msm_hdmi_hdcp_off()
1386 spin_unlock_irqrestore(&hdmi->reg_lock, flags); in msm_hdmi_hdcp_off()
1393 struct hdmi_hdcp_ctrl *msm_hdmi_hdcp_init(struct hdmi *hdmi) in msm_hdmi_hdcp_init() argument
1397 if (!hdmi->qfprom_mmio) { in msm_hdmi_hdcp_init()
1410 hdcp_ctrl->hdmi = hdmi; in msm_hdmi_hdcp_init()
1422 void msm_hdmi_hdcp_destroy(struct hdmi *hdmi) in msm_hdmi_hdcp_destroy() argument
1424 if (hdmi) { in msm_hdmi_hdcp_destroy()
1425 kfree(hdmi->hdcp_ctrl); in msm_hdmi_hdcp_destroy()
1426 hdmi->hdcp_ctrl = NULL; in msm_hdmi_hdcp_destroy()