Esempio n. 1
0
static Void IpcFramesInLink_prdCalloutFcn(UArg arg)
{
    IpcFramesInLink_Obj *pObj = (IpcFramesInLink_Obj *) arg;
    Int32 status;

    status = System_sendLinkCmd(pObj->tskId, SYSTEM_CMD_NEW_DATA);


    if (UTILS_ISERROR(status))
    {
        #ifdef SYSTEM_DEBUG_CMD_ERROR
        UTILS_warn("IPCFRAMEINLINK:[%s:%d]:"
                   "System_sendLinkCmd SYSTEM_IPC_CMD_RELEASE_FRAMES failed"
                   "errCode = %d", __FILE__, __LINE__, status);
        #endif
    }
}
Esempio n. 2
0
UInt32 SystemTiler_isAllocatorDisabled(void)
{
    SystemCommon_TilerIsDisabled tilerAllocatorStatus;
    Int32 status;
    UInt32 isDisabled = TRUE;


    status = System_linkControl(SYSTEM_TILER_LINK_ID,
                                SYSTEM_COMMON_CMD_TILER_IS_ALLOCATOR_DISABLED,
                                &tilerAllocatorStatus,
                                sizeof(tilerAllocatorStatus), TRUE);

    if (!UTILS_ISERROR(status))
    {
        isDisabled = tilerAllocatorStatus.isAllocatorDisabled;
    }
    return isDisabled;
}
Esempio n. 3
0
Ptr SystemTiler_allocRaw(UInt32 size,UInt32 align)
{
    SystemCommon_TilerAllocRaw tilerAllocRaw;
    Int32 status;
    Ptr allocAddr = NULL;

    tilerAllocRaw.size = size;
    tilerAllocRaw.align = align;
    tilerAllocRaw.allocAddr = NULL;

    status = System_linkControl(SYSTEM_TILER_LINK_ID,
                                SYSTEM_COMMON_CMD_TILER_ALLOC_RAW,
                                &tilerAllocRaw,
                                sizeof(tilerAllocRaw), TRUE);

    if (!UTILS_ISERROR(status))
    {
        allocAddr = (Ptr)tilerAllocRaw.allocAddr;
    }
    return allocAddr;
}
Esempio n. 4
0
UInt32 SystemTiler_alloc(UInt32 cntMode, UInt32 width, UInt32 height)
{
    UInt32 tileAddr = SYSTEM_TILER_INVALID_ADDR;
    SystemCommon_TilerAlloc tilerAlloc;
    Int32 status;

    tilerAlloc.cntMode = cntMode;
    tilerAlloc.width = width;
    tilerAlloc.height = height;

    status = System_linkControl(SYSTEM_TILER_LINK_ID,
                                SYSTEM_COMMON_CMD_TILER_ALLOC,
                                &tilerAlloc, sizeof(tilerAlloc), TRUE);

    if (UTILS_ISERROR(status))
    {
        tileAddr = SYSTEM_TILER_INVALID_ADDR;
    }
    else
    {
        tileAddr = tilerAlloc.tileAddr;
    }
    return tileAddr;
}
Esempio n. 5
0
Int32 Utils_memBitBufAlloc(Bitstream_Buf * pBuf, UInt32 size, UInt16 numFrames)
{
    UInt32 bufId;
    Int32 status = 0;
    UInt8 *pBaseAddr;
    Error_Block ebObj;
    Error_Block *eb = &ebObj;

    Error_init(eb);

    /* init Bitstream_Buf to 0's */
    memset(pBuf, 0, sizeof(*pBuf));

    /* align size to minimum required frame buffer alignment */
    size = VpsUtils_align(size, IVACODEC_VDMA_BUFFER_ALIGNMENT);

    /* allocate the memory for 'numFrames' */
    /* for all 'numFrames' memory is contigously allocated */
    pBaseAddr = Memory_alloc(gUtils_heapMemHandle[UTILS_MEM_VID_BITS_BUF_HEAP],
                    (size * numFrames), IVACODEC_VDMA_BUFFER_ALIGNMENT, eb);

    #ifdef UTILS_MEM_DEBUG
    Vps_printf(" UTILS: MEM: BITS ALLOC, addr = 0x%08x, size = %d bytes\n", pBaseAddr, (size * numFrames));
    #endif

    if (!Error_check(eb)
        &&
        (pBaseAddr != NULL)
        &&
        gUtils_memClearBuf[UTILS_MEM_VID_BITS_BUF_HEAP])
        memset(pBaseAddr, 0x80, (size * numFrames));

    if (pBaseAddr == NULL)
    {
        status = -1;                                       /* Error in
                                                            * allocation,
                                                            * exit with error
                                                            */
    }

    if (!UTILS_ISERROR(status))
    {
        /* init memory pointer for 'numFrames' */
        for (bufId = 0; bufId < numFrames; bufId++)
        {

            /* copy channelNum to Bitstream_Buf from FVID2_Format */
            pBuf->channelNum = bufId;
            pBuf->addr = pBaseAddr;
            /* On the RTOS side, we assume Virtual addr == PhyAddr */
            pBuf->phyAddr = (UInt32)pBaseAddr;
            pBuf->bufSize = size;
            /* go to next frame */
            pBuf++;

            /* increment base address */
            pBaseAddr += size;
        }
    }

    UTILS_assert(status == 0);

    return status;
}