genesys: Make sensor table initialization more generic on gl646

merge-requests/139/head
Povilas Kanapickas 2019-08-17 11:49:00 +03:00
rodzic 1330d2289b
commit d2d43d5ed8
2 zmienionych plików z 70 dodań i 73 usunięć

Wyświetl plik

@ -667,11 +667,9 @@ static void gl646_setup_registers(Genesys_Device* dev,
regs->find_reg(0x05).value &= ~REG05_LEDADD;
}
/* cktoggle, ckdelay and cksel at once, cktdelay=2 => ccd_size_divisor == 2 for md5345 */
regs->find_reg(0x18).value = sensor_mst->r18;
/* manual CCD/2 clock programming on ccd_size_divisor == 2 for hp2300 */
regs->find_reg(0x1d).value = sensor_mst->r1d;
for (const auto& reg : sensor_mst->custom_regs) {
regs->set8(reg.address, reg.value);
}
/* HP2400 1200dpi mode tuning */

Wyświetl plik

@ -296,8 +296,7 @@ struct Sensor_Master
// such that we acquire only every 2nd pixel data
unsigned ccd_size_divisor = 0;
uint8_t r18 = 0; // content of register 18h */
uint8_t r1d = 0; // content of register 1dh */
GenesysRegisterSettingSet custom_regs;
};
/**
@ -327,85 +326,85 @@ static uint8_t xp200_gray[6]={0x05, 0x0a, 0x0f, 0xa0, 0x10, 0x10};
*/
static Sensor_Master sensor_master[] = {
/* HP3670 master settings */
{CCD_HP3670, 75, 3, 75, 4879, 300, 4, 42, NULL, 1, 0x33, 0x43},
{CCD_HP3670, 100, 3, 100, 4487, 400, 4, 42, NULL, 1, 0x33, 0x43},
{CCD_HP3670, 150, 3, 150, 4879, 600, 4, 42, NULL, 1, 0x33, 0x43},
{CCD_HP3670, 300, 3, 300, 4503, 1200, 4, 42, NULL, 1, 0x33, 0x43},
{CCD_HP3670, 600, 3, 600, 10251, 1200, 2, 42, NULL, 1, 0x31, 0x43},
{CCD_HP3670,1200, 3, 1200, 12750, 1200, 1, 42, NULL, 1, 0x30, 0x43},
{CCD_HP3670,2400, 3, 1200, 12750, 1200, 1, 42, NULL, 1, 0x30, 0x43},
{CCD_HP3670, 75, 1, 75, 4879, 300, 4, 42, NULL, 1, 0x33, 0x43},
{CCD_HP3670, 100, 1, 100, 4487, 400, 4, 42, NULL, 1, 0x33, 0x43},
{CCD_HP3670, 150, 1, 150, 4879, 600, 4, 42, NULL, 1, 0x33, 0x43},
{CCD_HP3670, 300, 1, 300, 4503, 1200, 4, 42, NULL, 1, 0x33, 0x43},
{CCD_HP3670, 600, 1, 600, 10251, 1200, 2, 42, NULL, 1, 0x31, 0x43},
{CCD_HP3670,1200, 1, 1200, 12750, 1200, 1, 42, NULL, 1, 0x30, 0x43},
{CCD_HP3670,2400, 1, 1200, 12750, 1200, 1, 42, NULL, 1, 0x30, 0x43},
{CCD_HP3670, 75, 3, 75, 4879, 300, 4, 42, NULL, 1, { { 0x18, 0x33 }, { 0x1d, 0x43 } } },
{CCD_HP3670, 100, 3, 100, 4487, 400, 4, 42, NULL, 1, { { 0x18, 0x33 }, { 0x1d, 0x43 } } },
{CCD_HP3670, 150, 3, 150, 4879, 600, 4, 42, NULL, 1, { { 0x18, 0x33 }, { 0x1d, 0x43 } } },
{CCD_HP3670, 300, 3, 300, 4503, 1200, 4, 42, NULL, 1, { { 0x18, 0x33 }, { 0x1d, 0x43 } } },
{CCD_HP3670, 600, 3, 600, 10251, 1200, 2, 42, NULL, 1, { { 0x18, 0x31 }, { 0x1d, 0x43 } } },
{CCD_HP3670,1200, 3, 1200, 12750, 1200, 1, 42, NULL, 1, { { 0x18, 0x30 }, { 0x1d, 0x43 } } },
{CCD_HP3670,2400, 3, 1200, 12750, 1200, 1, 42, NULL, 1, { { 0x18, 0x30 }, { 0x1d, 0x43 } } },
{CCD_HP3670, 75, 1, 75, 4879, 300, 4, 42, NULL, 1, { { 0x18, 0x33 }, { 0x1d, 0x43 } } },
{CCD_HP3670, 100, 1, 100, 4487, 400, 4, 42, NULL, 1, { { 0x18, 0x33 }, { 0x1d, 0x43 } } },
{CCD_HP3670, 150, 1, 150, 4879, 600, 4, 42, NULL, 1, { { 0x18, 0x33 }, { 0x1d, 0x43 } } },
{CCD_HP3670, 300, 1, 300, 4503, 1200, 4, 42, NULL, 1, { { 0x18, 0x33 }, { 0x1d, 0x43 } } },
{CCD_HP3670, 600, 1, 600, 10251, 1200, 2, 42, NULL, 1, { { 0x18, 0x31 }, { 0x1d, 0x43 } } },
{CCD_HP3670,1200, 1, 1200, 12750, 1200, 1, 42, NULL, 1, { { 0x18, 0x30 }, { 0x1d, 0x43 } } },
{CCD_HP3670,2400, 1, 1200, 12750, 1200, 1, 42, NULL, 1, { { 0x18, 0x30 }, { 0x1d, 0x43 } } },
/* HP 2400 master settings */
{CCD_HP2400, 50, 3, 50, 7211, 200, 4, 42, NULL, 1, 0x3f, 0x02},
{CCD_HP2400, 100, 3, 100, 7211, 400, 4, 42, NULL, 1, 0x3f, 0x02},
{CCD_HP2400, 150, 3, 150, 7211, 600, 4, 42, NULL, 1, 0x3f, 0x02},
{CCD_HP2400, 300, 3, 300, 8751, 1200, 4, 42, NULL, 1, 0x3f, 0x02},
{CCD_HP2400, 600, 3, 600, 18760, 1200, 2, 42, NULL, 1, 0x31, 0x02},
{CCD_HP2400,1200, 3, 1200, 21749, 1200, 1, 42, NULL, 1, 0x30, 0x42},
{CCD_HP2400, 50, 1, 50, 7211, 200, 4, 42, NULL, 1, 0x3f, 0x02},
{CCD_HP2400, 100, 1, 100, 7211, 400, 4, 42, NULL, 1, 0x3f, 0x02},
{CCD_HP2400, 150, 1, 150, 7211, 600, 4, 42, NULL, 1, 0x3f, 0x02},
{CCD_HP2400, 300, 1, 300, 8751, 1200, 4, 42, NULL, 1, 0x3f, 0x02},
{CCD_HP2400, 600, 1, 600, 18760, 1200, 2, 42, NULL, 1, 0x31, 0x02},
{CCD_HP2400,1200, 1, 1200, 21749, 1200, 1, 42, NULL, 1, 0x30, 0x42},
{CCD_HP2400, 50, 3, 50, 7211, 200, 4, 42, NULL, 1, { { 0x18, 0x3f }, { 0x1d, 0x02 } } },
{CCD_HP2400, 100, 3, 100, 7211, 400, 4, 42, NULL, 1, { { 0x18, 0x3f }, { 0x1d, 0x02 } } },
{CCD_HP2400, 150, 3, 150, 7211, 600, 4, 42, NULL, 1, { { 0x18, 0x3f }, { 0x1d, 0x02 } } },
{CCD_HP2400, 300, 3, 300, 8751, 1200, 4, 42, NULL, 1, { { 0x18, 0x3f }, { 0x1d, 0x02 } } },
{CCD_HP2400, 600, 3, 600, 18760, 1200, 2, 42, NULL, 1, { { 0x18, 0x31 }, { 0x1d, 0x02 } } },
{CCD_HP2400,1200, 3, 1200, 21749, 1200, 1, 42, NULL, 1, { { 0x18, 0x30 }, { 0x1d, 0x42 } } },
{CCD_HP2400, 50, 1, 50, 7211, 200, 4, 42, NULL, 1, { { 0x18, 0x3f }, { 0x1d, 0x02 } } },
{CCD_HP2400, 100, 1, 100, 7211, 400, 4, 42, NULL, 1, { { 0x18, 0x3f }, { 0x1d, 0x02 } } },
{CCD_HP2400, 150, 1, 150, 7211, 600, 4, 42, NULL, 1, { { 0x18, 0x3f }, { 0x1d, 0x02 } } },
{CCD_HP2400, 300, 1, 300, 8751, 1200, 4, 42, NULL, 1, { { 0x18, 0x3f }, { 0x1d, 0x02 } } },
{CCD_HP2400, 600, 1, 600, 18760, 1200, 2, 42, NULL, 1, { { 0x18, 0x31 }, { 0x1d, 0x02 } } },
{CCD_HP2400,1200, 1, 1200, 21749, 1200, 1, 42, NULL, 1, { { 0x18, 0x30 }, { 0x1d, 0x42 } } },
/* XP 200 master settings */
{CIS_XP200 , 75, 3, 75, 5700, 75, 1, 42, xp200_color, 1, 0x00, 0x11},
{CIS_XP200 , 100, 3, 100, 5700, 100, 1, 42, xp200_color, 1, 0x00, 0x11},
{CIS_XP200 , 200, 3, 200, 5700, 200, 1, 42, xp200_color, 1, 0x00, 0x11},
{CIS_XP200 , 300, 3, 300, 9000, 300, 1, 42, xp200_color, 1, 0x00, 0x11},
{CIS_XP200 , 600, 3, 600, 16000, 600, 1, 42, xp200_color, 1, 0x00, 0x11},
{CIS_XP200 , 75, 3, 75, 5700, 75, 1, 42, xp200_color, 1, { { 0x18, 0x00 }, { 0x1d, 0x11 } } },
{CIS_XP200 , 100, 3, 100, 5700, 100, 1, 42, xp200_color, 1, { { 0x18, 0x00 }, { 0x1d, 0x11 } } },
{CIS_XP200 , 200, 3, 200, 5700, 200, 1, 42, xp200_color, 1, { { 0x18, 0x00 }, { 0x1d, 0x11 } } },
{CIS_XP200 , 300, 3, 300, 9000, 300, 1, 42, xp200_color, 1, { { 0x18, 0x00 }, { 0x1d, 0x11 } } },
{CIS_XP200 , 600, 3, 600, 16000, 600, 1, 42, xp200_color, 1, { { 0x18, 0x00 }, { 0x1d, 0x11 } } },
{CIS_XP200 , 75, 1, 75, 16000, 75, 1, 42, xp200_gray, 1, 0x00, 0x11},
{CIS_XP200 , 100, 1, 100, 7800, 100, 1, 42, xp200_gray, 1, 0x00, 0x11},
{CIS_XP200 , 200, 1, 200, 11000, 200, 1, 42, xp200_gray, 1, 0x00, 0x11},
{CIS_XP200 , 300, 1, 300, 13000, 300, 1, 42, xp200_gray, 1, 0x00, 0x11},
{CIS_XP200 , 600, 1, 600, 24000, 600, 1, 42, xp200_gray, 1, 0x00, 0x11},
{CIS_XP200 , 75, 1, 75, 16000, 75, 1, 42, xp200_gray, 1, { { 0x18, 0x00 }, { 0x1d, 0x11 } } },
{CIS_XP200 , 100, 1, 100, 7800, 100, 1, 42, xp200_gray, 1, { { 0x18, 0x00 }, { 0x1d, 0x11 } } },
{CIS_XP200 , 200, 1, 200, 11000, 200, 1, 42, xp200_gray, 1, { { 0x18, 0x00 }, { 0x1d, 0x11 } } },
{CIS_XP200 , 300, 1, 300, 13000, 300, 1, 42, xp200_gray, 1, { { 0x18, 0x00 }, { 0x1d, 0x11 } } },
{CIS_XP200 , 600, 1, 600, 24000, 600, 1, 42, xp200_gray, 1, { { 0x18, 0x00 }, { 0x1d, 0x11 } } },
/* HP 2300 master settings */
{CCD_HP2300, 75, 3, 75, 4480, 150, 1, 42, NULL, 2, 0x20, 0x85},
{CCD_HP2300, 150, 3, 150, 4350, 300, 1, 42, NULL, 2, 0x20, 0x85},
{CCD_HP2300, 300, 3, 300, 4350, 600, 1, 42, NULL, 2, 0x20, 0x85},
{CCD_HP2300, 600, 3, 600, 8700, 600, 1, 42, NULL, 1, 0x20, 0x05},
{CCD_HP2300,1200, 3, 600, 8700, 600, 1, 42, NULL, 1, 0x20, 0x05},
{CCD_HP2300, 75, 1, 75, 4480, 150, 1, 42, NULL, 2, 0x20, 0x85},
{CCD_HP2300, 150, 1, 150, 4350, 300, 1, 42, NULL, 2, 0x20, 0x85},
{CCD_HP2300, 300, 1, 300, 4350, 600, 1, 42, NULL, 2, 0x20, 0x85},
{CCD_HP2300, 600, 1, 600, 8700, 600, 1, 42, NULL, 1, 0x20, 0x05},
{CCD_HP2300,1200, 1, 600, 8700, 600, 1, 42, NULL, 1, 0x20, 0x05},
{CCD_HP2300, 75, 3, 75, 4480, 150, 1, 42, NULL, 2, { { 0x18, 0x20 }, { 0x1d, 0x85 } } },
{CCD_HP2300, 150, 3, 150, 4350, 300, 1, 42, NULL, 2, { { 0x18, 0x20 }, { 0x1d, 0x85 } } },
{CCD_HP2300, 300, 3, 300, 4350, 600, 1, 42, NULL, 2, { { 0x18, 0x20 }, { 0x1d, 0x85 } } },
{CCD_HP2300, 600, 3, 600, 8700, 600, 1, 42, NULL, 1, { { 0x18, 0x20 }, { 0x1d, 0x05 } } },
{CCD_HP2300,1200, 3, 600, 8700, 600, 1, 42, NULL, 1, { { 0x18, 0x20 }, { 0x1d, 0x05 } } },
{CCD_HP2300, 75, 1, 75, 4480, 150, 1, 42, NULL, 2, { { 0x18, 0x20 }, { 0x1d, 0x85 } } },
{CCD_HP2300, 150, 1, 150, 4350, 300, 1, 42, NULL, 2, { { 0x18, 0x20 }, { 0x1d, 0x85 } } },
{CCD_HP2300, 300, 1, 300, 4350, 600, 1, 42, NULL, 2, { { 0x18, 0x20 }, { 0x1d, 0x85 } } },
{CCD_HP2300, 600, 1, 600, 8700, 600, 1, 42, NULL, 1, { { 0x18, 0x20 }, { 0x1d, 0x05 } } },
{CCD_HP2300,1200, 1, 600, 8700, 600, 1, 42, NULL, 1, { { 0x18, 0x20 }, { 0x1d, 0x05 } } },
/* non half ccd 300 dpi settings
{CCD_HP2300, 300, 3, 300, 8700, 300, 1, 42, NULL, 1, 0x20, 0x05},
{CCD_HP2300, 300, 1, 300, 8700, 300, 1, 42, NULL, 1, 0x20, 0x05},
*/
/* MD5345/6471 master settings */
{CCD_5345 , 50, 3, 50, 12000, 100, 1, 42, NULL, 2, 0x28, 0x03},
{CCD_5345 , 75, 3, 75, 11000, 150, 1, 42, NULL, 2, 0x28, 0x03},
{CCD_5345 , 100, 3, 100, 11000, 200, 1, 42, NULL, 2, 0x28, 0x03},
{CCD_5345 , 150, 3, 150, 11000, 300, 1, 42, NULL, 2, 0x28, 0x03},
{CCD_5345 , 200, 3, 200, 11000, 400, 1, 42, NULL, 2, 0x28, 0x03},
{CCD_5345 , 300, 3, 300, 11000, 600, 1, 42, NULL, 2, 0x28, 0x03},
{CCD_5345 , 400, 3, 400, 11000, 800, 1, 42, NULL, 2, 0x28, 0x03},
{CCD_5345 , 600, 3, 600, 11000,1200, 1, 42, NULL, 2, 0x28, 0x03},
{CCD_5345 ,1200, 3, 1200, 11000,1200, 1, 42, NULL, 1, 0x30, 0x03},
{CCD_5345 ,2400, 3, 1200, 11000,1200, 1, 42, NULL, 1, 0x30, 0x03},
{CCD_5345 , 50, 1, 50, 12000, 100, 1, 42, NULL, 2, 0x28, 0x03},
{CCD_5345 , 75, 1, 75, 11000, 150, 1, 42, NULL, 2, 0x28, 0x03},
{CCD_5345 , 100, 1, 100, 11000, 200, 1, 42, NULL, 2, 0x28, 0x03},
{CCD_5345 , 150, 1, 150, 11000, 300, 1, 42, NULL, 2, 0x28, 0x03},
{CCD_5345 , 200, 1, 200, 11000, 400, 1, 42, NULL, 2, 0x28, 0x03},
{CCD_5345 , 300, 1, 300, 11000, 600, 1, 42, NULL, 2, 0x28, 0x03},
{CCD_5345 , 400, 1, 400, 11000, 800, 1, 42, NULL, 2, 0x28, 0x03},
{CCD_5345 , 600, 1, 600, 11000,1200, 1, 42, NULL, 2, 0x28, 0x03},
{CCD_5345 ,1200, 1, 1200, 11000,1200, 1, 42, NULL, 2, 0x30, 0x03},
{CCD_5345 ,2400, 1, 1200, 11000,1200, 1, 42, NULL, 1, 0x30, 0x03},
{CCD_5345 , 50, 3, 50, 12000, 100, 1, 42, NULL, 2, { { 0x18, 0x28 }, { 0x1d, 0x03 } } },
{CCD_5345 , 75, 3, 75, 11000, 150, 1, 42, NULL, 2, { { 0x18, 0x28 }, { 0x1d, 0x03 } } },
{CCD_5345 , 100, 3, 100, 11000, 200, 1, 42, NULL, 2, { { 0x18, 0x28 }, { 0x1d, 0x03 } } },
{CCD_5345 , 150, 3, 150, 11000, 300, 1, 42, NULL, 2, { { 0x18, 0x28 }, { 0x1d, 0x03 } } },
{CCD_5345 , 200, 3, 200, 11000, 400, 1, 42, NULL, 2, { { 0x18, 0x28 }, { 0x1d, 0x03 } } },
{CCD_5345 , 300, 3, 300, 11000, 600, 1, 42, NULL, 2, { { 0x18, 0x28 }, { 0x1d, 0x03 } } },
{CCD_5345 , 400, 3, 400, 11000, 800, 1, 42, NULL, 2, { { 0x18, 0x28 }, { 0x1d, 0x03 } } },
{CCD_5345 , 600, 3, 600, 11000,1200, 1, 42, NULL, 2, { { 0x18, 0x28 }, { 0x1d, 0x03 } } },
{CCD_5345 ,1200, 3, 1200, 11000,1200, 1, 42, NULL, 1, { { 0x18, 0x30 }, { 0x1d, 0x03 } } },
{CCD_5345 ,2400, 3, 1200, 11000,1200, 1, 42, NULL, 1, { { 0x18, 0x30 }, { 0x1d, 0x03 } } },
{CCD_5345 , 50, 1, 50, 12000, 100, 1, 42, NULL, 2, { { 0x18, 0x28 }, { 0x1d, 0x03 } } },
{CCD_5345 , 75, 1, 75, 11000, 150, 1, 42, NULL, 2, { { 0x18, 0x28 }, { 0x1d, 0x03 } } },
{CCD_5345 , 100, 1, 100, 11000, 200, 1, 42, NULL, 2, { { 0x18, 0x28 }, { 0x1d, 0x03 } } },
{CCD_5345 , 150, 1, 150, 11000, 300, 1, 42, NULL, 2, { { 0x18, 0x28 }, { 0x1d, 0x03 } } },
{CCD_5345 , 200, 1, 200, 11000, 400, 1, 42, NULL, 2, { { 0x18, 0x28 }, { 0x1d, 0x03 } } },
{CCD_5345 , 300, 1, 300, 11000, 600, 1, 42, NULL, 2, { { 0x18, 0x28 }, { 0x1d, 0x03 } } },
{CCD_5345 , 400, 1, 400, 11000, 800, 1, 42, NULL, 2, { { 0x18, 0x28 }, { 0x1d, 0x03 } } },
{CCD_5345 , 600, 1, 600, 11000,1200, 1, 42, NULL, 2, { { 0x18, 0x28 }, { 0x1d, 0x03 } } },
{CCD_5345 ,1200, 1, 1200, 11000,1200, 1, 42, NULL, 2, { { 0x18, 0x30 }, { 0x1d, 0x03 } } },
{CCD_5345 ,2400, 1, 1200, 11000,1200, 1, 42, NULL, 1, { { 0x18, 0x30 }, { 0x1d, 0x03 } } },
};