int m803_mmc_init(struct device *dev, int id) { BUG_ON(id > TCC_MMC_TYPE_MAX); tcc_gpio_config(mmc_ports[id].data0, GPIO_FN(2) | GPIO_CD(0)); tcc_gpio_config(mmc_ports[id].data1, GPIO_FN(2) | GPIO_CD(0)); tcc_gpio_config(mmc_ports[id].data2, GPIO_FN(2) | GPIO_CD(0)); tcc_gpio_config(mmc_ports[id].data3, GPIO_FN(2) | GPIO_CD(0)); tcc_gpio_config(mmc_ports[id].cmd, GPIO_FN(2)); tcc_gpio_config(mmc_ports[id].clk, GPIO_FN(2) | GPIO_CD(3)); if(id == TCC_MMC_TYPE_WIFI) { gpio_request(TCC_GPG(11),"wifi_rst"); gpio_request(TCC_GPG(10),"wifi_on"); gpio_direction_output(TCC_GPG(11), 0); msleep(10); gpio_direction_output(TCC_GPG(11), 1); } if(id == TCC_MMC_TYPE_SD){ tcc_gpio_config(mmc_ports[id].cd, GPIO_FN(0)); gpio_request(mmc_ports[id].cd, "sd_cd"); gpio_direction_input(mmc_ports[id].cd); } return 0; }
// ************************************************************ // // Device Release : // // // ************************************************************ // static int gps_gpio_release (struct inode *inode, struct file *filp) { gps_k_flag = 0; #if defined(CONFIG_MACH_TCC9300)||defined(CONFIG_MACH_TCC8800) || defined(CONFIG_MACH_TCC8920) if(machine_is_m801_88() || machine_is_m803()) // GPIOG[4] { gpio_set_value(TCC_GPG(4), 0); } else if(machine_is_tcc8800() || machine_is_tcc8920()) { gpio_set_value(TCC_GPEXT1(6), 0); } #elif defined(CONFIG_MACH_TCC8900) if(machine_is_tcc8900()) { gpio_set_value(TCC_GPD(25), 0); } #elif defined(CONFIG_MACH_M805_892X) if(machine_is_m805_892x()) { if (system_rev == 0x2002 || system_rev == 0x2003 || system_rev == 0x2004 || system_rev == 0x2005) gpio_set_value(TCC_GPC(14), 0); else gpio_set_value(TCC_GPC(6), 0); } #endif gps_dbg("tcc92xx : gps_gpio_close\n"); return 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 }
int m803_mmc_resume(struct device *dev, int id) { if (id == TCC_MMC_TYPE_WIFI) { gpio_direction_output(TCC_GPG(10),1); } return 0; }
static int tcc8800st_mmc_init(struct device *dev, int id) { BUG_ON(id >= TCC_MMC_TYPE_MAX); gpio_request(mmc_ports[id].pwr, "sd_power"); if(id == TCC_MMC_TYPE_SD) { gpio_request(mmc_ports[id].data0, "sd_d0"); gpio_request(mmc_ports[id].data1, "sd_d1"); gpio_request(mmc_ports[id].data2, "sd_d2"); gpio_request(mmc_ports[id].data3, "sd_d3"); gpio_request(mmc_ports[id].cmd, "sd_cmd"); gpio_request(mmc_ports[id].clk, "sd_clk"); } #if defined(CONFIG_WIFI_SUB_BOARD) if(id == TCC_MMC_TYPE_WIFI) { gpio_request(GPIO_SD1_ON, "wifi_pre_power"); gpio_direction_output(GPIO_SD1_ON, 1); gpio_request(TCC_GPG(11),"wifi_rst"); gpio_direction_output(TCC_GPG(11), 0); msleep(100); gpio_direction_output(TCC_GPG(11), 1); } #endif tcc_gpio_config(mmc_ports[id].data0, GPIO_FN(2) | GPIO_CD(1)); tcc_gpio_config(mmc_ports[id].data1, GPIO_FN(2) | GPIO_CD(1)); tcc_gpio_config(mmc_ports[id].data2, GPIO_FN(2) | GPIO_CD(1)); tcc_gpio_config(mmc_ports[id].data3, GPIO_FN(2) | GPIO_CD(1)); tcc_gpio_config(mmc_ports[id].cmd, GPIO_FN(2) | GPIO_CD(1)); tcc_gpio_config(mmc_ports[id].clk, GPIO_FN(2) | GPIO_CD(3)); tcc_gpio_config(mmc_ports[id].cd, GPIO_FN(0)); gpio_request(mmc_ports[id].cd, "sd_cd"); gpio_direction_input(mmc_ports[id].cd); return 0; }
/***************************************************************************** * Function Name : static void Init_IR_Port(void); * Description : IR port register init * Arguments : ******************************************************************************/ static void Init_IR_Port(void) { #if defined(CONFIG_ARCH_TCC892X) tcc_gpio_config(TCC_GPG(17), GPIO_FN7|GPIO_OUTPUT|GPIO_LOW); #else PGPIO pGpioA = (volatile PGPIO)tcc_p2v(HwGPIOA_BASE); BITCSET(pGpioA->GPAFN0, (Hw20 | Hw21 | Hw22 | Hw23), Hw20); //GPIO_A5 #endif }
static int gpio_event_resume(struct platform_device *pdev) { #if 0 //Often does not wakeup in user mode. so, has commented. - 120303, hjbae int is_wakeup_by_powerkey = 0; PPMU pPMU = (PPMU)tcc_p2v(HwPMU_BASE); #if defined(CONFIG_REGULATOR_AXP192_PEK) || defined(CONFIG_REGULATOR_AXP202_PEK) return 0; #endif // WKUP from PowerKey & PowerKey is not pressed. #if defined(CONFIG_MACH_M805_892X) if (system_rev == 0x2002 || system_rev == 0x2003 || system_rev == 0x2004 || system_rev == 0x2005) { if((pPMU->PMU_WKSTS1.bREG.GPIO_E15)&&(gpio_get_value(TCC_GPE(15)))) is_wakeup_by_powerkey = 1; } else { if((pPMU->PMU_WKSTS0.bREG.GPIO_D09)&&(gpio_get_value(TCC_GPD(9)))) is_wakeup_by_powerkey = 1; } #elif defined(CONFIG_MACH_TCC8920ST) if((pPMU->PMU_WKSTS0.bREG.GPIO_D14)&&(gpio_get_value(TCC_GPD(14)))) is_wakeup_by_powerkey = 1; #elif defined(CONFIG_ARCH_TCC892X) if(system_rev == 0x1005 || system_rev == 0x1007 || system_rev == 0x1008) { if((pPMU->PMU_WKSTS1.bREG.GPIO_E30)&&(gpio_get_value(TCC_GPE(30)))) is_wakeup_by_powerkey = 1; } else if(system_rev == 0x1006) { if((pPMU->PMU_WKSTS1.bREG.GPIO_E24)&&(gpio_get_value(TCC_GPE(24)))) is_wakeup_by_powerkey = 1; } else { if((pPMU->PMU_WKSTS0.bREG.GPIO_G16)&&(gpio_get_value(TCC_GPG(16)))) is_wakeup_by_powerkey = 1; } #endif if (is_wakeup_by_powerkey == 1) { cancel_delayed_work(&work); if (event_dev) input_report_key(event_dev, KEY_POWER, 1); //KEY_END queue_delayed_work(event_wq, &work, msecs_to_jiffies(100)); printk("[Wakeup by Short PowerKey!!!]\n"); } #endif return 0; }
static void spk_un_mute(void) { #if defined(CONFIG_ARCH_TCC88XX) if(machine_is_m801_88()) gpio_set_value(TCC_GPG(6), 1); #elif defined(CONFIG_ARCH_TCC892X) if(machine_is_m805_892x()) { if(system_rev == 0x2002 || system_rev == 0x2003 || system_rev == 0x2004 || system_rev == 0x2005) { gpio_set_value(TCC_GPE(18), 1); } else { #if defined(CONFIG_M805S_8923_0XA) gpio_set_value(TCC_GPG(11), 1); #else gpio_set_value(TCC_GPF(27), 1); #endif } } #endif }
static void sitronix_ts_port_init(void) { volatile PGPIO pGPIO = (volatile PGPIO)tcc_p2v(HwGPIO_BASE); //int gp_penirq; #if defined(CONFIG_ARCH_TCC88XX) if (machine_is_tcc8800()) { gp_penirq = TCC_GPA(6); } #elif defined(CONFIG_ARCH_TCC892X) if (machine_is_tcc8920()) { if(system_rev == 0x1005 || system_rev == 0x1007) gp_penirq = TCC_GPB(11); else if(system_rev == 0x1006) gp_penirq = TCC_GPE(17); else if(system_rev == 0x1008) gp_penirq = TCC_GPE(5); else gp_penirq = TCC_GPG(18); } #endif gpio_request(gp_penirq, "tsc_int"); tcc_gpio_config(gp_penirq, GPIO_FN(0)); gpio_direction_input(gp_penirq); #if defined(CONFIG_ARCH_TCC88XX) if (machine_is_tcc8800()) { BITCSET(pGPIO->EINTSEL0 , HwEINTSEL0_EINT2_MASK, HwEINTSEL0_EINT2(SEL_GPIOA6)); HwPIC->INTMSK0 |= Hw5; HwPIC->IEN0 &= ~Hw5; /* disable Isr */ HwPIC->MODEA0 &= ~Hw5; /* single edge */ HwPIC->MODE0 &= ~Hw5; /* set edge trigger mode */ HwPIC->POL0 |= Hw5; /* active-low */ HwPIC->CLR0 |= Hw5; /* clear pending status */ HwPIC->SEL0 |= Hw5; /* IRQ Select */ HwPIC->IEN0 |= Hw5; } #elif defined(CONFIG_ARCH_TCC892X) if (machine_is_tcc8920()) { if(system_rev == 0x1005 || system_rev == 0x1007) tcc_gpio_config_ext_intr(INT_EI2, EXTINT_GPIOB_11); else if(system_rev == 0x1006) tcc_gpio_config_ext_intr(INT_EI2, EXTINT_GPIOE_17); else if(system_rev == 0x1008) tcc_gpio_config_ext_intr(INT_EI2, EXTINT_GPIOE_05); else tcc_gpio_config_ext_intr(INT_EI2, EXTINT_GPIOG_18); } #endif }
static void hp_un_mute(void) { #if defined(CONFIG_ARCH_TCC88XX) if(machine_is_m801_88()) gpio_set_value(TCC_GPD(11), 1); #elif defined(CONFIG_ARCH_TCC892X) if(machine_is_m805_892x()) { if(system_rev == 0x2002 || system_rev == 0x2003 || system_rev == 0x2004 || system_rev == 0x2005) gpio_set_value(TCC_GPE(17), 1); else gpio_set_value(TCC_GPG(5), 1); } #endif }
// ************************************************************ // // Device Exit : // // // ************************************************************ // static void __exit gps_gpio_exit(void) { gps_dbg("gps_gpio_exit"); device_destroy(gps_class, MKDEV(gps_major, 0)); class_destroy(gps_class); cdev_del(&gps_cdev); unregister_chrdev_region(dev, 1); #if defined(CONFIG_MACH_TCC9300) || defined(CONFIG_MACH_TCC8800) || defined(CONFIG_MACH_TCC8920) // GPS Power off gps_dbg("GPS_PWREN off"); if(machine_is_m801_88() || machine_is_m803()) // demo set { gpio_set_value(TCC_GPG(4), 0); } else if(machine_is_tcc8800() || machine_is_tcc8920()) { gpio_direction_output(TCC_GPEXT1(6), 0); } #elif defined(CONFIG_MACH_TCC8900) if(machine_is_tcc8900()) { gps_dbg("GPS_8900_PWREN off"); gpio_set_value(TCC_GPD(25), 0); } #elif defined(CONFIG_MACH_M805_892X) // GPS Power off gps_dbg("GPS_PWREN off"); if(machine_is_m805_892x()) { if (system_rev == 0x2002 || system_rev == 0x2003 || system_rev == 0x2004 || system_rev == 0x2005) gpio_set_value(TCC_GPE(14), 0); else gpio_set_value(TCC_GPC(6), 0); } #endif gps_dbg("GPS driver unloaded"); }
// ************************************************************ // // Device Open : // when open, yet not ativity UART port // GPS device is yet disable status. // ************************************************************ // static int gps_gpio_open (struct inode *inode, struct file *filp) { gps_k_flag = 0; // Set the Port Configure for the UART5 // GPIO SETTING gps_dbg("gps_gpio_open\n"); #if defined(CONFIG_MACH_TCC9300) || defined(CONFIG_MACH_TCC8800) || defined(CONFIG_MACH_TCC8920) if(machine_is_m801_88() || machine_is_m803()) // GPIOG[4] { gpio_set_value(TCC_GPG(4), 0); } else if(machine_is_tcc8800() || machine_is_tcc8920()) { gps_dbg("gps_gpio_open -> set_velue"); gpio_set_value(TCC_GPEXT1(6), 0); } #elif defined(CONFIG_MACH_TCC8900) if(machine_is_tcc8900()) { gps_dbg("machine_is_tcc8900 : gps_gpio_open\n\n"); gpio_set_value(TCC_GPD(25), 0); } #elif defined(CONFIG_MACH_M805_892X) if(machine_is_m805_892x()) { if (system_rev == 0x2002 || system_rev == 0x2003 || system_rev == 0x2004 || system_rev == 0x2005) gpio_set_value(TCC_GPE(14), 0); else gpio_set_value(TCC_GPC(6), 0); } #else #endif gps_dbg("tcc92xx : gps_gpio_open\n\n"); return 0; }
// ************************************************************ // // Device Init : // // // // ************************************************************ // static int __init gps_gpio_init(void) { int result; gps_dbg("gps_gpio_init\n"); if (0 == gps_major) { /* auto select a major */ result = alloc_chrdev_region(&dev, 0, 1, GPS_GPIO_DEV_NAME); gps_major = MAJOR(dev); } else { /* use load time defined major number */ dev = MKDEV(gps_major, 0); result = register_chrdev_region(dev, 1, GPS_GPIO_DEV_NAME); } memset(&gps_cdev, 0, sizeof(gps_cdev)); /* initialize our char dev data */ cdev_init(&gps_cdev, &gps_gpio_fops); /* register char dev with the kernel */ result = cdev_add(&gps_cdev, dev, 1); if (0 != result) { unregister_chrdev_region(dev, 1); gps_dbg("Error registrating mali device object with the kernel\n"); } gps_class = class_create(THIS_MODULE, GPS_GPIO_DEV_NAME); device_create(gps_class, NULL, MKDEV(gps_major, MINOR(dev)), NULL, GPS_GPIO_DEV_NAME); if (result < 0) return result; #if defined(CONFIG_MACH_TCC9300) || defined(CONFIG_MACH_TCC8800) || defined(CONFIG_MACH_TCC8920) if(machine_is_m801_88() || machine_is_m803()) // GPIOG[4] { gps_dbg("GPS_PWREN on\n"); tcc_gpio_config(TCC_GPG(4), GPIO_FN(0)); gpio_request(TCC_GPG(4), "GPIO_PWREN"); gpio_direction_output(TCC_GPG(4), 0); } else if(machine_is_tcc8800() || machine_is_tcc8920()) { gps_dbg("gpio_direction_output__gps\n"); gpio_direction_output(TCC_GPEXT1(6), 0); // GPS Power On } #elif defined(CONFIG_MACH_TCC8900) if(machine_is_tcc8900()) { gps_dbg("GPS_8900_PWREN on\n"); tcc_gpio_config(TCC_GPD(25), GPIO_FN(0)); gpio_request(TCC_GPD(25), "GPIO_PWREN"); gpio_set_value(TCC_GPD(25), 0); } #elif defined(CONFIG_MACH_M805_892X) if(machine_is_m805_892x()) { gps_dbg("GPS_PWREN on\n"); if (system_rev == 0x2002 || system_rev == 0x2003 || system_rev == 0x2004 || system_rev == 0x2005) { tcc_gpio_config(TCC_GPE(14), GPIO_FN(0)); gpio_request(TCC_GPE(14), "GPIO_PWREN"); gpio_direction_output(TCC_GPE(14), 0); } else { tcc_gpio_config(TCC_GPC(6), GPIO_FN(0)); gpio_request(TCC_GPC(6), "GPIO_PWREN"); gpio_direction_output(TCC_GPC(6), 0); } } #endif gps_dbg("GPS driver loaded\n"); return 0; }
// ************************************************************ // // Device Release : // // // ************************************************************ // //static int gps_gpio_ioctl (struct inode *inode, struct file *filp, // unsigned int cmd, unsigned long arg) static long gps_gpio_ioctl (struct file *filp, unsigned int cmd, void *arg) { gps_dbg("gps_gpio_ioctl\n"); switch( cmd ) { #if defined(CONFIG_MACH_TCC9300)||defined(CONFIG_MACH_TCC8800) || defined(CONFIG_MACH_TCC8920) case 0 : // GPS_On gps_k_flag = 1; if(machine_is_m801_88() || machine_is_m803()) // GPIOG[4] { gpio_set_value(TCC_GPG(4), 1); } else if(machine_is_tcc8800() || machine_is_tcc8920()) { gpio_set_value(TCC_GPEXT1(6), 1); } gps_dbg("tccxxxx : gps_gpio_on\n"); break; case 1 : // GPS_Off gps_k_flag = 0; if(machine_is_m801_88() || machine_is_m803()) // GPIOG[4] { gpio_set_value(TCC_GPG(4), 0); } else if(machine_is_tcc8800() || machine_is_tcc8920()) { gpio_set_value(TCC_GPEXT1(6), 0); } gps_dbg("tccxxxx : gps_gpio_off\n"); break; #elif defined(CONFIG_MACH_TCC8900) case 0 : // GPS_On gps_k_flag = 1; if(machine_is_tcc8900()) { gpio_set_value(TCC_GPD(25), 1); } break; case 1 : // GPS_Off gps_k_flag = 0; if(machine_is_tcc8900()) { gpio_set_value(TCC_GPD(25), 0); } break; #elif defined(CONFIG_MACH_M805_892X) case 0 : // GPS_On gps_k_flag = 1; if(machine_is_m805_892x()) { if (system_rev == 0x2002 || system_rev == 0x2003 || system_rev == 0x2004 || system_rev == 0x2005) gpio_set_value(TCC_GPE(14), 1); else gpio_set_value(TCC_GPC(6), 1); } gps_dbg("tccxxxx : gps_gpio_on\n"); break; case 1 : // GPS_Off gps_k_flag = 0; if(machine_is_m805_892x()) { if (system_rev == 0x2002 || system_rev == 0x2003 || system_rev == 0x2004 || system_rev == 0x2005) gpio_set_value(TCC_GPE(14), 0); else gpio_set_value(TCC_GPC(6), 0); } gps_dbg("tccxxxx : gps_gpio_off\n"); break; #else case 0 : // GPS_On gps_k_flag = 1; break; case 1 : // GPS_Off gps_k_flag = 0; break; #endif // #if defined(CONFIG_MACH_TCC9300) default : break; }; return 0; }
static void tcc_dxb_init(void) { if(machine_is_m805_892x()) { if (system_rev == 0x2008) { gpio_dxb1_sfrm = TCC_GPD(12); gpio_dxb1_sclk = TCC_GPD(11); gpio_dxb1_sdi = TCC_GPD(13); gpio_dxb1_sdo = TCC_GPD(14); } else { gpio_dxb1_sfrm = TCC_GPG(1); gpio_dxb1_sclk = TCC_GPG(0); gpio_dxb1_sdi = TCC_GPG(2); gpio_dxb1_sdo = TCC_GPG(3); } /*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(9) 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); if (system_rev==0x2006 || system_rev==0x2007 || system_rev==0x2008) { tcc_gpio_config(gpio_dxb1_sfrm, GPIO_FN(0)|GPIO_PULL_DISABLE); gpio_request(gpio_dxb1_sfrm, NULL); gpio_direction_input(gpio_dxb1_sfrm); tcc_gpio_config(gpio_dxb1_sclk, GPIO_FN(0)|GPIO_PULL_DISABLE); gpio_request(gpio_dxb1_sclk, NULL); gpio_direction_input(gpio_dxb1_sclk); tcc_gpio_config(gpio_dxb1_sdi, GPIO_FN(0)|GPIO_PULL_DISABLE); gpio_request(gpio_dxb1_sdi, NULL); gpio_direction_input(gpio_dxb1_sdi); tcc_gpio_config(gpio_dxb1_sdo, GPIO_FN(0)|GPIO_PULL_DISABLE); gpio_request(gpio_dxb1_sdo, NULL); gpio_direction_input(gpio_dxb1_sdo); } else { 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_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_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_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_GPE(8) tcc_gpio_config(GPIO_DXB_PWDN, GPIO_FN(0)|GPIO_PULL_DISABLE); gpio_request(GPIO_DXB_PWDN, NULL); gpio_direction_output(GPIO_DXB_PWDN, 0); //TCC_GPG(5) tcc_gpio_config(GPIO_DXB_PWREN, GPIO_FN(0)|GPIO_PULL_DISABLE); gpio_request(GPIO_DXB_PWREN, NULL); gpio_direction_output(GPIO_DXB_PWREN, 0); //DXB_PWREN //power off //TCC_GPE(1) tcc_gpio_config(GPIO_RFSW_CTL0, GPIO_FN(0)|GPIO_PULL_DISABLE); gpio_request(GPIO_RFSW_CTL0, NULL); gpio_direction_output(GPIO_RFSW_CTL0, 0); //TCC_GPE(1) tcc_gpio_config(GPIO_RFSW_CTL1, GPIO_FN(0)|GPIO_PULL_DISABLE); gpio_request(GPIO_RFSW_CTL1, NULL); gpio_direction_output(GPIO_RFSW_CTL1, 0); //TCC_GPE(1) tcc_gpio_config(GPIO_RFSW_CTL2, GPIO_FN(0)|GPIO_PULL_DISABLE); gpio_request(GPIO_RFSW_CTL2, NULL); gpio_direction_output(GPIO_RFSW_CTL2, 0); //TCC_GPE(1) tcc_gpio_config(GPIO_RFSW_CTL3, GPIO_FN(0)|GPIO_PULL_DISABLE); gpio_request(GPIO_RFSW_CTL3, NULL); gpio_direction_output(GPIO_RFSW_CTL3, 0); #if defined(CONFIG_REGULATOR) && defined(CONFIG_M805S_8925_0XX) if (vdd_dxb == NULL) { vdd_dxb = regulator_get(NULL, "vdd_dxb"); if (IS_ERR(vdd_dxb)) { printk("Failed to obtain vdd_dxb\n"); vdd_dxb = NULL; } } #endif } }
static int __init tcc_init_es8388(void) { int ret; printk("%s() \n", __func__); if( !(machine_is_m801_88() || machine_is_m805_892x() || machine_is_tcc8920()) ) { alsa_dbg("\n\n\n\n%s() do not execution....\n\n", __func__); return 0; } #if defined(CONFIG_ARCH_TCC88XX) alsa_dbg("TCC Board probe [%s]\n", __FUNCTION__); /* h/w mute control */ if(machine_is_m801_88()) { tcc_gpio_config(TCC_GPG(6), GPIO_FN(0)); tcc_gpio_config(TCC_GPD(11), GPIO_FN(0)); gpio_request(TCC_GPG(6), "SPK_MUTE_CTL"); gpio_request(TCC_GPD(11), "HP_MUTE_CTL"); gpio_direction_output(TCC_GPG(6), 0); // Speaker mute gpio_direction_output(TCC_GPD(11), 1); // HeadPhone mute tcc_hp_hw_mute(false); tcc_spk_hw_mute(false); tcc_soc_card.name = "M801"; } #elif defined(CONFIG_ARCH_TCC892X) alsa_dbg("TCC Board probe [%s]\n", __FUNCTION__); /* h/w mute control */ if(machine_is_m805_892x()) { if(system_rev == 0x2002 || system_rev == 0x2003 || system_rev == 0x2004 || system_rev == 0x2005) { tcc_gpio_config(TCC_GPE(18), GPIO_FN(0)); gpio_request(TCC_GPE(18), "SPK_MUTE_CTL"); gpio_direction_output(TCC_GPE(18), 0); // Speaker mute tcc_gpio_config(TCC_GPE(17), GPIO_FN(0)); gpio_request(TCC_GPE(17), "HP_MUTE_CTL"); gpio_direction_output(TCC_GPE(17), 1); // HeadPhone mute } else { #if defined(CONFIG_M805S_8923_0XA) tcc_gpio_config(TCC_GPG(11), GPIO_FN(0)); gpio_request(TCC_GPG(11), "SPK_MUTE_CTL"); gpio_direction_output(TCC_GPG(11), 0); // Speaker mute #else tcc_gpio_config(TCC_GPF(27), GPIO_FN(0)); gpio_request(TCC_GPF(27), "SPK_MUTE_CTL"); gpio_direction_output(TCC_GPF(27), 0); // Speaker mute #endif tcc_gpio_config(TCC_GPG(5), GPIO_FN(0)); gpio_request(TCC_GPG(5), "HP_MUTE_CTL"); gpio_direction_output(TCC_GPG(5), 1); // HeadPhone mute } tcc_hp_hw_mute(false); tcc_spk_hw_mute(false); tcc_soc_card.name = "M805"; } #else alsa_dbg("TCC Board probe [%s]\n [Error] Don't support architecture..\n", __FUNCTION__); return 0; #endif tcc_hp_hw_mute(true); tcc_spk_hw_mute(true); tca_tcc_initport(); ret = es8388_i2c_register(); 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; }
unsigned IO_TCO_GetGpioFunc(unsigned uCH, unsigned uGPIO) { #ifdef TCC892X switch(uGPIO) { case TCC_GPB(9): // TCO0 case TCC_GPB(10): // TCO1 case TCC_GPB(11): // TCO2 case TCC_GPB(12): // TCO3 case TCC_GPB(13): // TCO4 case TCC_GPB(14): // TCO5 return GPIO_FN12; case TCC_GPC(0): // TCO0 case TCC_GPC(1): // TCO1 case TCC_GPC(2): // TCO2 case TCC_GPC(3): // TCO3 case TCC_GPC(4): // TCO4 case TCC_GPC(5): // TCO5 return GPIO_FN9; case TCC_GPD(9): // TCO0 case TCC_GPD(10): // TCO1 case TCC_GPD(11): // TCO2 case TCC_GPD(12): // TCO3 case TCC_GPD(13): // TCO4 case TCC_GPD(14): // TCO5 return GPIO_FN9; case TCC_GPE(12): // TCO0 case TCC_GPE(13): // TCO1 case TCC_GPE(14): // TCO2 case TCC_GPE(15): // TCO3 case TCC_GPE(16): // TCO4 case TCC_GPE(17): // TCO5 return GPIO_FN7; case TCC_GPF(16): // TCO0 case TCC_GPF(17): // TCO1 case TCC_GPF(18): // TCO2 case TCC_GPF(19): // TCO3 case TCC_GPF(20): // TCO4 case TCC_GPF(21): // TCO5 return GPIO_FN11; case TCC_GPG(5): // TCO0 case TCC_GPG(6): // TCO1 case TCC_GPG(7): // TCO2 case TCC_GPG(8): // TCO3 case TCC_GPG(9): // TCO4 case TCC_GPG(10): // TCO5 return GPIO_FN7; default: break; } #elif defined(TCC88XX) switch(uGPIO) { case TCC_GPA(4): // TCO0 case TCC_GPB(5): // TCO1 case TCC_GPB(6): // TCO2 case TCC_GPB(7): // TCO3 case TCC_GPB(14): // TCO4 case TCC_GPB(15): // TCO5 return GPIO_FN2; default: break; } #else #error code : not define TCO gpio functional setting at chipset #endif// return 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 : 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; } }