시스템 사양 선택 | 1번 |
---|
*적용중인 도장
I2C 방식의 터치패드는 VoodooI2C 를 사용하여 터치패드를 활성화하며 제스처를 안정화합니다.
특히, 노트북의 안정화 작업 중에서 VoodooI2C 를 사용하여 I2C 방식의 터치패드가 작동하도록 패치하는 것은 조금 많이 어려운 편입니다.
그래서, GPIO Pinning 작업 중 APIC Pin 의 값을 통하여 GPIO Pin 의 값을 구하는 방법을 설명하고자 합니다. :)
본 Tip 글은 APIC Pin 의 값이 0x2F 보다 큰 경우 GPIO Controller 에 의한 Interrupt 모드로 작동시킬 때 필요한 작업입니다.
즉, Intel 6th Gen Sky Lake 이상의 시스템에서 Interrupt (GPIO) 모드를 사용하려는 경우에 대한 내용입니다.
Intel 4th Gen Haswell & Intel 5th Gen Broadwell 에서 I2C 터치패드 장치의 APIC Pin 의 값이 0x2F 를 초과하는 경우에는
Interrupt 모드를 사용할 수 없으며 Polling 모드만 사용할 수 있습니다.
VoodooGPIO 는 Intel 6th Gen Sky Lake 이상의 시스템부터 지원합니다.
1. APIC Pin 의 값을 확인하기
1-1. IORegistryExplorer 를 사용하여 확인하기
I2C 방식의 터치패드에 해당하는 Device 를 선택하고 우측에 표시되는 IOInterruptSpecifiers 의 숫자 첫 두 자리가 APIC Pin 입니다.
위의 사진을 예시로 들면 TPD1 Device 의 APIC Pin 의 값은 0x33 입니다.
1-2. OEM DSDT 에서 확인하기
APIC Pin 에 해당되거나 포함하는 Resource Template 의 Interrupt 값을 확인합니다.
APIC Pin 에 해당하는 Resource Template 는 주로 SBFI 라는 이름으로 존재합니다.
위의 사진을 예시로 들면 APIC Pin 의 값은 0x6D 입니다.
그런데, APIC Pin 에 해당되거나 포함하는 Resource Template 의 Interrupt 값이 위의 사진과 같이 정해져 있지 않고
처음부터 원래 0x00000000 으로 표시되는 경우도 있습니다.
이는 APIC Pin 의 값이 0x0 이라는 것을 의미하는 것이 아니며 APIC Pin 의 값을 아직 알 수 없습니다.
이 경우에는 다른 방법으로 APIC Pin 의 값을 확인해주세요.
1-3. VoodooI2C 의 로그에서 확인하기
Config.plist 에 msgbuf=1048576 부트 옵션을 추가하고 다시 부팅한 후에 터미널에서 아래의 명령어를 실행하여 로그를 확인합니다.
sudo dmesg | grep -i "Voodoo"
Incompatible APIC Interrupt Pin (0x33 > 0x2F) 등의 로그가 보인다면 0x33 이 APIC Pin 입니다.
혹시, 만약 위와 같은 로그가 보이지 않는다면 다른 방법으로 APIC Pin 의 값을 확인해주세요.
2. APIC Pin 에 해당하는 GPP IRQ Group 찾기
2-1. Intel Sunrise Point 의 경우
https://github.com/coreboot/coreboot/blob/master/src/soc/intel/skylake/include/soc/gpio_defs.h
2-2. Intel Cannon Lake - LP 의 경우
https://github.com/coreboot/coreboot/blob/master/src/soc/intel/cannonlake/include/soc/gpio_defs.h
2-3. Intel Cannon Lake - H 의 경우
2-4. Intel Ice Lake - LP 의 경우
https://github.com/coreboot/coreboot/blob/master/src/soc/intel/icelake/include/soc/gpio_defs.h
위의 사이트에 들어간 후에 우측의 16 진수에서 APIC Pin 을 찾습니다.
2~3개 정도 찾을 수 있는데 주로 위에서 첫 번째로 찾은 것을 사용합니다.
APIC Pin 을 찾은 후 이에 해당하는 좌측의 GPP_XYY_IRQ 를 기억합니다.
예시 - Intel Sunrise Point 이고 APIC Pin 의 값이 0x37 이라면
이에 해당하는 GPP IRQ Group 은 GPP_B7_IRQ 과 GPP_F7_IRQ 입니다.
3. APIC Pin 의 값을 GPIO Pin 의 값으로 변환하기
사용하는 Intel CPU 의 세대 또는 Intel Chipset 의 코드 네임에 따라서 계산 과정이 조금 다릅니다.
3-1. Intel Sunrise Point 의 경우 : APIC Pin → GPIO Pin (= Hardware Pin)
https://github.com/coreboot/coreboot/blob/master/src/soc/intel/skylake/include/soc/gpio_soc_defs.h
위의 사이트에 들어간 후에 2. 단계에서 찾은 GPP IRQ Group (GPP_XYY_IRQ) 를 좌측에서 찾습니다.
그리고, 그에 해당하는 우측의 10진수가 GPIO Pin 입니다.
이제, 그 10진수를 16진수 Hex 로 변환하면 그 값이 GPIO Pin 입니다.
예시 - GPP_B7_IRQ 과 GPP_F7_IRQ 이라면 각각 차례대로 31 과 127 이 10진수의 GPIO Pin 입니다.
그러므로, 31 과 127 을 16진수 Hex 로 변환한 0x1F 와 0x7F 가 사용해 볼 수 있는 GPIO Pin 입니다.
추가로, 사진으로 이해하면 더 쉬울 것 같아서 아래의 사진도 참고해보세요.
3-2. Intel Cannon Lake + 의 경우 : APIC Pin → Hardware Pin → GPIO Pin
Intel Cannon Lake 이후이므로 Intel Ice Lake - LP 도 여기에 해당됩니다.
3-2-1. Intel Cannon Lake - LP 의 경우 : APIC Pin → Hardware Pin
3-2-2. Intel Cannon Lake - H 의 경우 : APIC Pin → Hardware Pin
3-2-3. Intel Ice Lake - LP 의 경우 : APIC Pin → Hardware Pin
https://github.com/coreboot/coreboot/blob/master/src/soc/intel/icelake/include/soc/gpio_soc_defs.h
위의 사이트에 들어간 후에 2. 단계에서 찾은 GPP IRQ Group (GPP_XYY_IRQ) 를 좌측에서 찾습니다.
그리고, 그에 해당하는 우측의 10진수가 Hardware Pin 입니다.
그 Hardware Pin 을 기억합니다.
Intel Cannon Lake + 의 경우에는 여기까지가 APIC Pin → Hardware Pin 의 변환 과정이며
아래의 3-3. 단계도 이어서 진행합니다.
3-3. Intel Cannon Lake + 의 경우 : APIC Pin → Hardware Pin → GPIO Pin
3-3-1. Intel Cannon Lake - LP 의 경우 : Hardware Pin → GPIO Pin
3-3-2. Intel Cannon Lake - H 의 경우 : Hardware Pin → GPIO Pin
3-3-3. Intel Ice Lake - LP 의 경우 : Hardware Pin → GPIO Pin
위의 사이트에 들어간 후에 2. 단계에서 찾았던 GPP IRQ Group (GPP_XYY_IRQ) 를 우측의 /* GPP_X */ 에서 찾습니다.
그러면, CHIPSET_GPP (num, base, end, gpio_base), /* GPP_X */ 라는 형식의 구문을 볼 수 있습니다.
이제, 3-2. 단계에서 구한 10진수의 Hardware Pin 에서 base 의 값을 빼고 gpio_base 의 값을 더합니다.
즉, 계산식을 다시 정리하면 Hardware Pin - base + gpio_base 입니다.
위의 계산을 모두 완료하여 나온 10진수를 16진수 Hex 로 변환하여 나온 값이 GPIO Pin 입니다.
예시 - Intel Cannon Lake - LP 이고 APIC Pin 의 값이 0x3E 라면
이에 해당하는 GPP IRQ Group 은 GPP_B14_IRQ 과 GPP_F14_IRQ 입니다.
GPP_B14_IRQ 과 GPP_F14_IRQ 이라면 각각 차례대로 39 와 107 이 10진수의 Hardware Pin 입니다.
CNL_GPP (1, 25, 50, 32), /* GPP_B */ 이므로 39 - 25 + 32 = 46 입니다.
CNL_GPP (1, 93, 116, 128), /* GPP_F */ 이므로 107 - 93 + 128 = 142 입니다.
그러므로, 46 과 142 를 16진수 Hex 로 변환한 0x2E 와 0x8E 가 사용해 볼 수 있는 GPIO Pin 입니다.
4. 구한 GPIO Pin 의 값을 적용하기
DSDT 에서 I2C 방식의 터치패드에 해당하는 Device 의 GPIO Pin 에 해당하는 Resource Template 를 찾습니다.
GPIO Pin 에 해당하는 Resource Template 는 주로 SBFG 라는 이름으로 존재합니다.
그리고, Pin list 항목에 구한 GPIO Pin 의 값을 넣어주면 됩니다.
예를 들어서, 구한 GPIO Pin 의 값이 0x23 이라면 아래의 사진과 같이 수정하면 됩니다.
이제, _CRS Method 에서 I2C 방식의 터치패드가 VoodooI2C 에 의하여 Interrupt (GPIO) 모드로 작동하도록
I2cSerialBusV2 에 해당하는 Resource Template 와 GPIO Pin 에 해당하는 Resource Template 를
Concatenate 하여 Return 하도록 수정합니다.
단, I2cSerialBusV2 에 해당하는 Resource Template 의 이름이 일반적으로 SBFB 이지만 노트북의 모델마다 다를 수도 있습니다.
주로, 삼성 노트북의 I2C 터치패드에 해당하는 SPTP Device 는 SBFB 가 아닌 SBFS 입니다.
또한, DSDT 를 직접 수정하지 않고 SSDT 를 사용하여 Hot Patch 방식으로 패치하려는 경우에는
Override 또는 Preset Variable Method 방식으로 패치하는 것도 좋은 방법입니다.
현재 최신 버전의 VoodooI2C 는 위의 APIC Pin 을 GPIO Pin 으로 변환하는 과정을 자동으로 계산하여 적용합니다.
하지만, 해당 GPIO Pin 의 값으로 작동하지 않는 경우 다른 값으로 시도해 볼 때 유용할 것 같습니다. :)
Intel Cannon Lake + 의 경우에는 중간에 계산 실수하지 않도록 주의해주세요~.
다른 회원님도 이 Tip 글을 읽고 난 후에 APIC Pin 의 값을 가지고
GPIO Pin 으로 자유자재로 변환하는 데에 많은 도움이 되었으면 좋겠습니다. ✨
❄️ Github 출처 및 참고한 사이트
https://github.com/daliansky/P-little
https://github.com/VoodooI2C/VoodooI2C
https://github.com/VoodooI2C/VoodooI2C/blob/master/Documentation/GPIO%20Pinning.md
안녕하세요, 운영자님. :)
깨진 이미지를 다시 업로드하여 수정하였습니다. ✨
Intel 10th Gen Comet Lake CPU 는 Cannon Lake 에 해당됩니다.
추가로, CPU 에 따라서 Comet Lake - U 는 CannonLakeLP 이며 Comet Lake - H 는 CannonLakeH 입니다.
GPIO Controller 를 활성화하고 IOReg 에서 GPI0 장치에 어떤 VoodooGPIOController 가 연결되어 있는지 확인해보세요.
"님의 댓글"
이 댓글을 신고 하시겠습니까?
제목 | 조회 수 | 날짜 | 글쓴이 |
---|---|---|---|
macOS Sequoia 15.0.1 24A348 정식버젼 고스트 이미지 OC 1.0.2 ft: 전체공개 +28 | 794 | 24.10.1121:10 | 좌절금지 |
오픈코어 1.0.2 +22 | 544 | 24.10.0900:22 | 줌바이퍼 |
[중급편] 노트북 해킨 +16 | 1365 | 24.07.1219:19 | Stultus |
macOS Ventura 13.7 22H123 정식버젼 고스트 이미지 OC 1.0.1 ft: 전체 공개 +17 | 560 | 24.09.1917:09 | 좌절금지 |
macOS Sonoma 14.7 23H124 정식버젼 고스트 이미지 OC 1.0.1 ft: 전체공개 +31 | 889 | 24.09.1723:58 | 좌절금지 |
[초급편] 문제 스스로 해결하기 +20 | 3975 | 24.03.2920:07 | Stultus |
[입문편] 첫 해킨 길라잡이 +40 | 5033 | 24.01.1218:54 | Stultus |
[필독 - 안정화] macOS 해킨토시 설치 후 안정화 작업 목록 및 글타래 모음 총정리 📋 +67 | 5.1만 | 23.01.0913:39 | shl628 |
733 | 24.09.2923:48 | 머트 | |
623 | 24.09.2822:28 | 머트 | |
626 | 24.09.2203:23 | 누림어멈 | |
1163 | 24.09.1919:17 | 좌절금지 | |
496 | 24.09.1813:37 | Stultus | |
450 | 24.09.1717:13 | 맥가즈아 | |
226 | 24.09.1617:47 | Panictosh | |
482 | 24.09.0118:13 | 머핀X | |
197 | 24.08.1710:14 | jbhlyk | |
309 | 24.08.1622:06 | Stultus | |
214 | 24.08.1511:16 | hackillious | |
161 | 24.08.1421:30 | 세유니 | |
184 | 24.08.1111:21 | 티타보르 | |
523 | 24.08.1022:10 | 오디세이 | |
166 | 24.08.1019:05 | jbhlyk | |
192 | 24.08.0923:20 | RogerT | |
336 | 24.08.0717:18 | 좌절금지 | |
340 | 24.07.2915:37 | 해킨도전자 | |
272 | 24.07.2813:52 | june119 | |
4030 | 23.05.0502:19 | BlueGuerrilla | |
3727 | 21.08.0213:10 | 김태국 | |
198 | 24.07.0811:28 | 의정이 | |
239 | 24.06.2617:24 | talas | |
155 | 24.06.2120:58 | 블루사탕 | |
551 | 24.06.1609:01 | gtrfxdsp | |
762 | 24.06.1115:07 | 새콤칠리 | |
311 | 24.06.1001:11 | Steer | |
210 | 24.06.0810:09 | Door | |
467 | 24.06.0107:41 | Tamy | |
361 | 24.05.2923:53 | ssdwe346 | |
299 | 24.05.2809:58 | joy | |
270 | 24.05.2601:07 | 거니 | |
241 | 24.05.1615:02 | wjdgkdus | |
861 | 24.05.1417:36 | Tamy | |
155 | 24.05.0821:05 | 의정이 | |
2496 | 23.10.0921:28 | ryzen | |
729 | 24.05.0210:00 | 고맹이 | |
1093 | 24.04.3013:54 | shl628 | |
574 | 24.04.3020:54 | 의정이 | |
725 | 24.04.3005:11 | Cerritos | |
1937 | 24.04.2615:51 | 곰비 | |
1553 | 24.04.2612:41 | 곰비 | |
2630 | 24.04.2417:02 | Tamy | |
1012 | 24.04.2123:27 | 달이차가워 | |
3283 | 24.04.1200:06 | 누림어멈 | |
1089 | 24.04.1121:44 | 폴라 | |
1293 | 24.04.1100:15 | 머핀X | |
1336 | 24.04.1001:25 | 윈맥크로 | |
1182 | 24.04.0803:41 | 비트러브 | |
2913 | 24.04.0800:52 | proboy | |
2677 | 24.04.0613:32 | 낡은기계 | |
1120 | 24.04.0609:51 | 비트러브 | |
1381 | 24.03.2820:57 | 의정이 | |
1454 | 24.03.2819:41 | 티타보르 | |
781 | 24.03.2622:16 | miraip | |
806 | 24.03.2213:09 | 낡은기계 | |
1147 | 24.03.1514:42 | 구멍단추눈 | |
761 | 24.03.1423:29 | 광호 | |
786 | 24.03.1421:29 | Stultus | |
808 | 24.03.1313:27 | 뿌엥 | |
582 | 24.03.1302:58 | 투신코 | |
595 | 24.03.1210:42 | 사노라맨 | |
959 | 24.03.1209:40 | TOTORA | |
1111 | 24.03.1210:07 | 애플브리크 | |
626 | 24.03.1102:56 | 란초스 | |
449 | 24.03.1100:14 | 비트러브 | |
477 | 24.03.1018:18 | 해킨도전자 | |
1352 | 24.03.0920:26 | 옥대장 | |
1187 | 24.03.0914:33 | 줌바이퍼 | |
1147 | 24.03.0823:20 | 광호 | |
237 | 24.03.0821:38 | 투신코 | |
873 | 24.03.0819:57 | 줌바이퍼 | |
610 | 24.03.0809:56 | TOTORA | |
1117 | 24.03.0809:44 | 애플브리크 | |
793 | 24.02.2701:24 | 머핀X | |
591 | 24.02.2700:04 | 하나브 | |
293 | 24.02.2019:07 | 루크 | |
1780 | 22.06.1221:21 | decazzang | |
772 | 24.02.2001:01 | 광호 | |
262 | 24.02.1821:09 | 윤수꾸하하 |
안녕하세요~
이미지가 깨진 부분이 있는 것 같습니다.