/*************************************************************************** * Copyright (c) 2003-2009, Broadcom Corporation * All Rights Reserved * Confidential Property of Broadcom Corporation * * THIS SOFTWARE MAY ONLY BE USED SUBJECT TO AN EXECUTED SOFTWARE LICENSE * AGREEMENT BETWEEN THE USER AND BROADCOM. YOU HAVE NO RIGHT TO USE OR * EXPLOIT THIS MATERIAL EXCEPT SUBJECT TO THE TERMS OF SUCH AN AGREEMENT. * * $brcm_Workfile: bcmmux.c $ * $brcm_Revision: Hydra_Software_Devel/1 $ * $brcm_Date: 9/30/09 5:18p $ * * Module Description: * * Revision History: * * $brcm_Log: /rockford/bsp/bcm97550/common/bcmmux.c $ * * Hydra_Software_Devel/1 9/30/09 5:18p farshidf * SW7550-38: mini non-os code * * Hydra_Software_Devel/1 3/24/05 4:40p dlwin * PR 14606: Merge to main development branch. * * Hydra_Software_Devel/2 10/6/03 11:54a brianlee * Changed the name BMUX to BAPP_Mux. * * Hydra_Software_Devel/1 10/3/03 4:54p brianlee * Initial version. * * ***************************************************************************/ #include "bstd.h" #include "breg_mem.h" #include "bchp_qam.h" #include "bcmmux.h" /**************************************************************** * bcmConfigure3250Gpio * * INPUTS: pReg3250 - 3250 register handle * * OUTPUTS: * RETURNS: none * FUNCTION: * ****************************************************************/ void bcmConfigure3250Gpio (BREG_Handle hReg3250) { uint8_t bval; bval = BREG_Read8 (hReg3250, (uint32_t)(BCM3250_UPG_CORE_OFFSET + GIO_DIRLSB)); bval &= ~GPIO_MUX_MASK; BREG_Write8 (hReg3250, (BCM3250_UPG_CORE_OFFSET + GIO_DIRLSB), bval); } /**************************************************************** * bcmSelectTunerAAgc * * INPUTS: pReg3250 - 3250 register handle * agcSelect - select between analog and digital * * OUTPUTS: * RETURNS: none * FUNCTION: This function selects IF and AGC between digital and * analog for Tuner A. For bcm97038, this is controlled * by GPIO bit 2 of the 3250. * ****************************************************************/ void bcmSelectTunerAAgc(BREG_Handle hReg3250, BAPP_Mux_AgcSelect agcSelect) { uint8_t bval; bval = BREG_Read8 (hReg3250, (uint32_t)(BCM3250_UPG_CORE_OFFSET + GIO_OUTLSB)); if (agcSelect == BAPP_Mux_AgcSelect_eDigital) bval &= ~GPIO_TUNER_A_AGC_SEL; else bval |= GPIO_TUNER_A_AGC_SEL; BREG_Write8 (hReg3250, (BCM3250_UPG_CORE_OFFSET + GIO_OUTLSB), bval); } /**************************************************************** * bcmSelectTunerCAgc * * INPUTS: pReg3250 - 3250 register handle * agcSelect - select between analog and digital * * OUTPUTS: * RETURNS: none * FUNCTION: This function selects IF and AGC between digital and * analog for Tuner C. For bcm97038, this is controlled * by GPIO bit 3 of the 3250. * ****************************************************************/ void bcmSelectTunerCAgc(BREG_Handle hReg3250, BAPP_Mux_AgcSelect agcSelect) { uint8_t bval; bval = BREG_Read8 (hReg3250, (uint32_t)(BCM3250_UPG_CORE_OFFSET + GIO_OUTLSB)); if (agcSelect == BAPP_Mux_AgcSelect_eDigital) bval &= ~GPIO_TUNER_C_AGC_SEL; else bval |= GPIO_TUNER_C_AGC_SEL; BREG_Write8 (hReg3250, (BCM3250_UPG_CORE_OFFSET + GIO_OUTLSB), bval); } /**************************************************************** * bcmSelectRfmBypass * * INPUTS: pReg3250 - 3250 register handle * bypass - bypasses RFM * * OUTPUTS: * RETURNS: none * FUNCTION: This function selects a MUX which bypasses RF Modulator. * ****************************************************************/ void bcmSelectRfmBypass (BREG_Handle hReg3250, bool bypass) { uint8_t bval; bval = BREG_Read8 (hReg3250, (uint32_t)(BCM3250_UPG_CORE_OFFSET + GIO_OUTLSB)); if (bypass) bval |= GPIO_RFM_BYPASS; else bval &= ~GPIO_RFM_BYPASS; BREG_Write8 (hReg3250, (BCM3250_UPG_CORE_OFFSET + GIO_OUTLSB), bval); } /**************************************************************** * bcmSelectIFDemodInput * * INPUTS: pReg3250 - 3250 register handle * ifdSelect - tuner A or VSB * * OUTPUTS: * RETURNS: none * FUNCTION: This function selects IF Demod input. * ****************************************************************/ void bcmSelectIFDemodInput (BREG_Handle hReg3250, BAPP_Mux_IfDemodSelect ifdSelect) { uint8_t bval; bval = BREG_Read8 (hReg3250, (uint32_t)(BCM3250_UPG_CORE_OFFSET + GIO_OUTLSB)); if (ifdSelect == BAPP_Mux_IfDemodSelect_eTunerA) bval |= GPIO_BCM7038_IF_SEL; else bval &= GPIO_BCM7038_IF_SEL; BREG_Write8 (hReg3250, (BCM3250_UPG_CORE_OFFSET + GIO_OUTLSB), bval); }