kopia lustrzana https://gitlab.com/sane-project/backends
genesys: Sort the initial register map by register on GL843
rodzic
a6a09f5dc5
commit
f84f1b9d42
|
@ -279,6 +279,16 @@ gl843_init_registers (Genesys_Device * dev)
|
||||||
SETREG (0x01, 0x00);
|
SETREG (0x01, 0x00);
|
||||||
SETREG (0x02, 0x78);
|
SETREG (0x02, 0x78);
|
||||||
SETREG (0x03, 0x1f);
|
SETREG (0x03, 0x1f);
|
||||||
|
if (dev->model->model_id == MODEL_HP_SCANJET_G4010 ||
|
||||||
|
dev->model->model_id == MODEL_HP_SCANJET_G4050 ||
|
||||||
|
dev->model->model_id == MODEL_HP_SCANJET_4850C)
|
||||||
|
{
|
||||||
|
SETREG(0x03, 0x1d);
|
||||||
|
}
|
||||||
|
if (dev->model->model_id == MODEL_CANON_CANOSCAN_8400F) {
|
||||||
|
SETREG(0x03, 0x1c);
|
||||||
|
}
|
||||||
|
|
||||||
SETREG (0x04, 0x10);
|
SETREG (0x04, 0x10);
|
||||||
|
|
||||||
// fine tune upon device description
|
// fine tune upon device description
|
||||||
|
@ -309,18 +319,49 @@ gl843_init_registers (Genesys_Device * dev)
|
||||||
|
|
||||||
// TODO: on 8600F the windows driver turns off GAIN4 which is recommended
|
// TODO: on 8600F the windows driver turns off GAIN4 which is recommended
|
||||||
SETREG (0x06, 0xd8); /* SCANMOD=110, PWRBIT and GAIN4 */
|
SETREG (0x06, 0xd8); /* SCANMOD=110, PWRBIT and GAIN4 */
|
||||||
|
if (dev->model->model_id == MODEL_HP_SCANJET_G4010 ||
|
||||||
|
dev->model->model_id == MODEL_HP_SCANJET_G4050 ||
|
||||||
|
dev->model->model_id == MODEL_HP_SCANJET_4850C)
|
||||||
|
{
|
||||||
|
SETREG(0x06, 0xd8); /* SCANMOD=110, PWRBIT and GAIN4 */
|
||||||
|
}
|
||||||
|
if (dev->model->model_id == MODEL_CANON_CANOSCAN_4400F) {
|
||||||
|
SETREG(0x06, 0xf0); /* SCANMOD=111, PWRBIT and no GAIN4 */
|
||||||
|
}
|
||||||
|
|
||||||
SETREG (0x08, 0x00);
|
SETREG (0x08, 0x00);
|
||||||
SETREG (0x09, 0x00);
|
SETREG (0x09, 0x00);
|
||||||
SETREG (0x0a, 0x00);
|
SETREG (0x0a, 0x00);
|
||||||
|
if (dev->model->model_id == MODEL_HP_SCANJET_G4010 ||
|
||||||
|
dev->model->model_id == MODEL_HP_SCANJET_G4050 ||
|
||||||
|
dev->model->model_id == MODEL_HP_SCANJET_4850C)
|
||||||
|
{
|
||||||
|
SETREG(0x0a, 0x18);
|
||||||
|
}
|
||||||
|
if (dev->model->model_id == MODEL_CANON_CANOSCAN_8400F) {
|
||||||
|
SETREG(0x0a, 0x10);
|
||||||
|
}
|
||||||
|
|
||||||
// This register controls clock and RAM settings and is further modified in
|
// This register controls clock and RAM settings and is further modified in
|
||||||
// gl843_boot
|
// gl843_boot
|
||||||
SETREG (0x0b, 0x6a);
|
SETREG (0x0b, 0x6a);
|
||||||
|
|
||||||
if (dev->model->model_id == MODEL_CANON_CANOSCAN_8600F)
|
if (dev->model->model_id == MODEL_CANON_CANOSCAN_4400F) {
|
||||||
{
|
SETREG(0x0b, 0x69); // 16M only
|
||||||
|
}
|
||||||
|
if (dev->model->model_id == MODEL_CANON_CANOSCAN_8600F) {
|
||||||
SETREG(0x0b, 0x89);
|
SETREG(0x0b, 0x89);
|
||||||
}
|
}
|
||||||
|
if (dev->model->model_id == MODEL_HP_SCANJET_G4010 ||
|
||||||
|
dev->model->model_id == MODEL_HP_SCANJET_G4050 ||
|
||||||
|
dev->model->model_id == MODEL_HP_SCANJET_4850C)
|
||||||
|
{
|
||||||
|
SETREG(0x0b, 0x69);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (dev->model->model_id != MODEL_CANON_CANOSCAN_8400F) {
|
||||||
|
SETREG (0x0c, 0x00);
|
||||||
|
}
|
||||||
|
|
||||||
// EXPR[0:15], EXPG[0:15], EXPB[0:15]: Exposure time settings.
|
// EXPR[0:15], EXPG[0:15], EXPB[0:15]: Exposure time settings.
|
||||||
SETREG(0x10, 0x00); // SENSOR_DEF
|
SETREG(0x10, 0x00); // SENSOR_DEF
|
||||||
|
@ -329,12 +370,22 @@ gl843_init_registers (Genesys_Device * dev)
|
||||||
SETREG(0x13, 0x00); // SENSOR_DEF
|
SETREG(0x13, 0x00); // SENSOR_DEF
|
||||||
SETREG(0x14, 0x00); // SENSOR_DEF
|
SETREG(0x14, 0x00); // SENSOR_DEF
|
||||||
SETREG(0x15, 0x00); // SENSOR_DEF
|
SETREG(0x15, 0x00); // SENSOR_DEF
|
||||||
if (dev->model->model_id == MODEL_CANON_CANOSCAN_8600F)
|
if (dev->model->model_id == MODEL_CANON_CANOSCAN_4400F ||
|
||||||
|
dev->model->model_id == MODEL_CANON_CANOSCAN_8600F)
|
||||||
{
|
{
|
||||||
dev->reg.set16(REG_EXPR, 0x9c40);
|
dev->reg.set16(REG_EXPR, 0x9c40);
|
||||||
dev->reg.set16(REG_EXPG, 0x9c40);
|
dev->reg.set16(REG_EXPG, 0x9c40);
|
||||||
dev->reg.set16(REG_EXPB, 0x9c40);
|
dev->reg.set16(REG_EXPB, 0x9c40);
|
||||||
}
|
}
|
||||||
|
if (dev->model->model_id == MODEL_HP_SCANJET_G4010 ||
|
||||||
|
dev->model->model_id == MODEL_HP_SCANJET_G4050 ||
|
||||||
|
dev->model->model_id == MODEL_HP_SCANJET_4850C)
|
||||||
|
{
|
||||||
|
dev->reg.set16(REG_EXPR, 0x2c09);
|
||||||
|
dev->reg.set16(REG_EXPG, 0x22b8);
|
||||||
|
dev->reg.set16(REG_EXPB, 0x10f0);
|
||||||
|
}
|
||||||
|
|
||||||
// CCD signal settings.
|
// CCD signal settings.
|
||||||
SETREG(0x16, 0x33); // SENSOR_DEF
|
SETREG(0x16, 0x33); // SENSOR_DEF
|
||||||
SETREG(0x17, 0x1c); // SENSOR_DEF
|
SETREG(0x17, 0x1c); // SENSOR_DEF
|
||||||
|
@ -350,10 +401,14 @@ gl843_init_registers (Genesys_Device * dev)
|
||||||
SETREG(0x1d, 0x04); // SENSOR_DEF
|
SETREG(0x1d, 0x04); // SENSOR_DEF
|
||||||
|
|
||||||
SETREG(0x1e, 0x10);
|
SETREG(0x1e, 0x10);
|
||||||
if (dev->model->model_id == MODEL_CANON_CANOSCAN_8600F)
|
if (dev->model->model_id == MODEL_CANON_CANOSCAN_4400F ||
|
||||||
|
dev->model->model_id == MODEL_CANON_CANOSCAN_8600F)
|
||||||
{
|
{
|
||||||
SETREG(0x1e, 0x20);
|
SETREG(0x1e, 0x20);
|
||||||
}
|
}
|
||||||
|
if (dev->model->model_id == MODEL_CANON_CANOSCAN_8400F) {
|
||||||
|
SETREG(0x1e, 0xa0);
|
||||||
|
}
|
||||||
|
|
||||||
SETREG (0x1f, 0x01);
|
SETREG (0x1f, 0x01);
|
||||||
if (dev->model->model_id == MODEL_CANON_CANOSCAN_8600F)
|
if (dev->model->model_id == MODEL_CANON_CANOSCAN_8600F)
|
||||||
|
@ -363,17 +418,19 @@ gl843_init_registers (Genesys_Device * dev)
|
||||||
|
|
||||||
SETREG (0x20, 0x10);
|
SETREG (0x20, 0x10);
|
||||||
SETREG (0x21, 0x04);
|
SETREG (0x21, 0x04);
|
||||||
|
|
||||||
SETREG(0x22, 0x01);
|
SETREG(0x22, 0x01);
|
||||||
if (dev->model->model_id == MODEL_CANON_CANOSCAN_8600F)
|
SETREG(0x23, 0x01);
|
||||||
|
if (dev->model->model_id == MODEL_CANON_CANOSCAN_4400F ||
|
||||||
|
dev->model->model_id == MODEL_CANON_CANOSCAN_8600F)
|
||||||
{
|
{
|
||||||
SETREG(0x22, 0xc8);
|
SETREG(0x22, 0xc8);
|
||||||
}
|
|
||||||
|
|
||||||
SETREG (0x23, 0x01);
|
|
||||||
if (dev->model->model_id == MODEL_CANON_CANOSCAN_8600F)
|
|
||||||
{
|
|
||||||
SETREG(0x23, 0xc8);
|
SETREG(0x23, 0xc8);
|
||||||
}
|
}
|
||||||
|
if (dev->model->model_id == MODEL_CANON_CANOSCAN_8400F) {
|
||||||
|
SETREG(0x22, 0x50);
|
||||||
|
SETREG(0x23, 0x50);
|
||||||
|
}
|
||||||
|
|
||||||
SETREG (0x24, 0x04);
|
SETREG (0x24, 0x04);
|
||||||
SETREG (0x25, 0x00);
|
SETREG (0x25, 0x00);
|
||||||
|
@ -442,15 +499,22 @@ gl843_init_registers (Genesys_Device * dev)
|
||||||
// STOPTIM[0:4]: The stop duration between change of directions in
|
// STOPTIM[0:4]: The stop duration between change of directions in
|
||||||
// backtracking
|
// backtracking
|
||||||
SETREG(0x5e, 0x23);
|
SETREG(0x5e, 0x23);
|
||||||
if (dev->model->model_id == MODEL_CANON_CANOSCAN_8600F)
|
if (dev->model->model_id == MODEL_CANON_CANOSCAN_4400F) {
|
||||||
{
|
SETREG(0x5e, 0x3f);
|
||||||
|
}
|
||||||
|
if (dev->model->model_id == MODEL_CANON_CANOSCAN_8400F) {
|
||||||
|
SETREG(0x5e, 0x85);
|
||||||
|
}
|
||||||
|
if (dev->model->model_id == MODEL_CANON_CANOSCAN_8600F) {
|
||||||
SETREG(0x5e, 0x1f);
|
SETREG(0x5e, 0x1f);
|
||||||
}
|
}
|
||||||
|
|
||||||
//FMOVDEC: The number of deceleration steps in table 5 for auto-go-home
|
//FMOVDEC: The number of deceleration steps in table 5 for auto-go-home
|
||||||
SETREG(0x5f, 0x01);
|
SETREG(0x5f, 0x01);
|
||||||
if (dev->model->model_id == MODEL_CANON_CANOSCAN_8600F)
|
if (dev->model->model_id == MODEL_CANON_CANOSCAN_4400F) {
|
||||||
{
|
SETREG(0x5f, 0xf0);
|
||||||
|
}
|
||||||
|
if (dev->model->model_id == MODEL_CANON_CANOSCAN_8600F) {
|
||||||
SETREG(0x5f, 0xf0);
|
SETREG(0x5f, 0xf0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -491,10 +555,20 @@ gl843_init_registers (Genesys_Device * dev)
|
||||||
|
|
||||||
// GPIO-related register bits
|
// GPIO-related register bits
|
||||||
SETREG(0x6b, 0x30);
|
SETREG(0x6b, 0x30);
|
||||||
if (dev->model->model_id == MODEL_CANON_CANOSCAN_8600F)
|
if (dev->model->model_id == MODEL_CANON_CANOSCAN_4400F ||
|
||||||
|
dev->model->model_id == MODEL_CANON_CANOSCAN_8600F)
|
||||||
{
|
{
|
||||||
SETREG(0x6b, 0x72);
|
SETREG(0x6b, 0x72);
|
||||||
}
|
}
|
||||||
|
if (dev->model->model_id == MODEL_CANON_CANOSCAN_8400F) {
|
||||||
|
SETREG(0x6b, 0xb1);
|
||||||
|
}
|
||||||
|
if (dev->model->model_id == MODEL_HP_SCANJET_G4010 ||
|
||||||
|
dev->model->model_id == MODEL_HP_SCANJET_G4050 ||
|
||||||
|
dev->model->model_id == MODEL_HP_SCANJET_4850C)
|
||||||
|
{
|
||||||
|
SETREG(0x6b, 0xf4);
|
||||||
|
}
|
||||||
|
|
||||||
// 0x6c, 0x6d, 0x6e, 0x6f are set according to gpio tables. See
|
// 0x6c, 0x6d, 0x6e, 0x6f are set according to gpio tables. See
|
||||||
// gl843_init_gpio.
|
// gl843_init_gpio.
|
||||||
|
@ -508,13 +582,33 @@ gl843_init_registers (Genesys_Device * dev)
|
||||||
SETREG(0x72, 0x04);
|
SETREG(0x72, 0x04);
|
||||||
SETREG(0x73, 0x05);
|
SETREG(0x73, 0x05);
|
||||||
|
|
||||||
if (dev->model->model_id == MODEL_CANON_CANOSCAN_8600F)
|
if (dev->model->model_id == MODEL_CANON_CANOSCAN_4400F) {
|
||||||
{
|
SETREG(0x70, 0x01);
|
||||||
|
SETREG(0x71, 0x03);
|
||||||
|
SETREG(0x72, 0x01);
|
||||||
|
SETREG(0x73, 0x03);
|
||||||
|
}
|
||||||
|
if (dev->model->model_id == MODEL_CANON_CANOSCAN_8400F) {
|
||||||
|
SETREG(0x70, 0x01);
|
||||||
|
SETREG(0x71, 0x03);
|
||||||
|
SETREG(0x72, 0x03);
|
||||||
|
SETREG(0x73, 0x04);
|
||||||
|
}
|
||||||
|
if (dev->model->model_id == MODEL_CANON_CANOSCAN_8600F) {
|
||||||
SETREG(0x70, 0x00);
|
SETREG(0x70, 0x00);
|
||||||
SETREG(0x71, 0x02);
|
SETREG(0x71, 0x02);
|
||||||
SETREG(0x72, 0x02);
|
SETREG(0x72, 0x02);
|
||||||
SETREG(0x73, 0x04);
|
SETREG(0x73, 0x04);
|
||||||
}
|
}
|
||||||
|
if (dev->model->model_id == MODEL_HP_SCANJET_G4010 ||
|
||||||
|
dev->model->model_id == MODEL_HP_SCANJET_G4050 ||
|
||||||
|
dev->model->model_id == MODEL_HP_SCANJET_4850C)
|
||||||
|
{
|
||||||
|
SETREG(0x70, 0x00);
|
||||||
|
SETREG(0x71, 0x02);
|
||||||
|
SETREG(0x72, 0x00);
|
||||||
|
SETREG(0x73, 0x00);
|
||||||
|
}
|
||||||
|
|
||||||
// CK1MAP[0:17], CK3MAP[0:17], CK4MAP[0:17]: CCD clock bit mapping setting.
|
// CK1MAP[0:17], CK3MAP[0:17], CK4MAP[0:17]: CCD clock bit mapping setting.
|
||||||
SETREG(0x74, 0x00); // SENSOR_DEF
|
SETREG(0x74, 0x00); // SENSOR_DEF
|
||||||
|
@ -529,6 +623,9 @@ gl843_init_registers (Genesys_Device * dev)
|
||||||
|
|
||||||
// various AFE settings
|
// various AFE settings
|
||||||
SETREG(0x7d, 0x00);
|
SETREG(0x7d, 0x00);
|
||||||
|
if (dev->model->model_id == MODEL_CANON_CANOSCAN_8400F) {
|
||||||
|
SETREG(0x7d, 0x20);
|
||||||
|
}
|
||||||
|
|
||||||
// GPOLED[x]: LED vs GPIO settings
|
// GPOLED[x]: LED vs GPIO settings
|
||||||
SETREG(0x7e, 0x00);
|
SETREG(0x7e, 0x00);
|
||||||
|
@ -540,6 +637,18 @@ gl843_init_registers (Genesys_Device * dev)
|
||||||
// VRHOME, VRMOVE, VRBACK, VRSCAN: Vref settings of the motor driver IC for
|
// VRHOME, VRMOVE, VRBACK, VRSCAN: Vref settings of the motor driver IC for
|
||||||
// moving in various situations.
|
// moving in various situations.
|
||||||
SETREG(0x80, 0x00);
|
SETREG(0x80, 0x00);
|
||||||
|
if (dev->model->model_id == MODEL_CANON_CANOSCAN_4400F) {
|
||||||
|
SETREG(0x80, 0x0c);
|
||||||
|
}
|
||||||
|
if (dev->model->model_id == MODEL_CANON_CANOSCAN_8400F) {
|
||||||
|
SETREG(0x80, 0x28);
|
||||||
|
}
|
||||||
|
if (dev->model->model_id == MODEL_HP_SCANJET_G4010 ||
|
||||||
|
dev->model->model_id == MODEL_HP_SCANJET_G4050 ||
|
||||||
|
dev->model->model_id == MODEL_HP_SCANJET_4850C)
|
||||||
|
{
|
||||||
|
SETREG(0x80, 0x50);
|
||||||
|
}
|
||||||
|
|
||||||
if (dev->model->model_id != MODEL_CANON_CANOSCAN_4400F)
|
if (dev->model->model_id != MODEL_CANON_CANOSCAN_4400F)
|
||||||
{
|
{
|
||||||
|
@ -555,14 +664,15 @@ gl843_init_registers (Genesys_Device * dev)
|
||||||
}
|
}
|
||||||
|
|
||||||
SETREG(0x87, 0x00);
|
SETREG(0x87, 0x00);
|
||||||
if (dev->model->model_id == MODEL_CANON_CANOSCAN_8600F)
|
if (dev->model->model_id == MODEL_CANON_CANOSCAN_4400F ||
|
||||||
|
dev->model->model_id == MODEL_CANON_CANOSCAN_8400F ||
|
||||||
|
dev->model->model_id == MODEL_CANON_CANOSCAN_8600F)
|
||||||
{
|
{
|
||||||
SETREG(0x87, 0x02);
|
SETREG(0x87, 0x02);
|
||||||
}
|
}
|
||||||
|
|
||||||
// MTRPLS[0:7]: The width of the ADF motor trigger signal pulse.
|
// MTRPLS[0:7]: The width of the ADF motor trigger signal pulse.
|
||||||
if (dev->model->model_id == MODEL_CANON_CANOSCAN_8600F)
|
if (dev->model->model_id != MODEL_CANON_CANOSCAN_8400F) {
|
||||||
{
|
|
||||||
SETREG(0x94, 0xff);
|
SETREG(0x94, 0xff);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -579,130 +689,78 @@ gl843_init_registers (Genesys_Device * dev)
|
||||||
SETREG(0x9a, 0x00);
|
SETREG(0x9a, 0x00);
|
||||||
SETREG(0x9b, 0x00);
|
SETREG(0x9b, 0x00);
|
||||||
}
|
}
|
||||||
|
if (dev->model->model_id == MODEL_HP_SCANJET_G4010 ||
|
||||||
|
dev->model->model_id == MODEL_HP_SCANJET_G4050 ||
|
||||||
|
dev->model->model_id == MODEL_HP_SCANJET_4850C)
|
||||||
|
{
|
||||||
|
// TODO: move to set for scan
|
||||||
|
SETREG(0x98, 0x03);
|
||||||
|
SETREG(0x99, 0x30);
|
||||||
|
SETREG(0x9a, 0x01);
|
||||||
|
SETREG(0x9b, 0x80);
|
||||||
|
}
|
||||||
|
|
||||||
// RMADLY[0:1], MOTLAG, CMODE, STEPTIM, MULDMYLN, IFRS
|
// RMADLY[0:1], MOTLAG, CMODE, STEPTIM, MULDMYLN, IFRS
|
||||||
SETREG(0x9d, 0x04);
|
SETREG(0x9d, 0x04);
|
||||||
if (dev->model->model_id == MODEL_CANON_CANOSCAN_8600F)
|
if (dev->model->model_id == MODEL_CANON_CANOSCAN_4400F ||
|
||||||
|
dev->model->model_id == MODEL_CANON_CANOSCAN_8400F ||
|
||||||
|
dev->model->model_id == MODEL_CANON_CANOSCAN_8600F ||
|
||||||
|
dev->model->model_id == MODEL_HP_SCANJET_G4010 ||
|
||||||
|
dev->model->model_id == MODEL_HP_SCANJET_G4050 ||
|
||||||
|
dev->model->model_id == MODEL_HP_SCANJET_4850C)
|
||||||
{
|
{
|
||||||
SETREG(0x9d, 0x08); // additionally sets the multiplier for slope tables
|
SETREG(0x9d, 0x08); // sets the multiplier for slope tables
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// SEL3INV, TGSTIME[0:2], TGWTIME[0:2]
|
// SEL3INV, TGSTIME[0:2], TGWTIME[0:2]
|
||||||
|
if (dev->model->model_id != MODEL_CANON_CANOSCAN_8400F)
|
||||||
|
{
|
||||||
SETREG(0x9e, 0x00); // SENSOR_DEF
|
SETREG(0x9e, 0x00); // SENSOR_DEF
|
||||||
|
}
|
||||||
|
|
||||||
// RFHSET[0:4]: Refresh time of SDRAM in units of 2us
|
// RFHSET[0:4]: Refresh time of SDRAM in units of 2us
|
||||||
if (dev->model->model_id == MODEL_CANON_CANOSCAN_8600F)
|
if (dev->model->model_id == MODEL_CANON_CANOSCAN_4400F ||
|
||||||
|
dev->model->model_id == MODEL_CANON_CANOSCAN_8600F)
|
||||||
{
|
{
|
||||||
SETREG(0xa2, 0x1f);
|
SETREG(0xa2, 0x1f);
|
||||||
}
|
}
|
||||||
|
|
||||||
// 0xa6-0xa9: controls gpio, see gl843_gpio_init
|
// 0xa6-0xa9: controls gpio, see gl843_gpio_init
|
||||||
|
|
||||||
// GPOM9, MULSTOP[0-2], NODECEL, TB3TB1, TB5TB2, FIX16CLK.
|
// not documented
|
||||||
if (dev->model->model_id == MODEL_CANON_CANOSCAN_8600F)
|
|
||||||
{
|
|
||||||
SETREG(0xab, 0x00);
|
|
||||||
}
|
|
||||||
|
|
||||||
// VRHOME[3:2], VRMOVE[3:2], VRBACK[3:2]: Vref setting of the motor driver IC
|
|
||||||
// for various situations.
|
|
||||||
if (dev->model->model_id == MODEL_CANON_CANOSCAN_8600F)
|
|
||||||
{
|
|
||||||
SETREG(0xac, 0x00);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (dev->model->model_id != MODEL_CANON_CANOSCAN_8400F)
|
|
||||||
{
|
|
||||||
SETREG (0x0c, 0x00);
|
|
||||||
SETREG (0x94, 0xff);
|
|
||||||
SETREG (0xab, 0x50);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (dev->model->model_id != MODEL_CANON_CANOSCAN_4400F
|
if (dev->model->model_id != MODEL_CANON_CANOSCAN_4400F
|
||||||
&& dev->model->model_id != MODEL_CANON_CANOSCAN_8400F)
|
&& dev->model->model_id != MODEL_CANON_CANOSCAN_8400F)
|
||||||
{
|
{
|
||||||
SETREG(0xaa, 0x00);
|
SETREG(0xaa, 0x00);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* G4050 values */
|
// GPOM9, MULSTOP[0-2], NODECEL, TB3TB1, TB5TB2, FIX16CLK.
|
||||||
|
if (dev->model->model_id != MODEL_CANON_CANOSCAN_8400F) {
|
||||||
|
SETREG(0xab, 0x50);
|
||||||
|
}
|
||||||
|
if (dev->model->model_id == MODEL_CANON_CANOSCAN_4400F) {
|
||||||
|
SETREG(0xab, 0x00);
|
||||||
|
}
|
||||||
if (dev->model->model_id == MODEL_HP_SCANJET_G4010 ||
|
if (dev->model->model_id == MODEL_HP_SCANJET_G4010 ||
|
||||||
dev->model->model_id == MODEL_HP_SCANJET_G4050 ||
|
dev->model->model_id == MODEL_HP_SCANJET_G4050 ||
|
||||||
dev->model->model_id == MODEL_HP_SCANJET_4850C)
|
dev->model->model_id == MODEL_HP_SCANJET_4850C)
|
||||||
{
|
{
|
||||||
SETREG (0x03, 0x1d);
|
// BUG: this should apply to MODEL_CANON_CANOSCAN_8600F too, but due to previous bug
|
||||||
SETREG (0x06, 0xd0); /* SCANMOD=110, PWRBIT and no GAIN4 */
|
// the 8400F case overwrote it
|
||||||
SETREG (0x06, 0xd8); /* SCANMOD=110, PWRBIT and GAIN4 */
|
|
||||||
SETREG (0x0a, 0x18);
|
|
||||||
SETREG (0x0b, 0x69);
|
|
||||||
|
|
||||||
/* CIS exposure is used for XPA lamp movement */
|
|
||||||
SETREG (0x10, 0x2c);
|
|
||||||
SETREG (0x11, 0x09);
|
|
||||||
SETREG (0x12, 0x22);
|
|
||||||
SETREG (0x13, 0xb8);
|
|
||||||
SETREG (0x14, 0x10);
|
|
||||||
SETREG (0x15, 0xf0);
|
|
||||||
|
|
||||||
SETREG (0x6b, 0xf4);
|
|
||||||
|
|
||||||
SETREG (0x70, 0x00);
|
|
||||||
SETREG (0x71, 0x02);
|
|
||||||
SETREG (0x72, 0x00);
|
|
||||||
SETREG (0x73, 0x00);
|
|
||||||
|
|
||||||
SETREG (0x80, 0x50);
|
|
||||||
SETREG (0x9d, 0x08);
|
|
||||||
SETREG(0xab, 0x40);
|
SETREG(0xab, 0x40);
|
||||||
|
}
|
||||||
|
|
||||||
/* XXX STEF XXX TODO move to set for scan */
|
// VRHOME[3:2], VRMOVE[3:2], VRBACK[3:2]: Vref setting of the motor driver IC
|
||||||
SETREG (0x98, 0x03);
|
// for various situations.
|
||||||
SETREG (0x99, 0x30);
|
if (dev->model->model_id == MODEL_CANON_CANOSCAN_8600F ||
|
||||||
SETREG (0x9a, 0x01);
|
dev->model->model_id == MODEL_HP_SCANJET_G4010 ||
|
||||||
SETREG (0x9b, 0x80);
|
dev->model->model_id == MODEL_HP_SCANJET_G4050 ||
|
||||||
|
dev->model->model_id == MODEL_HP_SCANJET_4850C)
|
||||||
|
{
|
||||||
SETREG(0xac, 0x00);
|
SETREG(0xac, 0x00);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (dev->model->model_id == MODEL_CANON_CANOSCAN_4400F)
|
|
||||||
{
|
|
||||||
SETREG (0x06, 0xf0); /* SCANMOD=111, PWRBIT and no GAIN4 */
|
|
||||||
SETREG (0x0b, 0x69); /* 16M only */
|
|
||||||
SETREG (0x1e, 0x20);
|
|
||||||
SETREG (0x22, 0xc8);
|
|
||||||
SETREG (0x23, 0xc8);
|
|
||||||
SETREG (0x5e, 0x3f);
|
|
||||||
SETREG (0x5f, 0xf0);
|
|
||||||
SETREG (0x6b, 0x72);
|
|
||||||
SETREG (0x72, 0x01);
|
|
||||||
SETREG (0x73, 0x03);
|
|
||||||
SETREG (0x80, 0x0c);
|
|
||||||
SETREG (0x87, 0x02); /* MCLOCK -> CK4MAP */
|
|
||||||
SETREG (0x9d, 0x08); /* STEPTIM=2 */
|
|
||||||
SETREG (0xa2, 0x1f);
|
|
||||||
SETREG (0xab, 0x00);
|
|
||||||
sanei_genesys_set_double(&dev->reg,REG_EXPR,0x9c40);
|
|
||||||
sanei_genesys_set_double(&dev->reg,REG_EXPG,0x9c40);
|
|
||||||
sanei_genesys_set_double(&dev->reg,REG_EXPB,0x9c40);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (dev->model->model_id == MODEL_CANON_CANOSCAN_8400F)
|
|
||||||
{
|
|
||||||
SETREG (0x03, 0x1c);
|
|
||||||
SETREG (0x06, 0xd0); /* SCANMOD=110, PWRBIT and no GAIN4 */
|
|
||||||
SETREG (0x0a, 0x10);
|
|
||||||
SETREG (0x22, 0x50);
|
|
||||||
SETREG (0x23, 0x50);
|
|
||||||
SETREG (0x5e, 0x85);
|
|
||||||
SETREG (0x6b, 0xb1);
|
|
||||||
SETREG (0x1e, 0xa0);
|
|
||||||
SETREG (0x72, 0x03);
|
|
||||||
SETREG (0x73, 0x04);
|
|
||||||
SETREG (0x7d, 0x20);
|
|
||||||
SETREG (0x80, 0x28);
|
|
||||||
SETREG (0x87, 0x02); /* MCLOCK -> CK4MAP */
|
|
||||||
SETREG (0x9d, 0x08); /* STEPTIM=2 */
|
|
||||||
}
|
|
||||||
|
|
||||||
dev->calib_reg = dev->reg;
|
dev->calib_reg = dev->reg;
|
||||||
|
|
||||||
DBGCOMPLETED;
|
DBGCOMPLETED;
|
||||||
|
|
Ładowanie…
Reference in New Issue