diff --git a/backend/genesys_devices.c b/backend/genesys_devices.c index 73d70bb35..55c7fbfc2 100644 --- a/backend/genesys_devices.c +++ b/backend/genesys_devices.c @@ -475,7 +475,7 @@ static Genesys_Sensor Sensor[] = { 73*8, /* black pixels 73 at 600 dpi */ 16*8, /* dummy pixels */ 384*8, /* CCD_startx_offset 384 at 600 dpi */ - 5186*8, /* 8x5570 segments */ + 5188*8, /* 8x5570 segments , 5187+1 for rounding */ 210, 200, {0x00, 0x00, 0x00, 0x00}, diff --git a/backend/genesys_gl847.c b/backend/genesys_gl847.c index 96070a4d3..420c4e40d 100644 --- a/backend/genesys_gl847.c +++ b/backend/genesys_gl847.c @@ -1215,7 +1215,8 @@ gl847_init_optical_regs_scan (Genesys_Device * dev, } dev->dist = sensor->segcnt; } - endx += dev->dist*(segnb-1); + /* use a segcnt rounded to next even number */ + endx += ((dev->dist+1)&0xfffe)*(segnb-1); used_pixels=endx-startx; status = gl847_set_fe (dev, AFE_SET); diff --git a/backend/genesys_gl847.h b/backend/genesys_gl847.h index 89a5e6829..9816cdc6c 100644 --- a/backend/genesys_gl847.h +++ b/backend/genesys_gl847.h @@ -612,6 +612,8 @@ static size_t order_01[]={0,1}; static size_t order_0213[]={0,2,1,3}; static size_t order_0246[]={0,2,4,6,1,3,5,7}; +static size_t new_order[]={0,1,2,3}; + /** * database of sensor profiles */ @@ -624,18 +626,18 @@ static Sensor_Profile sensors[]={ {CIS_CANONLIDE200, 150, 2848, 240, 636, 340, 5144, 0, 255, 637, 637, 637}, {CIS_CANONLIDE200, 300, 1424, 240, 636, 340, 5144, 0, 255, 637, 637, 637}, */ - {CIS_CANONLIDE200, 200, 2848, 60, 159, 85, 5136, 255, 410, 275, 203, NULL , 0x0a}, - {CIS_CANONLIDE200, 600, 1432, 60, 159, 85, 5136, 255, 410, 275, 203, NULL , 0x0a}, - {CIS_CANONLIDE200, 1200, 2712, 60, 159, 85, 5136, 255, 746, 478, 353, order_01 , 0x08}, - {CIS_CANONLIDE200, 2400, 5280, 60, 159, 85, 5136, 255, 1417, 909, 643, order_0213, 0x06}, - {CIS_CANONLIDE200, 4800, 10416, 60, 159, 85, 5136, 255, 2692, 1728, 1221, order_0246, 0x04}, + {CIS_CANONLIDE200, 200, 2848, 60, 159, 85, 5136, 255, 410, 275, 203, NULL , 0x0a}, + {CIS_CANONLIDE200, 600, 1432, 60, 159, 85, 5136, 255, 410, 275, 203, NULL , 0x0a}, + {CIS_CANONLIDE200, 1200, 2712, 60, 159, 85, 5136, 255, 746, 478, 353, order_01 , 0x08}, + {CIS_CANONLIDE200, 2400, 5280, 60, 159, 85, 5136, 255, 1417, 909, 643, order_0213, 0x06}, + {CIS_CANONLIDE200, 4800, 10416, 60, 159, 85, 5136, 255, 2692, 1728, 1221, order_0246, 0x04}, /* LiDE 700F */ - {CIS_CANONLIDE700, 150, 2848, 135, 249, 85, 5186, 255, 465, 310, 239, 0x0c}, - {CIS_CANONLIDE700, 300, 1424, 135, 249, 85, 5186, 255, 465, 310, 239, 0x0c}, - {CIS_CANONLIDE700, 600, 1504, 135, 249, 85, 5186, 255, 465, 310, 239, 0x0c}, - {CIS_CANONLIDE700, 1200, 2696, 135, 249, 85, 5186, 255, 1464, 844, 555, 0x0a}, /* 2696 */ - {CIS_CANONLIDE700, 2400, 10576, 135, 249, 85, 5186, 255, 2798, 1558, 972, 0x08}, + {CIS_CANONLIDE700, 150, 2848, 135, 249, 85, 5187, 255, 465, 310, 239, NULL , 0x0c}, + {CIS_CANONLIDE700, 300, 1424, 135, 249, 85, 5187, 255, 465, 310, 239, NULL , 0x0c}, + {CIS_CANONLIDE700, 600, 1504, 135, 249, 85, 5187, 255, 465, 310, 239, NULL , 0x0c}, + {CIS_CANONLIDE700, 1200, 2696, 135, 249, 85, 5187, 255, 1464, 844, 555, order_01 , 0x0a}, + {CIS_CANONLIDE700, 2400, 10576, 135, 249, 85, 5187, 255, 2798, 1558, 972, new_order , 0x08}, }; /* *INDENT-ON* */