Lines Matching refs:CIS

47                        -> priv = Mustek_PP_CIS_dev -> CIS
379 Mustek_PP_1015_show_val (dev->CIS.regs.in_regs[0]),
380 Mustek_PP_1015_show_val (dev->CIS.regs.in_regs[1]),
381 Mustek_PP_1015_show_val (dev->CIS.regs.in_regs[2]),
382 Mustek_PP_1015_show_val (dev->CIS.regs.in_regs[3]),
383 Mustek_PP_1015_show_val (dev->CIS.regs.out_regs[0][0]),
384 Mustek_PP_1015_show_val (dev->CIS.regs.out_regs[0][1]),
385 Mustek_PP_1015_show_val (dev->CIS.regs.out_regs[0][2]),
386 Mustek_PP_1015_show_val (dev->CIS.regs.out_regs[0][3]),
387 Mustek_PP_1015_show_val (dev->CIS.regs.out_regs[1][0]),
388 Mustek_PP_1015_show_val (dev->CIS.regs.out_regs[1][1]),
389 Mustek_PP_1015_show_val (dev->CIS.regs.out_regs[1][2]),
390 Mustek_PP_1015_show_val (dev->CIS.regs.out_regs[1][3]),
391 Mustek_PP_1015_show_val (dev->CIS.regs.out_regs[2][0]),
392 Mustek_PP_1015_show_val (dev->CIS.regs.out_regs[2][1]),
393 Mustek_PP_1015_show_val (dev->CIS.regs.out_regs[2][2]),
394 Mustek_PP_1015_show_val (dev->CIS.regs.out_regs[2][3]),
395 Mustek_PP_1015_show_val (dev->CIS.regs.out_regs[3][0]),
396 Mustek_PP_1015_show_val (dev->CIS.regs.out_regs[3][1]),
397 Mustek_PP_1015_show_val (dev->CIS.regs.out_regs[3][2]),
398 Mustek_PP_1015_show_val (dev->CIS.regs.out_regs[3][3]),
399 Mustek_PP_1015_show_val (dev->CIS.regs.channel),
400 (dev->CIS.regs.channel == 0x80 ? "RED" :
401 (dev->CIS.regs.channel == 0x40 ? "GREEN" :
402 (dev->CIS.regs.channel == 0xC0 ? "BLUE" : "unknown")))
445 dev->CIS.regs.in_regs[reg & 0x03] = tmp;
517 dev->CIS.regs.in_regs[reg & 0x03] = tmp;
567 dev->CIS.regs.out_regs[regBank][regNo] = val;
603 dev->CIS.regs.out_regs[regBank][regNo] = val1;
604 dev->CIS.regs.out_regs[regBank][regNo+1] = val2;
643 dev->CIS.regs.out_regs[regBank][regNo ] = val1;
644 dev->CIS.regs.out_regs[regBank][regNo+1] = val2;
645 dev->CIS.regs.out_regs[regBank][regNo+2] = val3;
667 dev->CIS.regs.current_write_reg = reg;
670 dev->CIS.regs.write_count = 0;
683 SANE_Byte regBank = (dev->CIS.regs.current_write_reg & 0xF0) >> 4;
684 SANE_Byte regNo = (dev->CIS.regs.current_write_reg & 0x0F);
689 dev->CIS.regs.out_regs[regBank][regNo] = val;
695 ++dev->CIS.regs.write_count;
705 SANE_Byte regBank = (dev->CIS.regs.current_write_reg & 0xF0) >> 4;
707 SANE_Byte regNo = (dev->CIS.regs.current_write_reg & 0x0F);
711 Mustek_PP_1015_reg_w_name(dev->CIS.regs.current_write_reg),
712 dev->CIS.regs.write_count);
740 ## CIS driver ##
750 return (int)((dist * dev->CIS.hw_hres) / dev->desc->dev->maxres + 0.5);
757 return (int)((dist * dev->CIS.hw_vres) / dev->desc->dev->maxres + 0.5);
764 return (int)((dist * dev->CIS.cisRes) / dev->desc->dev->maxres + 0.5);
770 return (int)((dist * dev->desc->dev->maxres) / dev->CIS.cisRes + 0.5);
777 return (int)((dist * dev->desc->dev->maxres) / dev->CIS.hw_vres + 0.5);
788 if (dev->CIS.use8KBank) dev->bank_count >>= 1;
799 dev->bank_count &= (dev->CIS.use8KBank == SANE_TRUE) ? 3 : 7;
846 * Configure the CIS for a given resolution.
848 * CIS scanners seem to have 2 modes:
865 /* Toshiba CIS: only 600 DPI + decimation */
866 switch (dev->CIS.hw_hres)
892 /* Canon CIS: sensor can use 300 or 600 DPI */
893 switch (dev->CIS.hw_hres)
920 DBG (4, "cis_set_dpi_value: dpi: %d -> value 0x%02x\n", dev->CIS.hw_hres, val);
930 assert (dev->CIS.channel < 3);
932 chancode = codes[dev->CIS.channel];
942 if (dev->CIS.setParameters)
951 dev->CIS.regs.channel = chancode;
960 if (dev->CIS.res != 0)
961 dev->CIS.hres_step =
962 SANE_FIX ((float) dev->CIS.hw_hres / (float) dev->CIS.res);
964 /* CIS: <= 300 dpi -> 0x86
967 if (dev->CIS.cisRes == 600)
974 if (dev->CIS.setParameters)
976 dev->CIS.channel = dev->desc->mode == MODE_COLOR ?
981 dev->CIS.channel = MUSTEK_PP_CIS_CHANNEL_GRAY;
1031 if (dev->CIS.setParameters == SANE_TRUE)
1043 skipCount += max2cis_hres(dev, dev->CIS.skipimagebytes);
1045 dev->CIS.cisRes);
1046 skipCount += (int)(2.0/25.4*dev->CIS.cisRes);
1061 Mustek_PP_1015_write_reg(dev, MA1015W_EXPOSE_TIME, dev->CIS.exposeTime);
1063 DBG(4, "cis_config_ccd: skipcount: %d imagebytes: %d\n", skipCount, dev->CIS.imagebytes);
1065 if (dev->CIS.setParameters == SANE_TRUE)
1067 Mustek_PP_1015_write_reg(dev, MA1015W_EXPOSE_TIME, dev->CIS.exposeTime);
1071 dev->CIS.adjustskip = max2hw_hres(dev, skipCount);
1072 byteCount = max2hw_hres(dev, skipCount + dev->CIS.imagebytes) + 2;
1073 dev->CIS.setParameters = SANE_FALSE;
1077 dev->CIS.adjustskip = 0;
1081 dev->CIS.adjustskip, byteCount);
1115 switch (dev->CIS.hw_vres)
1132 switch (dev->CIS.hw_vres)
1152 DBG(4, "cis_motor_forward: @%d dpi: 0x%02X.\n", dev->CIS.hw_vres, control);
1169 SANE_Byte savedExposeTime = dev->CIS.exposeTime;
1170 dev->CIS.exposeTime = 85;
1188 dev->CIS.exposeTime <<= 1;
1190 dev->CIS.exposeTime = savedExposeTime;
1249 dev->CIS.exposeTime);
1251 dev->CIS.powerOnDelay[dev->CIS.channel]);
1275 if (dev->CIS.channel == moveAtChannel && !dev->CIS.dontMove)
1284 ++dev->CIS.channel;
1285 dev->CIS.channel %= 3;
1299 dev->CIS.dontIncRead = SANE_TRUE;
1301 dev->CIS.channel = dev->desc->mode == MODE_COLOR ?
1335 int ctr, skips = dev->CIS.adjustskip, cval;
1346 if (dev->CIS.delay) delay_read(dev->CIS.delay);
1350 if (dev->CIS.hw_hres == dev->CIS.res)
1356 if (dev->CIS.delay) delay_read(dev->CIS.delay);
1382 else if (dev->CIS.hw_hres > dev->CIS.res)
1391 if (dev->CIS.delay) delay_read(dev->CIS.delay);
1402 pos += dev->CIS.hres_step;
1429 SANE_Int step = SANE_FIX(1) - dev->CIS.hres_step;
1435 if (dev->CIS.delay) delay_read(dev->CIS.delay);
1499 if (!dev->CIS.dontIncRead)
1502 dev->CIS.dontIncRead = SANE_FALSE;
1514 dev->calib_low[dev->CIS.channel],
1515 dev->calib_hi[dev->CIS.channel],
1517 dev->desc->gamma_table[dev->CIS.channel] : NULL));
1527 int ctr, channel, first, last, stride, step = dev->CIS.line_step;
1605 dev->Saved_CIS = dev->CIS;
1614 dev->CIS = dev->Saved_CIS;
1648 dev->CIS.powerOnDelay[channel] = 170;
1652 dev->CIS.setParameters = SANE_TRUE;
1653 dev->CIS.exposeTime = exposeTime[MUSTEK_PP_CIS_CHANNEL_GREEN];
1657 dev->CIS.dontMove = SANE_TRUE; /* Don't move while calibrating */
1676 dev->CIS.channel = first;
1684 dev->CIS.powerOnDelay[channel] = (powerOnDelayLower[channel] +
1688 dev->CIS.powerOnDelay[1]); /* Green */
1711 powerOnDelayLower[channel] = dev->CIS.powerOnDelay[channel];
1715 powerOnDelayUpper[channel] = dev->CIS.powerOnDelay[channel];
1723 dev->CIS.powerOnDelay[0], dev->CIS.powerOnDelay[1],
1724 dev->CIS.powerOnDelay[2]);
1726 dev->CIS.dontMove = SANE_FALSE;
1729 dev->CIS.powerOnDelay[0], dev->CIS.powerOnDelay[1],
1730 dev->CIS.powerOnDelay[2]);
1732 minExposeTime = (dev->CIS.hw_hres <= 300) ? 170 : 253;
1736 dev->CIS.powerOnDelay[channel] = (powerOnDelayLower[channel] +
1738 exposeTime[channel] -= dev->CIS.powerOnDelay[channel] - 1;
1739 dev->CIS.powerOnDelay[channel] = 1;
1743 dev->CIS.powerOnDelay[channel] +=
1749 dev->CIS.exposeTime = exposeTime[MUSTEK_PP_CIS_CHANNEL_GREEN];
1753 dev->CIS.powerOnDelay[0], dev->CIS.powerOnDelay[1],
1754 dev->CIS.powerOnDelay[2]);
1760 dev->CIS.exposeTime = 170;
1761 dev->CIS.powerOnDelay[0] = 120;
1762 dev->CIS.powerOnDelay[1] = 120;
1763 dev->CIS.powerOnDelay[2] = 120;
1782 dev->CIS.channel = first;
1791 --dev->CIS.skipsToOrigin;
1811 --dev->CIS.skipsToOrigin;
1855 powerOnDelay[channel] = dev->CIS.powerOnDelay[channel];
1856 dev->CIS.powerOnDelay[channel] = dev->CIS.exposeTime;
1866 dev->CIS.powerOnDelay[channel] = powerOnDelay[channel];
1921 assert(dev->CIS.adjustskip == 0);
1937 dev->CIS.delay = 0; /* Initialize to zero, measure next */
1939 saved_res = dev->CIS.res;
1940 dev->CIS.res = dev->CIS.hw_hres;
1953 dev->CIS.delay = d;
1985 DBG (3, "cis_measure_delay: delay %d\n", dev->CIS.delay);
1990 dev->CIS.res = saved_res;
2001 dev->CIS.delay = 0;
2004 DBG (3, "cis_measure_delay: delay %d\n", dev->CIS.delay);
2018 SANE_Byte savedExposeTime = dev->CIS.exposeTime;
2021 dev->CIS.exposeTime = 170;
2023 dev->CIS.exposeTime = savedExposeTime;
2033 * Does a full reset of the device, ie. configures the CIS to a default
2041 dev->CIS.adjustskip = 0;
2042 dev->CIS.dontIncRead = SANE_TRUE;
2043 dev->CIS.dontMove = SANE_FALSE;
2047 dev->CIS.hw_hres = 300;
2048 dev->CIS.channel = MUSTEK_PP_CIS_CHANNEL_GREEN;
2049 dev->CIS.setParameters = SANE_FALSE;
2050 dev->CIS.exposeTime = 0xAA;
2061 int i, saved_res = dev->CIS.res, saved_vres = dev->CIS.hw_vres;
2065 * (it is assumed that the lamp is at the origin, and that the CIS is
2101 * - configure the CIS : actual resolution + set parameters
2117 dev->CIS.hw_vres = dev->desc->dev->maxres;
2119 dev->CIS.skipsToOrigin = dev->top_skip; /*max2hw_vres(dev, dev->top_skip); */
2145 if (dev->CIS.hw_hres < dev->CIS.res)
2146 dev->CIS.res = dev->CIS.hw_hres;
2154 dev->CIS.res = saved_res;
2155 dev->CIS.hw_vres = saved_vres;
2158 /* dev->CIS.skipsToOrigin = hw2max_vres(dev, dev->CIS.skipsToOrigin); */
2162 dev->CIS.skipsToOrigin);
2163 cis_move_motor(dev, dev->CIS.skipsToOrigin);
2241 /* CIS driver only works for MA1015 chipset */
2386 cisdev->CIS.hw_hres = 300;
2387 cisdev->CIS.cisRes = 300;
2388 cisdev->CIS.hw_vres = 300;
2549 cisdev->CIS.exposeTime = 0xAA;
2550 cisdev->CIS.setParameters = SANE_FALSE;
2551 cisdev->CIS.use8KBank = SANE_TRUE;
2552 cisdev->CIS.imagebytes = dev->bottomX - dev->topX;
2553 cisdev->CIS.skipimagebytes = dev->topX;
2555 cisdev->CIS.res = dev->res;
2561 cisdev->CIS.hw_hres = 50;
2565 cisdev->CIS.hw_hres = 75;
2569 cisdev->CIS.hw_hres = 100;
2573 cisdev->CIS.hw_hres = 200;
2577 cisdev->CIS.hw_hres = 300;
2583 cisdev->CIS.hw_hres = 300; /* Limit for 600 CP */
2587 cisdev->CIS.hw_hres = 400;
2591 cisdev->CIS.hw_hres = 600; /* Limit for 1200 CP/CP+ */
2599 cisdev->CIS.hw_vres = 150;
2603 cisdev->CIS.hw_vres = 300;
2607 cisdev->CIS.hw_vres = 600;
2614 cisdev->CIS.hw_vres = 300;
2618 cisdev->CIS.hw_vres = 600;
2622 cisdev->CIS.hw_vres = 1200;
2628 cisdev->CIS.cisRes = 300;
2630 cisdev->CIS.cisRes = 600;
2635 if (dev->res > cisdev->CIS.hw_hres)
2636 cisdev->calib_pixels = (pixels * cisdev->CIS.hw_hres) / dev->res;
2641 cisdev->CIS.hw_hres, cisdev->CIS.hw_vres, cisdev->CIS.cisRes);
2657 cisdev->CIS.regs.in_regs[i] = -1;
2660 cisdev->CIS.regs.out_regs[i][j] = -1;
2664 cisdev->CIS.regs.channel = -1;
2666 cisdev->CIS.regs.in_regs[0] = 0xA5;
2756 cisdev->CIS.setParameters = SANE_TRUE;
2762 cisdev->CIS.line_step =
2763 SANE_FIX ((float) cisdev->CIS.hw_vres / (float) cisdev->CIS.res);
2770 cisdev->line_diff = cisdev->CIS.line_step;
2841 if (cisdev->CIS.mode == MODE_COLOR)