1.DTS 
	Юھsample.dtsidҡAݧirq-gpioPrst-gpioȤᥭxWGPIOX
	PS: irq-gpio |b{ gpio_to_irq ন IRQ number


2.ծɡAХT{ }O_HUT

	IC SFR VER = 0x43A Y 00xFFAܳqT`

	w]} #define ST_UPGRADE_USE_REQUESTFW_BUF
	бNT dump (FW+CFG) m request_firmware ؿU, Ƨm̥xҮtC
	w]ɮצW٬7123.dumpAYݭקAЭקST_REQUESTFW_DF_PATHW١C
	YSX{sitronix_spi_hdl_fw success ANhost download L{~

	YFW revision (hex) = 1 17 1 15AOoخ榡ANFW e~AݧsT
	YHWTALĲAFAEٻݭnAվAtouch ĪG(CFG)
	PSG쪩driver W FWBCFG @wAΫȤҲաAinվAAT

	<6>[   31.029470] [ST MSG] Sitronix ST7123 Touch Driver v43.00.220505
	<6>[   31.029532] [ST MSG] sitronix_ts_spi_parse_dt: SPI max frequency = 8000000.
	<6>[   31.029641] [ST MSG] sitronix_ts_spi_parse_dt: Interrupt GPIO = 143. (flag=0)
	<6>[   31.029674] [ST MSG] sitronix_ts_spi_parse_dt: Reset GPIO = 145. (flag=0)
	<6>[   31.029681] [ST MSG] sitronix_ts_spi_parse_dt: SPI Mode = 3.
	<6>[   31.039394] [ST MSG] start of sitronix_ts_probe
	<6>[   31.039403] [ST MSG] sitronix_ts_reset_device: Hardware Reset device.
	<6>[   31.055312] [ST MSG] IC SFR VER = 0x43
	<6>[   31.056484] [ST MSG] Display id = 0x80 0xA0 0xFB
	<6>[   31.062006] [ST MSG] TOUCH_FW_INFO offset = 0xDFA4
	<6>[   31.062016] [ST MSG] fwOff = 0x0
	<6>[   31.062024] [ST MSG] fwSize = 0xDFB8
	<6>[   31.062033] [ST MSG] fwInfoOff = 0xDFA4
	<6>[   31.062041] [ST MSG] cfgFlashOff = 0x10000
	<6>[   31.062049] [ST MSG] cfgDramOff = 0x300
	<6>[   31.062057] [ST MSG] cfgSize = 0xA7C
	<6>[   31.062067] [ST MSG] sitronix_ts_reset_device: Hardware Reset device.
	<6>[   31.463548] [ST MSG] sitronix_spi_hdl_fw success
	<6>[   31.516634] [ST MSG] buf = 0, 0, 0, 0, 2, D0, 6, 40
	<6>[   31.516663] [ST MSG] Status register = 0.
	<6>[   31.517213] [ST MSG] FW Version (hex) = 2
	<6>[   31.517825] [ST MSG] FW revision (hex) = 1 17 1 17
	<6>[   31.519438] [ST MSG] Customer Info (hex) = 0 0 6 1
	<6>[   31.520500] [ST MSG] Resolution = 720 x 1600
	<6>[   31.521036] [ST MSG] Max touches = 10.
	<6>[   31.521573] [ST MSG] Chip ID = 0x83.
	<6>[   31.535712] [ST MSG] X_chs = 18.
	<6>[   31.535740] [ST MSG] Y_chs = 32.
	<6>[   31.536281] [ST MSG] Misc. Info = 0x8F.


3(ճ)
	PSGY䴩AбNsitronix_ts.h   #define SITRONIX_SUPPORT_SWU 
	 ջPW key codeAsitronix_ts.h  SWU_KEYCODE Aiۦקkey code

	typedef enum {
		ST_KEY_GESTURE_POWER		= KEY_POWER,
		ST_KEY_GESTURE_LEFT		= KEY_LEFT,
		ST_KEY_GESTURE_RIGHT		= KEY_RIGHT,
		ST_KEY_GESTURE_UP		= KEY_UP,
		ST_KEY_GESTURE_DOWN		= KEY_DOWN,
		ST_KEY_GESTURE_TWO_FINGER_DOWN	= KEY_DOWN,
		ST_KEY_GESTURE_U		= KEY_U,
		ST_KEY_GESTURE_O		= KEY_O,
		ST_KEY_GESTURE_E		= KEY_E,
		ST_KEY_GESTURE_M		= KEY_M,
		ST_KEY_GESTURE_W		= KEY_W,
		ST_KEY_GESTURE_L		= KEY_L,
		ST_KEY_GESTURE_S		= KEY_S,
		ST_KEY_GESTURE_V		= KEY_V,
		ST_KEY_GESTURE_Z		= KEY_Z,
		ST_KEY_GESTURE_C		= KEY_C
	} SWU_KEYCODE;

	}G
	Ʀ utility.c  int sitronix_mode_switch(int modeID, bool flag)
	modeID 1 ɡA i flag AAw]}


ثewsb~fG
1B/sys/sitronix_ts_attrs/stmodeswitch
	echo 01 00 > /sys/sitronix_ts_attrs/stmodeswitch    \
	echo 01 01 > /sys/sitronix_ts_attrs/stmodeswitch    }Ҵ\

2B/proc/sitronix/swu
	"echo off > /proc/sitronix/swu"		\
	"echo on > /proc/sitronix/swu"		}Ҵ\
	iε{惡procg on/off
	YݨLfAЦۦإߨéIs sitronix_mode_switch

4.Self

	Selfի|i normal / open / short / uniformity (ثeȦ, default disabled) / STD (RAW dataíw)
	]wPƳ sitronix_ts_test.c
	|إߴɮסG
	#define ST_SELFTEST_LOG_PATH "/sdcard/ST_SELFTEST_LOG.txt"

	ثewsb~fG
	/sys/sitronix_ts_attrs/stselftest
	"echo 1 > /sys/sitronix_ts_attrs/stselftest"	Ұʴ
	"cat /sys/sitronix_ts_attrs/stselftest"		ݴյG

	άO{IsGvoid sitronix_touch_selftest(void)  Ұʴ
	int sitronix_selftest_result_read(void)		յG ,1 ok , 0 fail

	קձȡG
		- Τ TDDI IC(ST7123/ST7121P/ST7123P)Ab sitronix_ts_test.c }UC IC  define ë̽䥦 IC define(p} SITRONIX_TEST_ST7123)C
	
			#define SITRONIX_TEST_ST7123
			//#define SITRONIX_TEST_ST7121P
			//#define SITRONIX_TEST_ST7123P

		- ST7123:
			a. bsitronix_ts_test_st7123.h } #define ST_REQUEST_SELF_TEST_INIArequest_firmware覡JiniɡA
				w]ձɦW"st_selftest_criteria.ini"Ai#define ST_SELFTEST_INI_PATH]wC
				Y}ҡAhϥsitronix_ts_test_st7123.hw]defineȡC
			b. վw]եd: (b sitronix_ts_test_st7123.h ̳]wA]wȥHҲռtqdȦAe@ǧYi)
				- Normal Rawdata Test:		ST_SELFTEST_NORMAL_MIN, ST_SELFTEST_NORMAL_MAX
				- Open Test: 				ST_SELFTEST_OPEN_MIN, ST_SELFTEST_OPEN_MIN
				- Short Test: 				ST_SELFTEST_SHORT_MAX
				- Uniformity Test: 			ST_SELFTEST_UNIFORMITY_MIN, ST_SELFTEST_UNIFORMITY_MAX
				- STD Test: 				ST_SELFTEST_STD_MAX
		- ST7121P:
			a. bsitronix_ts_test_st7121p.h } #define ST_REQUEST_SELF_TEST_INIArequest_firmware覡JiniɡA
				w]ձɦW"st_selftest_criteria.ini"Ai#define ST_SELFTEST_INI_PATH]wC
				Y}ҡAhϥsitronix_ts_test_st7121p.hw]defineȡC
			b. վw]եd: (b sitronix_ts_test_st7121p.h ̳]wA]wȥHҲռtqdȦAe@ǧYi)
				- Normal Rawdata Test:		ST_SELFTEST_NORMAL_MIN, ST_SELFTEST_NORMAL_MAX
				- Open MUX On/Off Test: 	ST_SELFTEST_OPEN_MUX_ON_OFF_MIN
				- Short Test: 				ST_SELFTEST_SHORT_MAX
				- Uniformity Test: 			ST_SELFTEST_UNIFORMITY_MIN, ST_SELFTEST_UNIFORMITY_MAX
				- STD Test: 				ST_SELFTEST_STD_MAX
		- ST7123P:
			a. bsitronix_ts_test_st7123p.h } #define ST_REQUEST_SELF_TEST_INIArequest_firmware覡JiniɡA
				w]ձɦW"st_selftest_criteria.ini"Ai#define ST_SELFTEST_INI_PATH]wC
				Y}ҡAhϥsitronix_ts_test_st7123p.hw]defineȡC
			b. վw]եd: (b sitronix_ts_test_st7123p.h ̳]wA]wȥHҲռtqdȦAe@ǧYi)
				- Normal Rawdata Test:		ST_SELFTEST_NORMAL_MIN, ST_SELFTEST_NORMAL_MAX
				- Open MUX On/Off Test: 	ST_SELFTEST_OPEN_MUX_ON_OFF_MIN
				- Short Test: 				ST_SELFTEST_SHORT_MAX
				- Uniformity Test: 			ST_SELFTEST_UNIFORMITY_MIN, ST_SELFTEST_UNIFORMITY_MAX
				- STD Test: 				ST_SELFTEST_STD_MAX


5.վA
	YiHѤtվA
	 image 㦳 adb root v AiHremount requestfw ҥΪƧ
	ôѧs kernel image覡CHKվA

6.grip 
	Ʀ utility.c  int sitronix_mode_switch_value(int modeID, bool flag, unsigned char value);
	modeID 7 ɡA i flag P value બAAw]
	flag: true , }ҥ\
	flag: false ,\
	value pU
	typedef enum {
		ST_MODE_GRIP_ROTATE_0		=	0,
		ST_MODE_GRIP_ROTATE_90		=	1,
		ST_MODE_GRIP_ROTATE_180		=	2,
		ST_MODE_GRIP_ROTATE_270		=	3,	
	} ST_MODE_GRIP_ROTATE_VALUE;

	ثewsb~fG
	6.1B/sys/sitronix_ts_attrs/stmodeswitch
		echo 07 0 > /sys/sitronix_ts_attrs/stmodeswitch    }grip\Aó] ST_MODE_GRIP_ROTATE_0
		echo 07 1 > /sys/sitronix_ts_attrs/stmodeswitch    }grip\Aó] ST_MODE_GRIP_ROTATE_90
		echo 07 2 > /sys/sitronix_ts_attrs/stmodeswitch    }grip\Aó] ST_MODE_GRIP_ROTATE_180
		echo 07 3 > /sys/sitronix_ts_attrs/stmodeswitch    }grip\Aó] ST_MODE_GRIP_ROTATE_270
		echo 07 {not 0 1 2 3} > /sys/sitronix_ts_attrs/stmodeswitch    grip\

	6.2B/proc/sitronix/grip
		"echo 0 > /proc/sitronix/grip"		 }grip\Aó] ST_MODE_GRIP_ROTATE_0
		"echo 90 > /proc/sitronix/grip"		 }grip\Aó] ST_MODE_GRIP_ROTATE_90
		"echo 180 > /proc/sitronix/grip"	 }grip\Aó] ST_MODE_GRIP_ROTATE_180
		"echo 270 > /proc/sitronix/grip"	 }grip\Aó] ST_MODE_GRIP_ROTATE_270
		"echo on > /proc/sitronix/grip"		 }grip\AVW@]wV
		"echo off > /proc/sitronix/grip"	 grip\
		iε{惡procg 0/90/180/270/on/off
		YݨLfAЦۦإߨéIs sitronix_mode_switch_value


7. /proc/sitronix/headphone
	adb shell "echo on > /proc/sitronix/headphone"	}Ҧվu\
	adb shell "echo off > /proc/sitronix/headphone"	վu\

8.  /proc/sitronix/glove
	adb shell "echo on > /proc/sitronix/glove"	}ҤM\
	adb shell "echo off > /proc/sitronix/glove"	M\

9. /proc/sitronix/stproximity
	
	(X "Sitronix TDDI Touch Driver v43.00.240328" iH ST7121P proximity\)
	
	} #define SITRONIX_SUPPORT_PROXIMITYsĶYiC
	
	ثeXʦѸ`I}proximity\C
	/proc/sitronix/stproximity

	ϥΤ覡pUG

	(1) } proximity\G
	adb shell "echo 1 > /proc/sitronix/stproximity"

	(2) proximity\G
	adb shell "echo 0 > /proc/sitronix/stproximity"

	(3)̮ɱҥ proximity \C proximityݭnbsleep out ɤ~ʧ@C
	oӫOAXʷ|b̪p(sitroinx_ts_suspend)Udisplay driver 11 OAdisplayiJ sleep outAɤ~|proximity\C

	adb shell "echo 2 > /proc/sitronix/stproximity"

	檬ppUG
	(1) G̮ɶ} proximityA|bkernel logLA 0, 1, 2, 3C 0OA13ܻPTPZAA1ܰ즳aA3ܤwK̤WC
	(2) ̮ɱҥ proximityA|bkernel logLA45C4ܶKb̤WA5}C

	G̮ɡG
	---------------------------------------------------------------------------
	<6>[   967.791493] [ST MSG] monitor sensing counter: 25 a6
	<6>[   969.209460] [ST MSG] size = 2, cmd = 1
	<6>[   969.213393] [ST MSG] sitronix_ts_proximity_enable On
	<6>[   969.796337] [ST MSG] monitor sensing counter: 26 94
	<6>[   977.765275] [ST MSG] proximity status: 1
	<6>[   977.793522] [ST MSG] proximity status: 2
	<6>[   977.934862] [ST MSG] proximity status: 3
	<6>[   978.951444] [ST MSG] proximity status: 0
	<6>[   981.515466] [ST MSG] proximity status: 1
	<6>[   981.543707] [ST MSG] proximity status: 2
	<6>[   981.685555] [ST MSG] proximity status: 3
	<6>[   982.243562] [ST MSG] proximity status: 0
	<6>[   985.881372] [ST MSG] monitor sensing counter: 2e 1e
	---------------------------------------------------------------------------

	̮ɡG
	---------------------------------------------------------------------------
	<6>[  1020.035610] [ST MSG] sitronix_mode_restore success
	<6>[  1020.586186] [ST MSG] size = 2, cmd = 2
	<6>[  1020.586222] [ST MSG] Enable Proximity Sensing in suspend
	<6>[  1020.586248] [ST MSG] sitronix_ts_proximity_control_sensing : 1
	<6>[  1020.665466] [ST MSG] proximity status: 5
	<6>[  1030.514751] [ST MSG] proximity status: 4
	<6>[  1031.331761] [ST MSG] proximity status: 5
	<6>[  1033.824948] [ST MSG] proximity status: 4
	<6>[  1034.752644] [ST MSG] proximity status: 5
	---------------------------------------------------------------------------

	Ȥib sitroinx_ts.c  sitronix_ts_report_proximity() @QnWƥC
	
	CFG ]wG
		} IF_Setting2  Bit(2):ProxEn

