mirror of
https://gitlab.freedesktop.org/libfprint/libfprint.git
synced 2026-05-11 08:28:08 +02:00
upeksonly: use Windows trace sequence for 147e:1002
This commit is contained in:
parent
ec204fb540
commit
17a13fec10
2 changed files with 27 additions and 7 deletions
|
|
@ -864,7 +864,10 @@ awfsm_1000_run_state (FpiSsm *ssm, FpDevice *_dev)
|
|||
break;
|
||||
|
||||
case AWFSM_1000_WRITEV_2:
|
||||
sm_write_regs (ssm, _dev, awfsm_1000_writev_2, G_N_ELEMENTS (awfsm_1000_writev_2));
|
||||
if (FPI_DEVICE_UPEKSONLY (_dev)->dev_model == UPEKSONLY_1002)
|
||||
sm_write_regs (ssm, _dev, awfsm_1002_writev_2, G_N_ELEMENTS (awfsm_1002_writev_2));
|
||||
else
|
||||
sm_write_regs (ssm, _dev, awfsm_1000_writev_2, G_N_ELEMENTS (awfsm_1000_writev_2));
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
|
@ -889,8 +892,8 @@ enum capsm_1000_states {
|
|||
|
||||
enum capsm_1002_states {
|
||||
CAPSM_1002_INIT,
|
||||
CAPSM_1002_FIRE_BULK,
|
||||
CAPSM_1002_WRITEV,
|
||||
CAPSM_1002_FIRE_BULK,
|
||||
CAPSM_1002_NUM_STATES,
|
||||
};
|
||||
|
||||
|
|
@ -1192,7 +1195,10 @@ initsm_1000_run_state (FpiSsm *ssm, FpDevice *_dev)
|
|||
switch (fpi_ssm_get_cur_state (ssm))
|
||||
{
|
||||
case INITSM_1000_WRITEV_1:
|
||||
sm_write_regs (ssm, _dev, initsm_1000_writev_1, G_N_ELEMENTS (initsm_1000_writev_1));
|
||||
if (FPI_DEVICE_UPEKSONLY (_dev)->dev_model == UPEKSONLY_1002)
|
||||
sm_write_regs (ssm, _dev, initsm_1002_writev_1, G_N_ELEMENTS (initsm_1002_writev_1));
|
||||
else
|
||||
sm_write_regs (ssm, _dev, initsm_1000_writev_1, G_N_ELEMENTS (initsm_1000_writev_1));
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -65,6 +65,11 @@ static const struct sonly_regwrite awfsm_1000_writev_2[] = {
|
|||
{ 0x30, 0xe1 }, { 0x15, 0x06 }, { 0x15, 0x86 },
|
||||
};
|
||||
|
||||
static const struct sonly_regwrite awfsm_1002_writev_2[] = {
|
||||
/* Windows enables 147e:1002 finger detection with bit 0x01 clear here. */
|
||||
{ 0x30, 0xe1 }, { 0x15, 0x05 }, { 0x15, 0x85 },
|
||||
};
|
||||
|
||||
static const struct sonly_regwrite awfsm_2016_writev_3[] = {
|
||||
{ 0x13, 0x45 }, { 0x30, 0xe0 }, { 0x12, 0x01 }, { 0x20, 0x01 },
|
||||
{ 0x09, 0x20 }, { 0x0a, 0x00 }, { 0x30, 0xe0 }, { 0x20, 0x01 },
|
||||
|
|
@ -94,11 +99,12 @@ static const struct sonly_regwrite capsm_1000_writev[] = {
|
|||
|
||||
static const struct sonly_regwrite capsm_1002_writev[] = {
|
||||
/* 147e:1002 appears close to the 1000 family for init/interrupts, but it
|
||||
* does not start streaming image data with the plain 1000 capture writes.
|
||||
* Try the broader capture-mode enable sequence used by the 2016 variant.
|
||||
* does not start streaming image data with the plain 1000/2016 capture
|
||||
* writes. This sequence matches the Windows driver immediately before bulk
|
||||
* image packets start arriving on endpoint 0x81.
|
||||
*/
|
||||
{ 0x09, 0x28 }, { 0x13, 0x55 }, { 0x0b, 0x80 }, { 0x04, 0x00 },
|
||||
{ 0x05, 0x00 },
|
||||
{ 0x15, 0x25 }, { 0x30, 0xe0 }, { 0x09, 0x23 }, { 0x13, 0x75 },
|
||||
{ 0x0b, 0x80 },
|
||||
};
|
||||
|
||||
static const struct sonly_regwrite capsm_1001_writev_1[] = {
|
||||
|
|
@ -200,6 +206,14 @@ static const struct sonly_regwrite initsm_1000_writev_1[] = {
|
|||
{ 0x0b, 0x00 }, { 0x08, 0x00 }, /* Initialize capture control registers */
|
||||
};
|
||||
|
||||
static const struct sonly_regwrite initsm_1002_writev_1[] = {
|
||||
/* Captured from the Windows 147e:1002 driver before finger detection. */
|
||||
{ 0x49, 0x08 },
|
||||
{ 0x3e, 0x3d }, { 0x3e, 0x18 }, { 0x3e, 0x38 }, { 0x3e, 0x63 },
|
||||
{ 0x3e, 0x9d }, { 0x3e, 0x5c }, { 0x3e, 0xb1 }, { 0x3e, 0x1f },
|
||||
{ 0x1a, 0x01 }, { 0x1a, 0x03 }, { 0x0b, 0x00 }, { 0x49, 0x0c },
|
||||
};
|
||||
|
||||
static const struct sonly_regwrite initsm_1001_writev_1[] = {
|
||||
{ 0x4a, 0x9d },
|
||||
{ 0x4f, 0x06 },
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue