Example #1
0
void drv_mhl_seq_show(struct seq_file *s)
{
    int gpio_value;
    switch(fwPowerState)
    {
    case POWER_STATE_D3:
             seq_printf(s, "MHL POWER STATE          [D3]\n");
             break;
        case POWER_STATE_D0_NO_MHL:
             seq_printf(s, "MHL POWER STATE          [D0_NO_MHL]\n");
             break;
        case POWER_STATE_D0_MHL:
             seq_printf(s, "MHL POWER STATE          [D0_MHL]\n");
             break;
        case POWER_STATE_FIRST_INIT:
             seq_printf(s, "MHL POWER STATE          [FIRST_INIT]\n");
             break;
        default:break;
    }   
    if(tmdsPowRdy)  
        seq_printf(s, "TMDS                     [ON]\n");
    else
        seq_printf(s, "TMDS                     [OFF]\n");
    HalGpioGetPin(GPIO_SRC_VBUS_ON,&gpio_value);
    if(gpio_value)
        seq_printf(s, "SRC BUS                  [ON]\n");
    else
        seq_printf(s, "SRC BUS                  [OFF]\n");
    HalGpioGetPin(GPIO_SINK_VBUS_ON,&gpio_value);
    if(gpio_value)
        seq_printf(s, "SINK BUS                  [ON]\n");
    else
        seq_printf(s, "SINK BUS                  [OFF]\n");
}
Example #2
0
/**
 * @brief SilMon IRQ handler,
 *
 *****************************************************************************/
static irqreturn_t HalSilMonRequestIrqHandler(int irq, void *data)
{
	pMhlDeviceContext	pMhlDevContext = (pMhlDeviceContext)data;

    int gpio_value;
	unsigned long		flags;
//  SII_DEBUG_PRINT(SII_OSAL_DEBUG_TRACE,"------------- HalSilMonRequestIrqHandler irq coming! -------------\n");
    spin_lock_irqsave(&pMhlDevContext->SilMonRequestIRQ_Lock, flags);

    if(HalGpioGetPin(GPIO_REQ_IN,&gpio_value)<0)
    {
        SII_DEBUG_PRINT(SII_OSAL_DEBUG_TRACE,"HalSilMonRequestIrqHandler GPIO(%d) get error\n",gpio_value);
        spin_unlock_irqrestore(&pMhlDevContext->SilMonRequestIRQ_Lock, flags);
        return IRQ_HANDLED;
    }

    /*
    the following is for void wrongly invoke irq, it may be caused by EMI when plug in/out MHL cable;
    */
    if((gMhlDevice.SilMonControlReleased&& gpio_value)
       ||(!gMhlDevice.SilMonControlReleased&&!gpio_value))
    {
        SII_DEBUG_PRINT(SII_OSAL_DEBUG_TRACE,"HalSilMonRequestIrqHandler, wrong IRQ coming, please check you board\n");
        spin_unlock_irqrestore(&pMhlDevContext->SilMonRequestIRQ_Lock, flags);
        return IRQ_HANDLED;
    }

    if(gpio_value)
    {
        HalGpioSetPin(GPIO_GNT,1);
        HalEnableI2C(true);
        enable_irq(pMhlDevContext->pI2cClient->irq);
        SII_DEBUG_PRINT(SII_OSAL_DEBUG_TRACE,"release SiliMon control\n");
        gMhlDevice.SilMonControlReleased = true;
    }
    else
    {
        disable_irq(pMhlDevContext->pI2cClient->irq);       
        HalEnableI2C(false);
        HalGpioSetPin(GPIO_GNT,0);
        SII_DEBUG_PRINT(SII_OSAL_DEBUG_TRACE,"under SiliMon control \n");
        gMhlDevice.SilMonControlReleased = false;
    }

    spin_unlock_irqrestore(&pMhlDevContext->SilMonRequestIRQ_Lock, flags);

	return IRQ_HANDLED;
}
static irqreturn_t HalSilMonRequestIrqHandler(int irq, void *data)
{
	pMhlDeviceContext	pMhlDevContext = (pMhlDeviceContext)data;
    int gpio_value;
	unsigned long		flags;
    spin_lock_irqsave(&pMhlDevContext->SilMonRequestIRQ_Lock, flags);
    if(HalGpioGetPin(GPIO_REQ_IN,&gpio_value)<0)
    {
        SII_DEBUG_PRINT(SII_OSAL_DEBUG_TRACE,"HalSilMonRequestIrqHandler GPIO(%d) get error\n",gpio_value);
        spin_unlock_irqrestore(&pMhlDevContext->SilMonRequestIRQ_Lock, flags);
        return IRQ_HANDLED;
    }
    if((gMhlDevice.SilMonControlReleased&& gpio_value)
       ||(!gMhlDevice.SilMonControlReleased&&!gpio_value))
    {
        SII_DEBUG_PRINT(SII_OSAL_DEBUG_TRACE,"HalSilMonRequestIrqHandler, wrong IRQ coming, please check you board\n");
        spin_unlock_irqrestore(&pMhlDevContext->SilMonRequestIRQ_Lock, flags);
        return IRQ_HANDLED;
    }
    if(gpio_value)
    {
        //HalGpioSetPin(GPIO_GNT,1);
        HalEnableI2C(true);
        enable_irq(pMhlDevContext->pI2cClient->irq);
#ifdef RGB_BOARD
        enable_irq(pMhlDevContext->SilExtDeviceIRQ);
#endif
        gMhlDevice.SilMonControlReleased = true;
    }
    else
    {
        disable_irq(pMhlDevContext->pI2cClient->irq);
#ifdef RGB_BOARD
        disable_irq(pMhlDevContext->SilExtDeviceIRQ);
#endif       
        HalEnableI2C(false);
        //HalGpioSetPin(GPIO_GNT,0);
        gMhlDevice.SilMonControlReleased = false;
    }
    spin_unlock_irqrestore(&pMhlDevContext->SilMonRequestIRQ_Lock, flags);
	return IRQ_HANDLED;
}