Path: blob/master/arch/arm/mach-bcmring/include/mach/csp/cap_inline.h
10821 views
/*****************************************************************************1* Copyright 2009 Broadcom Corporation. All rights reserved.2*3* Unless you and Broadcom execute a separate written software license4* agreement governing use of this software, this software is licensed to you5* under the terms of the GNU General Public License version 2, available at6* http://www.broadcom.com/licenses/GPLv2.php (the "GPL").7*8* Notwithstanding the above, under no circumstances may you combine this9* software in any way with any other Broadcom software provided under a10* license other than the GPL, without Broadcom's express prior written11* consent.12*****************************************************************************/1314#ifndef CAP_INLINE_H15#define CAP_INLINE_H1617/* ---- Include Files ---------------------------------------------------- */18#include <mach/csp/cap.h>19#include <cfg_global.h>2021/* ---- Public Constants and Types --------------------------------------- */22#define CAP_CONFIG0_VPM_DIS 0x0000000123#define CAP_CONFIG0_ETH_PHY0_DIS 0x0000000224#define CAP_CONFIG0_ETH_PHY1_DIS 0x0000000425#define CAP_CONFIG0_ETH_GMII0_DIS 0x0000000826#define CAP_CONFIG0_ETH_GMII1_DIS 0x0000001027#define CAP_CONFIG0_ETH_SGMII0_DIS 0x0000002028#define CAP_CONFIG0_ETH_SGMII1_DIS 0x0000004029#define CAP_CONFIG0_USB0_DIS 0x0000008030#define CAP_CONFIG0_USB1_DIS 0x0000010031#define CAP_CONFIG0_TSC_DIS 0x0000020032#define CAP_CONFIG0_EHSS0_DIS 0x0000040033#define CAP_CONFIG0_EHSS1_DIS 0x0000080034#define CAP_CONFIG0_SDIO0_DIS 0x0000100035#define CAP_CONFIG0_SDIO1_DIS 0x0000200036#define CAP_CONFIG0_UARTB_DIS 0x0000400037#define CAP_CONFIG0_KEYPAD_DIS 0x0000800038#define CAP_CONFIG0_CLCD_DIS 0x0001000039#define CAP_CONFIG0_GE_DIS 0x0002000040#define CAP_CONFIG0_LEDM_DIS 0x0004000041#define CAP_CONFIG0_BBL_DIS 0x0008000042#define CAP_CONFIG0_VDEC_DIS 0x0010000043#define CAP_CONFIG0_PIF_DIS 0x0020000044#define CAP_CONFIG0_RESERVED1_DIS 0x0040000045#define CAP_CONFIG0_RESERVED2_DIS 0x008000004647#define CAP_CONFIG1_APMA_DIS 0x0000000148#define CAP_CONFIG1_APMB_DIS 0x0000000249#define CAP_CONFIG1_APMC_DIS 0x0000000450#define CAP_CONFIG1_CLCD_RES_MASK 0x0000060051#define CAP_CONFIG1_CLCD_RES_SHIFT 952#define CAP_CONFIG1_CLCD_RES_WVGA (CAP_LCD_WVGA << CAP_CONFIG1_CLCD_RES_SHIFT)53#define CAP_CONFIG1_CLCD_RES_VGA (CAP_LCD_VGA << CAP_CONFIG1_CLCD_RES_SHIFT)54#define CAP_CONFIG1_CLCD_RES_WQVGA (CAP_LCD_WQVGA << CAP_CONFIG1_CLCD_RES_SHIFT)55#define CAP_CONFIG1_CLCD_RES_QVGA (CAP_LCD_QVGA << CAP_CONFIG1_CLCD_RES_SHIFT)5657#define CAP_CONFIG2_SPU_DIS 0x0000001058#define CAP_CONFIG2_PKA_DIS 0x0000002059#define CAP_CONFIG2_RNG_DIS 0x000000806061#if (CFG_GLOBAL_CHIP == BCM11107)62#define capConfig0 063#define capConfig1 CAP_CONFIG1_CLCD_RES_WVGA64#define capConfig2 065#define CAP_APM_MAX_NUM_CHANS 366#elif (CFG_GLOBAL_CHIP == FPGA11107)67#define capConfig0 068#define capConfig1 CAP_CONFIG1_CLCD_RES_WVGA69#define capConfig2 070#define CAP_APM_MAX_NUM_CHANS 371#elif (CFG_GLOBAL_CHIP == BCM11109)72#define capConfig0 (CAP_CONFIG0_USB1_DIS | CAP_CONFIG0_EHSS1_DIS | CAP_CONFIG0_SDIO1_DIS | CAP_CONFIG0_GE_DIS | CAP_CONFIG0_BBL_DIS | CAP_CONFIG0_VDEC_DIS)73#define capConfig1 (CAP_CONFIG1_APMC_DIS | CAP_CONFIG1_CLCD_RES_WQVGA)74#define capConfig2 (CAP_CONFIG2_SPU_DIS | CAP_CONFIG2_PKA_DIS)75#define CAP_APM_MAX_NUM_CHANS 276#elif (CFG_GLOBAL_CHIP == BCM11170)77#define capConfig0 (CAP_CONFIG0_ETH_GMII0_DIS | CAP_CONFIG0_ETH_GMII1_DIS | CAP_CONFIG0_USB0_DIS | CAP_CONFIG0_USB1_DIS | CAP_CONFIG0_TSC_DIS | CAP_CONFIG0_EHSS1_DIS | CAP_CONFIG0_SDIO0_DIS | CAP_CONFIG0_SDIO1_DIS | CAP_CONFIG0_UARTB_DIS | CAP_CONFIG0_CLCD_DIS | CAP_CONFIG0_GE_DIS | CAP_CONFIG0_BBL_DIS | CAP_CONFIG0_VDEC_DIS)78#define capConfig1 (CAP_CONFIG1_APMC_DIS | CAP_CONFIG1_CLCD_RES_WQVGA)79#define capConfig2 (CAP_CONFIG2_SPU_DIS | CAP_CONFIG2_PKA_DIS)80#define CAP_APM_MAX_NUM_CHANS 281#elif (CFG_GLOBAL_CHIP == BCM11110)82#define capConfig0 (CAP_CONFIG0_USB1_DIS | CAP_CONFIG0_TSC_DIS | CAP_CONFIG0_EHSS1_DIS | CAP_CONFIG0_SDIO0_DIS | CAP_CONFIG0_SDIO1_DIS | CAP_CONFIG0_UARTB_DIS | CAP_CONFIG0_GE_DIS | CAP_CONFIG0_BBL_DIS | CAP_CONFIG0_VDEC_DIS)83#define capConfig1 CAP_CONFIG1_APMC_DIS84#define capConfig2 (CAP_CONFIG2_SPU_DIS | CAP_CONFIG2_PKA_DIS)85#define CAP_APM_MAX_NUM_CHANS 286#elif (CFG_GLOBAL_CHIP == BCM11211)87#define capConfig0 (CAP_CONFIG0_ETH_PHY0_DIS | CAP_CONFIG0_ETH_GMII0_DIS | CAP_CONFIG0_ETH_GMII1_DIS | CAP_CONFIG0_ETH_SGMII0_DIS | CAP_CONFIG0_ETH_SGMII1_DIS | CAP_CONFIG0_CLCD_DIS)88#define capConfig1 CAP_CONFIG1_APMC_DIS89#define capConfig2 090#define CAP_APM_MAX_NUM_CHANS 291#else92#error CFG_GLOBAL_CHIP type capabilities not defined93#endif9495#if ((CFG_GLOBAL_CHIP == BCM11107) || (CFG_GLOBAL_CHIP == FPGA11107))96#define CAP_HW_CFG_ARM_CLK_HZ 50000000097#elif ((CFG_GLOBAL_CHIP == BCM11109) || (CFG_GLOBAL_CHIP == BCM11170) || (CFG_GLOBAL_CHIP == BCM11110))98#define CAP_HW_CFG_ARM_CLK_HZ 30000000099#elif (CFG_GLOBAL_CHIP == BCM11211)100#define CAP_HW_CFG_ARM_CLK_HZ 666666666101#else102#error CFG_GLOBAL_CHIP type capabilities not defined103#endif104105#if ((CFG_GLOBAL_CHIP == BCM11107) || (CFG_GLOBAL_CHIP == BCM11211) || (CFG_GLOBAL_CHIP == FPGA11107))106#define CAP_HW_CFG_VPM_CLK_HZ 333333333107#elif ((CFG_GLOBAL_CHIP == BCM11109) || (CFG_GLOBAL_CHIP == BCM11170) || (CFG_GLOBAL_CHIP == BCM11110))108#define CAP_HW_CFG_VPM_CLK_HZ 200000000109#else110#error CFG_GLOBAL_CHIP type capabilities not defined111#endif112113/* ---- Public Variable Externs ------------------------------------------ */114/* ---- Public Function Prototypes --------------------------------------- */115116/****************************************************************************117* cap_isPresent -118*119* PURPOSE:120* Determines if the chip has a certain capability present121*122* PARAMETERS:123* capability - type of capability to determine if present124*125* RETURNS:126* CAP_PRESENT or CAP_NOT_PRESENT127****************************************************************************/128static inline CAP_RC_T cap_isPresent(CAP_CAPABILITY_T capability, int index)129{130CAP_RC_T returnVal = CAP_NOT_PRESENT;131132switch (capability) {133case CAP_VPM:134{135if (!(capConfig0 & CAP_CONFIG0_VPM_DIS)) {136returnVal = CAP_PRESENT;137}138}139break;140141case CAP_ETH_PHY:142{143if ((index == 0)144&& (!(capConfig0 & CAP_CONFIG0_ETH_PHY0_DIS))) {145returnVal = CAP_PRESENT;146}147if ((index == 1)148&& (!(capConfig0 & CAP_CONFIG0_ETH_PHY1_DIS))) {149returnVal = CAP_PRESENT;150}151}152break;153154case CAP_ETH_GMII:155{156if ((index == 0)157&& (!(capConfig0 & CAP_CONFIG0_ETH_GMII0_DIS))) {158returnVal = CAP_PRESENT;159}160if ((index == 1)161&& (!(capConfig0 & CAP_CONFIG0_ETH_GMII1_DIS))) {162returnVal = CAP_PRESENT;163}164}165break;166167case CAP_ETH_SGMII:168{169if ((index == 0)170&& (!(capConfig0 & CAP_CONFIG0_ETH_SGMII0_DIS))) {171returnVal = CAP_PRESENT;172}173if ((index == 1)174&& (!(capConfig0 & CAP_CONFIG0_ETH_SGMII1_DIS))) {175returnVal = CAP_PRESENT;176}177}178break;179180case CAP_USB:181{182if ((index == 0)183&& (!(capConfig0 & CAP_CONFIG0_USB0_DIS))) {184returnVal = CAP_PRESENT;185}186if ((index == 1)187&& (!(capConfig0 & CAP_CONFIG0_USB1_DIS))) {188returnVal = CAP_PRESENT;189}190}191break;192193case CAP_TSC:194{195if (!(capConfig0 & CAP_CONFIG0_TSC_DIS)) {196returnVal = CAP_PRESENT;197}198}199break;200201case CAP_EHSS:202{203if ((index == 0)204&& (!(capConfig0 & CAP_CONFIG0_EHSS0_DIS))) {205returnVal = CAP_PRESENT;206}207if ((index == 1)208&& (!(capConfig0 & CAP_CONFIG0_EHSS1_DIS))) {209returnVal = CAP_PRESENT;210}211}212break;213214case CAP_SDIO:215{216if ((index == 0)217&& (!(capConfig0 & CAP_CONFIG0_SDIO0_DIS))) {218returnVal = CAP_PRESENT;219}220if ((index == 1)221&& (!(capConfig0 & CAP_CONFIG0_SDIO1_DIS))) {222returnVal = CAP_PRESENT;223}224}225break;226227case CAP_UARTB:228{229if (!(capConfig0 & CAP_CONFIG0_UARTB_DIS)) {230returnVal = CAP_PRESENT;231}232}233break;234235case CAP_KEYPAD:236{237if (!(capConfig0 & CAP_CONFIG0_KEYPAD_DIS)) {238returnVal = CAP_PRESENT;239}240}241break;242243case CAP_CLCD:244{245if (!(capConfig0 & CAP_CONFIG0_CLCD_DIS)) {246returnVal = CAP_PRESENT;247}248}249break;250251case CAP_GE:252{253if (!(capConfig0 & CAP_CONFIG0_GE_DIS)) {254returnVal = CAP_PRESENT;255}256}257break;258259case CAP_LEDM:260{261if (!(capConfig0 & CAP_CONFIG0_LEDM_DIS)) {262returnVal = CAP_PRESENT;263}264}265break;266267case CAP_BBL:268{269if (!(capConfig0 & CAP_CONFIG0_BBL_DIS)) {270returnVal = CAP_PRESENT;271}272}273break;274275case CAP_VDEC:276{277if (!(capConfig0 & CAP_CONFIG0_VDEC_DIS)) {278returnVal = CAP_PRESENT;279}280}281break;282283case CAP_PIF:284{285if (!(capConfig0 & CAP_CONFIG0_PIF_DIS)) {286returnVal = CAP_PRESENT;287}288}289break;290291case CAP_APM:292{293if ((index == 0)294&& (!(capConfig1 & CAP_CONFIG1_APMA_DIS))) {295returnVal = CAP_PRESENT;296}297if ((index == 1)298&& (!(capConfig1 & CAP_CONFIG1_APMB_DIS))) {299returnVal = CAP_PRESENT;300}301if ((index == 2)302&& (!(capConfig1 & CAP_CONFIG1_APMC_DIS))) {303returnVal = CAP_PRESENT;304}305}306break;307308case CAP_SPU:309{310if (!(capConfig2 & CAP_CONFIG2_SPU_DIS)) {311returnVal = CAP_PRESENT;312}313}314break;315316case CAP_PKA:317{318if (!(capConfig2 & CAP_CONFIG2_PKA_DIS)) {319returnVal = CAP_PRESENT;320}321}322break;323324case CAP_RNG:325{326if (!(capConfig2 & CAP_CONFIG2_RNG_DIS)) {327returnVal = CAP_PRESENT;328}329}330break;331332default:333{334}335break;336}337return returnVal;338}339340/****************************************************************************341* cap_getMaxArmSpeedHz -342*343* PURPOSE:344* Determines the maximum speed of the ARM CPU345*346* PARAMETERS:347* none348*349* RETURNS:350* clock speed in Hz that the ARM processor is able to run at351****************************************************************************/352static inline uint32_t cap_getMaxArmSpeedHz(void)353{354#if ((CFG_GLOBAL_CHIP == BCM11107) || (CFG_GLOBAL_CHIP == FPGA11107))355return 500000000;356#elif ((CFG_GLOBAL_CHIP == BCM11109) || (CFG_GLOBAL_CHIP == BCM11170) || (CFG_GLOBAL_CHIP == BCM11110))357return 300000000;358#elif (CFG_GLOBAL_CHIP == BCM11211)359return 666666666;360#else361#error CFG_GLOBAL_CHIP type capabilities not defined362#endif363}364365/****************************************************************************366* cap_getMaxVpmSpeedHz -367*368* PURPOSE:369* Determines the maximum speed of the VPM370*371* PARAMETERS:372* none373*374* RETURNS:375* clock speed in Hz that the VPM is able to run at376****************************************************************************/377static inline uint32_t cap_getMaxVpmSpeedHz(void)378{379#if ((CFG_GLOBAL_CHIP == BCM11107) || (CFG_GLOBAL_CHIP == BCM11211) || (CFG_GLOBAL_CHIP == FPGA11107))380return 333333333;381#elif ((CFG_GLOBAL_CHIP == BCM11109) || (CFG_GLOBAL_CHIP == BCM11170) || (CFG_GLOBAL_CHIP == BCM11110))382return 200000000;383#else384#error CFG_GLOBAL_CHIP type capabilities not defined385#endif386}387388/****************************************************************************389* cap_getMaxLcdRes -390*391* PURPOSE:392* Determines the maximum LCD resolution capabilities393*394* PARAMETERS:395* none396*397* RETURNS:398* CAP_LCD_WVGA, CAP_LCD_VGA, CAP_LCD_WQVGA or CAP_LCD_QVGA399*400****************************************************************************/401static inline CAP_LCD_RES_T cap_getMaxLcdRes(void)402{403return (CAP_LCD_RES_T)404((capConfig1 & CAP_CONFIG1_CLCD_RES_MASK) >>405CAP_CONFIG1_CLCD_RES_SHIFT);406}407408#endif409410411