kopia lustrzana https://gitlab.com/sane-project/backends
				
				
				
			genesys: Merge XPA motor setup to a single function
							rodzic
							
								
									4d4b3be12d
								
							
						
					
					
						commit
						4adb96b7af
					
				| 
						 | 
				
			
			@ -2048,11 +2048,8 @@ gl843_detect_document_end (Genesys_Device * dev)
 | 
			
		|||
  return SANE_STATUS_GOOD;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/** @brief disable XPA slider motor
 | 
			
		||||
 * toggle gpios to switch disble XPA slider motor
 | 
			
		||||
 * @param dev device to set up
 | 
			
		||||
 */
 | 
			
		||||
static SANE_Status gl843_xpa_motor_off(Genesys_Device *dev)
 | 
			
		||||
// enables or disables XPA slider motor
 | 
			
		||||
static SANE_Status gl843_set_xpa_motor_power(Genesys_Device *dev, bool set)
 | 
			
		||||
{
 | 
			
		||||
    uint8_t val;
 | 
			
		||||
    SANE_Status status=SANE_STATUS_GOOD;
 | 
			
		||||
| 
						 | 
				
			
			@ -2060,45 +2057,8 @@ static SANE_Status gl843_xpa_motor_off(Genesys_Device *dev)
 | 
			
		|||
    DBGSTART;
 | 
			
		||||
 | 
			
		||||
    if (dev->model->model_id == MODEL_CANON_CANOSCAN_8600F) {
 | 
			
		||||
        RIE(sanei_genesys_read_register(dev, REG6C, &val));
 | 
			
		||||
        val |= REG6C_GPIO14;
 | 
			
		||||
        val &= ~REG6C_GPIO10;
 | 
			
		||||
        RIE(sanei_genesys_write_register(dev, REG6C, val));
 | 
			
		||||
 | 
			
		||||
        RIE(sanei_genesys_read_register(dev, REGA6, &val));
 | 
			
		||||
        val &= ~REGA6_GPIO17;
 | 
			
		||||
        RIE(sanei_genesys_write_register(dev, REGA6,val));
 | 
			
		||||
    } else {
 | 
			
		||||
        /* unset GPOADF */
 | 
			
		||||
        RIE (sanei_genesys_read_register (dev, REG6B, &val));
 | 
			
		||||
        val &= ~REG6B_GPOADF;
 | 
			
		||||
        RIE (sanei_genesys_write_register (dev, REG6B, val));
 | 
			
		||||
 | 
			
		||||
        RIE (sanei_genesys_read_register (dev, REGA8, &val));
 | 
			
		||||
        val |= REGA8_GPO27;
 | 
			
		||||
        RIE (sanei_genesys_write_register (dev, REGA8, val));
 | 
			
		||||
 | 
			
		||||
        RIE (sanei_genesys_read_register (dev, REGA9, &val));
 | 
			
		||||
        val &= ~REGA9_GPO31;
 | 
			
		||||
        RIE (sanei_genesys_write_register (dev, REGA9, val));
 | 
			
		||||
    }
 | 
			
		||||
    DBGCOMPLETED;
 | 
			
		||||
    return status;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/** @brief enable XPA slider motor
 | 
			
		||||
 * toggle gpios to switch enable XPA slider motor
 | 
			
		||||
 * @param dev device to set up
 | 
			
		||||
 */
 | 
			
		||||
static SANE_Status gl843_xpa_motor_on(Genesys_Device *dev)
 | 
			
		||||
{
 | 
			
		||||
    uint8_t val;
 | 
			
		||||
    SANE_Status status=SANE_STATUS_GOOD;
 | 
			
		||||
 | 
			
		||||
    DBGSTART;
 | 
			
		||||
 | 
			
		||||
    if (dev->model->model_id == MODEL_CANON_CANOSCAN_8600F) {
 | 
			
		||||
        if (set) {
 | 
			
		||||
            RIE(sanei_genesys_read_register(dev, REG6C, &val));
 | 
			
		||||
            val &= ~REG6C_GPIO14;
 | 
			
		||||
            if (dev->current_setup.xres >= 2400) {
 | 
			
		||||
| 
						 | 
				
			
			@ -2110,6 +2070,22 @@ static SANE_Status gl843_xpa_motor_on(Genesys_Device *dev)
 | 
			
		|||
            val |= REGA6_GPIO17;
 | 
			
		||||
            RIE(sanei_genesys_write_register(dev, REGA6,val));
 | 
			
		||||
        } else {
 | 
			
		||||
            RIE(sanei_genesys_read_register(dev, REG6C, &val));
 | 
			
		||||
            val |= REG6C_GPIO14;
 | 
			
		||||
            val &= ~REG6C_GPIO10;
 | 
			
		||||
            RIE(sanei_genesys_write_register(dev, REG6C, val));
 | 
			
		||||
 | 
			
		||||
            RIE(sanei_genesys_read_register(dev, REGA6, &val));
 | 
			
		||||
            val &= ~REGA6_GPIO17;
 | 
			
		||||
            RIE(sanei_genesys_write_register(dev, REGA6,val));
 | 
			
		||||
        }
 | 
			
		||||
        DBGCOMPLETED;
 | 
			
		||||
        return status;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    if (dev->model->model_id == MODEL_HP_SCANJET_G4050) {
 | 
			
		||||
 | 
			
		||||
        if (set) {
 | 
			
		||||
            /* set MULTFILM et GPOADF */
 | 
			
		||||
            RIE (sanei_genesys_read_register (dev, REG6B, &val));
 | 
			
		||||
            val |=REG6B_MULTFILM|REG6B_GPOADF;
 | 
			
		||||
| 
						 | 
				
			
			@ -2131,6 +2107,22 @@ static SANE_Status gl843_xpa_motor_on(Genesys_Device *dev)
 | 
			
		|||
            RIE (sanei_genesys_read_register (dev, REGA9, &val));
 | 
			
		||||
            val |= REGA9_GPO32|REGA9_GPO31;
 | 
			
		||||
            RIE (sanei_genesys_write_register (dev, REGA9, val));
 | 
			
		||||
        } else {
 | 
			
		||||
            /* unset GPOADF */
 | 
			
		||||
            RIE (sanei_genesys_read_register (dev, REG6B, &val));
 | 
			
		||||
            val &= ~REG6B_GPOADF;
 | 
			
		||||
            RIE (sanei_genesys_write_register (dev, REG6B, val));
 | 
			
		||||
 | 
			
		||||
            RIE (sanei_genesys_read_register (dev, REGA8, &val));
 | 
			
		||||
            val |= REGA8_GPO27;
 | 
			
		||||
            RIE (sanei_genesys_write_register (dev, REGA8, val));
 | 
			
		||||
 | 
			
		||||
            RIE (sanei_genesys_read_register (dev, REGA9, &val));
 | 
			
		||||
            val &= ~REGA9_GPO31;
 | 
			
		||||
            RIE (sanei_genesys_write_register (dev, REGA9, val));
 | 
			
		||||
        }
 | 
			
		||||
        DBGCOMPLETED;
 | 
			
		||||
        return status;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    DBGCOMPLETED;
 | 
			
		||||
| 
						 | 
				
			
			@ -2219,7 +2211,7 @@ gl843_begin_scan (Genesys_Device * dev, const Genesys_Sensor& sensor, Genesys_Re
 | 
			
		|||
 | 
			
		||||
            if (reg->state.is_xpa_on) {
 | 
			
		||||
                dev->needs_home_ta = SANE_TRUE;
 | 
			
		||||
                RIE(gl843_xpa_motor_on(dev));
 | 
			
		||||
                RIE(gl843_set_xpa_motor_power(dev, true));
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
        /* blinking led */
 | 
			
		||||
| 
						 | 
				
			
			@ -2228,7 +2220,7 @@ gl843_begin_scan (Genesys_Device * dev, const Genesys_Sensor& sensor, Genesys_Re
 | 
			
		|||
      case GPO_CS8600F:
 | 
			
		||||
            if (reg->state.is_xpa_on) {
 | 
			
		||||
                dev->needs_home_ta = SANE_TRUE;
 | 
			
		||||
                RIE(gl843_xpa_motor_on(dev));
 | 
			
		||||
                RIE(gl843_set_xpa_motor_power(dev, true));
 | 
			
		||||
            }
 | 
			
		||||
        break;
 | 
			
		||||
      case GPO_CS4400F:
 | 
			
		||||
| 
						 | 
				
			
			@ -2337,7 +2329,7 @@ static SANE_Status gl843_park_xpa_lamp (Genesys_Device * dev)
 | 
			
		|||
 | 
			
		||||
  /* write to scanner and start action */
 | 
			
		||||
  RIE (dev->model->cmd_set->bulk_write_register(dev, local_reg));
 | 
			
		||||
  RIE (gl843_xpa_motor_on(dev));
 | 
			
		||||
  RIE(gl843_set_xpa_motor_power(dev, true));
 | 
			
		||||
  status = gl843_start_action (dev);
 | 
			
		||||
  if (status != SANE_STATUS_GOOD)
 | 
			
		||||
    {
 | 
			
		||||
| 
						 | 
				
			
			@ -2367,7 +2359,7 @@ static SANE_Status gl843_park_xpa_lamp (Genesys_Device * dev)
 | 
			
		|||
	      DBG(DBG_info, "%s: reached home position\n", __func__);
 | 
			
		||||
	      DBG(DBG_proc, "%s: finished\n", __func__);
 | 
			
		||||
 | 
			
		||||
          gl843_xpa_motor_off(dev);
 | 
			
		||||
            gl843_set_xpa_motor_power(dev, false);
 | 
			
		||||
            dev->needs_home_ta = SANE_FALSE;
 | 
			
		||||
 | 
			
		||||
          return SANE_STATUS_GOOD;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Ładowanie…
	
		Reference in New Issue