TYPE_IR_REG_RESULT ir_reg_irsd_shutdown(void) { TYPE_IR_REG_RESULT w_ret = IR_REG_RESULT_SUCCESS; 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_ena(); error: if (f_map_hcs1 == 1) { ir_reg_iounmap(); f_map_hcs1 = 0; } return (w_ret); }
TYPE_IR_REG_RESULT ir_reg_ioremap_nocache(void) { TYPE_IR_REG_RESULT w_ret = IR_REG_RESULT_SUCCESS; goliath2_hcs1 = ioremap_nocache(IRDA_ADDR_HCS1, IRDA_ADDR_HCS1_SIZE); if (goliath2_hcs1 == NULL) { w_ret = IR_REG_RESULT_FAIL; MSG_IRREG_FATAL("goliath2_hcs1=0x%x[%d,%d]\n", (int)goliath2_hcs1, 0, 0); } else { goliath2_hcs2 = ioremap_nocache(IRDA_ADDR_HCS2, IRDA_ADDR_HCS2_SIZE); if (goliath2_hcs2 == NULL) { w_ret = IR_REG_RESULT_FAIL; MSG_IRREG_FATAL("goliath2_hcs2=0x%x[%d,%d]\n", (int)goliath2_hcs2, 0, 0); } } return (w_ret); }
TYPE_IR_REG_RESULT ir_reg_ioremap_nocache(void) { TYPE_IR_REG_RESULT w_ret = IR_REG_RESULT_SUCCESS; if (lr388g7_hcs1 != NULL) { goto exit; } lr388g7_hcs1 = ioremap_nocache(IRDA_ADDR_HCS1, IRDA_ADDR_HCS1_SIZE); if (lr388g7_hcs1 == NULL) { w_ret = IR_REG_RESULT_FAIL; MSG_IRREG_FATAL("lr388g7_hcs1=0x%x\n", (int)lr388g7_hcs1); } else { lr388g7_hcs2 = ioremap_nocache(IRDA_ADDR_HCS2, IRDA_ADDR_HCS2_SIZE); if (lr388g7_hcs2 == NULL) { w_ret = IR_REG_RESULT_FAIL; MSG_IRREG_FATAL("lr388g7_hcs2=0x%x\n", (int)lr388g7_hcs2); } } exit: 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); }