/**
 *  @brief This function disables the device or places the device in
 *         software reset if it does not power up in a disabled state.
 *         It may be used to initialize registers that require a value
 *         different from the power-up state and are common to one or
 *         more of the other component modules.
 *
 *  @return     State
 *  @retval     true if the configuration was successful
 *  @retval     false if some failure occurred
 *
 * @note: This function leaves the device in a disabled state until the
 *        SiiDrvDeviceRelease function is called.
 *
 *****************************************************************************/
bool_t SiiDrvDeviceInitialize ( void )
{
    bool_t  success = false;
    uint16_t deviceID;
    uint8_t revison;

#if defined(__KERNEL__)
    gDriverContext.chip_revision = 0xFF;
#endif

    SiiHwReset(HW_RESET_PERIOD, HW_RESET_DELAY);
    for ( ;; )
    {
        SiiDrvSoftwareReset(RX_M__SRST__SRST);

        deviceID = SiiRegRead( REG_DEV_IDH_RX );
        deviceID = ( deviceID << 8) | SiiRegRead( REG_DEV_IDL_RX );

        revison = SiiRegRead( REG_DEV_REV );
#if defined(__KERNEL__)
        gDriverContext.chip_revision = revison;
#endif
        if ( 0x5293 == deviceID )
        {
            DEBUG_PRINT( MSG_ALWAYS, "Device ID: %04X\n", (int)deviceID );
            DEBUG_PRINT( MSG_ALWAYS, "Device Revision: %02X\n", (int)revison );
        }
        else
        {
            //DEBUG_PRINT( MSG_ALWAYS, "\n Device Id check failed!\n" );
            //break;
        }

#ifdef SK_TX_EVITA
        if ( !SiiDrvEvitaInit())
        {
            DEBUG_PRINT( MSG_ALWAYS, "\n SiiDrvEvitaInitialize failed!\n" );
            break;
        }
#endif
        if ( !SiiMhlRxInitialize())
        {
            DEBUG_PRINT( MSG_ALWAYS, "\n SkAppDeviceInitCbus failed!\n" );
            break;
        }

        if ( !SiiDrvRxInitialize())
        {
            DEBUG_PRINT( MSG_ALWAYS, "\n SkAppDeviceInitRx failed!\n" );
            break;
        }

#ifdef MHAWB_SUPPORT
        mhawb_init();
#endif

        SiiDrvSwitchPortType(SiiPortType_HDMI);
        success = true;
        break;
    }

    return( success );
}
static void CBusResetToIdle (void)
{
    SiiMhlRxInitialize();
}