시스템 사양 선택 | 1번 |
---|
*적용중인 도장
가끔, GenI2C 가 터치패드와 관련된 SSDT Hot Patch 를 생성하면서
일부 External References 를 자동으로 감지하여 수정하더라도
여전히 자동으로 해결할 수 없는 일부 External References 가 있다고 합니다.
이 경우에는 우리가 누락된 부분을 직접 External Declaration 하여 수동으로 Fix 를 해줘야 한다고 합니다. :)
GenI2C 를 사용하여 터치패드와 관련된 SSDT Hot Patch 가 생성된 폴더로 들어가면
다음 사진과 같이 SSDT-GPI0.dsl 은 SSDT-GPI0.aml 로 컴파일되어 저장이 되었지만
SSDT-TPAD.dsl 파일은 그렇지 않은 것을 볼 수 있습니다.
확장자가 .aml 의 형태로 컴파일되어 저장되어 있지 않습니다.
🌿 누락된 External References 를 찾기
SSDT-TPAD.dsl 을 MaciASL 로 열고 컴파일 버튼을 누르면
다음 사진과 같이 Object does not exist 라는 Error 가 발생하는 것을 볼 수 있습니다.
ADR0, TPDF, TPID 라는 Object 에 해당하는 External References 가 없기 때문입니다.
ADR0, TPDF, TPID 라는 Object 는 DSDT 에 정의되어 존재하는 것을 확인할 수 있으며
외부의 DSDT 로부터 참조하므로 해당 Object 에 대한 External Declaration 을 추가해야 합니다.
☘️ Object's 의 유형을 파악하기
이제, 우리는 누락된 External References 에 해당하는 Object's 의 유형을 파악할 것입니다.
PkgObj 는 다음과 같이 나타납니다.
Name (TPID, Package (0x08)
{
...
}
IntObj 는 다음과 같이 나타납니다.
CreateWordField (SBFB, \_SB.PCI0.I2Cx.xxxx._Yxx._ADR, ADR0)
Field 에서 정의되어 있는 Object 는 다음과 같이 나타납니다.
TPDF 라는 Object 가 COMP 라는 SystemMemory Region 에서 COMP 라는 Field 에 정의되어 있습니다.
이의 올바른 해결 방법은 SSDT 에 동일한 Region 과 Field 를 입력하여 생성하고 해당 Object 를 입력하는 것입니다.
OperationRegion (COMP, SystemMemory, 0x89C8D018, 0x0200)
Field (COMP, AnyAcc, Lock, Preserve)
{
TPDF, 8
}
그러면, 다음 사진과 같이 입력하여 수정할 수 있습니다.
위의 Region 및 Field 는 예제일 뿐이며, 위의 구문을 그대로 복사하여 사용하지 마세요. 자신의 DSDT 에서 정의되어 있는 Region & Field 구문을 사용해주세요.
그 외 나머지 Object's 의 유형은 다음과 같습니다.
- Method 인 경우 : MethodObj
- Device 인 경우 : DeviceObj
- Field 에 정의된 경우 : FieldUnitObj
참고로, 이러한 Object 는 일반적으로 _CRS Method 에서 사용되지 않으므로 더 이상의 설명은 없을 것이라고 합니다.
이 문서에 문제가 있는 경우 UEFI.org 의 ACPI Specification 기술 문서를 확인해보세요.
https://uefi.org/sites/default/files/resources/ACPI_6_3_May16.pdf
🍀 Object's 의 경로를 확인하기
OEM DSDT 에서 I2C 방식의 터치패드 및 터치스크린과 관련된 장치는 거의 모두 \_SB.PCI0.I2C~ 라는 Scope 를 경유합니다.
노트북의 기종마다 다르며 터치패드가 I2C0 / I2C1 / I2C2 / I2C3 ... 등의 Scope 중에서 어느 부분에 해당하는지는 직접 확인해야 합니다.
누락된 Object's 는 거의 모두 I2C 장치의 경로에 존재하며, 해당 Object's 의 경로가 _SB.PCI0.I2Cx 가 아니라면 올바른 경로인지 확인해주세요.
위의 Field 예제에서 Field 를 작성하였으므로 해당 Field 에 대한 External Declaration 을 추가할 필요가 없습니다.
🌷 External Declaration 을 생성하기
SSDT 의 상단 부분에 누락된 External References 를 입력하여 추가하면 됩니다.
다음과 같은 External References 는 이미 입력되어 있을 것이며 아래 부분에 새로 입력하여 추가하면 됩니다.
External(_SB.PCI0.I2C1.TPAD, DeviceObj)
External(_SB.PCI0.I2C1.TPAD.SBFB, IntObj)
External(_SB.PCI0.I2C1.TPAD.SBFG, IntObj)
External(OSYS, FieldUnitObj)
External(_SB.PCI0.I2C1.TPAD.HID2, IntObj)
...
External References 의 형태는 다음과 같습니다.
External ("Path", "Object Type")
- Path 에는 해당 Object 의 이름을 포함하여 경로를 입력합니다.
- Object Type 에는 해당 Object 의 유형을 입력합니다.
위의 예제를 바탕으로 External Declaration 을 추가한다면
TPDF 라는 Object 는 Region 과 Field 를 생성하는 방법으로 해결하였으므로
TPID 과 ADR0 Object's 만 해결하면 됩니다.
- TPID 의 경우 : External (_SB.PCI0.I2C1.TPAD.TPID, PkgObj)
- ADR0 의 경우 : External (_SB.PCI0.I2C1.TPAD.ADR0, IntObj)
그러면, 최종적으로 다음 사진과 같이 수정이 완료될 것입니다.
누락된 Object's 를 SSDT 에 직접 복사하여 입력하는 방식으로 문제를 해결한 경우에는 OEM DSDT 에 정의되어 있는 원래의 Object's 의 이름을 다른 이름으로 Rename 하는 작업이 필요합니다.
🌻 참고 : GenI2C 가 자동으로 생성하는 External References 는 다음과 같습니다.
- External (_SB.PCI0.I2CM, MethodObj)
- External (_SB.PCI0.I2Cx.I2CX, UnknownObj)
- External (_SB.PCI0.I2Cx.xxxx.BADR, IntObj)
- External (_SB.PCI0.I2Cx.xxxx.SPED, IntObj)
- External (_SB.PCI0.I2Cx.xxxx.HID2, UnknownObj)
- External (_SB.PCI0.I2Cx.xxxx.SBFB, UnknownObj) *
- External (_SB.PCI0.I2Cx.xxxx.SBFI, UnknownObj) *
- External (_SB.PCI0.I2Cx.xxxx.SBFG, UnknownObj) *
- External references inside " If (( " , " If LLess ( " , " If LEqual ( " will be automatically created as FieldUnitObj.
* Interrupt Controller 의 이름은 DSDT 에서 사용된 Controller 에 따라 달라집니다.
🌾 External References 수정 작업을 완료하고 마무리하기
누락된 External References 를 입력 및 수정하여 Declaration 하는 작업을 모두 완료였습니다.
다음 사진과 같이 컴파일 버튼을 눌러도 Error 가 발생하지 않는 모습을 볼 수 있습니다.
⭐️ 이제, 수정한 SSDT 를 확장자가 .aml 인 형태로 컴파일하여 저장하고 적용하면 모두 완료됩니다. :)
❄️ Github 출처 및 참고한 사이트
https://github.com/williambj1/GenI2C/wiki/Manually-fix-missing-External-references-within-SSDT-En
"님의 댓글"
이 댓글을 신고 하시겠습니까?
제목 | 조회 수 | 날짜 | 글쓴이 |
---|---|---|---|
macOS Sequoia 15.0.1 24A348 정식버젼 고스트 이미지 OC 1.0.2 ft: 전체공개 +29 | 938 | 24.10.1121:10 | 좌절금지 |
오픈코어 1.0.2 +23 | 575 | 24.10.0900:22 | 줌바이퍼 |
[중급편] 노트북 해킨 +16 | 1403 | 24.07.1219:19 | Stultus |
macOS Ventura 13.7 22H123 정식버젼 고스트 이미지 OC 1.0.1 ft: 전체 공개 +17 | 575 | 24.09.1917:09 | 좌절금지 |
macOS Sonoma 14.7 23H124 정식버젼 고스트 이미지 OC 1.0.1 ft: 전체공개 +31 | 909 | 24.09.1723:58 | 좌절금지 |
[초급편] 문제 스스로 해결하기 +20 | 4003 | 24.03.2920:07 | Stultus |
[입문편] 첫 해킨 길라잡이 +40 | 5087 | 24.01.1218:54 | Stultus |
[필독 - 안정화] macOS 해킨토시 설치 후 안정화 작업 목록 및 글타래 모음 총정리 📋 +67 | 5.1만 | 23.01.0913:39 | shl628 |
Hot AMD Sequoia용 AppleALC 1.9.2 +3 | 108 | 24.10.2319:04 | 사노라맨 |
Hot [Sequoia 15.0.1, OC r1.0.2] ASUS TUF B550-PLUS / RYZEN 5 5600X / RX470 +2 | 104 | 24.10.2322:26 | 뿌엥 |
Hot OCLP로 지원되지 않는 기기/dGPU를 사용하는 해킨토시의 사이드카 품질 문제 해결방법 +1 | 120 | 24.10.2321:29 | 해킨도전자 |
104 | 24.10.2322:26 | 뿌엥 | |
120 | 24.10.2321:29 | 해킨도전자 | |
108 | 24.10.2319:04 | 사노라맨 | |
786 | 24.10.1412:27 | shl628 | |
671 | 24.10.1316:00 | 수박 | |
344 | 24.10.1222:56 | Stultus | |
938 | 24.10.1121:10 | 좌절금지 | |
733 | 24.10.1115:53 | 수박 | |
575 | 24.10.0900:22 | 줌바이퍼 | |
1403 | 24.07.1219:19 | Stultus | |
1213 | 24.10.0500:31 | 줌바이퍼 | |
569 | 24.10.0410:49 | Tamy | |
749 | 24.09.2923:48 | 머트 | |
629 | 24.09.2822:28 | 머트 | |
463 | 24.09.2808:22 | Tamy | |
894 | 24.09.2321:32 | Stultus | |
994 | 24.09.2210:59 | 좌절금지 | |
644 | 24.09.2203:23 | 누림어멈 | |
1191 | 24.09.1919:17 | 좌절금지 | |
575 | 24.09.1917:09 | 좌절금지 | |
498 | 24.09.1813:37 | Stultus | |
909 | 24.09.1723:58 | 좌절금지 | |
601 | 24.09.1722:40 | 좌절금지 | |
453 | 24.09.1717:13 | 맥가즈아 | |
562 | 24.09.1708:13 | 김경석 | |
234 | 24.09.1617:47 | Panictosh | |
768 | 24.09.1504:35 | Tamy | |
584 | 24.09.1319:18 | Stultus | |
706 | 24.09.1019:44 | 치토 | |
484 | 24.09.0118:13 | 머핀X | |
462 | 24.09.0112:54 | 해킨도전자 | |
546 | 24.08.3115:34 | 머핀X | |
306 | 24.08.2601:42 | 화정큐삼 | |
305 | 24.08.2422:59 | 하나브 | |
318 | 24.08.2316:25 | 화정큐삼 | |
415 | 24.08.1810:56 | CanBe | |
363 | 24.08.1800:04 | 화정큐삼 | |
300 | 24.08.1722:03 | 화정큐삼 | |
201 | 24.08.1710:14 | jbhlyk | |
312 | 24.08.1622:06 | Stultus | |
218 | 24.08.1511:16 | hackillious | |
169 | 24.08.1421:30 | 세유니 | |
419 | 24.08.1419:58 | Stultus | |
377 | 24.08.1311:26 | 오디세이 | |
270 | 24.08.1115:46 | 좌절금지 | |
186 | 24.08.1111:21 | 티타보르 | |
233 | 24.08.1022:46 | Stultus | |
539 | 24.08.1022:10 | 오디세이 | |
168 | 24.08.1019:05 | jbhlyk | |
200 | 24.08.0923:20 | RogerT |
말씀대로 SSDT-TPAD.dsl 파일은 컴파일도 안되고하길래
무시했는데 이걸 안넣어서 작동을 안하는거였을까요?
geni2c에서 deviceName이 enub으로만 나와서 너무 스트레스 받았는데
한번 해봐야겠습니다 ㅎㅎ