| /* |
| * Copyright (C) 2018 Synaptics Incorporated. All rights reserved. |
| * |
| * This program is free software; you can redistribute it and/or modify |
| * it under the terms of the GNU General Public License version 2 as |
| * published by the Free Software Foundation. |
| * |
| * INFORMATION CONTAINED IN THIS DOCUMENT IS PROVIDED "AS-IS," AND |
| * SYNAPTICS EXPRESSLY DISCLAIMS ALL EXPRESS AND IMPLIED WARRANTIES, |
| * INCLUDING ANY IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR |
| * A PARTICULAR PURPOSE, AND ANY WARRANTIES OF NON-INFRINGEMENT OF ANY |
| * INTELLECTUAL PROPERTY RIGHTS. IN NO EVENT SHALL SYNAPTICS BE LIABLE |
| * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, PUNITIVE, OR |
| * CONSEQUENTIAL DAMAGES ARISING OUT OF OR IN CONNECTION WITH THE USE |
| * OF THE INFORMATION CONTAINED IN THIS DOCUMENT, HOWEVER CAUSED AND |
| * BASED ON ANY THEORY OF LIABILITY, WHETHER IN AN ACTION OF CONTRACT, |
| * NEGLIGENCE OR OTHER TORTIOUS ACTION, AND EVEN IF SYNAPTICS WAS |
| * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. IF A TRIBUNAL OF |
| * COMPETENT JURISDICTION DOES NOT PERMIT THE DISCLAIMER OF DIRECT |
| * DAMAGES OR ANY OTHER DAMAGES, SYNAPTICS' TOTAL CUMULATIVE LIABILITY |
| * TO ANY PARTY SHALL NOT EXCEED ONE HUNDRED U.S. DOLLARS. |
| */ |
| |
| /****************************************************************************** |
| * Revision 1.4 2007-10-30 10:58:43-07 chengjun |
| * Remove interrpt from HBO to semaphore. Map dHub channel 0 interrupt to |
| * semaphore channel 0. |
| * |
| * Revision 1.3 2007-10-24 21:41:17-07 kbhatt |
| * add structures to api_dhub.h |
| * |
| * Revision 1.2 2007-10-12 21:36:54-07 oussama |
| * adapted the env to use Alpha's Cmodel driver |
| * |
| * Revision 1.1 2007-08-29 20:27:01-07 lsha |
| * Initial revision. |
| * |
| * |
| * DESCRIPTION: |
| * OS independent layer for dHub/HBO/SemaHub APIs. |
| * |
| ******************************************************************************/ |
| |
| #ifndef DHUB_API |
| #define DHUB_API " DHUB_API >>> " |
| /** DHUB_API |
| */ |
| |
| #include "com_type.h" |
| |
| typedef UNSG32 T64b [2]; |
| |
| typedef struct { |
| UINT32 ra; |
| INT32 depth[32]; |
| } HDL_semaphore; |
| |
| typedef struct HDL_hbo { |
| UINT32 mem; |
| UINT32 ra; |
| HDL_semaphore fifoCtl; |
| UINT32 base[32]; |
| } HDL_hbo; |
| |
| typedef struct HDL_dhub { |
| UINT32 ra; |
| HDL_semaphore semaHub; |
| HDL_hbo hbo; |
| INT32 MTUb[16]; |
| } HDL_dhub; |
| |
| typedef struct HDL_dhub2d { |
| UINT32 ra; |
| HDL_dhub dhub; |
| } HDL_dhub2d; |
| |
| |
| #ifdef __cplusplus |
| extern "C" |
| { |
| #endif |
| |
| /** SECTION - handle of local contexts |
| */ |
| extern UINT32 sizeof_hdl_semaphore; |
| extern UINT32 sizeof_hdl_hbo; |
| extern UINT32 sizeof_hdl_dhub; |
| extern UINT32 sizeof_hdl_dhub2d; |
| |
| /** ENDOFSECTION |
| */ |
| |
| /** SECTION - API definitions for $SemaHub |
| */ |
| /****************************************************************************** |
| * Function: semaphore_hdl |
| * Description: Initialize HDL_semaphore with a $SemaHub BIU instance. |
| ******************************************************************************/ |
| void semaphore_hdl(UINT32 ra, void *hdl); |
| |
| /****************************************************************************** |
| * Function: semaphore_cfg |
| * Description: Configurate a semaphore's depth & reset pointers. |
| * Return: UINT32 -Number of (adr,pair) added to cfgQ |
| ******************************************************************************/ |
| UINT32 semaphore_cfg(void *hdl, INT32 id, INT32 depth, T64b cfgQ[]); |
| |
| |
| /****************************************************************************** |
| * Function: semaphore_intr_enable |
| * Description: Configurate interrupt enable bits of a semaphore. |
| ******************************************************************************/ |
| void semaphore_intr_enable(void *hdl, INT32 id, INT32 empty, INT32 full, |
| INT32 almostEmpty, INT32 almostFull, INT32 cpu); |
| |
| /****************************************************************************** |
| * Function: semaphore_query |
| * Description: Query current status (counter & pointer) of a semaphore. |
| * Return: UINT32 -Current available unit level |
| ******************************************************************************/ |
| UINT32 semaphore_query(void *hdl, INT32 id, INT32 master, UINT32 *ptr); |
| |
| /****************************************************************************** |
| * Function: semaphore_push |
| * Description: Producer semaphore push. |
| ******************************************************************************/ |
| void semaphore_push(void *hdl, INT32 id, INT32 delta); |
| |
| /****************************************************************************** |
| * Function: semaphore_push |
| * Description: Consumer semaphore pop. |
| ******************************************************************************/ |
| void semaphore_pop(void *hdl, INT32 id, INT32 delta); |
| |
| /****************************************************************************** |
| * Function: semaphore_chk_empty |
| * Description: Check 'empty' status of a semaphore(or all semaphores). |
| * Return: UINT32 -status bit of given semaphore, or |
| * status bits of all semaphores if id==-1 |
| ******************************************************************************/ |
| UINT32 semaphore_chk_empty(void *hdl, INT32 id); |
| |
| /****************************************************************************** |
| * Function: semaphore_chk_full |
| * Description: Check 'full' status of a semaphore (or all semaphores). |
| * Return: UINT32 -status bit of given semaphore, or |
| * status bits of all semaphores if id==-1 |
| ******************************************************************************/ |
| UINT32 semaphore_chk_full(void *hdl, INT32 id); |
| |
| /****************************************************************************** |
| * Function: semaphore_chk_almostEmpty |
| * Description: Check 'almostEmpty' status of a semaphore |
| * (or all semaphores). |
| * Return: UINT32 -status bit of given semaphore, or |
| * status bits of all semaphores if id==-1 |
| ******************************************************************************/ |
| UINT32 semaphore_chk_almostEmpty(void *hdl, INT32 id); |
| |
| /****************************************************************************** |
| * Function: semaphore_chk_almostFull |
| * Description: Check 'almostFull' status of a semaphore |
| * (or all semaphores). |
| * Return: UINT32 -status bit of given semaphore, or |
| * status bits of all semaphores if id==-1 |
| ******************************************************************************/ |
| UINT32 semaphore_chk_almostFull(void *hdl, INT32 id); |
| |
| /****************************************************************************** |
| * Function: semaphore_clr_empty |
| * Description: Clear 'empty' status of a semaphore. |
| ******************************************************************************/ |
| void semaphore_clr_empty(void *hdl, INT32 id); |
| |
| /****************************************************************************** |
| * Function: semaphore_clr_full |
| * Description: Clear 'full' status of a semaphore. |
| ******************************************************************************/ |
| void semaphore_clr_full(void *hdl, INT32 id); |
| |
| /****************************************************************************** |
| * Function: semaphore_clr_almostEmpty |
| * Description: Clear 'almostEmpty' status of a semaphore. |
| ******************************************************************************/ |
| void semaphore_clr_almostEmpty(void *hdl, INT32 id); |
| |
| /****************************************************************************** |
| * Function: semaphore_clr_almostFull |
| * Description: Clear 'almostFull' status of a semaphore. |
| ******************************************************************************/ |
| void semaphore_clr_almostFull(void *hdl, INT32 id); |
| |
| /** ENDOFSECTION |
| */ |
| |
| /** SECTION - API definitions for $HBO |
| */ |
| /****************************************************************************** |
| * Function: hbo_hdl |
| * Description: Initialize HDL_hbo with a $HBO BIU instance. |
| ******************************************************************************/ |
| void hbo_hdl(UINT32 mem, INT32 ra, void *hdl); |
| |
| /****************************************************************************** |
| * Function: hbo_fifoCtl |
| * Description: Get HDL_semaphore pointer from a HBO instance. |
| * Return: void* -Handle for HBO.FiFoCtl |
| ******************************************************************************/ |
| void *hbo_fifoCtl(void *hdl); |
| |
| /****************************************************************************** |
| * DEFINITION - convert HBO FIFO control to semaphore control |
| ******************************************************************************/ |
| #define hbo_queue_intr_enable(hdl, id, empty, full, almostEmpty, \ |
| almostFull, cpu) \ |
| semaphore_intr_enable(hbo_fifoCtl(hdl), id, empty, full, almostEmpty, \ |
| almostFull, cpu) |
| |
| #define hbo_queue_query(hdl, id, master, ptr) \ |
| semaphore_query(hbo_fifoCtl(hdl), id, master, ptr) |
| |
| #define hbo_queue_push(hdl, id, delta) \ |
| semaphore_push(hbo_fifoCtl(hdl), id, delta) |
| |
| #define hbo_queue_pop(hdl, id, delta) \ |
| semaphore_pop(hbo_fifoCtl(hdl), id, delta) |
| |
| #define hbo_queue_chk_empty(hdl, id) \ |
| semaphore_chk_empty(hbo_fifoCtl(hdl), id) |
| |
| #define hbo_queue_chk_full(hdl, id) \ |
| semaphore_chk_full(hbo_fifoCtl(hdl), id) |
| |
| #define hbo_queue_chk_almostEmpty(hdl, id)\ |
| semaphore_chk_almostEmpty(hbo_fifoCtl(hdl), id) |
| |
| #define hbo_queue_chk_almostFull(hdl, id)\ |
| semaphore_chk_almostFull(hbo_fifoCtl(hdl), id) |
| |
| #define hbo_queue_clr_empty(hdl, id) \ |
| semaphore_clr_empty(hbo_fifoCtl(hdl), id) |
| |
| #define hbo_queue_clr_full(hdl, id) \ |
| semaphore_clr_full(hbo_fifoCtl(hdl), id) |
| |
| #define hbo_queue_clr_almostEmpty(hdl, id)\ |
| semaphore_clr_almostEmpty(hbo_fifoCtl(hdl), id) |
| |
| #define hbo_queue_clr_almostFull(hdl, id)\ |
| semaphore_clr_almostFull(hbo_fifoCtl(hdl), id) |
| |
| /****************************************************************************** |
| * Function: hbo_queue_cfg |
| * Description: Configurate a FIFO's base, depth & reset pointers. |
| * Return: UINT32 -Number of (adr,pair) added to cfgQ |
| ******************************************************************************/ |
| UINT32 hbo_queue_cfg(void *hdl, INT32 id, UINT32 base, INT32 depth, |
| INT32 enable, T64b cfgQ[]); |
| |
| /****************************************************************************** |
| * Function: hbo_queue_enable |
| * Description: HBO FIFO enable/disable. |
| * Return: UINT32 -Number of (adr,pair) added to cfgQ |
| ******************************************************************************/ |
| UINT32 hbo_queue_enable(void *hdl, INT32 id, INT32 enable, T64b cfgQ[]); |
| |
| /****************************************************************************** |
| * Function: hbo_queue_clear |
| * Description: Issue HBO FIFO clear (will NOT wait for finish). |
| ******************************************************************************/ |
| void hbo_queue_clear(void *hdl, INT32 id); |
| |
| /****************************************************************************** |
| * Function: hbo_queue_busy |
| * Description: Read HBO 'BUSY' status for all channel FIFOs. |
| * Return: UINT32 -'BUSY' status bits of all channels |
| ******************************************************************************/ |
| UINT32 hbo_queue_busy(void *hdl); |
| |
| /****************************************************************************** |
| * Function: hbo_queue_clear_done |
| * Description: Wait for a given channel or all channels to be cleared. |
| ******************************************************************************/ |
| void hbo_queue_clear_done(void *hdl, INT32 id); |
| |
| /****************************************************************************** |
| * Function: hbo_queue_read |
| * Description: Read a number of 64b data & pop FIFO from HBO SRAM. |
| * Return: UINT32 -Number of 64b data being read (=n), |
| * or (when cfgQ==NULL) |
| * 0 if there're not sufficient data in FIFO |
| ******************************************************************************/ |
| UINT32 hbo_queue_read(void *hdl, INT32 id, INT32 n, T64b data[], UINT32 *ptr); |
| |
| /****************************************************************************** |
| * Function: hbo_queue_write |
| * Description: Write a number of 64b data & push FIFO to HBO SRAM. |
| * Return: UINT32-Number of (adr,pair) added to cfgQ, or (when cfgQ==NULL) |
| * 0 if there're not sufficient space in FIFO |
| ******************************************************************************/ |
| UINT32 hbo_queue_write(void *hdl, INT32 id, INT32 n, |
| T64b data[], T64b cfgQ[], UINT32 *ptr); |
| |
| /** ENDOFSECTION |
| */ |
| |
| /** SECTION - API definitions for $dHubReg |
| */ |
| /****************************************************************************** |
| * Function: dhub_hdl |
| * Description: Initialize HDL_dhub with a $dHub BIU instance. |
| ******************************************************************************/ |
| void dhub_hdl(UINT32 mem, UINT32 ra, void *hdl); |
| |
| /****************************************************************************** |
| * Function: dhub_semaphore |
| * Description: Get HDL_semaphore pointer from a dHub instance. |
| * Return: void* - Handle for dHub.SemaHub |
| ******************************************************************************/ |
| void *dhub_semaphore(void *hdl); |
| |
| /****************************************************************************** |
| * Function: dhub_hbo |
| * Description: Get HDL_hbo pointer from a dHub instance. |
| * Return: void* -Handle for dHub.HBO |
| ******************************************************************************/ |
| void *dhub_hbo(void *hdl); |
| |
| /****************************************************************************** |
| * Function: dhub_hbo_fifoCtl |
| * Description: Get HDL_semaphore pointer from the HBO of a dHub instance. |
| * Return: void* -Handle for dHub.HBO.FiFoCtl |
| ******************************************************************************/ |
| #define dhub_hbo_fifoCtl(hdl) (hbo_fifoCtl(dhub_hbo(hdl))) |
| |
| /****************************************************************************** |
| * DEFINITION - convert from dHub channel ID to HBO FIFO ID & semaphore (interrupt) ID |
| ******************************************************************************/ |
| #define dhub_id2intr(id) ((id)) |
| #define dhub_id2hbo_cmdQ(id) ((id)*2) |
| #define dhub_id2hbo_data(id) ((id)*2+1) |
| |
| /****************************************************************************** |
| * DEFINITION - convert dHub cmdQ/dataQ/channel-done interrupt control to |
| * HBO/semaphore control |
| ******************************************************************************/ |
| |
| #define dhub_channel_intr_enable(hdl, id, full, cpu) \ |
| semaphore_intr_enable(dhub_semaphore(hdl), \ |
| dhub_id2intr(id), 0, full, \ |
| 0, 0, cpu) |
| |
| #define dhub_hbo_cmdQ_intr_enable(hdl, id, empty, almostEmpty, cpu) \ |
| hbo_queue_intr_enable(dhub_hbo(hdl), \ |
| dhub_id2hbo_cmdQ(id), empty,\ |
| 0, almostEmpty, 0, cpu) |
| |
| #define dhub_hbo_data_intr_enable(hdl, id, empty, full, almostEmpty,\ |
| almostFull, cpu) \ |
| hbo_queue_intr_enable(dhub_hbo(hdl), \ |
| dhub_id2hbo_data(id), empty, \ |
| full, almostEmpty, almostFull, cpu) |
| |
| /****************************************************************************** |
| * DEFINITION - convert dHub cmdQ opehdltions to HBO FIFO opehdltions |
| ******************************************************************************/ |
| #define dhub_cmdQ_query(hdl, id, ptr) \ |
| hbo_queue_query(dhub_hbo(hdl), \ |
| dhub_id2hbo_cmdQ(id), 0, ptr) |
| |
| #define dhub_cmdQ_push(hdl, id, delta) \ |
| hbo_queue_push(dhub_hbo(hdl), \ |
| dhub_id2hbo_cmdQ(id), delta) |
| |
| /****************************************************************************** |
| * DEFINITION - convert dHub dataQ opehdltions to HBO FIFO opehdltions |
| ******************************************************************************/ |
| #define dhub_data_query(hdl, id, master, ptr)\ |
| hbo_queue_query(dhub_hbo(hdl), dhub_id2hbo_data(id),\ |
| master, ptr) |
| |
| #define dhub_data_push(hdl, id, delta) \ |
| hbo_queue_push(dhub_hbo(hdl), dhub_id2hbo_data(id),\ |
| delta) |
| |
| #define dhub_data_pop(hdl, id, delta) \ |
| hbo_queue_pop(dhub_hbo(hdl), dhub_id2hbo_data(id), \ |
| delta) |
| |
| /****************************************************************************** |
| * Function: dhub_channel_cfg |
| * Description: Configurate a dHub channel. |
| * Return: UINT32-Number of (adr,pair) added to cfgQ, or (when cfgQ==NULL) |
| * 0 if either cmdQ or dataQ in HBO is still busy |
| ******************************************************************************/ |
| UINT32 dhub_channel_cfg(void *hdl, INT32 id, UINT32 baseCmd, |
| UINT32 baseData, INT32 depthCmd, INT32 depthData, |
| INT32 MTU, INT32 QoS, INT32 selfLoop, |
| INT32 enable, T64b cfgQ[]); |
| |
| /****************************************************************************** |
| * Function: dhub_channel_enable |
| * Description: dHub channel enable/disable. |
| * Return: UINT32 -Number of (adr,pair) added to cfgQ |
| ******************************************************************************/ |
| UINT32 dhub_channel_enable(void *hdl, INT32 id, INT32 enable, T64b cfgQ[]); |
| |
| /****************************************************************************** |
| * Function: dhub_channel_clear |
| * Description: Issue dHub channel clear (will NOT wait for finish). |
| ******************************************************************************/ |
| void dhub_channel_clear(void *hdl, INT32 id); |
| |
| /****************************************************************************** |
| * Function: dhub_channel_flush |
| * Description: Issue dHub channel (H2M only) flush |
| * (will NOT wait for finish). |
| ******************************************************************************/ |
| void dhub_channel_flush(void *hdl, INT32 id); |
| |
| /****************************************************************************** |
| * Function: dhub_channel_busy |
| * Description: Read dHub 'BUSY' status for all channel FIFOs. |
| * Return: UINT32 -'BUSY' status bits of all channels |
| ******************************************************************************/ |
| UINT32 dhub_channel_busy(void *hdl); |
| |
| /****************************************************************************** |
| * Function: dhub_channel_pending |
| * Description: Read dHub 'PENDING' status for all channel FIFOs. |
| * Return: UINT32 -'PENDING' status bits of all channels |
| ******************************************************************************/ |
| UINT32 dhub_channel_pending(void *hdl); |
| |
| /****************************************************************************** |
| * Function: dhub_channel_clear_done |
| * Description: Wait for a given channel or all channels to be cleared or |
| * flushed. |
| ******************************************************************************/ |
| void dhub_channel_clear_done(void *hdl, INT32 id); |
| |
| /****************************************************************************** |
| * Function: dhub_channel_write_cmd |
| * Description: Write a 64b command for a dHub channel. |
| * Return: UINT32-Number of (adr,pair) added to cfgQ if success, or |
| * 0 if there're not sufficient space in FIFO |
| ******************************************************************************/ |
| UINT32 dhub_channel_write_cmd(void *hdl, INT32 id, UINT32 addr, |
| INT32 size, INT32 semOnMTU, INT32 chkSemId, |
| INT32 updSemId, INT32 interrupt, T64b cfgQ[], |
| UINT32 *ptr); |
| |
| /** ENDOFSECTION |
| */ |
| |
| void dhub_channel_generate_cmd(void *hdl, INT32 id, UINT32 *addr, |
| INT32 size, INT32 semOnMTU, INT32 chkSemId, |
| INT32 updSemId, INT32 interrupt, INT32 *pData); |
| |
| /****************************************************************************** |
| * Function: dhub_channel_big_write_cmd |
| * Description: Write a sequence of 64b command for a dHub channel. |
| * Return: UINT32-Number of (adr,pair) added to cfgQ if success, or |
| * 0 if there're not sufficient space in FIFO. |
| ******************************************************************************/ |
| UINT32 dhub_channel_big_write_cmd(void *hdl, INT32 id, UINT32 addr, |
| INT32 size, INT32 semOnMTU, INT32 chkSemId, |
| INT32 updSemId, INT32 interrupt, T64b cfgQ[], UINT32 *ptr); |
| |
| |
| /** SECTION - API definitions for $dHubReg2D |
| */ |
| /****************************************************************************** |
| * Function: dhub2d_hdl |
| * Description: Initialize HDL_dhub2d with a $dHub2D BIU instance. |
| ******************************************************************************/ |
| void dhub2d_hdl(UINT32 mem, UINT32 ra, void *hdl); |
| |
| /****************************************************************************** |
| * Function: dhub2d_channel_cfg |
| * Description: Configurate a dHub2D channel. |
| * Return: UINT32 -Number of (adr,pair) added to cfgQ |
| ******************************************************************************/ |
| UINT32 dhub2d_channel_cfg(void *hdl, INT32 id, UINT32 addr, |
| INT32 stride, INT32 width, INT32 height, |
| INT32 semLoop, INT32 semOnMTU, INT32 chkSemId[], |
| INT32 updSemId[], INT32 interrupt, INT32 enable, |
| T64b cfgQ[]); |
| |
| /****************************************************************************** |
| * Function: dhub2d_channel_enable |
| * Description: dHub2D channel enable/disable. |
| * Return: UINT32 - Number of (adr,pair) added to cfgQ |
| ******************************************************************************/ |
| UINT32 dhub2d_channel_enable(void *hdl, INT32 id, |
| INT32 enable, T64b cfgQ[]); |
| |
| /****************************************************************************** |
| * Function: dhub2d_channel_clear |
| * Description: Issue dHub2D channel clear (will NOT wait for finish). |
| ******************************************************************************/ |
| void dhub2d_channel_clear(void *hdl, INT32 id); |
| |
| /****************************************************************************** |
| * Function: dhub2d_channel_busy |
| * Description: Read dHub2D 'BUSY' status for all channel FIFOs. |
| * Return: UINT32 - 'BUSY' status bits of all channels |
| ******************************************************************************/ |
| UINT32 dhub2d_channel_busy(void *hdl); |
| |
| /****************************************************************************** |
| * Function: dhub2d_channel_clear_done |
| * Description: Wait for a given channel or all channels to be cleared. |
| ******************************************************************************/ |
| void dhub2d_channel_clear_done(void *hdl, INT32 id); |
| |
| /****************************************************************************************************************** |
| * Function: dhub2nd_channel_cfg |
| * Description: Configurate a dHub2ND channel. |
| * Return: UNSG32 - Number of (adr,pair) added to cfgQ |
| ******************************************************************************************************************/ |
| UNSG32 dhub2nd_channel_cfg( |
| void *hdl, /*! Handle to HDL_dhub2d !*/ |
| SIGN32 id, /*! Channel ID in $dHubReg2D !*/ |
| UNSG32 addr, /*! CMD: 2ND-buffer address !*/ |
| SIGN32 burst, /*! CMD: line stride size in bytes !*/ |
| SIGN32 step1, /*! CMD: buffer width in bytes !*/ |
| SIGN32 size1, /*! CMD: buffer height in lines !*/ |
| SIGN32 step2, /*! CMD: loop size (1~4) of semaphore operations !*/ |
| SIGN32 size2, /*! CMD: semaphore operation at CMD/MTU (0/1) !*/ |
| SIGN32 chkSemId, /*! CMD: semaphore loop pattern - non-zero to check !*/ |
| SIGN32 updSemId, /*! CMD: semaphore loop pattern - non-zero to update !*/ |
| SIGN32 interrupt, /*! CMD: raise interrupt at CMD finish !*/ |
| SIGN32 enable, /*! 0 to disable, 1 to enable !*/ |
| T64b cfgQ[] /*! Pass NULL to directly init dHub2ND, or |
| Pass non-zero to receive programming sequence |
| in (adr,data) pairs |
| !*/ |
| ); |
| |
| /****************************************************************************************************************** |
| * Function: dhub2nd_channel_enable |
| * Description: dHub2ND channel enable/disable. |
| * Return: UNSG32 - Number of (adr,pair) added to cfgQ |
| ******************************************************************************************************************/ |
| UNSG32 dhub2nd_channel_enable( |
| void *hdl, /*! Handle to HDL_dhub2d !*/ |
| SIGN32 id, /*! Channel ID in $dHubReg2D !*/ |
| SIGN32 enable, /*! 0 to disable, 1 to enable !*/ |
| T64b cfgQ[] /*! Pass NULL to directly init dHub2D, or |
| Pass non-zero to receive programming sequence |
| in (adr,data) pairs |
| !*/ |
| ); |
| |
| /****************************************************************************************************************** |
| * Function: dhub2nd_channel_clear |
| * Description: Issue dHub2ND channel clear (will NOT wait for finish). |
| ******************************************************************************************************************/ |
| void dhub2nd_channel_clear( |
| void *hdl, /*! Handle to HDL_dhub2d !*/ |
| SIGN32 id /*! Channel ID in $dHubReg2D !*/ |
| ); |
| |
| UNSG32 dhub_channel_enable_InverseScan_vppBcm(void *hdl, SIGN32 id, |
| SIGN32 iMode, UNSG32 pbcmbuf); |
| |
| #if (BERLIN_CHIP_VERSION >= BERLIN_BG2_CT) |
| /****************************************************************************************************************** |
| * Function: dhub_channel_enable_InverseScan |
| * Description: Enable the inverse scan at loader. |
| ******************************************************************************************************************/ |
| UNSG32 dhub_channel_enable_InverseScan(void *hdl, SIGN32 id, SIGN32 iMode, T64b cfgQ[]); |
| int getDhubChannelInfo(HDL_dhub2d *pdhubHandle, SIGN32 IChannel, T32dHubChannel_CFG *cfg); |
| #endif |
| |
| void dhub2d_channel_start_seq(void *hdl, INT32 id); |
| void dhub2d_channel_clear_seq(void *hdl, INT32 id); |
| void dhub2d_channel_clear_seq_bcm(void *hdl, INT32 id, void *pbcmbuf); |
| |
| /** ENDOFSECTION |
| */ |
| |
| #if (BERLIN_CHIP_VERSION >= BERLIN_BG2) |
| typedef enum { |
| BCM_SCHED_Q0 = 0, |
| BCM_SCHED_Q1, |
| BCM_SCHED_Q2, |
| BCM_SCHED_Q3, |
| BCM_SCHED_Q4, |
| BCM_SCHED_Q5, |
| BCM_SCHED_Q6, |
| BCM_SCHED_Q7, |
| BCM_SCHED_Q8, |
| BCM_SCHED_Q9, |
| BCM_SCHED_Q10, |
| BCM_SCHED_Q11, |
| BCM_SCHED_Q12, |
| BCM_SCHED_Q13, |
| BCM_SCHED_Q14, |
| BCM_SCHED_Q15, |
| BCM_SCHED_Q16, |
| BCM_SCHED_Q17, |
| BCM_SCHED_Q18, |
| } ENUM_BCM_SCHED_QID; |
| |
| |
| typedef struct VIP_BCMBUF_T { |
| unsigned int *head; |
| unsigned int *tail; |
| unsigned int *writer; |
| int size; |
| } VIP_BCMBUF; |
| |
| typedef enum { |
| BCM_SCHED_TRIG_CPCB0_VBI = 0, |
| BCM_SCHED_TRIG_CPCB1_VBI, |
| BCM_SCHED_TRIG_CPCB2_VBI, |
| BCM_SCHED_TRIG_CPCB0_VDE, |
| BCM_SCHED_TRIG_CPCB1_VDE, |
| BCM_SCHED_TRIG_CPCB2_VDE, |
| BCM_SCHED_TRIG_AUD_PRIM, |
| BCM_SCHED_TRIG_AUD_SEC, |
| BCM_SCHED_TRIG_AUD_HDMI, |
| BCM_SCHED_TRIG_AUD_SPDIF, |
| BCM_SCHED_TRIG_AUD_MIC,/*0xA*/ |
| BCM_SCHED_TRIG_VBI_VDE, |
| BCM_SCHED_TRIG_DVI_VDE, |
| BCM_SCHED_TRIG_SD_WRE, |
| BCM_SCHED_TRIG_SD_RDE, |
| BCM_SCHED_TRIG_SD_ERR,/*0xF*/ |
| BCM_SCHED_TRIG_NONE = 0x1f, |
| |
| } ENUM_BCM_SCHED_TRIG_EVENT; |
| |
| void BCM_SCHED_Open(void); |
| void BCM_SCHED_Close(void); |
| void BCM_SCHED_SetMux(UNSG32 QID, UNSG32 TrigEvent); |
| |
| int BCM_SCHED_PushCmd(UINT32 QID, UINT32 *pCmd, UINT32 *cfgQ); |
| |
| int BCM_SCHED_AutoPushCmd(UNSG32 QID, UNSG8 uchEnable); |
| |
| #if (BERLIN_CHIP_VERSION >= BERLIN_BG2) |
| void BCM_SCHED_SetMux(UINT32 QID, UINT32 TrigEvent); |
| #endif |
| void BCM_SCHED_GetEmptySts(UINT32 QID, UINT32 *EmptySts); |
| |
| #endif |
| |
| #ifdef __cplusplus |
| } |
| #endif |
| |
| /** DHUB_API |
| */ |
| #endif |