From 3d8fdee88b3018a54d8b29ee16b7fa9b15f4190b Mon Sep 17 00:00:00 2001 From: Konstantin Makariev Date: Mon, 25 Mar 2019 16:26:18 -0500 Subject: [PATCH] synaptics_mmi: improved F54 control registers discovery Added missing conditions to discover F54 control registers up to F54_ANALOG_Ctrl269 BSC calibration. There are still few gaps, but even the latest RMI4 specification provides no info on how they could be discovered. Tested on s7813 and s3601 touch ICs. Change-Id: I0995ea7bb2a1a24766cc8ce250b65582a99db73e Signed-off-by: Konstantin Makariev Reviewed-on: https://gerrit.mot.com/1326957 SLTApproved: Slta Waiver SME-Granted: SME Approvals Granted Tested-by: Jira Key Reviewed-by: Konstantin Makariev Submit-Approved: Jira Key --- .../synaptics_dsx_test_reporting.c | 144 +++++++++--------- 1 file changed, 69 insertions(+), 75 deletions(-) diff --git a/drivers/input/touchscreen/synaptics_mmi/synaptics_dsx_test_reporting.c b/drivers/input/touchscreen/synaptics_mmi/synaptics_dsx_test_reporting.c index f37ddf99c1e7..c0709d072e21 100644 --- a/drivers/input/touchscreen/synaptics_mmi/synaptics_dsx_test_reporting.c +++ b/drivers/input/touchscreen/synaptics_mmi/synaptics_dsx_test_reporting.c @@ -1185,7 +1185,8 @@ struct f54_query49 { unsigned char has_data30:1; unsigned char has_ctrl188:1; unsigned char has_data31:1; - unsigned char f54_q49_b4b6:3; + unsigned char f54_q49_b4b5:2; + unsigned char has_ctrl190:1; unsigned char has_query50:1; } __packed; unsigned char data[1]; @@ -1306,7 +1307,8 @@ struct f54_query65 { struct { unsigned char f54_q65_b0b1:2; unsigned char has_ctrl101_sub2:1; - unsigned char f54_65_b3b4:2; + unsigned char f54_65_b3:1; + unsigned char has_ctrl230:1; unsigned char has_query66_ctrl231:1; unsigned char has_ctrl232:1; unsigned char has_query67:1; @@ -4818,17 +4820,17 @@ static int synaptics_rmi4_f54_set_ctrl( struct f54_query43 *query43 = &f54->query43; struct f54_query46 *query46 = &f54->query46; /* BSC control access */ -// struct f54_query47 *query47 = &f54->query47; -// struct f54_query49 *query49 = &f54->query49; + struct f54_query47 *query47 = &f54->query47; + struct f54_query49 *query49 = &f54->query49; struct f54_query50 *query50 = &f54->query50; struct f54_query51 *query51 = &f54->query51; struct f54_query55 *query55 = &f54->query55; -// struct f54_query57 *query57 = &f54->query57; -// struct f54_query58 *query58 = &f54->query58; + struct f54_query57 *query57 = &f54->query57; + struct f54_query58 *query58 = &f54->query58; struct f54_query61 *query61 = &f54->query61; struct f54_query64 *query64 = &f54->query64; -// struct f54_query65 *query65 = &f54->query65; -// struct f54_query67 *query67 = &f54->query67; + struct f54_query65 *query65 = &f54->query65; + struct f54_query67 *query67 = &f54->query67; struct f54_query68 *query68 = &f54->query68; struct f54_query69 *query69 = &f54->query69; struct f54_query70 *query70 = &f54->query70; @@ -5197,29 +5199,29 @@ static int synaptics_rmi4_f54_set_ctrl( CTRL_REG_PRESENCE(147, 1, query38->has_ctrl147); CTRL_REG_PRESENCE(148, 1, query38->has_ctrl148); CTRL_REG_PRESENCE(149, 1, query38->has_ctrl149); - -// CTRL_REG_RESERVED_PRESENCE(150, 1, 0); + CTRL_REG_PRESENCE(150, 1, query38->has_ctrl150); CTRL_REG_PRESENCE(151, 1, query38->has_ctrl151); -// CTRL_REG_RESERVED_PRESENCE(152, 1, 0); -// CTRL_REG_RESERVED_PRESENCE(153, 1, 0); -// CTRL_REG_RESERVED_PRESENCE(154, 1, 0); -// CTRL_REG_RESERVED_PRESENCE(155, 1, 0); -// CTRL_REG_RESERVED_PRESENCE(156, 1, 0); + CTRL_REG_PRESENCE(152, 1, query38->has_ctrl152); + CTRL_REG_PRESENCE(153, 1, query38->has_ctrl153); + CTRL_REG_PRESENCE(154, 1, query39->has_ctrl154); + CTRL_REG_PRESENCE(155, 1, query39->has_ctrl155); + CTRL_REG_PRESENCE(156, 1, query39->has_ctrl156); CTRL_REG_PRESENCE(157, 1, query39->has_ctrl157_158); CTRL_REG_PRESENCE(158, 1, query39->has_ctrl157_158); // CTRL_REG_RESERVED_PRESENCE(159, 1, 0); -// CTRL_REG_RESERVED_PRESENCE(160, 1, 0); + CTRL_REG_PRESENCE(160, 1, query39->has_ctrl160); // CTRL_REG_RESERVED_PRESENCE(161, 1, 0); // CTRL_REG_RESERVED_PRESENCE(162, 1, 0); CTRL_REG_PRESENCE(163, 1, query40->has_ctrl163_query41); // CTRL_REG_RESERVED_PRESENCE(164, 1, 0); CTRL_REG_PRESENCE(165, 1, query40->has_ctrl165_query42); -// CTRL_REG_RESERVED_PRESENCE(166, 1, 0); + CTRL_REG_PRESENCE(166, 1, query40->has_ctrl166); CTRL_REG_PRESENCE(167, 1, query40->has_ctrl167); CTRL_REG_PRESENCE(168, 1, query40->has_ctrl168); + CTRL_REG_PRESENCE(169, 1, query40->has_ctrl169); // CTRL_REG_RESERVED_PRESENCE(170, 1, 0); CTRL_REG_PRESENCE(171, 1, query43->has_ctrl171); -// CTRL_REG_RESERVED_PRESENCE(172, 1, 0); + CTRL_REG_PRESENCE(172, 1, query43->has_ctrl172_query44_query45); CTRL_REG_PRESENCE(173, 1, query43->has_ctrl173); CTRL_REG_PRESENCE(174, 1, query43->has_ctrl174); CTRL_REG_PRESENCE(175, 1, query43->has_ctrl175); @@ -5227,23 +5229,21 @@ static int synaptics_rmi4_f54_set_ctrl( CTRL_REG_PRESENCE(177, 1, query46->has_ctrl177_178); CTRL_REG_PRESENCE(178, 1, query46->has_ctrl177_178); CTRL_REG_PRESENCE(179, 1, query46->has_ctrl179); - /* BSC control access */ -#if 0 - CTRL_REG_RESERVED_PRESENCE(180, 1, 0); - CTRL_REG_RESERVED_PRESENCE(181, 1, 0); - CTRL_REG_RESERVED_PRESENCE(182, 1, 0); - CTRL_REG_RESERVED_PRESENCE(183, 1, 0); - CTRL_REG_RESERVED_PRESENCE(184, 1, 0); - CTRL_REG_RESERVED_PRESENCE(185, 1, 0); - CTRL_REG_RESERVED_PRESENCE(186, 1, 0); - CTRL_REG_RESERVED_PRESENCE(187, 1, 0); - CTRL_REG_RESERVED_PRESENCE(188, 1, 0); - CTRL_REG_RESERVED_PRESENCE(189, 1, 0); - CTRL_REG_RESERVED_PRESENCE(190, 1, 0); - CTRL_REG_RESERVED_PRESENCE(191, 1, 0); - CTRL_REG_RESERVED_PRESENCE(192, 1, 0); -#endif +// CTRL_REG_RESERVED_PRESENCE(180, 1, 0); +// CTRL_REG_RESERVED_PRESENCE(181, 1, 0); + CTRL_REG_PRESENCE(182, 1, query47->has_ctrl182); + CTRL_REG_PRESENCE(183, 1, query47->has_ctrl183); +// CTRL_REG_RESERVED_PRESENCE(184, 1, 0); + CTRL_REG_PRESENCE(185, 1, query47->has_ctrl185); + CTRL_REG_PRESENCE(186, 1, query47->has_ctrl186); + CTRL_REG_PRESENCE(187, 1, query47->has_ctrl187); + CTRL_REG_PRESENCE(188, 1, query49->has_ctrl188); +// CTRL_REG_RESERVED_PRESENCE(189, 1, 0); + CTRL_REG_PRESENCE(190, 1, query49->has_ctrl190); +// CTRL_REG_RESERVED_PRESENCE(191, 1, 0); +// CTRL_REG_RESERVED_PRESENCE(192, 1, 0); + CTRL_REG_PRESENCE(193, 1, query50->has_ctrl193); // CTRL_REG_RESERVED_PRESENCE(194, 1, 0); // CTRL_REG_RESERVED_PRESENCE(195, 1, 0); @@ -5251,53 +5251,47 @@ static int synaptics_rmi4_f54_set_ctrl( CTRL_REG_PRESENCE(197, 1, query51->has_ctrl197); CTRL_REG_PRESENCE(198, 1, query51->has_query53_query54_ctrl198); CTRL_REG_PRESENCE(199, 1, query51->has_ctrl199); -// CTRL_REG_RESERVED_PRESENCE(200, 1, 0); -// CTRL_REG_RESERVED_PRESENCE(201, 1, 0); -// CTRL_REG_RESERVED_PRESENCE(202, 1, 0); + CTRL_REG_PRESENCE(200, 1, query55->has_ctrl200); + CTRL_REG_PRESENCE(201, 1, query55->has_ctrl201_ctrl202); + CTRL_REG_PRESENCE(202, 1, query55->has_ctrl201_ctrl202); CTRL_REG_PRESENCE(203, 1, query55->has_ctrl203); -#if 0 - CTRL_REG_RESERVED_PRESENCE(204, 1, 0); - CTRL_REG_RESERVED_PRESENCE(205, 1, 0); - CTRL_REG_RESERVED_PRESENCE(206, 1, 0); - CTRL_REG_RESERVED_PRESENCE(207, 1, 0); - CTRL_REG_RESERVED_PRESENCE(208, 1, 0); - CTRL_REG_RESERVED_PRESENCE(209, 1, 0); - CTRL_REG_RESERVED_PRESENCE(210, 1, 0); - CTRL_REG_RESERVED_PRESENCE(211, 1, 0); - CTRL_REG_RESERVED_PRESENCE(212, 1, 0); - CTRL_REG_RESERVED_PRESENCE(213, 1, 0); - CTRL_REG_RESERVED_PRESENCE(214, 1, 0); - CTRL_REG_RESERVED_PRESENCE(215, 1, 0); - CTRL_REG_RESERVED_PRESENCE(216, 1, 0); - CTRL_REG_RESERVED_PRESENCE(217, 1, 0); - CTRL_REG_RESERVED_PRESENCE(218, 1, 0); -#endif + CTRL_REG_PRESENCE(204, 1, query55->has_ctrl204); + CTRL_REG_PRESENCE(205, 1, query57->has_ctrl205); + CTRL_REG_PRESENCE(206, 1, query57->has_ctrl206); + CTRL_REG_PRESENCE(207, 1, query57->has_ctrl207); + CTRL_REG_PRESENCE(208, 1, query57->has_ctrl208); + CTRL_REG_PRESENCE(209, 1, query57->has_ctrl209); + CTRL_REG_PRESENCE(210, 1, query57->has_ctrl210); + CTRL_REG_PRESENCE(211, 1, query58->has_ctrl211); + CTRL_REG_PRESENCE(212, 1, query58->has_ctrl212); + CTRL_REG_PRESENCE(213, 1, query58->has_ctrl213); + CTRL_REG_PRESENCE(214, 1, query61->has_ctrl214); + CTRL_REG_PRESENCE(215, 1, query61->has_ctrl215_query62_query63); + CTRL_REG_PRESENCE(216, 1, query61->has_ctrl216); + CTRL_REG_PRESENCE(217, 1, query61->has_ctrl217); + CTRL_REG_PRESENCE(218, 1, query61->has_misc_host_ctrl); /* might have subpacket */ CTRL_REG_PRESENCE(219, 1, query61->has_ctrl219); - - CTRL_REG_PRESENCE(220, 1, query64->has_ctrl220); CTRL_REG_PRESENCE(221, 1, query64->has_ctrl221); -#if 0 - CTRL_REG_RESERVED_PRESENCE(222, 1, 0); - CTRL_REG_RESERVED_PRESENCE(223, 1, 0); - CTRL_REG_RESERVED_PRESENCE(224, 1, 0); - CTRL_REG_RESERVED_PRESENCE(225, 1, 0); - CTRL_REG_RESERVED_PRESENCE(226, 1, 0); - CTRL_REG_RESERVED_PRESENCE(227, 1, 0); - CTRL_REG_RESERVED_PRESENCE(228, 1, 0); - CTRL_REG_RESERVED_PRESENCE(229, 1, 0); - CTRL_REG_RESERVED_PRESENCE(230, 1, 0); - CTRL_REG_RESERVED_PRESENCE(231, 1, 0); - CTRL_REG_RESERVED_PRESENCE(232, 1, 0); - CTRL_REG_RESERVED_PRESENCE(233, 1, 0); - CTRL_REG_RESERVED_PRESENCE(234, 1, 0); - CTRL_REG_RESERVED_PRESENCE(235, 1, 0); - CTRL_REG_RESERVED_PRESENCE(236, 1, 0); -#endif + CTRL_REG_PRESENCE(222, 1, query64->has_ctrl222); + CTRL_REG_PRESENCE(223, 1, query68->is_tddi_hic); + CTRL_REG_PRESENCE(224, 1, query64->has_ctrl224_ctrl226_ctrl227); + CTRL_REG_PRESENCE(225, 1, query67->has_abs_doze_spatial_filter_en); + CTRL_REG_PRESENCE(226, 1, query64->has_ctrl224_ctrl226_ctrl227); + CTRL_REG_PRESENCE(227, 1, query64->has_ctrl224_ctrl226_ctrl227); + CTRL_REG_PRESENCE(228, 1, (f54->query.touch_controller_family == 4)); +// CTRL_REG_RESERVED_PRESENCE(229, 1, 0); + CTRL_REG_PRESENCE(230, 1, query65->has_ctrl230); + CTRL_REG_PRESENCE(231, 1, query65->has_query66_ctrl231); + CTRL_REG_PRESENCE(232, 1, query65->has_ctrl232); +// CTRL_REG_RESERVED_PRESENCE(233, 1, 0); +// CTRL_REG_RESERVED_PRESENCE(234, 1, 0); + CTRL_REG_PRESENCE(235, 1, query67->has_ctrl235_ctrl236); + CTRL_REG_PRESENCE(236, 1, query67->has_ctrl235_ctrl236); CTRL_REG_PRESENCE(237, 1, query68->has_ctrl237); -// CTRL_REG_RESERVED_PRESENCE(238, 1, 0); -// CTRL_REG_RESERVED_PRESENCE(239, 1, 0); + CTRL_REG_PRESENCE(238, 1, query68->has_ctrl238); + CTRL_REG_PRESENCE(239, 1, query68->has_ctrl239); /* might have up to 4 subpackets */ CTRL_REG_PRESENCE(240, 1, query69->data[0] & 0x0f); CTRL_REG_ADD(242, 1, query70->has_ctrl242);