static int hdmi_detect(void) { int ret = true; #if defined(DISPLAY_STB_AUTO_DETECT) || defined(DISPLAY_STB_ATTACH_DUAL_AUTO) gpio_config(TCC_GPHDMI(1), GPIO_FN0 | GPIO_INPUT); /* HDMI_DET */ ret = gpio_get(TCC_GPHDMI(1))? true : false; #endif return ret; }
/***************************************************************************** Function Name : tcc_composite_detect() ******************************************************************************/ int tcc_composite_detect(void) { int detect = true; #if defined (CONFIG_MACH_TCC9300ST) || defined(CONFIG_MACH_TCC8800ST) || defined(CONFIG_MACH_TCC8920ST) #if defined(CONFIG_TCC_OUTPUT_AUTO_DETECTION) && defined(TCC_OUTPUT_AUTO_ALL) if(composite_plugout) { if(composite_ext_interrupt == 1) tcc_composite_ext_interrupt_set(FALSE); detect = false; } else { if(composite_ext_interrupt) { detect = true; } else { detect = gpio_get_value(COMPOSITE_DETECT_GPIO)? false : true; if(detect) { if(composite_ext_interrupt == 0) tcc_composite_ext_interrupt_set(TRUE); } dprintk("%s, detect=%d\n", __func__, detect); } } #elif (defined(CONFIG_TCC_OUTPUT_AUTO_DETECTION) && defined(TCC_OUTPUT_AUTO_HDMI_CVBS)) || (defined(CONFIG_TCC_OUTPUT_ATTACH) && defined(CONFIG_OUTPUT_ATTACH_HDMI_CVBS)) /* Check the HDMI detection */ #if defined(CONFIG_MACH_TCC9300ST) if(gpio_get_value(TCC_GPA(14))) #elif defined(CONFIG_MACH_TCC8800ST) if(gpio_get_value(TCC_GPD(25))) #elif defined(CONFIG_MACH_TCC8920ST) if(gpio_get_value(TCC_GPHDMI(1))) #endif { detect = false; } #elif defined(CONFIG_TCC_OUTPUT_ATTACH) && defined(CONFIG_OUTPUT_ATTACH_DUAL_AUTO) detect = false; #endif #endif return detect; }
/***************************************************************************** * Function Name : tca_i2c_setgpio(int ch) * Description: I2C port configuration * input parameter: * int core; // I2C Core * int ch; // I2C master channel ******************************************************************************/ void tca_i2c_setgpio(int core, int ch) { //PI2CPORTCFG i2c_portcfg = (PI2CPORTCFG)tcc_p2v(HwI2C_PORTCFG_BASE); switch (core) { case 0: #if defined(CONFIG_MACH_TCC8920ST) #if defined(CONFIG_STB_BOARD_DONGLE) //I2C[16] - GPIOE[14][15] //i2c_portcfg->PCFG0.bREG.MASTER0 = 16; BITCSET(((PI2CPORTCFG)io_p2v(HwI2C_PORTCFG_BASE))->PCFG0.nREG, 0x000000FF, 16); tcc_gpio_config(TCC_GPE(14), GPIO_FN6|GPIO_OUTPUT|GPIO_LOW); tcc_gpio_config(TCC_GPE(15), GPIO_FN6|GPIO_OUTPUT|GPIO_LOW); #elif defined(CONFIG_STB_BOARD_HDB892F) #if defined(CONFIG_HDB892F_BOARD_YJ8925T) #else //I2C[16] - GPIOE[14][15] //i2c_portcfg->PCFG0.bREG.MASTER0 = 16; BITCSET(((PI2CPORTCFG)io_p2v(HwI2C_PORTCFG_BASE))->PCFG0.nREG, 0x000000FF, 16); tcc_gpio_config(TCC_GPE(14), GPIO_FN6|GPIO_OUTPUT|GPIO_LOW); tcc_gpio_config(TCC_GPE(15), GPIO_FN6|GPIO_OUTPUT|GPIO_LOW); #endif #elif defined(CONFIG_STB_BOARD_ISDBT_MODULE) //I2C[22] - GPIOG[2][3] //i2c_portcfg->PCFG0.bREG.MASTER0 = 22; BITCSET(((PI2CPORTCFG)io_p2v(HwI2C_PORTCFG_BASE))->PCFG0.nREG, 0x000000FF, 22); tcc_gpio_config(TCC_GPG(2), GPIO_FN4|GPIO_OUTPUT|GPIO_LOW); tcc_gpio_config(TCC_GPG(3), GPIO_FN4|GPIO_OUTPUT|GPIO_LOW); #elif defined(CONFIG_STB_BOARD_UPC) #else //I2C[26] - GPIOG[18][19] //i2c_portcfg->PCFG0.bREG.MASTER0 = 26; BITCSET(((PI2CPORTCFG)io_p2v(HwI2C_PORTCFG_BASE))->PCFG0.nREG, 0x000000FF, 26); tcc_gpio_config(TCC_GPG(18), GPIO_FN4|GPIO_OUTPUT|GPIO_LOW); tcc_gpio_config(TCC_GPG(19), GPIO_FN4|GPIO_OUTPUT|GPIO_LOW); #endif #elif defined(CONFIG_MACH_M805_892X) if (system_rev == 0x2002 || system_rev == 0x2003 || system_rev == 0x2004 || system_rev == 0x2005 || system_rev == 0x2006 || system_rev == 0x2007 || system_rev == 0x2008) { //I2C[12] - GPIOC[2][3] //i2c_portcfg->PCFG0.bREG.MASTER0 = 12; BITCSET(((PI2CPORTCFG)io_p2v(HwI2C_PORTCFG_BASE))->PCFG0.nREG, 0x000000FF, 12); tcc_gpio_config(TCC_GPC(2), GPIO_FN7|GPIO_OUTPUT|GPIO_LOW); tcc_gpio_config(TCC_GPC(3), GPIO_FN7|GPIO_OUTPUT|GPIO_LOW); } else { #if defined(CONFIG_M805S_8923_0XA) //I2C[22] - GPIOG[2][3] //i2c_portcfg->PCFG0.bREG.MASTER0 = 22; BITCSET(((PI2CPORTCFG)io_p2v(HwI2C_PORTCFG_BASE))->PCFG0.nREG, 0x000000FF, 22); tcc_gpio_config(TCC_GPG(2), GPIO_FN4|GPIO_OUTPUT|GPIO_LOW); tcc_gpio_config(TCC_GPG(3), GPIO_FN4|GPIO_OUTPUT|GPIO_LOW); #else //I2C[23] - GPIOG[6][7] //i2c_portcfg->PCFG0.bREG.MASTER0 = 23; BITCSET(((PI2CPORTCFG)io_p2v(HwI2C_PORTCFG_BASE))->PCFG0.nREG, 0x000000FF, 23); tcc_gpio_config(TCC_GPG(6), GPIO_FN4|GPIO_OUTPUT|GPIO_LOW); tcc_gpio_config(TCC_GPG(7), GPIO_FN4|GPIO_OUTPUT|GPIO_LOW); #endif } #else if(system_rev == 0x1006) { //I2C[18] - GPIOF[13][14] //((PI2CPORTCFG)HwI2C_PORTCFG_BASE)->PCFG0.bREG.MASTER0 = 18; BITCSET(((PI2CPORTCFG)io_p2v(HwI2C_PORTCFG_BASE))->PCFG0.nREG, 0x000000FF, 18); tcc_gpio_config(TCC_GPF(13), GPIO_FN10|GPIO_OUTPUT|GPIO_LOW); tcc_gpio_config(TCC_GPF(14), GPIO_FN10|GPIO_OUTPUT|GPIO_LOW); } else if(system_rev == 0x1008) { //I2C[22] - GPIOG[2][3] //((PI2CPORTCFG)HwI2C_PORTCFG_BASE)->PCFG0.bREG.MASTER0 = 22; BITCSET(((PI2CPORTCFG)io_p2v(HwI2C_PORTCFG_BASE))->PCFG0.nREG, 0x000000FF, 22); tcc_gpio_config(TCC_GPG(2), GPIO_FN4|GPIO_OUTPUT|GPIO_LOW); tcc_gpio_config(TCC_GPG(3), GPIO_FN4|GPIO_OUTPUT|GPIO_LOW); } else { //I2C[8] - GPIOB[9][10] //i2c_portcfg->PCFG0.bREG.MASTER0 = 8; BITCSET(((PI2CPORTCFG)io_p2v(HwI2C_PORTCFG_BASE))->PCFG0.nREG, 0x000000FF, 8); tcc_gpio_config(TCC_GPB(9), GPIO_FN11|GPIO_OUTPUT|GPIO_LOW); tcc_gpio_config(TCC_GPB(10), GPIO_FN11|GPIO_OUTPUT|GPIO_LOW); } #endif break; case 1: #if defined(CONFIG_MACH_M805_892X) if (system_rev == 0x2002 || system_rev == 0x2003 || system_rev == 0x2004 || system_rev == 0x2005 || system_rev == 0x2006 || system_rev == 0x2007 || system_rev == 0x2008) { //I2C[25] - GPIOG[12][13] //i2c_portcfg->PCFG0.bREG.MASTER1 = 25; BITCSET(((PI2CPORTCFG)io_p2v(HwI2C_PORTCFG_BASE))->PCFG0.nREG, 0x0000FF00, 25<<8); tcc_gpio_config(TCC_GPG(12), GPIO_FN4|GPIO_OUTPUT|GPIO_LOW); tcc_gpio_config(TCC_GPG(13), GPIO_FN4|GPIO_OUTPUT|GPIO_LOW); } else { #if defined(CONFIG_M805S_8923_0XA) //I2C[21] - GPIOF[27][28] //i2c_portcfg->PCFG0.bREG.MASTER1 = 21; BITCSET(((PI2CPORTCFG)io_p2v(HwI2C_PORTCFG_BASE))->PCFG0.nREG, 0x0000FF00, 21<<8); tcc_gpio_config(TCC_GPF(27), GPIO_FN10|GPIO_OUTPUT|GPIO_LOW); tcc_gpio_config(TCC_GPF(28), GPIO_FN10|GPIO_OUTPUT|GPIO_LOW); #else //I2C[24] - GPIOG[10][11] //i2c_portcfg->PCFG0.bREG.MASTER1 = 24; BITCSET(((PI2CPORTCFG)io_p2v(HwI2C_PORTCFG_BASE))->PCFG0.nREG, 0x0000FF00, 24<<8); tcc_gpio_config(TCC_GPG(10), GPIO_FN4|GPIO_OUTPUT|GPIO_LOW); tcc_gpio_config(TCC_GPG(11), GPIO_FN4|GPIO_OUTPUT|GPIO_LOW); #endif } #else if(system_rev == 0x1005 || system_rev == 0x1007) { //I2C[21] - GPIOF[27][28] //i2c_portcfg->PCFG0.bREG.MASTER1 = 21; BITCSET(((PI2CPORTCFG)io_p2v(HwI2C_PORTCFG_BASE))->PCFG0.nREG, 0x0000FF00, 21<<8); tcc_gpio_config(TCC_GPF(27), GPIO_FN10|GPIO_OUTPUT|GPIO_LOW); tcc_gpio_config(TCC_GPF(28), GPIO_FN10|GPIO_OUTPUT|GPIO_LOW); } else if(system_rev == 0x1006) { //I2C[28] - GPIO_ADC[2][3] //((PI2CPORTCFG)HwI2C_PORTCFG_BASE)->PCFG0.bREG.MASTER1 = 28; BITCSET(((PI2CPORTCFG)io_p2v(HwI2C_PORTCFG_BASE))->PCFG0.nREG, 0x0000FF00, 28<<8); tcc_gpio_config(TCC_GPADC(2), GPIO_FN3|GPIO_OUTPUT|GPIO_LOW); tcc_gpio_config(TCC_GPADC(3), GPIO_FN3|GPIO_OUTPUT|GPIO_LOW); } else if(system_rev == 0x1008) { //I2C[13] - GPIOC[12][13] //((PI2CPORTCFG)HwI2C_PORTCFG_BASE)->PCFG0.bREG.MASTER1 = 13; BITCSET(((PI2CPORTCFG)io_p2v(HwI2C_PORTCFG_BASE))->PCFG0.nREG, 0x0000FF00, 13<<8); tcc_gpio_config(TCC_GPC(12), GPIO_FN7|GPIO_OUTPUT|GPIO_LOW); tcc_gpio_config(TCC_GPC(13), GPIO_FN7|GPIO_OUTPUT|GPIO_LOW); } else { #if defined(CONFIG_STB_BOARD_HDB892F) && defined(CONFIG_HDB892F_BOARD_YJ8925T) //I2C[16] - GPIOE[14][15] //i2c_portcfg->PCFG0.bREG.MASTER1 = 16; BITCSET(((PI2CPORTCFG)io_p2v(HwI2C_PORTCFG_BASE))->PCFG0.nREG, 0x0000FF00, 16<<8); tcc_gpio_config(TCC_GPE(14), GPIO_FN6|GPIO_OUTPUT|GPIO_LOW); tcc_gpio_config(TCC_GPE(15), GPIO_FN6|GPIO_OUTPUT|GPIO_LOW); #elif defined(CONFIG_STB_BOARD_UPC) #else //I2C[22] - GPIOG[2][3] //i2c_portcfg->PCFG0.bREG.MASTER1 = 22; BITCSET(((PI2CPORTCFG)io_p2v(HwI2C_PORTCFG_BASE))->PCFG0.nREG, 0x0000FF00, 22<<8); tcc_gpio_config(TCC_GPG(2), GPIO_FN4|GPIO_OUTPUT|GPIO_LOW); tcc_gpio_config(TCC_GPG(3), GPIO_FN4|GPIO_OUTPUT|GPIO_LOW); #endif } #endif break; case 2: #if defined(CONFIG_MACH_M805_892X) if (system_rev == 0x2002 || system_rev == 0x2003 || system_rev == 0x2004 || system_rev == 0x2005 || system_rev == 0x2006 || system_rev == 0x2007 || system_rev == 0x2008) { //I2C[18] - GPIOF[13][14] //i2c_portcfg->PCFG0.bREG.MASTER1 = 18; BITCSET(((PI2CPORTCFG)io_p2v(HwI2C_PORTCFG_BASE))->PCFG0.nREG, 0x00FF0000, 18<<16); tcc_gpio_config(TCC_GPF(13), GPIO_FN10|GPIO_OUTPUT|GPIO_LOW); tcc_gpio_config(TCC_GPF(14), GPIO_FN10|GPIO_OUTPUT|GPIO_LOW); } #else if(system_rev != 0x1006 && system_rev != 0x1008) { //I2C[28] - GPIO_ADC[2][3] //i2c_portcfg->PCFG0.bREG.MASTER2 = 28; BITCSET(((PI2CPORTCFG)io_p2v(HwI2C_PORTCFG_BASE))->PCFG0.nREG, 0x00FF0000, 28<<16); tcc_gpio_config(TCC_GPADC(2), GPIO_FN3|GPIO_OUTPUT|GPIO_LOW); tcc_gpio_config(TCC_GPADC(3), GPIO_FN3|GPIO_OUTPUT|GPIO_LOW); } #endif break; case 3: //I2C[27] - GPIO_HDMI[2][3] //i2c_portcfg->PCFG0.bREG.MASTER3 = 27; BITCSET(((PI2CPORTCFG)io_p2v(HwI2C_PORTCFG_BASE))->PCFG0.nREG, 0xFF000000, 27<<24); tcc_gpio_config(TCC_GPHDMI(2), GPIO_FN1|GPIO_OUTPUT|GPIO_LOW); tcc_gpio_config(TCC_GPHDMI(3), GPIO_FN1|GPIO_OUTPUT|GPIO_LOW); //Not used.. break; default: break; } }