kopia lustrzana https://gitlab.com/sane-project/backends
working full width 1200 dpi scan
rodzic
4fd418daef
commit
96b29ca201
|
@ -3308,6 +3308,7 @@ genesys_send_shading_coefficient (Genesys_Device * dev)
|
|||
target_code);
|
||||
break;
|
||||
case CCD_CANONLIDE35:
|
||||
case CIS_CANONLIDE100:
|
||||
target_bright = 0xfa00;
|
||||
target_dark = 0xa00;
|
||||
o = 4; /*first four pixels are ignored */
|
||||
|
|
|
@ -432,12 +432,12 @@ static Genesys_Sensor Sensor[] = {
|
|||
87, /* black pixels */
|
||||
16, /* dummy pixels */
|
||||
0,
|
||||
10592, /* 10272 (shading) , 16 (dummy) */
|
||||
10592, /* 10272 + 320 start */
|
||||
210,
|
||||
200,
|
||||
{0x00, 0x00, 0x00, 0x00},
|
||||
/* reg 0x10 - 0x1d */
|
||||
{0x03, 0x48, 0x01, 0xff, 0x01, 0x8e, /* EXPR/EXPG/EXPB */
|
||||
{0x03, 0x48, 0x01, 0xff, 0x01, 0x7d, /* EXPR/EXPG/EXPB */
|
||||
0x10, 0x08, 0x00, 0xff, 0x34, 0x00, 0x02, 0x04 },
|
||||
/* reg 0x52 - 0x5e */
|
||||
{0x03, 0x07,
|
||||
|
@ -785,9 +785,9 @@ static Genesys_Motor Motor[] = {
|
|||
1, /* maximum power modes count */
|
||||
{ /* motor slopes */
|
||||
{ /* power mode 0 */
|
||||
{ 2343, 864, 32, 0.81}, /* full step */
|
||||
{ 2*1171, 2*648, 32, 0.82}, /* half step */
|
||||
{ 4*2034, 4*2034, 32, 0.84}, /* quarter step */
|
||||
{ 2343, 864, 32, 0.80}, /* full step */
|
||||
{ 2*1171, 2*648, 32, 0.80}, /* half step */
|
||||
{ 4*2034, 4*2034, 32, 0.80}, /* quarter step */
|
||||
},
|
||||
},
|
||||
},
|
||||
|
@ -926,13 +926,13 @@ static Genesys_Model canon_lide_100_model = {
|
|||
GENESYS_GL847,
|
||||
NULL,
|
||||
|
||||
{1200, 600, 300, 150, 0}, /* possible x-resolutions */
|
||||
{1200, 600, 300, 150, 0}, /* possible y-resolutions */
|
||||
{1200, 600, 300, 150, 75, 0}, /* possible x-resolutions */
|
||||
{1200, 600, 300, 150, 75, 0}, /* possible y-resolutions */
|
||||
{16, 8, 0}, /* possible depths in gray mode */
|
||||
{16, 8, 0}, /* possible depths in color mode */
|
||||
|
||||
SANE_FIX (6.42), /* Start of scan area in mm (x) cible=320 */
|
||||
SANE_FIX (7.9), /* Start of scan area in mm (y) */
|
||||
SANE_FIX (6.42), /* Start of scan area in mm (x) */
|
||||
SANE_FIX (10.0), /* Start of scan area in mm (y) 7.9 */
|
||||
SANE_FIX (217.44), /* Size of scan area in mm (x) */
|
||||
SANE_FIX (299.0), /* Size of scan area in mm (y) */
|
||||
|
||||
|
@ -970,7 +970,7 @@ static Genesys_Model canon_lide_100_model = {
|
|||
GENESYS_HAS_SCAN_SW | GENESYS_HAS_COPY_SW | GENESYS_HAS_EMAIL_SW | GENESYS_HAS_FILE_SW,
|
||||
150,
|
||||
400
|
||||
}; /* this is completely untested -- hmg */
|
||||
};
|
||||
|
||||
static Genesys_Model canon_lide_200_model = {
|
||||
"canon-lide-200", /* Name */
|
||||
|
@ -1025,7 +1025,7 @@ static Genesys_Model canon_lide_200_model = {
|
|||
GENESYS_HAS_SCAN_SW | GENESYS_HAS_COPY_SW | GENESYS_HAS_EMAIL_SW | GENESYS_HAS_FILE_SW,
|
||||
150,
|
||||
400
|
||||
}; /* this is completely untested -- hmg */
|
||||
};
|
||||
|
||||
|
||||
static Genesys_Model canon_lide_60_model = {
|
||||
|
|
|
@ -180,15 +180,26 @@ gl847_bulk_read_data (Genesys_Device * dev, uint8_t addr,
|
|||
words = words * 256 + value;
|
||||
RIE (sanei_genesys_read_register (dev, 0x45, &value));
|
||||
words = words * 256 + value;
|
||||
DBG (DBG_io2, "gl847_bulk_read_data: %lu bytes available\n", (u_long) words);
|
||||
|
||||
if (len > 4 * words)
|
||||
words=words/2;
|
||||
words=words*2;
|
||||
|
||||
/* 100*1000=100ms is too much, 50ms also, 1ms is too small */
|
||||
/*usleep(50000); */
|
||||
|
||||
/* don't read more than available data */
|
||||
/*
|
||||
if (len > words)
|
||||
{
|
||||
target = 4 * words;
|
||||
target = words;
|
||||
}
|
||||
else
|
||||
{
|
||||
target = len;
|
||||
}
|
||||
*/
|
||||
target = len;
|
||||
|
||||
/* loop until computed data size is read */
|
||||
while (target)
|
||||
|
@ -637,6 +648,10 @@ gl847_set_ad_fe (Genesys_Device * dev, uint8_t set)
|
|||
DBG (DBG_proc, "gl847_set_ad_fe(): setting DAC %u\n",
|
||||
dev->model->dac_type);
|
||||
|
||||
/* sets to default values */
|
||||
sanei_genesys_init_fe (dev);
|
||||
}
|
||||
|
||||
/* reset DAC */
|
||||
status = sanei_genesys_fe_write_data (dev, 0x00, 0x80);
|
||||
if (status != SANE_STATUS_GOOD)
|
||||
|
@ -646,9 +661,6 @@ gl847_set_ad_fe (Genesys_Device * dev, uint8_t set)
|
|||
return status;
|
||||
}
|
||||
|
||||
/* sets to default values */
|
||||
sanei_genesys_init_fe (dev);
|
||||
|
||||
/* write them to analog frontend */
|
||||
val = dev->frontend.reg[0];
|
||||
status = sanei_genesys_fe_write_data (dev, 0x00, val);
|
||||
|
@ -666,9 +678,7 @@ gl847_set_ad_fe (Genesys_Device * dev, uint8_t set)
|
|||
sane_strstatus (status));
|
||||
return status;
|
||||
}
|
||||
}
|
||||
if (set == AFE_SET)
|
||||
{
|
||||
|
||||
for (i = 0; i < 3; i++)
|
||||
{
|
||||
val = dev->frontend.gain[i];
|
||||
|
@ -693,7 +703,7 @@ gl847_set_ad_fe (Genesys_Device * dev, uint8_t set)
|
|||
return status;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
DBG (DBG_proc, "gl847_set_ad_fe(): end\n");
|
||||
|
||||
return status;
|
||||
|
@ -783,10 +793,6 @@ HOME_FREE: 3
|
|||
r->value = (feedl >> 8) & 0xff;
|
||||
r = sanei_genesys_get_address (reg, 0x3f);
|
||||
r->value = feedl & 0xff;
|
||||
/* XXX STEF XXX
|
||||
r = sanei_genesys_get_address (reg, 0x5e);
|
||||
r->value &= ~0xe0;
|
||||
*/
|
||||
|
||||
r = sanei_genesys_get_address (reg, 0x25);
|
||||
r->value = (scan_lines >> 16) & 0xf;
|
||||
|
@ -860,9 +866,11 @@ gl847_init_motor_regs (Genesys_Device * dev, Genesys_Register_Set * reg, unsigne
|
|||
{
|
||||
/* FEED and GO_HOME can use fastest slopes available */
|
||||
fast_slope_steps = 256;
|
||||
fast_exposure = sanei_genesys_exposure_time2 (dev, dev->motor.base_ydpi / 4, 0, /*step_type */
|
||||
fast_exposure = sanei_genesys_exposure_time2 (dev, dev->motor.base_ydpi / 4,
|
||||
0, /*step_type */
|
||||
0, /*last used pixel */
|
||||
0, 0);
|
||||
0,
|
||||
0);
|
||||
|
||||
DBG (DBG_info, "gl847_init_motor_regs : fast_exposure=%d pixels\n",
|
||||
fast_exposure);
|
||||
|
@ -924,10 +932,6 @@ HOME_FREE: 3
|
|||
r->value = (feedl >> 8) & 0xff;
|
||||
r = sanei_genesys_get_address (reg, 0x3f);
|
||||
r->value = feedl & 0xff;
|
||||
/* XXX STEF XXX
|
||||
r = sanei_genesys_get_address (reg, 0x5e);
|
||||
r->value &= ~0xe0;
|
||||
*/
|
||||
|
||||
r = sanei_genesys_get_address (reg, 0x25);
|
||||
r->value = 0;
|
||||
|
@ -1079,7 +1083,10 @@ gl847_init_motor_regs_scan (Genesys_Device * dev, Genesys_Register_Set * reg, un
|
|||
scan_lines, scan_dummy, feed_steps, scan_power_mode, flags);
|
||||
|
||||
fast_exposure =
|
||||
sanei_genesys_exposure_time2 (dev, dev->motor.base_ydpi / 4, 0, 0, 0,
|
||||
sanei_genesys_exposure_time2 (dev, dev->motor.base_ydpi / 4,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
scan_power_mode);
|
||||
|
||||
DBG (DBG_info, "gl847_init_motor_regs_scan : fast_exposure=%d pixels\n",
|
||||
|
@ -1134,8 +1141,8 @@ gl847_init_motor_regs_scan (Genesys_Device * dev, Genesys_Register_Set * reg, un
|
|||
fast_slope_steps,
|
||||
0,
|
||||
fast_exposure,
|
||||
dev->motor.base_ydpi /
|
||||
4, &fast_slope_steps,
|
||||
dev->motor.base_ydpi / 4,
|
||||
&fast_slope_steps,
|
||||
&fast_exposure,
|
||||
scan_power_mode);
|
||||
|
||||
|
@ -1195,9 +1202,6 @@ gl847_init_motor_regs_scan (Genesys_Device * dev, Genesys_Register_Set * reg, un
|
|||
r->value = (feedl >> 8) & 0xff;
|
||||
r = sanei_genesys_get_address (reg, 0x3f);
|
||||
r->value = feedl & 0xff;
|
||||
/* XXX STEF XXX
|
||||
r = sanei_genesys_get_address (reg, 0x5e);
|
||||
r->value &= ~0xe0; */
|
||||
|
||||
r = sanei_genesys_get_address (reg, 0x25);
|
||||
r->value = (scan_lines >> 16) & 0xf;
|
||||
|
@ -1279,9 +1283,11 @@ gl847_init_motor_regs_scan (Genesys_Device * dev, Genesys_Register_Set * reg, un
|
|||
/* steps of table 0*/
|
||||
r = sanei_genesys_get_address (reg, 0x22);
|
||||
r->value = min_restep - slow_slope_steps * 2;
|
||||
|
||||
/* steps of table 1*/
|
||||
r = sanei_genesys_get_address (reg, 0x23);
|
||||
r->value = min_restep - back_slope_steps * 2;
|
||||
|
||||
|
||||
/*
|
||||
for z1/z2:
|
||||
|
@ -1425,6 +1431,10 @@ gl847_init_optical_regs_scan (Genesys_Device * dev,
|
|||
used_res, start, pixels, channels, depth, half_ccd, flags);
|
||||
|
||||
end = start + pixels;
|
||||
if(end>dev->sensor.sensor_pixels)
|
||||
{
|
||||
DBG (DBG_error, "XXX STEF XXX overflow\n");
|
||||
}
|
||||
|
||||
status = gl847_set_fe (dev, AFE_SET);
|
||||
if (status != SANE_STATUS_GOOD)
|
||||
|
@ -1579,11 +1589,13 @@ gl847_init_optical_regs_scan (Genesys_Device * dev,
|
|||
r->value = HIBYTE (LOWORD (words_per_line >> 2));
|
||||
r = sanei_genesys_get_address (reg, 0x37);
|
||||
r->value = LOBYTE (LOWORD (words_per_line >> 2));
|
||||
DBG (DBG_io2, "%s: words_per_line used=%d\n", __FUNCTION__, words_per_line);
|
||||
|
||||
r = sanei_genesys_get_address (reg, 0x38);
|
||||
r->value = HIBYTE (exposure_time);
|
||||
r = sanei_genesys_get_address (reg, 0x39);
|
||||
r->value = LOBYTE (exposure_time);
|
||||
DBG (DBG_io2, "%s: exposure_time used=%d\n", __FUNCTION__, exposure_time);
|
||||
|
||||
r = sanei_genesys_get_address (reg, 0x34);
|
||||
r->value = dev->sensor.dummy_pixel;
|
||||
|
@ -4159,10 +4171,11 @@ gl847_init (Genesys_Device * dev)
|
|||
dev->settings.color_filter = 0;
|
||||
|
||||
/* ASIC reset */
|
||||
/* XXX STEF XXX just writes 0 for GL841 */
|
||||
/* XXX STEF XXX just writes 0 for GL841
|
||||
RIE (sanei_genesys_write_register (dev, 0x0e, 0x01));
|
||||
sleep (1);
|
||||
sleep (1); */
|
||||
RIE (sanei_genesys_write_register (dev, 0x0e, 0x00));
|
||||
sleep (1);
|
||||
|
||||
/* setup GPIO */
|
||||
sanei_genesys_read_register (dev, REGA6, &val);
|
||||
|
@ -4367,7 +4380,7 @@ gl847_search_strip (Genesys_Device * dev, SANE_Bool forward, SANE_Bool black)
|
|||
if (status != SANE_STATUS_GOOD)
|
||||
{
|
||||
DBG (DBG_error,
|
||||
"gl847_search_strip: Failed to stop: %s\n",
|
||||
"gl847_search_strip: failed to stop: %s\n",
|
||||
sane_strstatus (status));
|
||||
return status;
|
||||
}
|
||||
|
|
Ładowanie…
Reference in New Issue