TYPE_IR_REG_RESULT ir_reg_irda_hwinit(TYPE_LED_POWER a_val) { TYPE_IR_REG_RESULT w_ret = IR_REG_RESULT_SUCCESS; #ifdef IR_FEATURE_WAIT_FOR_SLEEP struct timespec tu; #endif spin_lock_init(&Irreg_spin_lock); ir_reg_gol_irdacc_reset_dis(); ir_reg_irdacc_ena(); ir_reg_set_sd(IR_GPIO_LOW); ir_reg_led_pwr_sel(a_val); if (a_val != IR_LED_POWER_NON) { ir_reg_led_leda_on(); } #ifdef IR_FEATURE_WAIT_FOR_SLEEP tu.tv_sec = 0; tu.tv_nsec = IR_SD_RECOVERY_WAIT_NSEC; hrtimer_nanosleep(&tu, NULL, HRTIMER_MODE_REL, CLOCK_MONOTONIC); #else mdelay(IR_SD_RECOVERY_WAIT); #endif g_ir_ledpow = a_val; return (w_ret); }
TYPE_IR_REG_RESULT ir_reg_irda_hwinit(void) { TYPE_IR_REG_RESULT w_ret = IR_REG_RESULT_SUCCESS; struct timespec tu; spin_lock_init(&Irreg_spin_lock); ir_reg_gol_irdacc_reset_dis(); ir_reg_irdacc_ena(); ir_reg_set_sd(IR_GPIO_LOW); tu.tv_sec = 0; tu.tv_nsec = IR_SD_RECOVERY_WAIT_NSEC; hrtimer_nanosleep(&tu, NULL, HRTIMER_MODE_REL, CLOCK_MONOTONIC); return (w_ret); }
TYPE_IR_REG_RESULT ir_reg_irsd_active(void) { TYPE_IR_REG_RESULT w_ret = IR_REG_RESULT_SUCCESS; struct timespec tu; int f_map_hcs1 = 0; if (lr388g7_hcs1 != NULL) { goto ready; } f_map_hcs1 = 1; if (ir_reg_ioremap_nocache() != IR_REG_RESULT_SUCCESS) { w_ret = IR_REG_RESULT_FAIL; MSG_IRREG_FATAL("ioremap error\n"); goto error; } ready: ir_reg_gol_irdacc_reset_dis(); ir_reg_set_sd(IR_GPIO_LOW); tu.tv_sec = 0; tu.tv_nsec = IR_SD_RECOVERY_WAIT_NSEC; hrtimer_nanosleep(&tu, NULL, HRTIMER_MODE_REL, CLOCK_MONOTONIC); error: if (f_map_hcs1 == 1) { ir_reg_iounmap(); f_map_hcs1 = 0; } return (w_ret); }