| /***************************************************************************** |
| * Copyright 2009 Broadcom Corporation. All rights reserved. |
| * |
| * Unless you and Broadcom execute a separate written software license |
| * agreement governing use of this software, this software is licensed to you |
| * under the terms of the GNU General Public License version 2, available at |
| * http://www.broadcom.com/licenses/GPLv2.php (the "GPL"). |
| * |
| * Notwithstanding the above, under no circumstances may you combine this |
| * software in any way with any other Broadcom software provided under a |
| * license other than the GPL, without Broadcom's express prior written |
| * consent. |
| *****************************************************************************/ |
| |
| #ifndef CAP_INLINE_H |
| #define CAP_INLINE_H |
| |
| /* ---- Include Files ---------------------------------------------------- */ |
| #include <mach/csp/cap.h> |
| #include <cfg_global.h> |
| |
| /* ---- Public Constants and Types --------------------------------------- */ |
| #define CAP_CONFIG0_VPM_DIS 0x00000001 |
| #define CAP_CONFIG0_ETH_PHY0_DIS 0x00000002 |
| #define CAP_CONFIG0_ETH_PHY1_DIS 0x00000004 |
| #define CAP_CONFIG0_ETH_GMII0_DIS 0x00000008 |
| #define CAP_CONFIG0_ETH_GMII1_DIS 0x00000010 |
| #define CAP_CONFIG0_ETH_SGMII0_DIS 0x00000020 |
| #define CAP_CONFIG0_ETH_SGMII1_DIS 0x00000040 |
| #define CAP_CONFIG0_USB0_DIS 0x00000080 |
| #define CAP_CONFIG0_USB1_DIS 0x00000100 |
| #define CAP_CONFIG0_TSC_DIS 0x00000200 |
| #define CAP_CONFIG0_EHSS0_DIS 0x00000400 |
| #define CAP_CONFIG0_EHSS1_DIS 0x00000800 |
| #define CAP_CONFIG0_SDIO0_DIS 0x00001000 |
| #define CAP_CONFIG0_SDIO1_DIS 0x00002000 |
| #define CAP_CONFIG0_UARTB_DIS 0x00004000 |
| #define CAP_CONFIG0_KEYPAD_DIS 0x00008000 |
| #define CAP_CONFIG0_CLCD_DIS 0x00010000 |
| #define CAP_CONFIG0_GE_DIS 0x00020000 |
| #define CAP_CONFIG0_LEDM_DIS 0x00040000 |
| #define CAP_CONFIG0_BBL_DIS 0x00080000 |
| #define CAP_CONFIG0_VDEC_DIS 0x00100000 |
| #define CAP_CONFIG0_PIF_DIS 0x00200000 |
| #define CAP_CONFIG0_RESERVED1_DIS 0x00400000 |
| #define CAP_CONFIG0_RESERVED2_DIS 0x00800000 |
| |
| #define CAP_CONFIG1_APMA_DIS 0x00000001 |
| #define CAP_CONFIG1_APMB_DIS 0x00000002 |
| #define CAP_CONFIG1_APMC_DIS 0x00000004 |
| #define CAP_CONFIG1_CLCD_RES_MASK 0x00000600 |
| #define CAP_CONFIG1_CLCD_RES_SHIFT 9 |
| #define CAP_CONFIG1_CLCD_RES_WVGA (CAP_LCD_WVGA << CAP_CONFIG1_CLCD_RES_SHIFT) |
| #define CAP_CONFIG1_CLCD_RES_VGA (CAP_LCD_VGA << CAP_CONFIG1_CLCD_RES_SHIFT) |
| #define CAP_CONFIG1_CLCD_RES_WQVGA (CAP_LCD_WQVGA << CAP_CONFIG1_CLCD_RES_SHIFT) |
| #define CAP_CONFIG1_CLCD_RES_QVGA (CAP_LCD_QVGA << CAP_CONFIG1_CLCD_RES_SHIFT) |
| |
| #define CAP_CONFIG2_SPU_DIS 0x00000010 |
| #define CAP_CONFIG2_PKA_DIS 0x00000020 |
| #define CAP_CONFIG2_RNG_DIS 0x00000080 |
| |
| #if (CFG_GLOBAL_CHIP == BCM11107) |
| #define capConfig0 0 |
| #define capConfig1 CAP_CONFIG1_CLCD_RES_WVGA |
| #define capConfig2 0 |
| #define CAP_APM_MAX_NUM_CHANS 3 |
| #elif (CFG_GLOBAL_CHIP == FPGA11107) |
| #define capConfig0 0 |
| #define capConfig1 CAP_CONFIG1_CLCD_RES_WVGA |
| #define capConfig2 0 |
| #define CAP_APM_MAX_NUM_CHANS 3 |
| #elif (CFG_GLOBAL_CHIP == BCM11109) |
| #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) |
| #define capConfig1 (CAP_CONFIG1_APMC_DIS | CAP_CONFIG1_CLCD_RES_WQVGA) |
| #define capConfig2 (CAP_CONFIG2_SPU_DIS | CAP_CONFIG2_PKA_DIS) |
| #define CAP_APM_MAX_NUM_CHANS 2 |
| #elif (CFG_GLOBAL_CHIP == BCM11170) |
| #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) |
| #define capConfig1 (CAP_CONFIG1_APMC_DIS | CAP_CONFIG1_CLCD_RES_WQVGA) |
| #define capConfig2 (CAP_CONFIG2_SPU_DIS | CAP_CONFIG2_PKA_DIS) |
| #define CAP_APM_MAX_NUM_CHANS 2 |
| #elif (CFG_GLOBAL_CHIP == BCM11110) |
| #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) |
| #define capConfig1 CAP_CONFIG1_APMC_DIS |
| #define capConfig2 (CAP_CONFIG2_SPU_DIS | CAP_CONFIG2_PKA_DIS) |
| #define CAP_APM_MAX_NUM_CHANS 2 |
| #elif (CFG_GLOBAL_CHIP == BCM11211) |
| #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) |
| #define capConfig1 CAP_CONFIG1_APMC_DIS |
| #define capConfig2 0 |
| #define CAP_APM_MAX_NUM_CHANS 2 |
| #else |
| #error CFG_GLOBAL_CHIP type capabilities not defined |
| #endif |
| |
| #if ((CFG_GLOBAL_CHIP == BCM11107) || (CFG_GLOBAL_CHIP == FPGA11107)) |
| #define CAP_HW_CFG_ARM_CLK_HZ 500000000 |
| #elif ((CFG_GLOBAL_CHIP == BCM11109) || (CFG_GLOBAL_CHIP == BCM11170) || (CFG_GLOBAL_CHIP == BCM11110)) |
| #define CAP_HW_CFG_ARM_CLK_HZ 300000000 |
| #elif (CFG_GLOBAL_CHIP == BCM11211) |
| #define CAP_HW_CFG_ARM_CLK_HZ 666666666 |
| #else |
| #error CFG_GLOBAL_CHIP type capabilities not defined |
| #endif |
| |
| #if ((CFG_GLOBAL_CHIP == BCM11107) || (CFG_GLOBAL_CHIP == BCM11211) || (CFG_GLOBAL_CHIP == FPGA11107)) |
| #define CAP_HW_CFG_VPM_CLK_HZ 333333333 |
| #elif ((CFG_GLOBAL_CHIP == BCM11109) || (CFG_GLOBAL_CHIP == BCM11170) || (CFG_GLOBAL_CHIP == BCM11110)) |
| #define CAP_HW_CFG_VPM_CLK_HZ 200000000 |
| #else |
| #error CFG_GLOBAL_CHIP type capabilities not defined |
| #endif |
| |
| /* ---- Public Variable Externs ------------------------------------------ */ |
| /* ---- Public Function Prototypes --------------------------------------- */ |
| |
| /**************************************************************************** |
| * cap_isPresent - |
| * |
| * PURPOSE: |
| * Determines if the chip has a certain capability present |
| * |
| * PARAMETERS: |
| * capability - type of capability to determine if present |
| * |
| * RETURNS: |
| * CAP_PRESENT or CAP_NOT_PRESENT |
| ****************************************************************************/ |
| static inline CAP_RC_T cap_isPresent(CAP_CAPABILITY_T capability, int index) |
| { |
| CAP_RC_T returnVal = CAP_NOT_PRESENT; |
| |
| switch (capability) { |
| case CAP_VPM: |
| { |
| if (!(capConfig0 & CAP_CONFIG0_VPM_DIS)) { |
| returnVal = CAP_PRESENT; |
| } |
| } |
| break; |
| |
| case CAP_ETH_PHY: |
| { |
| if ((index == 0) |
| && (!(capConfig0 & CAP_CONFIG0_ETH_PHY0_DIS))) { |
| returnVal = CAP_PRESENT; |
| } |
| if ((index == 1) |
| && (!(capConfig0 & CAP_CONFIG0_ETH_PHY1_DIS))) { |
| returnVal = CAP_PRESENT; |
| } |
| } |
| break; |
| |
| case CAP_ETH_GMII: |
| { |
| if ((index == 0) |
| && (!(capConfig0 & CAP_CONFIG0_ETH_GMII0_DIS))) { |
| returnVal = CAP_PRESENT; |
| } |
| if ((index == 1) |
| && (!(capConfig0 & CAP_CONFIG0_ETH_GMII1_DIS))) { |
| returnVal = CAP_PRESENT; |
| } |
| } |
| break; |
| |
| case CAP_ETH_SGMII: |
| { |
| if ((index == 0) |
| && (!(capConfig0 & CAP_CONFIG0_ETH_SGMII0_DIS))) { |
| returnVal = CAP_PRESENT; |
| } |
| if ((index == 1) |
| && (!(capConfig0 & CAP_CONFIG0_ETH_SGMII1_DIS))) { |
| returnVal = CAP_PRESENT; |
| } |
| } |
| break; |
| |
| case CAP_USB: |
| { |
| if ((index == 0) |
| && (!(capConfig0 & CAP_CONFIG0_USB0_DIS))) { |
| returnVal = CAP_PRESENT; |
| } |
| if ((index == 1) |
| && (!(capConfig0 & CAP_CONFIG0_USB1_DIS))) { |
| returnVal = CAP_PRESENT; |
| } |
| } |
| break; |
| |
| case CAP_TSC: |
| { |
| if (!(capConfig0 & CAP_CONFIG0_TSC_DIS)) { |
| returnVal = CAP_PRESENT; |
| } |
| } |
| break; |
| |
| case CAP_EHSS: |
| { |
| if ((index == 0) |
| && (!(capConfig0 & CAP_CONFIG0_EHSS0_DIS))) { |
| returnVal = CAP_PRESENT; |
| } |
| if ((index == 1) |
| && (!(capConfig0 & CAP_CONFIG0_EHSS1_DIS))) { |
| returnVal = CAP_PRESENT; |
| } |
| } |
| break; |
| |
| case CAP_SDIO: |
| { |
| if ((index == 0) |
| && (!(capConfig0 & CAP_CONFIG0_SDIO0_DIS))) { |
| returnVal = CAP_PRESENT; |
| } |
| if ((index == 1) |
| && (!(capConfig0 & CAP_CONFIG0_SDIO1_DIS))) { |
| returnVal = CAP_PRESENT; |
| } |
| } |
| break; |
| |
| case CAP_UARTB: |
| { |
| if (!(capConfig0 & CAP_CONFIG0_UARTB_DIS)) { |
| returnVal = CAP_PRESENT; |
| } |
| } |
| break; |
| |
| case CAP_KEYPAD: |
| { |
| if (!(capConfig0 & CAP_CONFIG0_KEYPAD_DIS)) { |
| returnVal = CAP_PRESENT; |
| } |
| } |
| break; |
| |
| case CAP_CLCD: |
| { |
| if (!(capConfig0 & CAP_CONFIG0_CLCD_DIS)) { |
| returnVal = CAP_PRESENT; |
| } |
| } |
| break; |
| |
| case CAP_GE: |
| { |
| if (!(capConfig0 & CAP_CONFIG0_GE_DIS)) { |
| returnVal = CAP_PRESENT; |
| } |
| } |
| break; |
| |
| case CAP_LEDM: |
| { |
| if (!(capConfig0 & CAP_CONFIG0_LEDM_DIS)) { |
| returnVal = CAP_PRESENT; |
| } |
| } |
| break; |
| |
| case CAP_BBL: |
| { |
| if (!(capConfig0 & CAP_CONFIG0_BBL_DIS)) { |
| returnVal = CAP_PRESENT; |
| } |
| } |
| break; |
| |
| case CAP_VDEC: |
| { |
| if (!(capConfig0 & CAP_CONFIG0_VDEC_DIS)) { |
| returnVal = CAP_PRESENT; |
| } |
| } |
| break; |
| |
| case CAP_PIF: |
| { |
| if (!(capConfig0 & CAP_CONFIG0_PIF_DIS)) { |
| returnVal = CAP_PRESENT; |
| } |
| } |
| break; |
| |
| case CAP_APM: |
| { |
| if ((index == 0) |
| && (!(capConfig1 & CAP_CONFIG1_APMA_DIS))) { |
| returnVal = CAP_PRESENT; |
| } |
| if ((index == 1) |
| && (!(capConfig1 & CAP_CONFIG1_APMB_DIS))) { |
| returnVal = CAP_PRESENT; |
| } |
| if ((index == 2) |
| && (!(capConfig1 & CAP_CONFIG1_APMC_DIS))) { |
| returnVal = CAP_PRESENT; |
| } |
| } |
| break; |
| |
| case CAP_SPU: |
| { |
| if (!(capConfig2 & CAP_CONFIG2_SPU_DIS)) { |
| returnVal = CAP_PRESENT; |
| } |
| } |
| break; |
| |
| case CAP_PKA: |
| { |
| if (!(capConfig2 & CAP_CONFIG2_PKA_DIS)) { |
| returnVal = CAP_PRESENT; |
| } |
| } |
| break; |
| |
| case CAP_RNG: |
| { |
| if (!(capConfig2 & CAP_CONFIG2_RNG_DIS)) { |
| returnVal = CAP_PRESENT; |
| } |
| } |
| break; |
| |
| default: |
| { |
| } |
| break; |
| } |
| return returnVal; |
| } |
| |
| /**************************************************************************** |
| * cap_getMaxArmSpeedHz - |
| * |
| * PURPOSE: |
| * Determines the maximum speed of the ARM CPU |
| * |
| * PARAMETERS: |
| * none |
| * |
| * RETURNS: |
| * clock speed in Hz that the ARM processor is able to run at |
| ****************************************************************************/ |
| static inline uint32_t cap_getMaxArmSpeedHz(void) |
| { |
| #if ((CFG_GLOBAL_CHIP == BCM11107) || (CFG_GLOBAL_CHIP == FPGA11107)) |
| return 500000000; |
| #elif ((CFG_GLOBAL_CHIP == BCM11109) || (CFG_GLOBAL_CHIP == BCM11170) || (CFG_GLOBAL_CHIP == BCM11110)) |
| return 300000000; |
| #elif (CFG_GLOBAL_CHIP == BCM11211) |
| return 666666666; |
| #else |
| #error CFG_GLOBAL_CHIP type capabilities not defined |
| #endif |
| } |
| |
| /**************************************************************************** |
| * cap_getMaxVpmSpeedHz - |
| * |
| * PURPOSE: |
| * Determines the maximum speed of the VPM |
| * |
| * PARAMETERS: |
| * none |
| * |
| * RETURNS: |
| * clock speed in Hz that the VPM is able to run at |
| ****************************************************************************/ |
| static inline uint32_t cap_getMaxVpmSpeedHz(void) |
| { |
| #if ((CFG_GLOBAL_CHIP == BCM11107) || (CFG_GLOBAL_CHIP == BCM11211) || (CFG_GLOBAL_CHIP == FPGA11107)) |
| return 333333333; |
| #elif ((CFG_GLOBAL_CHIP == BCM11109) || (CFG_GLOBAL_CHIP == BCM11170) || (CFG_GLOBAL_CHIP == BCM11110)) |
| return 200000000; |
| #else |
| #error CFG_GLOBAL_CHIP type capabilities not defined |
| #endif |
| } |
| |
| /**************************************************************************** |
| * cap_getMaxLcdRes - |
| * |
| * PURPOSE: |
| * Determines the maximum LCD resolution capabilities |
| * |
| * PARAMETERS: |
| * none |
| * |
| * RETURNS: |
| * CAP_LCD_WVGA, CAP_LCD_VGA, CAP_LCD_WQVGA or CAP_LCD_QVGA |
| * |
| ****************************************************************************/ |
| static inline CAP_LCD_RES_T cap_getMaxLcdRes(void) |
| { |
| return (CAP_LCD_RES_T) |
| ((capConfig1 & CAP_CONFIG1_CLCD_RES_MASK) >> |
| CAP_CONFIG1_CLCD_RES_SHIFT); |
| } |
| |
| #endif |