static void tcc_dxb_ctrl_power_off(int deviceIdx) { #ifdef CONFIG_STB_BOARD_HDB892F gpio_set_value(TCC_GPG(18), 0); #else if(machine_is_tcc8920st()) { if(guiBoardType == BOARD_DXB_TCC3510 || guiBoardType == BOARD_TDMB_TCC3161 || guiBoardType == BOARD_ISDBT_TCC353X) { switch(deviceIdx) { case 0: tcc_gpio_config(GPIO_DXB_ON, GPIO_FN(0)); tcc_gpio_config(GPIO_DXB0_PD, GPIO_FN(0)); gpio_request(GPIO_DXB0_PD, NULL); gpio_direction_output(GPIO_DXB0_PD, 0); //TCC3511_PD Set Output Mode gpio_request(GPIO_DXB_ON, NULL); gpio_direction_output(GPIO_DXB_ON, 0); //GPIO_DXB_ON Set Output Mode break; case 1: break; default: break; } } else if(guiBoardType == BOARD_DVBT_DIB9090) { } else if(guiBoardType == BOARD_TDMB_TCC3150) { switch(deviceIdx) { case 0: break; default: break; } } else if(guiBoardType == BOARD_ISDBT_TOSHIBA) { switch (deviceIdx) { case 0: tcc_gpio_config(GPIO_DXB_ON, GPIO_FN(0)); tcc_gpio_config(GPIO_DXB0_PD, GPIO_FN(0)); tcc_gpio_config(GPIO_DXB0_RST, GPIO_FN(0)); gpio_direction_output(GPIO_DXB0_PD, 0); gpio_direction_output(GPIO_DXB0_RST, 0); gpio_direction_output(GPIO_DXB_ON, 0); break; default: break; } } } #endif }
static int __init tcc8920_init_tcc_dxb_ctrl(void) { if(!machine_is_tcc8920st() || machine_is_m801_88()) return 0; printk("%s (built %s %s)\n", __func__, __DATE__, __TIME__); platform_device_register(&tcc_dxb_device); return 0; }
static void tcc_dxb_ctrl_power_reset(int deviceIdx) { #ifdef CONFIG_STB_BOARD_HDB892F #else if(machine_is_tcc8920st()) { if(guiBoardType == BOARD_DXB_TCC3510 || guiBoardType == BOARD_TDMB_TCC3161 || guiBoardType == BOARD_ISDBT_TCC353X) { switch(deviceIdx) { case 0: tcc_gpio_config(GPIO_DXB0_RST, GPIO_FN(0)); gpio_request(GPIO_DXB0_RST, NULL); gpio_direction_output(GPIO_DXB0_RST, 0); msleep (20); gpio_set_value(GPIO_DXB0_RST, 1); break; case 1: break; default: break; } } else if(guiBoardType == BOARD_DVBT_DIB9090) { } else if(guiBoardType == BOARD_TDMB_TCC3150) { switch(deviceIdx) { case 0: break; default: break; } } else if (guiBoardType == BOARD_ISDBT_TOSHIBA) { switch (deviceIdx) { case 0: tcc_gpio_config(GPIO_DXB0_RST, GPIO_FN(0)); gpio_direction_output(GPIO_DXB0_RST, 0); msleep (20); gpio_set_value(GPIO_DXB0_RST, 1); break; default: break; } } } #endif }
static int __init tcc8920_init_mmc(void) { if (!machine_is_tcc8920st()) return 0; printk("%s\n",__func__); tcc_init_sdhc_devices(); printk("%s(%d)\n",__func__, tccUsedSDportNum); #if defined(CONFIG_MMC_TCC_SDHC0) if (tccUsedSDportNum > 0) { tcc_sdhc0_device.dev.platform_data = &tcc8920_mmc_platform_data[0]; platform_device_register(&tcc_sdhc0_device); } #endif #if defined(CONFIG_MMC_TCC_SDHC1) if (tccUsedSDportNum > 1) { tcc_sdhc1_device.dev.platform_data = &tcc8920_mmc_platform_data[1]; platform_device_register(&tcc_sdhc1_device); } #endif #if defined(CONFIG_MMC_TCC_SDHC2) if (tccUsedSDportNum > 2) { tcc_sdhc2_device.dev.platform_data = &tcc8920_mmc_platform_data[2]; platform_device_register(&tcc_sdhc2_device); } #endif #if defined(CONFIG_MMC_TCC_SDHC3) if (tccUsedSDportNum > 3) { tcc_sdhc3_device.dev.platform_data = &tcc8920_mmc_platform_data[3]; platform_device_register(&tcc_sdhc3_device); } #endif return 0; }
/***************************************************************************** Function Name : tcc_composite_update() ******************************************************************************/ void tcc_composite_update(struct tcc_lcdc_image_update *ImageInfo) { VIOC_DISP * pDISPBase; VIOC_WMIX * pWMIXBase; VIOC_RDMA * pRDMABase; unsigned int lcd_width = 0, lcd_height = 0, lcd_h_pos = 0, lcd_w_pos = 0, scale_x = 0, scale_y = 0; VIOC_SC *pSC; pSC = (VIOC_SC *)tcc_p2v(HwVIOC_SC1); dprintk("%s enable:%d, layer:%d, fmt:%d, Fw:%d, Fh:%d, Iw:%d, Ih:%d, fmt:%d onthefly:%d\n", __func__, ImageInfo->enable, ImageInfo->Lcdc_layer, ImageInfo->fmt,ImageInfo->Frame_width, ImageInfo->Frame_height, ImageInfo->Image_width, ImageInfo->Image_height, ImageInfo->fmt, ImageInfo->on_the_fly); if((ImageInfo->Lcdc_layer >= 3) || (ImageInfo->fmt >TCC_LCDC_IMG_FMT_MAX)) return; if(Composite_LCDC_Num) { pDISPBase = (VIOC_DISP*)tcc_p2v(HwVIOC_DISP1); pWMIXBase = (VIOC_WMIX*)tcc_p2v(HwVIOC_WMIX1); switch(ImageInfo->Lcdc_layer) { case 0: pRDMABase = (VIOC_RDMA*)tcc_p2v(HwVIOC_RDMA04); break; case 1: pRDMABase = (VIOC_RDMA*)tcc_p2v(HwVIOC_RDMA05); break; case 2: pRDMABase = (VIOC_RDMA*)tcc_p2v(HwVIOC_RDMA06); break; } } else { pDISPBase = (VIOC_DISP*)tcc_p2v(HwVIOC_DISP0); pWMIXBase = (VIOC_WMIX*)tcc_p2v(HwVIOC_WMIX0); switch(ImageInfo->Lcdc_layer) { case 0: pRDMABase = (VIOC_RDMA*)tcc_p2v(HwVIOC_RDMA00); break; case 1: pRDMABase = (VIOC_RDMA*)tcc_p2v(HwVIOC_RDMA01); break; case 2: pRDMABase = (VIOC_RDMA*)tcc_p2v(HwVIOC_RDMA02); break; } } VIOC_DISP_GetSize(pDISPBase, &lcd_width, &lcd_height); if((!lcd_width) || (!lcd_height)) return; if(!ImageInfo->enable) { VIOC_RDMA_SetImageDisable(pRDMABase); if(ISSET(onthefly_using, 1<<ImageInfo->Lcdc_layer)) { VIOC_CONFIG_PlugOut(VIOC_SC1); BITCLR(onthefly_using, 1 << ImageInfo->Lcdc_layer); } return; } if(ImageInfo->on_the_fly) { unsigned int RDMA_NUM; RDMA_NUM = Composite_LCDC_Num ? (ImageInfo->Lcdc_layer + VIOC_SC_RDMA_04) : ImageInfo->Lcdc_layer; #if defined(CONFIG_MACH_TCC8920ST) if(!onthefly_using) { dprintk(" %s scaler 1 is plug in RDMA %d \n",__func__, RDMA_NUM); BITSET(onthefly_using, 1 << ImageInfo->Lcdc_layer); VIOC_CONFIG_PlugIn (VIOC_SC1, RDMA_NUM); } if(ImageInfo->Frame_width==ImageInfo->Image_width || ImageInfo->Frame_height==ImageInfo->Image_height) { VIOC_SC_SetBypass (pSC, ON); dprintk(" %s scaler 1 is plug in SetBypass ON \n",__func__); }else { VIOC_SC_SetBypass (pSC, OFF); dprintk(" %s scaler 1 is plug in SetBypass OFF \n",__func__); } #else if(!onthefly_using) { dprintk(" %s scaler 1 is plug in RDMA %d \n",__func__, RDMA_NUM); BITSET(onthefly_using, 1 << ImageInfo->Lcdc_layer); VIOC_CONFIG_PlugIn (VIOC_SC1, RDMA_NUM); VIOC_SC_SetBypass (pSC, OFF); } #endif VIOC_SC_SetSrcSize(pSC, ImageInfo->Frame_width, ImageInfo->Frame_height); VIOC_SC_SetDstSize (pSC, ImageInfo->Image_width, ImageInfo->Image_height); // set destination size in scaler VIOC_SC_SetOutSize (pSC, ImageInfo->Image_width, ImageInfo->Image_height); // set output size in scaer } else { if(ISSET(onthefly_using, 1<<ImageInfo->Lcdc_layer)) { dprintk(" %s scaler 1 is plug \n",__func__); VIOC_RDMA_SetImageDisable(pRDMABase); VIOC_CONFIG_PlugOut(VIOC_SC1); BITCLR(onthefly_using, 1 << ImageInfo->Lcdc_layer); } } dprintk("%s lcdc:%d, pRDMA:0x%08x, pWMIX:0x%08x, pDISP:0x%08x, addr0:0x%08x\n", __func__, Composite_LCDC_Num, pRDMABase, pWMIXBase, pDISPBase, ImageInfo->addr0); if(machine_is_tcc8920st()) { VIOC_RDMA_SetImageUVIEnable(pRDMABase, TRUE); } if(ImageInfo->fmt >= TCC_LCDC_IMG_FMT_UYVY && ImageInfo->fmt <= TCC_LCDC_IMG_FMT_YUV422ITL1) { VIOC_RDMA_SetImageY2REnable(pRDMABase, TRUE); VIOC_RDMA_SetImageY2RMode(pRDMABase, 0); /* Y2RMode Default 0 (Studio Color) */ } VIOC_RDMA_SetImageOffset(pRDMABase, ImageInfo->fmt, ImageInfo->Frame_width); VIOC_RDMA_SetImageFormat(pRDMABase, ImageInfo->fmt); scale_x = 0; scale_y = 0; lcd_h_pos = 0; lcd_w_pos = 0; if(lcd_width > ImageInfo->Image_width) lcd_w_pos = (lcd_width - ImageInfo->Image_width)/2; if(lcd_height > ImageInfo->Image_height) lcd_h_pos = (lcd_height - ImageInfo->Image_height)/2; dprintk("%s lcd_width:%d, lcd_height:%d, lcd_w_pos:%d, lcd_h_pos:%d\n\n", __func__, lcd_width, lcd_height, lcd_w_pos, lcd_h_pos); // position //pLCDC_channel->LIP = ((lcd_h_pos << 16) | (lcd_w_pos)); VIOC_WMIX_SetPosition(pWMIXBase, ImageInfo->Lcdc_layer, lcd_w_pos, lcd_h_pos); // scale //pLCDC_channel->LISR =((scale_y<<4) | scale_x); VIOC_RDMA_SetImageScale(pRDMABase, scale_x, scale_y); if( !( ((ImageInfo->crop_left == 0) && (ImageInfo->crop_right == ImageInfo->Frame_width)) && ((ImageInfo->crop_top == 0) && (ImageInfo->crop_bottom == ImageInfo->Frame_height))) ) { dprintk(" Image Crop left=[%d], right=[%d], top=[%d], bottom=[%d] \n", ImageInfo->crop_left, ImageInfo->crop_right, ImageInfo->crop_top, ImageInfo->crop_bottom); int addr_Y = (unsigned int)ImageInfo->addr0; int addr_U = (unsigned int)ImageInfo->addr1; int addr_V = (unsigned int)ImageInfo->addr2; tccxxx_GetAddress(ImageInfo->fmt, (unsigned int)ImageInfo->addr0, ImageInfo->Frame_width, ImageInfo->Frame_height, ImageInfo->crop_left, ImageInfo->crop_top, &addr_Y, &addr_U, &addr_V); VIOC_RDMA_SetImageSize(pRDMABase, ImageInfo->crop_right - ImageInfo->crop_left, ImageInfo->crop_bottom - ImageInfo->crop_top); VIOC_RDMA_SetImageBase(pRDMABase, addr_Y, addr_U, addr_V); } else { dprintk(" don't Image Crop left=[%d], right=[%d], top=[%d], bottom=[%d] \n", ImageInfo->crop_left, ImageInfo->crop_right, ImageInfo->crop_top, ImageInfo->crop_bottom); VIOC_RDMA_SetImageSize(pRDMABase, ImageInfo->Frame_width, ImageInfo->Frame_height); VIOC_RDMA_SetImageBase(pRDMABase, ImageInfo->addr0, ImageInfo->addr1, ImageInfo->addr2); } // position //if(ISZERO(pLCDC->LCTRL, HwLCTRL_NI)) //-- #if 0//defined(CONFIG_TCC_VIDEO_DISPLAY_BY_VSYNC_INT) || defined(TCC_VIDEO_DISPLAY_BY_VSYNC_INT) if(ImageInfo->deinterlace_mode == 1 && ImageInfo->output_toMemory == 0) { VIOC_RDMA_SetImageY2REnable(pRDMABase, FALSE); VIOC_RDMA_SetImageY2RMode(pRDMABase, 0x02); /* Y2RMode Default 0 (Studio Color) */ VIOC_RDMA_SetImageIntl(pRDMABase, 1); VIOC_RDMA_SetImageBfield(pRDMABase, ImageInfo->odd_first_flag); VIOC_WMIX_SetPosition(pWMIXBase, ImageInfo->Lcdc_layer, ImageInfo->offset_x, (ImageInfo->offset_y/2) ); } else #endif { VIOC_RDMA_SetImageIntl(pRDMABase, 0); VIOC_WMIX_SetPosition(pWMIXBase, ImageInfo->Lcdc_layer, ImageInfo->offset_x, ImageInfo->offset_y); } VIOC_RDMA_SetImageEnable(pRDMABase); if(onthefly_using) VIOC_SC_SetUpdate (pSC); VIOC_WMIX_SetUpdate(pWMIXBase); }
static int __init tcc_init_wm8524(void) { volatile PGPIO pGpio = (volatile PGPIO)tcc_p2v(HwGPIO_BASE); int ret; if( !(machine_is_tcc8800st() || machine_is_tcc9300st() || machine_is_tcc8920st()) ) { alsa_dbg("\n\n\n\n%s() do not execution....\n\n", __func__); return 0; } alsa_dbg("TCC Board probe [%s]\n", __FUNCTION__); #if defined(CONFIG_ARCH_TCC93XX) if(machine_is_tcc9300st()) { gpio_request(TCC_GPF(4), "AIF_MODE"); gpio_request(TCC_GPF(3), "MUTE_ANG"); gpio_request(TCC_GPF(2), "MUTE_CTL"); BITCLR(pGpio->GPFFN0, Hw20-Hw8); /* GPIOF[4:2]: AIFMode, MUTE_ANG, MUTE_CTL */ gpio_direction_output(TCC_GPF(4), 1); /* AIFMode: 0(24-bit LJ), 1(24bit I2S), Z(24bit RJ) */ gpio_direction_output(TCC_GPF(3), 0); /* MUT_ANG: h/w mute */ gpio_direction_output(TCC_GPF(2), 0); /* MUTE_CTL of WM8524 */ tcc_soc_card.name = "tcc9300st"; } #elif defined(CONFIG_ARCH_TCC88XX) if(machine_is_tcc8800st()) { gpio_request(TCC_GPD(20), "AIF_MODE"); gpio_request(TCC_GPD(19), "MUTE_ANG"); gpio_request(TCC_GPD(18), "MUTE_CTL"); BITCLR(pGpio->GPDFN2, Hw20-Hw8); /* GPIOD[20:18]: AIFMode, MUTE_ANG, MUTE_CTL */ gpio_direction_output(TCC_GPD(20), 1); /* AIFMode: 0(24-bit LJ), 1(24bit I2S), Z(24bit RJ) */ gpio_direction_output(TCC_GPD(19), 0); /* MUT_ANG: h/w mute */ gpio_direction_output(TCC_GPD(18), 0); /* MUTE_CTL of WM8524 */ tcc_soc_card.name = "tcc8800st"; } #elif defined(CONFIG_ARCH_TCC892X) if(machine_is_tcc8920st()) { gpio_request(TCC_GPF(24), "AIF_MODE"); gpio_request(TCC_GPB(7), "MUTE_ANG"); gpio_request(TCC_GPB(6), "MUTE_CTL"); //BITCLR(pGpio->GPFFN0, Hw20-Hw8); /* GPIOF[4:2]: AIFMode, MUTE_ANG, MUTE_CTL */ gpio_direction_output(TCC_GPF(24), 1); /* AIFMode: 0(24-bit LJ), 1(24bit I2S), Z(24bit RJ) */ gpio_direction_output(TCC_GPB(7), 0); /* MUT_ANG: h/w mute */ gpio_direction_output(TCC_GPB(6), 0); /* MUTE_CTL of WM8524 */ tcc_soc_card.name = "tcc8920st"; } #endif tca_tcc_initport(); tcc_snd_device = platform_device_alloc("soc-audio", -1); if (!tcc_snd_device) return -ENOMEM; platform_set_drvdata(tcc_snd_device, &tcc_soc_card); ret = platform_device_add(tcc_snd_device); if (ret) { printk(KERN_ERR "Unable to add platform device\n");\ platform_device_put(tcc_snd_device); } return ret; }
int __init tcc8920_init_panel(void) { int ret; if (!machine_is_tcc8920st()) return 0; printk("supported LCD panel type %d\n", tcc_panel_id); #if 0 switch (tcc_panel_id) { #ifdef CONFIG_LCD_LMS350DF01 case PANEL_ID_LMS350DF01: platform_device_register(&lms350df01_lcd); break; #endif #ifdef CONFIG_LCD_LMS480KF01 case PANEL_ID_LMS480KF01: platform_device_register(&lms480kf01_lcd); break; #endif #ifdef CONFIG_LCD_DX08D11VM0AAA case PANEL_ID_DX08D11VM0AAA: platform_device_register(&dx08d11vm0aaa_lcd); break; #endif #ifdef CONFIG_LCD_LB070WV6 case PANEL_ID_LB070WV6: platform_device_register(&lb070wv6_lcd); break; #endif #ifdef CONFIG_LCD_CLAA104XA01CW case PANEL_ID_CLAA104XA01CW: platform_device_register(&claa104xa01cw_lcd); break; #endif #ifdef CONFIG_LCD_HT121WX2 case PANEL_ID_HT121WX2: platform_device_register(&ht121wx2_lcd); break; #endif #ifdef CONFIG_LCD_TD043MGEB1 case PANEL_ID_TD043MGEB1: platform_device_register(&td043mgeb1_lcd); break; #endif #ifdef CONFIG_LCD_AT070TN93 case PANEL_ID_AT070TN93: platform_device_register(&at070tn93_lcd); break; #endif #ifdef CONFIG_LCD_HDMI1280X720 case PANEL_ID_HDMI: platform_device_register(&hdmi1280x720_lcd); break; #endif #ifdef CONFIG_LCD_TD070RDH case PANEL_ID_TD070RDH11: platform_device_register(&tm070rdh113_lcd); break; #endif// #ifdef CONFIG_LCD_N101L6 case PANEL_ID_N101L6: platform_device_register(&n101l6_lcd); break; #endif// #ifdef CONFIG_LCD_CLAA102NA0DCW case PANEL_ID_CLAA102NA0DCW: platform_device_register(&claa102na0dcw_lcd); break; #endif// default: pr_err("Not supported LCD panel type %d\n", tcc_panel_id); return -EINVAL; } #else platform_device_register(&hdmi1280x720_lcd); #endif ret = platform_device_register(&tcc_lcd_device); if (ret) return ret; #if !defined(CONFIG_MACH_TCC8920ST) platform_device_register(&tcc8920_backlight); ret = platform_driver_register(&tcc8920_backlight_driver); if (ret) return ret; #endif return 0; }
static void tcc_dxb_init(void) { if(machine_is_tcc8920st()) { /*PULL_UP is disabled to save current.*/ //TCC_GPE(2) tcc_gpio_config(GPIO_DXB0_SFRM, GPIO_FN(0)|GPIO_PULL_DISABLE); gpio_request(GPIO_DXB0_SFRM, NULL); gpio_direction_output(GPIO_DXB0_SFRM, 0); //TCC_GPE(3) tcc_gpio_config(GPIO_DXB0_SCLK, GPIO_FN(0)|GPIO_PULL_DISABLE); gpio_request(GPIO_DXB0_SCLK, NULL); gpio_direction_output(GPIO_DXB0_SCLK, 0); //TCC_GPE(4) tcc_gpio_config(GPIO_DXB0_RST, GPIO_FN(0)|GPIO_PULL_DISABLE); gpio_request(GPIO_DXB0_RST, NULL); gpio_direction_output(GPIO_DXB0_RST, 0); //TCC_GPE(5) tcc_gpio_config(INT_DXB0_IRQ, GPIO_FN(0)|GPIO_PULL_DISABLE); gpio_request(INT_DXB0_IRQ, NULL); gpio_direction_output(INT_DXB0_IRQ, 0); //TCC_GPE(6) tcc_gpio_config(GPIO_DXB0_SDI, GPIO_FN(0)|GPIO_PULL_DISABLE); gpio_request(GPIO_DXB0_SDI, NULL); gpio_direction_output(GPIO_DXB0_SDI, 0); //TCC_GPE(7) tcc_gpio_config(GPIO_DXB0_SDO, GPIO_FN(0)|GPIO_PULL_DISABLE); gpio_request(GPIO_DXB0_SDO, NULL); gpio_direction_output(GPIO_DXB0_SDO, 0); //TCC_GPD(5) tcc_gpio_config(GPIO_DXB1_SFRM, GPIO_FN(0)|GPIO_PULL_DISABLE); gpio_request(GPIO_DXB1_SFRM, NULL); gpio_direction_output(GPIO_DXB1_SFRM, 0); //TCC_GPD(6) tcc_gpio_config(GPIO_DXB1_SCLK, GPIO_FN(0)|GPIO_PULL_DISABLE); gpio_request(GPIO_DXB1_SCLK, NULL); gpio_direction_output(GPIO_DXB1_SCLK, 0); //TCC_GPD(7) tcc_gpio_config(GPIO_DXB1_SDI, GPIO_FN(0)|GPIO_PULL_DISABLE); gpio_request(GPIO_DXB1_SDI, NULL); gpio_direction_output(GPIO_DXB1_SDI, 0); //TCC_GPD(8) tcc_gpio_config(GPIO_DXB1_SDO, GPIO_FN(0)|GPIO_PULL_DISABLE); gpio_request(GPIO_DXB1_SDO, NULL); gpio_direction_output(GPIO_DXB1_SDO, 0); //TCC_GPD(9) tcc_gpio_config(GPIO_DXB1_RST, GPIO_FN(0)|GPIO_PULL_DISABLE); gpio_request(GPIO_DXB1_RST, NULL); gpio_direction_output(GPIO_DXB1_RST, 0); //TCC_GPD(10) tcc_gpio_config(INT_DXB1_IRQ, GPIO_FN(0)|GPIO_PULL_DISABLE); gpio_request(INT_DXB1_IRQ, NULL); gpio_direction_output(INT_DXB1_IRQ, 0); #if 0 //smart Card Interface for CAS tcc_gpio_config(TCC_GPD(13), GPIO_FN(0)|GPIO_PULL_DISABLE); gpio_request(TCC_GPD(13), NULL); gpio_direction_output(TCC_GPD(13), 0); //smart Card Interface for CAS tcc_gpio_config(TCC_GPD(14), GPIO_FN(0)|GPIO_PULL_DISABLE);// gpio_request(TCC_GPD(14), NULL); gpio_direction_output(TCC_GPD(14), 0); #endif /* 0 */ ////////////////////////////////////////////////////////////////////////////////////////////////////// tcc_gpio_config(GPIO_DXB0_PD, GPIO_FN(0)|GPIO_PULL_DISABLE); gpio_request(GPIO_DXB0_PD, NULL); gpio_direction_output(GPIO_DXB0_PD, 0); tcc_gpio_config(GPIO_DXB_ON, GPIO_FN(0)|GPIO_PULL_DISABLE); gpio_request(GPIO_DXB_ON, NULL); gpio_direction_output(GPIO_DXB_ON, 0); #if 0 tcc_gpio_config(GPIO_DXB_UARTTX, GPIO_FN(0)|GPIO_PULL_DISABLE); gpio_request(GPIO_DXB_UARTTX, NULL); gpio_direction_output(GPIO_DXB_UARTTX, 0); //TCC_GPE(5) tcc_gpio_config(GPIO_DXB_UARTRX, GPIO_FN(0)|GPIO_PULL_DISABLE); gpio_request(GPIO_DXB_UARTRX, NULL); gpio_direction_output(GPIO_DXB_UARTRX, 0); #endif } }
static void tcc_dxb_ctrl_power_on(int deviceIdx) { #ifdef CONFIG_STB_BOARD_HDB892F tcc_gpio_config(TCC_GPG(18), GPIO_FN(0)|GPIO_PULL_DISABLE); //ANT_PWR_CTRL gpio_request(TCC_GPG(18), NULL); gpio_direction_output(TCC_GPG(18), 0); tcc_gpio_config(TCC_GPG(19), GPIO_FN(0)|GPIO_PULL_DISABLE); //ANT_OVERLOAD gpio_request(TCC_GPG(19), NULL); gpio_direction_input(TCC_GPG(19)); if(gpio_get_value(TCC_GPG(19)) == 0) gpio_set_value(TCC_GPG(18), 1); #else if(machine_is_tcc8920st()) { if(guiBoardType == BOARD_ISDBT_TOSHIBA) { switch (deviceIdx) { case 0: tcc_gpio_config(GPIO_DXB_ON, GPIO_FN(0)); tcc_gpio_config(GPIO_DXB0_PD, GPIO_FN(0)); tcc_gpio_config(GPIO_DXB0_RST, GPIO_FN(0)); gpio_direction_output(GPIO_DXB_ON, 1); gpio_direction_output(GPIO_DXB0_PD, 0); gpio_direction_output(GPIO_DXB0_RST, 0); msleep(20); gpio_set_value(GPIO_DXB0_RST,1); break; default: break; } } else if(guiBoardType == BOARD_DXB_TCC3510 || guiBoardType == BOARD_TDMB_TCC3161 || guiBoardType == BOARD_ISDBT_TCC353X) { switch(deviceIdx) { case 0: tcc_gpio_config(GPIO_DXB_ON, GPIO_FN(0)); gpio_request(GPIO_DXB_ON, NULL); gpio_direction_output(GPIO_DXB_ON, 1); tcc_gpio_config(GPIO_DXB0_PD, GPIO_FN(0)); gpio_request(GPIO_DXB0_PD, NULL); gpio_direction_output(GPIO_DXB0_PD, 1); /* Reset# */ tcc_gpio_config(GPIO_DXB0_RST, GPIO_FN(0)); gpio_request(GPIO_DXB0_RST, NULL); gpio_direction_output(GPIO_DXB0_RST, 0); msleep (20); gpio_set_value(GPIO_DXB0_RST, 1); break; case 1: break; default: break; } } else if(guiBoardType == BOARD_DVBT_DIB9090) { } else if(guiBoardType == BOARD_TDMB_TCC3150) { switch(deviceIdx) { case 0: break; default: break; } } } #endif }
/***************************************************************************** * Function Name : static unsigned int tca_rem_readcode(char ch); * Description : Decode readCode. * Arguments : ch - readcode, return value - key type(new or repeat) ******************************************************************************/ static unsigned int tca_rem_readcode(char ch) { switch (Rem.Stat) { /* Initialize */ case STATUS0: Rem.BitCnt = Rem.Buf = 0; Rem.Stat = STATUS1; if(machine_is_tcc9300() || machine_is_tcc9300st() || machine_is_tcc9300cm() || machine_is_tcc8800() || machine_is_tcc8800st() || machine_is_tcc8920() || machine_is_tcc8920st()) { if (ch == 'S') { Rem.Stat = STATUS2; } else if (ch == 'R') { //tcnt=12.5ms return REPEAT_KEY; } } break; /*Start Bit */ case STATUS1: if (ch == 'S') //tcnt = 15ms { //it appears to be HW bug that the 1st repeat pule is always //recognized wrongly as start bit if (startbit_time != prev_startbit_time) { prev_startbit_time = startbit_time; Rem.Code = 0; //reset the memorized code if we get a start bit } Rem.Stat = STATUS2; } //Repeat else if (ch == 'R') { dbg("R: %llx\n", Rem.Code); //tcnt=12.5ms return REPEAT_KEY; } break; /* Data Code Check */ case STATUS2: if (ch == '0') //Bit '0' = 3.5ms { Rem.BitCnt++; } else if (ch == '1') //Bit '1' = 5.5ms { Rem.Buf |= (((unsigned long long)1) << Rem.BitCnt); Rem.BitCnt++; } else if (ch == 'S') //If Receive Start Bit, Return 0; { return 0; } else { Rem.Stat =STATUS0; } if(Rem.BitCnt == IR_SIGNAL_MAXIMUN_BIT_COUNT) { dbg("############### BUF=%llx\n", Rem.Buf); Rem.Id = (Rem.Buf & IR_ID_MASK); dbg("############### ID=%x\n", Rem.Id); if (Rem.Buf == REMOCON_REPEAT) { Rem.Stat = STATUS0; return REPEAT_START; } else if (Rem.Id == REMOCON_ID) { Rem.Code = (Rem.Buf & IR_CODE_MASK) >> IR_BUFFER_BIT_SHIFT; dbg("############### CODE=%llx\n", Rem.Code); Rem.Stat = STATUS0; return NEW_KEY; } else {