10. Sensor Key \
	
	(X "Sitronix TDDI Touch Driver v43.00.240717" iH Sensor Key \)
	
	} #define SITRONIX_SENSOR_KEY sĶYiC
	
	pݭn Sensor Key mappingAiq sitronix_ts.c ̭ק sitronix_sensor_key_arrar[] eG
		static sitronix_sensor_key_t sitronix_sensor_key_array[] = {
			{KEY_BACK}, // bit 0
			{KEY_HOME}, // bit 1
			{KEY_MENU}, // bit 2
		};

11. SWK Single/Double Tap Ҧ\

	} SWK Single Tap(): echo 1 > /proc/sitronix/stswktapmode
	} SWK Double Tap(): echo 2 > /proc/sitronix/stswktapmode

	(P\णPɦsb)


12. SWK Ҧܥ\

	} SWM w]	: 
		echo 0 > /proc/sitronix/stswkselect
	} SWK Signel Tap	: 
		echo 1 > /proc/sitronix/stswkselect
	} SWK Double Tap	: 
		echo 2 > /proc/sitronix/stswkselect
	} SWK Slide(ưʤաAWBUBBk):
		echo 3 > /proc/sitronix/stswkselect
	
	( 1 ~ 3ɡALյLġC)
	
========================================================================

LDiLHIDG weilchen99 (G) /petitk (pK)
P¡I
