/* ------------------------------------------------------------------------------------ * irdaeg file operation * ------------------------------------------------------------------------------------ */ static int irdaeg_fop_open(struct inode *inode, struct file *file) { int rc; printk( "%s: major %d minor %d (pid %d)\n", __func__, imajor(inode), iminor(inode), current->pid); /* UnSet pm port */ rc = irda_eg_unset_pm_port(); rc = pm8xxx_uart_gpio_mux_ctrl(UART_TX1_RX1); if(rc != 0){ printk( "Error set pm port\n" ); return rc; } /* Set IrDA mode at the MUX register at IrDA/Felica of PM8058 */ // pm8058_misc_control(NULL, PM8058_UART_MUX_MASK, PM8058_UART_MUX_1); printk( "%s:%d\n", __func__, __LINE__ ); return 0; }
static int msm_uart_aux_chg_irda( void ) { int rc = 0; // TX uart_tx2_en_22.function = PM_GPIO_FUNC_2; /* FUJITSU:2011-10-21 gpio chg start */ #if defined(CONFIG_MACH_F11APO) || defined(CONFIG_MACH_F12APON) if((system_rev != 0x08) || (system_rev != 0x0F)) { uart_tx2_en_22.out_strength = PM_GPIO_STRENGTH_MED; } #elif defined(CONFIG_MACH_FJI12) if((system_rev != 0x00) || (system_rev != 0x07)) { uart_tx2_en_22.out_strength = PM_GPIO_STRENGTH_MED; } #endif /* FUJITSU:2011-10-21 gpio chg end */ /* FUJITSU:2011-12-01 mod irda start */ #if 0 rc = pm8058_gpio_config( PM8058_UART_TX2_22, &uart_tx2_en_22 ); #else rc = pm8xxx_gpio_config( PM8058_UART_TX2_22, &uart_tx2_en_22 ); #endif /* FUJITSU:2011-12-01 mod irda end */ if ( rc ) { printk( KERN_ERR "%s: PM8058_UART_TX config failed\n", __func__ ); return -EIO; } // RX /* FUJITSU:2011-09-28 gpio chg start */ #if defined(CONFIG_MACH_F11APO) || defined(CONFIG_MACH_F12APON) if((system_rev != 0x08) || (system_rev != 0x0F)) { uart_rx2_en_34.pull = PM_GPIO_PULL_UP_1P5; } #elif defined(CONFIG_MACH_FJI12) if((system_rev != 0x00) || (system_rev != 0x07)) { uart_rx2_en_34.pull = PM_GPIO_PULL_UP_1P5; } #endif /* FUJITSU:2011-09-28 gpio chg end */ /* FUJITSU:2011-12-01 mod irda start */ #if 0 rc = pm8058_gpio_config( PM8058_UART_RX2_34, &uart_rx2_en_34 ); #else rc = pm8xxx_gpio_config( PM8058_UART_RX2_34, &uart_rx2_en_34 ); #endif /* FUJITSU:2011-12-01 mod irda end */ if ( rc ) { printk( KERN_ERR "%s: PM8058_UART_RX config failed\n", __func__ ); return -EIO; } // PMIC /* FUJITSU:2011-12-01 mod irda start */ #if 0 rc = pm8058_misc_control( NULL, PM8058_UART_MUX_MASK, PM8058_UART_MUX_2 ); #else rc = pm8xxx_uart_gpio_mux_ctrl(UART_TX2_RX2); #endif /* FUJITSU:2011-12-01 mod irda end */ if ( rc ) { /* FUJITSU:2011-12-01 mod irda start */ #if 0 printk( KERN_ERR "%s:pmM8058_misc_control failed=%d\n", __func__, rc ); #else printk( KERN_ERR "%s:pm8xxx_uart_gpio_mux_ctrl failed=%d\n", __func__, rc ); #endif /* FUJITSU:2011-12-01 mod irda end */ } printk( KERN_INFO DEV_NAME " %s: UART Change -> IRDA\n", __func__ ); // TXD /* FUJITSU:2011-09-28 gpio chg start */ #if defined(CONFIG_MACH_F11APO) || defined(CONFIG_MACH_F12APON) if((system_rev != 0x08) || (system_rev != 0x0F)) { uart_pmic_txd_en_36.pull = PM_GPIO_PULL_UP_1P5; } #elif(defined CONFIG_MACH_FJI12) if((system_rev != 0x00) || (system_rev != 0x07)) { uart_pmic_txd_en_36.pull = PM_GPIO_PULL_UP_1P5; } #endif /* FUJITSU:2011-09-28 gpio chg end */ /* FUJITSU:2011-12-01 mod irda start */ #if 0 rc = pm8058_gpio_config( PM8058_UART_PMIC_TXD_36, &uart_pmic_txd_en_36 ); #else rc = pm8xxx_gpio_config( PM8058_UART_PMIC_TXD_36, &uart_pmic_txd_en_36 ); #endif /* FUJITSU:2011-12-01 mod irda end */ if ( rc ) { printk( KERN_ERR "%s: PM8058_UART_PMIC_TXD config failed\n", __func__ ); return -EIO; } // RXD /* FUJITSU:2011-09-28 gpio chg start */ #if defined(CONFIG_MACH_F11APO) || defined(CONFIG_MACH_F12APON) if((system_rev != 0x08) || (system_rev != 0x0F)) { uart_pmic_rxd_en_37.out_strength = PM_GPIO_STRENGTH_MED; uart_pmic_rxd_en_37.pull = PM_GPIO_PULL_UP_1P5; } #elif defined(CONFIG_MACH_FJI12) if((system_rev != 0x00) || (system_rev != 0x07)) { uart_pmic_rxd_en_37.out_strength = PM_GPIO_STRENGTH_MED; uart_pmic_rxd_en_37.pull = PM_GPIO_PULL_UP_1P5; } #endif /* FUJITSU:2011-09-28 gpio chg end */ /* FUJITSU:2011-12-01 mod irda start */ #if 0 rc = pm8058_gpio_config( PM8058_UART_PMIC_RXD_37, &uart_pmic_rxd_en_37 ); #else rc = pm8xxx_gpio_config( PM8058_UART_PMIC_RXD_37, &uart_pmic_rxd_en_37 ); #endif /* FUJITSU:2011-12-01 mod irda end */ if ( rc ) { printk( KERN_ERR "%s: PM8058_UART_PMIC_RXD config failed\n", __func__ ); return -EIO; } // MSM rc = gpio_tlmm_config( GPIO_CFG( 51, 1, GPIO_CFG_INPUT, GPIO_CFG_NO_PULL, GPIO_CFG_2MA), GPIO_CFG_ENABLE ); if ( rc ) { printk( KERN_ERR "%s: MSM8655_UART_RXD_A config failed\n", __func__ ); return -EIO; } /* FUJITSU:2011-09-28 gpio chg start */ #if defined(CONFIG_MACH_F11APO) || defined(CONFIG_MACH_F12APON) if((system_rev != 0x08) || (system_rev != 0x0F)) { rc = gpio_tlmm_config( GPIO_CFG( 52, 1, GPIO_CFG_OUTPUT, GPIO_CFG_PULL_UP, GPIO_CFG_2MA), GPIO_CFG_ENABLE ); }else{ rc = gpio_tlmm_config( GPIO_CFG( 52, 1, GPIO_CFG_OUTPUT, GPIO_CFG_NO_PULL, GPIO_CFG_2MA), GPIO_CFG_ENABLE ); } #elif defined(CONFIG_MACH_FJI12) if((system_rev != 0x00) || (system_rev != 0x07)) { rc = gpio_tlmm_config( GPIO_CFG( 52, 1, GPIO_CFG_OUTPUT, GPIO_CFG_PULL_UP, GPIO_CFG_2MA), GPIO_CFG_ENABLE ); }else{ rc = gpio_tlmm_config( GPIO_CFG( 52, 1, GPIO_CFG_OUTPUT, GPIO_CFG_NO_PULL, GPIO_CFG_2MA), GPIO_CFG_ENABLE ); } #else rc = gpio_tlmm_config( GPIO_CFG( 52, 1, GPIO_CFG_OUTPUT, GPIO_CFG_NO_PULL, GPIO_CFG_2MA), GPIO_CFG_ENABLE ); #endif /* FUJITSU:2011-09-28 gpio chg end */ if ( rc ) { printk( KERN_ERR "%s: MSM8655_UART_TXD_A config failed\n", __func__ ); return -EIO; } // SD /* FUJITSU:2011-09-28 gpio chg start */ #if defined(CONFIG_MACH_F11APO) || defined(CONFIG_MACH_F12APON) if((system_rev != 0x08) || (system_rev != 0x0F)) { irda_pwdown_26.output_buffer = PM_GPIO_OUT_BUF_OPEN_DRAIN; irda_pwdown_26.out_strength = PM_GPIO_STRENGTH_NO; } #elif defined(CONFIG_MACH_FJI12) if((system_rev != 0x00) || (system_rev != 0x07)) { irda_pwdown_26.output_buffer = PM_GPIO_OUT_BUF_OPEN_DRAIN; irda_pwdown_26.out_strength = PM_GPIO_STRENGTH_NO; } #endif /* FUJITSU:2011-09-28 gpio chg end */ /* FUJITSU:2011-12-01 mod irda start */ #if 0 rc = pm8058_gpio_config( PM8058_IRDA_PWD_26, &irda_pwdown_26 ); #else rc = pm8xxx_gpio_config( PM8058_IRDA_PWD_26, &irda_pwdown_26 ); #endif /* FUJITSU:2011-12-01 mod irda end */ if( rc < 0 ) { printk( KERN_ERR "%s: PM8058_IRDA_PWD_26 config failed[%d]\n", __func__, rc ); return -EIO; } printk( KERN_INFO DEV_NAME " %s: IRDA GPIO Config Complete\n", __func__ ); return 0; }