Ejemplo n.º 1
0
/**
 *  msic_vreg_handler
 */
static irqreturn_t msic_vreg_handler(int irq, void *dev_id)
{
	struct drm_device *dev = hdmi_priv ? hdmi_priv->dev : NULL;
	struct drm_psb_private *dev_priv = psb_priv(dev);
	u8 data = 0;

	/* Need to add lock later.*/

	/* Read VREG interrupt status register */
	if (sram_vreg_addr)
		data = readb(sram_vreg_addr);
	else
		DRM_ERROR("%s: sram_vreg_addr = %p\n", __FUNCTION__, sram_vreg_addr);

	if (dev)
		PSB_DEBUG_ENTRY("data = 0x%x.\n", data);

	/* handle HDMI HPD interrupts. */
	if (data & HDMI_HPD_STATUS) {
		DRM_INFO("%s: HPD interrupt. data = 0x%x. \n", __FUNCTION__, data);
	
		if (dev_priv->xserver_start)
			hpd_notify_um();
	}

	/* handle other msic vreq interrupts when necessary. */

	return IRQ_HANDLED;
}
Ejemplo n.º 2
0
/**
 *  ti_tpd_hpd_handler
 */
irqreturn_t hdmi_hpd_handler(int irq, void *dev_id)
{
	struct mid_intel_hdmi_priv *hdmi_priv = dev_id;
	struct drm_device *dev = hdmi_priv ? hdmi_priv->dev : NULL;
	struct drm_psb_private *dev_priv = NULL;

	PSB_DEBUG_ENTRY("\n");

	if (dev) {
		dev_priv = psb_priv(dev);

		if (dev_priv && dev_priv->um_start)
			hpd_notify_um(dev);
		else
			return IRQ_NONE;
	} else
		return IRQ_NONE;

	return IRQ_HANDLED;
}