blob: 6d57794f1c3af601f8572cb01c35e59d259ca591 [file] [log] [blame]
/*
* 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.
*/
#ifndef __API_AVIO_DHUB_H__
#define __API_AVIO_DHUB_H__
#include "dHub.h"
#include "avioDhub.h"
#include "api_dhub.h"
#include "avio_memmap.h"
#define VPP_DHUB_BASE (MEMMAP_AVIO_REG_BASE + AVIO_MEMMAP_VPP128B_DHUB_REG_BASE + RA_vpp128bDhub_dHub0)
#define VPP_HBO_SRAM_BASE (MEMMAP_AVIO_REG_BASE + AVIO_MEMMAP_VPP128B_DHUB_REG_BASE + RA_vpp128bDhub_tcm0)
#define VPP_NUM_OF_CHANNELS (avioDhubChMap_vpp128b_1DSCL_W1+1)
#define AG_DHUB_BASE (MEMMAP_AVIO_REG_BASE + AVIO_MEMMAP_AIO64B_DHUB_REG_BASE + RA_aio64bDhub_dHub0)
#define AG_HBO_SRAM_BASE (MEMMAP_AVIO_REG_BASE + AVIO_MEMMAP_AIO64B_DHUB_REG_BASE + RA_aio64bDhub_tcm0)
#define AG_NUM_OF_CHANNELS (avioDhubChMap_aio64b_SPDIF_W+1)
#define VPP_DHUB_BANK0_START_ADDR avioDhubTcmMap_vpp128bDhub_BANK0_START_ADDR
#define VPP_DHUB_BANK1_START_ADDR avioDhubTcmMap_vpp128bDhub_BANK1_START_ADDR
#define VPP_DHUB_BANK2_START_ADDR avioDhubTcmMap_vpp128bDhub_BANK2_START_ADDR
#define VPP_DHUB_BANK3_START_ADDR avioDhubTcmMap_vpp128bDhub_BANK3_START_ADDR
#define AG_DHUB_BANK0_START_ADDR avioDhubTcmMap_aio64bDhub_BANK0_START_ADDR
typedef UNSG32 T64b [2];
typedef enum {
DHUB_TYPE_64BIT = 0,
DHUB_TYPE_128BIT
} DHUB_TYPE;
typedef struct DHUB_channel_config {
INT32 chanId;
UINT32 chanCmdBase;
UINT32 chanDataBase;
INT32 chanCmdSize;
INT32 chanDataSize;
INT32 chanMtuSize;
INT32 chanQos;
INT32 chanSelfLoop;
INT32 chanEnable;
} DHUB_channel_config;
extern HDL_dhub2d AG_dhubHandle;
extern HDL_dhub2d VPP_dhubHandle;
extern DHUB_channel_config AG_config[];
extern DHUB_channel_config VPP_config[];
/******************************************************************************
* Function: DhubInitialization
* Description: Initialize DHUB .
* Parameter : cpuId ------------- cpu ID
* dHubBaseAddr ------------- dHub Base address.
* hboSramAddr ----- Sram Address for HBO.
* pdhubHandle ----- pointer to 2D dhubHandle
* dhub_config ----- configuration of AG
* numOfChans ----- number of channels
* Return: void
******************************************************************************/
void DhubInitialization(SIGN32 cpuId, UNSG32 dHubBaseAddr, UNSG32 hboSramAddr,
HDL_dhub2d *pdhubHandle, DHUB_channel_config *dhub_config,
SIGN32 numOfChans, DHUB_TYPE dHubType);
void DhubChannelClear(void *hdl, SIGN32 id, T64b cfgQ[]);
int getDhubChannelInfo(HDL_dhub2d *pdhubHandle, SIGN32 IChannel,
T32dHubChannel_CFG *cfg);
#endif