Exemple #1
0
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	
}
Exemple #2
0
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;
}
Exemple #3
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;
}
Exemple #8
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
	}
}
Exemple #9
0
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
			{