static int hdmi_streamoff(struct hdmi_device *hdev)
{
    struct device *dev = hdev->dev;

    dev_dbg(dev, "%s\n", __func__);

    if (hdev->hdcp_info.hdcp_enable && hdev->hdcp_info.hdcp_start)
        hdcp_stop(hdev);

    hdmi_audio_enable(hdev, 0);
    hdmi_enable(hdev, 0);
    hdmi_tg_enable(hdev, 0);

    hdev->streaming = HDMI_STOP;

    /* change the HPD interrupt: Internal -> External */
    disable_irq(hdev->int_irq);
    cancel_work_sync(&hdev->hpd_work);
    hdmi_reg_set_ext_hpd(hdev);
    enable_irq(hdev->ext_irq);
    dev_info(hdev->dev, "HDMI interrupt changed to external\n");

    hdmi_dumpregs(hdev, "streamoff");
    return 0;
}
Exemple #2
0
static int hdmi_streamoff(struct hdmi_device *hdev)
{
	struct device *dev = hdev->dev;

	dev_dbg(dev, "%s\n", __func__);

	hdmi_reg_set_ext_hpd(hdev);

//	if (edid_supports_hdmi(hdev)) {
#if 1 
		if (hdev->hdcp_info.hdcp_enable && hdev->hdcp_info.hdcp_start)
			hdcp_stop(hdev);
#endif
//	}

	hdmi_audio_enable(hdev, 0);
	hdmi_enable(hdev, 0);
	hdmi_tg_enable(hdev, 0);

	hdev->streaming = HDMI_STOP;

	hdmi_dumpregs(hdev, "streamoff");
	return 0;
}