| /** \file hbi_common.h |
| * hbi_common.h |
| * |
| * This file declares the VCP Host Bus Interface layer register/mail box |
| * mapping. |
| * |
| * Copyright (c) 2010, Zarlink Semiconductor, Inc. |
| * |
| * $Revision: 6419 $ |
| * $LastChangedDate: 2010-02-12 16:40:10 -0600 (Fri, 12 Feb 2010) $ |
| */ |
| |
| #ifndef _HBI_COMMON_H |
| #define _HBI_COMMON_H |
| |
| #include "vp_hal.h" |
| |
| /****************************************************************************** |
| * LOW_LEVEL HBI DEFINES * |
| ******************************************************************************/ |
| #define VP_HBI_PAGE_SIZE 0x80 |
| |
| #define VP_DP 254 /* magic page number indicating direct page */ |
| |
| /* HBI commands: */ |
| #define HBI_CMD_PAGED_READ(offset, length) (0x0000 + ((uint16)offset << 8) + \ |
| length) |
| #define HBI_CMD_PAGED_WRITE(offset, length) (0x0080 + ((uint16)offset << 8) + \ |
| length) |
| #define HBI_CMD_DIRECT_READ(offset, length) (0x8000 + ((uint16)offset << 8) + \ |
| length) |
| #define HBI_CMD_DIRECT_WRITE(offset, length) (0x8080 + ((uint16)offset << 8) + \ |
| length) |
| #define HBI_CMD_START_MBOX_RD(length) (0xF800 + length) |
| #define HBI_CMD_START_MBOX_WR(length) (0xF900 + length) |
| #define HBI_CMD_CONT_MBOX_RD(length) (0xFA00 + length) |
| #define HBI_CMD_CONT_MBOX_WR(length) (0xFB00 + length) |
| #define HBI_CMD_CONFIGURE(options) (0xFD00 + options) |
| #define HBI_CMD_SELECT_PAGE(page) (0xFE00 + page) |
| #define HBI_CMD_NOP 0xFFFF |
| |
| /****************************************************************************** |
| * REGISTERS SHARED BY VCP DEVICES * |
| ******************************************************************************/ |
| #define HW_Reg_INTIND VP_DP, 0x00, 0 |
| #define HW_Reg_INTPARAM VP_DP, 0x01, 0 |
| #define HW_Reg_INTIND_AND_INTPARAM VP_DP, 0x00, 1 |
| #define HW_Reg_MBOXFLAG VP_DP, 0x02, 0 |
| #define HW_Reg_CRC255 VP_DP, 0x03, 0 |
| #define HW_Reg_BASE255 VP_DP, 0x04, 0 |
| #define HW_Reg_MBOFFSET VP_DP, 0x05, 0 |
| #define HW_Reg_HWRES VP_DP, 0x06, 0 |
| #define HW_Reg_PCLKSEL VP_DP, 0x07, 0 |
| #define HW_Reg_PCMCLKSLOT VP_DP, 0x08, 0 |
| #define HW_Reg_SYSINTSTAT VP_DP, 0x09, 0 |
| #define HW_Reg_SYSINTMASK VP_DP, 0x0A, 0 |
| |
| /****************************************************************************** |
| * FUNCTION PROTOTYPES * |
| ******************************************************************************/ |
| EXTERN bool VpHbiRd8(VpDeviceIdType deviceId, uint8 page, uint8 offset, |
| uint8 words, uint8p pDest); |
| EXTERN bool VpHbiWr8(VpDeviceIdType deviceId, uint8 page, uint8 offset, |
| uint8 words, uint8p pSrc); |
| EXTERN bool VpHbiRd(VpDeviceIdType deviceId, uint8 page, uint8 offset, |
| uint8 words, uint16p pDest); |
| EXTERN bool VpHbiWr(VpDeviceIdType deviceId, uint8 page, uint8 offset, |
| uint8 words, uint16p pSrc); |
| EXTERN bool VpHbiXfer(bool readWrite, VpDeviceIdType deviceId, |
| uint32 ambaAddr, uint32 length, uint16p data, |
| uint8 byteAddressable, |
| bool (*SetCodeLoadBase)(VpDeviceIdType deviceId, uint32 amba_addr)); |
| |
| EXTERN bool VpHbiVcpVppValidate(VpDeviceIdType deviceId); |
| EXTERN bool VpHbiVcpVppReset(VpDeviceIdType deviceId); |
| EXTERN bool VpHbiVcpVppClearCodeMem(VpDeviceIdType deviceId); |
| EXTERN bool VpHbiVcpVppHalt(VpDeviceIdType deviceId); |
| EXTERN bool VpHbiVcpVppSetBase255(VpDeviceIdType deviceId, uint32 amba_addr); |
| EXTERN bool VpHbiVcpVppAmbaRdWr(bool readWrite, VpDeviceIdType deviceId, |
| uint32 amba_addr, uint32 numwords, uint16p data); |
| EXTERN bool VpHbiSetBase255(VpDeviceIdType deviceId, uint32 amba_addr, uint16p base255reg); |
| #define VpHbiAmbaRdWr(readWrite, deviceId, amba_addr, numwords, pData) \ |
| VpHbiVcpVppAmbaRdWr(readWrite, deviceId, amba_addr, numwords, pData) |
| #define VpHbiAmbaWrite(deviceId, amba_addr, numwords, pData) \ |
| VpHbiVcpVppAmbaRdWr(TRUE, deviceId, amba_addr, numwords, pData) |
| #define VpHbiAmbaRead(deviceId, amba_addr, numwords, pData) \ |
| VpHbiVcpVppAmbaRdWr(FALSE, deviceId, amba_addr, numwords, pData) |
| |
| #endif /* _HBI_COMMON_H */ |
| |