mirror of
https://github.com/AskDavis/Getting-Started-With-ACPI.git
synced 2026-01-02 11:59:48 -08:00
553 lines
17 KiB
HTML
553 lines
17 KiB
HTML
|
|
<!DOCTYPE HTML>
|
|
<html lang="" >
|
|
<head>
|
|
<meta charset="UTF-8">
|
|
<meta content="text/html; charset=utf-8" http-equiv="Content-Type">
|
|
<title>Embedded Controllers · GitBook</title>
|
|
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
|
|
<meta name="description" content="">
|
|
<meta name="generator" content="GitBook 3.2.3">
|
|
|
|
|
|
|
|
|
|
|
|
<link rel="stylesheet" href="../gitbook/style.css">
|
|
|
|
|
|
|
|
|
|
<link rel="stylesheet" href="../gitbook/gitbook-plugin-search-plus/search.css">
|
|
|
|
|
|
|
|
<link rel="stylesheet" href="../gitbook/gitbook-plugin-highlight/website.css">
|
|
|
|
|
|
|
|
<link rel="stylesheet" href="../gitbook/gitbook-plugin-fontsettings/website.css">
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<link rel="stylesheet" href="../styles/website.css">
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<meta name="HandheldFriendly" content="true"/>
|
|
<meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no">
|
|
<meta name="apple-mobile-web-app-capable" content="yes">
|
|
<meta name="apple-mobile-web-app-status-bar-style" content="black">
|
|
<link rel="apple-touch-icon-precomposed" sizes="152x152" href="../gitbook/images/apple-touch-icon-precomposed-152.png">
|
|
<link rel="shortcut icon" href="../gitbook/images/favicon.ico" type="image/x-icon">
|
|
|
|
|
|
<link rel="next" href="../Laptops/laptop-ec.html" />
|
|
|
|
|
|
<link rel="prev" href="../Manual/compile.html" />
|
|
|
|
|
|
</head>
|
|
<body>
|
|
|
|
<div class="book">
|
|
<div class="book-summary">
|
|
|
|
|
|
<div id="book-search-input" role="search">
|
|
<input type="text" placeholder="Type to search" />
|
|
</div>
|
|
|
|
|
|
<nav role="navigation">
|
|
|
|
|
|
|
|
<ul class="summary">
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="chapter " data-level="1.1" data-path="../">
|
|
|
|
<a href="../">
|
|
|
|
|
|
Getting Started With ACPI
|
|
|
|
</a>
|
|
|
|
|
|
|
|
</li>
|
|
|
|
<li class="chapter " data-level="1.2" data-path="../ssdt-easy.html">
|
|
|
|
<a href="../ssdt-easy.html">
|
|
|
|
|
|
SSDTs: Easy Way
|
|
|
|
</a>
|
|
|
|
|
|
|
|
</li>
|
|
|
|
<li class="chapter " data-level="1.3" data-path="../ssdt-long.html">
|
|
|
|
<a href="../ssdt-long.html">
|
|
|
|
|
|
SSDTs: Long Way
|
|
|
|
</a>
|
|
|
|
|
|
|
|
</li>
|
|
|
|
|
|
|
|
|
|
<li class="header">Manual</li>
|
|
|
|
|
|
|
|
<li class="chapter " data-level="2.1" data-path="../Manual/dump.html">
|
|
|
|
<a href="../Manual/dump.html">
|
|
|
|
|
|
Dumping the DSDT
|
|
|
|
</a>
|
|
|
|
|
|
|
|
</li>
|
|
|
|
<li class="chapter " data-level="2.2" data-path="../Manual/compile.html">
|
|
|
|
<a href="../Manual/compile.html">
|
|
|
|
|
|
Decompiling and Compiling
|
|
|
|
</a>
|
|
|
|
|
|
|
|
</li>
|
|
|
|
|
|
|
|
|
|
<li class="header">Desktop</li>
|
|
|
|
|
|
|
|
<li class="chapter active" data-level="3.1" data-path="desktop-ec.html">
|
|
|
|
<a href="desktop-ec.html">
|
|
|
|
|
|
Embedded Controllers
|
|
|
|
</a>
|
|
|
|
|
|
|
|
</li>
|
|
|
|
|
|
|
|
|
|
<li class="header">Laptop</li>
|
|
|
|
|
|
|
|
<li class="chapter " data-level="4.1" data-path="../Laptops/laptop-ec.html">
|
|
|
|
<a href="../Laptops/laptop-ec.html">
|
|
|
|
|
|
Embedded Controllers
|
|
|
|
</a>
|
|
|
|
|
|
|
|
</li>
|
|
|
|
<li class="chapter " data-level="4.2" data-path="../Laptops/backlight.html">
|
|
|
|
<a href="../Laptops/backlight.html">
|
|
|
|
|
|
Backlight PNLF
|
|
|
|
</a>
|
|
|
|
|
|
|
|
</li>
|
|
|
|
<li class="chapter " data-level="4.3" data-path="../Laptops/trackpad.html">
|
|
|
|
<a href="../Laptops/trackpad.html">
|
|
|
|
|
|
Trackpad GPI0
|
|
|
|
</a>
|
|
|
|
|
|
|
|
</li>
|
|
|
|
|
|
|
|
|
|
<li class="header">Universal</li>
|
|
|
|
|
|
|
|
<li class="chapter " data-level="5.1" data-path="../Universal/plug.html">
|
|
|
|
<a href="../Universal/plug.html">
|
|
|
|
|
|
Plugin type
|
|
|
|
</a>
|
|
|
|
|
|
|
|
</li>
|
|
|
|
<li class="chapter " data-level="5.2" data-path="../Universal/awac.html">
|
|
|
|
<a href="../Universal/awac.html">
|
|
|
|
|
|
AWAC vs RTC
|
|
|
|
</a>
|
|
|
|
|
|
|
|
</li>
|
|
|
|
<li class="chapter " data-level="5.3" data-path="../Universal/nvram.html">
|
|
|
|
<a href="../Universal/nvram.html">
|
|
|
|
|
|
NVRAM PMC
|
|
|
|
</a>
|
|
|
|
|
|
|
|
</li>
|
|
|
|
<li class="chapter " data-level="5.4" data-path="../Universal/irq.html">
|
|
|
|
<a href="../Universal/irq.html">
|
|
|
|
|
|
IRQ Fix
|
|
|
|
</a>
|
|
|
|
|
|
|
|
</li>
|
|
|
|
<li class="chapter " data-level="5.5" data-path="../Universal/spoof.html">
|
|
|
|
<a href="../Universal/spoof.html">
|
|
|
|
|
|
GPU Spoof
|
|
|
|
</a>
|
|
|
|
|
|
|
|
</li>
|
|
|
|
|
|
|
|
|
|
<li class="header">Cleanup</li>
|
|
|
|
|
|
|
|
<li class="chapter " data-level="6.1" data-path="../cleanup.html">
|
|
|
|
<a href="../cleanup.html">
|
|
|
|
|
|
Cleanup
|
|
|
|
</a>
|
|
|
|
|
|
|
|
</li>
|
|
|
|
|
|
|
|
|
|
<li class="divider"></li>
|
|
|
|
<li>
|
|
<a href="https://www.gitbook.com" target="blank" class="gitbook-link">
|
|
Published with GitBook
|
|
</a>
|
|
</li>
|
|
</ul>
|
|
|
|
|
|
</nav>
|
|
|
|
|
|
</div>
|
|
|
|
<div class="book-body">
|
|
|
|
<div class="body-inner">
|
|
|
|
|
|
|
|
<div class="book-header" role="navigation">
|
|
|
|
|
|
<!-- Title -->
|
|
<h1>
|
|
<i class="fa fa-circle-o-notch fa-spin"></i>
|
|
<a href=".." >Embedded Controllers</a>
|
|
</h1>
|
|
</div>
|
|
|
|
|
|
|
|
|
|
<div class="page-wrapper" tabindex="-1" role="main">
|
|
<div class="page-inner">
|
|
|
|
<div class="search-plus" id="book-search-results">
|
|
<div class="search-noresults">
|
|
|
|
<section class="normal markdown-section">
|
|
|
|
<h1 id="fixing-embedded-controller-desktop">Fixing Embedded Controller (Desktop)</h1>
|
|
<p>What we'll be doing is hiding our actual EC and creating a fake Embedded Comtroller for macOS to play with.</p>
|
|
<p>To find out what EC you have, open your decompiled DSDT and search for <code>PNP0C09</code>. This should give you a result like this:</p>
|
|
<p><img src="https://i.imgur.com/lQ4kpb9.png" alt=""></p>
|
|
<p>As you can see our <code>PNP0C09</code> is found within the <code>Device (EC0)</code> meaning this is the device we want to hide from macOS(others may find <code>H_EC</code>, <code>ECDV</code>, etc, everyone's systems will be different). Now grab our SSDT-EC and uncomment the EC0 function(remove the <code>/*</code> and <code>*/</code> around it):</p>
|
|
<ul>
|
|
<li><a href="https://github.com/acidanthera/OpenCorePkg/blob/master/Docs/AcpiSamples/SSDT-EC-USBX.dsl" target="_blank">SSDT-EC-USBX</a><ul>
|
|
<li>For Skylake and newer and all AMD systems</li>
|
|
</ul>
|
|
</li>
|
|
<li><a href="https://github.com/acidanthera/OpenCorePkg/blob/master/Docs/AcpiSamples/SSDT-EC.dsl" target="_blank">SSDT-EC</a><ul>
|
|
<li>For Broadwell and older</li>
|
|
</ul>
|
|
</li>
|
|
</ul>
|
|
<pre><code class="lang-text">/* <- REMOVE THIS
|
|
External (_SB_.PCI0.LPCB.EC0, DeviceObj)
|
|
|
|
Scope (\_SB.PCI0.LPCB.EC0)
|
|
{
|
|
Method (_STA, 0, NotSerialized) // _STA: Status
|
|
{
|
|
If (_OSI ("Darwin"))
|
|
{
|
|
Return (0)
|
|
}
|
|
Else
|
|
{
|
|
Return (0x0F)
|
|
}
|
|
}
|
|
}
|
|
*/ <- REMOVE THIS
|
|
</code></pre>
|
|
<p>But looking back at the screenshot above we notice something, our ACPI path is different: <code>PC00.LPC0</code> vs <code>PCI0.LPCB</code>. This is very important especially when you're dealing with Intel consumer vs Intel HEDT vs AMD, <code>PC00.LPC0</code> is common on Intel HEDT while <code>PCI0.SBRG</code> is common on AMD. And they even come with name variation such as <code>EC0</code>, <code>H_EC</code>, <code>PGEC</code> and <code>ECDV</code>, so there can't be a one size fits all SSDT, <strong>always verify your path and device. DO NOT ASSUME</strong>.</p>
|
|
<ul>
|
|
<li>Finding the LowPinCount path: <ul>
|
|
<li>Intel: Search <code>Name (_ADR, 0x001F0000)</code></li>
|
|
<li>AMD: Search <code>Name (_ADR, 0x00140003)</code></li>
|
|
</ul>
|
|
</li>
|
|
<li>Finding the PCI path: <ul>
|
|
<li>Intel: Search <code>PNP0A08</code> (If multiple show up, use the first one)</li>
|
|
<li>AMD: Assume <code>PCI0</code>(most AMD DSDTs don't declare the PCI path directly)</li>
|
|
</ul>
|
|
</li>
|
|
</ul>
|
|
<p>And make sure to scroll to the bottom as the new Fake EC function also need the correct path to replace the old EC. <strong>Do not rename <code>Device (EC)</code></strong>, this is our fake EC we're using for macOS to play with so leave <code>Device (EC)</code> alone. <strong>Just change the path!</strong></p>
|
|
<blockquote>
|
|
<p>What happens if multiple <code>PNP0C09</code> show up</p>
|
|
</blockquote>
|
|
<p>When this happens you need to figure out which is the main and which is not, it's fairly easy to figure out. Check each controller for the following properties:</p>
|
|
<ul>
|
|
<li><code>_HID</code> (Hardware ID)</li>
|
|
<li><code>_CRS</code> (Current Resource Settings)</li>
|
|
<li><code>_GPE</code> (General Purpose Events)</li>
|
|
</ul>
|
|
<blockquote>
|
|
<p>What happens if no <code>PNP0C09</code> show up?</p>
|
|
</blockquote>
|
|
<p>So what this means: EC faking is not mandatory for booting, instead only <strong>recommended for proper USB power</strong>. </p>
|
|
<p>So how do I make an SSDT without an EC? Well we'll only create a Fake EC for macOS to play with, this allows for AppleBusPowerController to load and handle our USB properly. To make the actual SSDT, its <em>almost</em> plug and play as no uncommenting needed. The main thing that needs to be changed:</p>
|
|
<ul>
|
|
<li>LowPinCount path</li>
|
|
<li>PCI path</li>
|
|
</ul>
|
|
<p>We want to make sure the SSDT hooks into our DSDT correctly so we need to make sure the ACPI path is correct:</p>
|
|
<ul>
|
|
<li>Finding the LowPinCount path: <ul>
|
|
<li>Intel: Search <code>Name (_ADR, 0x001F0000)</code></li>
|
|
<li>AMD: Search <code>Name (_ADR, 0x00140003)</code></li>
|
|
</ul>
|
|
</li>
|
|
<li>Finding the PCI path: <ul>
|
|
<li>Intel: Search <code>PNP0A08</code> (If multiple show up, use the first one)</li>
|
|
<li>AMD: Assume <code>PCI0</code>(most AMD DSDTs don't declare the PCI path directly)</li>
|
|
</ul>
|
|
</li>
|
|
</ul>
|
|
<p><img src="https://cdn.discordapp.com/attachments/456913818467958789/670148514197667840/Screen_Shot_2020-01-23_at_11.08.30_PM.png" alt=""></p>
|
|
<p>Once you find out, change <code>PCI0.LPCB</code> to your correct path:</p>
|
|
<pre><code class="lang-text">Scope (\_SB.PC00.LPC0)
|
|
{
|
|
Device (EC)
|
|
{
|
|
Name (_HID, "ACID0001") // _HID: Hardware ID
|
|
Method (_STA, 0, NotSerialized) // _STA: Status
|
|
{
|
|
If (_OSI ("Darwin"))
|
|
{
|
|
Return (0x0F)
|
|
}
|
|
Else
|
|
{
|
|
Return (Zero)
|
|
}
|
|
}
|
|
}
|
|
}
|
|
</code></pre>
|
|
<h2 id="correcting-usb-power">Correcting USB Power</h2>
|
|
<blockquote>
|
|
<p>Hey what about USBX? Do I need to do anything?</p>
|
|
</blockquote>
|
|
<p>USBX is universal across all systems, it just creates a USBX device that forces USB power properties. This is crucial for fixing Mics, DACs, Webcams, Bluetooth Dongles and other high power draw devices. This is not mandatory to boot but should be added in post-install if not before. Note that USBX is only used on skylake+ systems, Broadwell and older can ignore and that USBX requires a patched EC to function correctly</p>
|
|
<h2 id="now-youre-ready-to-compile-the-ssdt"><a href="../Manual/compile.html">Now you're ready to compile the SSDT!</a></h2>
|
|
|
|
|
|
</section>
|
|
|
|
</div>
|
|
<div class="search-results">
|
|
<div class="has-results">
|
|
|
|
<h1 class="search-results-title"><span class='search-results-count'></span> results matching "<span class='search-query'></span>"</h1>
|
|
<ul class="search-results-list"></ul>
|
|
|
|
</div>
|
|
<div class="no-results">
|
|
|
|
<h1 class="search-results-title">No results matching "<span class='search-query'></span>"</h1>
|
|
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
</div>
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
<a href="../Manual/compile.html" class="navigation navigation-prev " aria-label="Previous page: Decompiling and Compiling">
|
|
<i class="fa fa-angle-left"></i>
|
|
</a>
|
|
|
|
|
|
<a href="../Laptops/laptop-ec.html" class="navigation navigation-next " aria-label="Next page: Embedded Controllers">
|
|
<i class="fa fa-angle-right"></i>
|
|
</a>
|
|
|
|
|
|
|
|
</div>
|
|
|
|
<script>
|
|
var gitbook = gitbook || [];
|
|
gitbook.push(function() {
|
|
gitbook.page.hasChanged({"page":{"title":"Embedded Controllers","level":"3.1","depth":1,"next":{"title":"Embedded Controllers","level":"4.1","depth":1,"path":"Laptops/laptop-ec.md","ref":"Laptops/laptop-ec.md","articles":[]},"previous":{"title":"Decompiling and Compiling","level":"2.2","depth":1,"path":"Manual/compile.md","ref":"Manual/compile.md","articles":[]},"dir":"ltr"},"config":{"plugins":["theme-default","-lunr","-search","search-plus","addcssjs","favicon-plus"],"styles":{"ebook":"styles/ebook.css","epub":"styles/epub.css","mobi":"styles/mobi.css","pdf":"styles/pdf.css","print":"styles/print.css","website":"styles/website.css"},"pluginsConfig":{"output":"_book","addcssjs":{"css":[],"js":[]},"fontsettings":{"theme":"night","family":"sans","size":2},"favicon-plus":{"appleTouchIconPrecomposed152":"","favicon":"","output":"_book"},"highlight":{},"favicon":"/icons/favicon.ico","appleTouchIconPrecomposed152":"/icons/appleTouchIconPrecomposed152.png","sharing":{"facebook":false,"twitter":false,"google":false,"weibo":false,"instapaper":false,"vk":false,"all":[]},"theme-default":{"showLevel":false,"styles":{"ebook":"styles/ebook.css","epub":"styles/epub.css","mobi":"styles/mobi.css","pdf":"styles/pdf.css","print":"styles/print.css","website":"styles/website.css"}},"search-plus":{}},"theme":"default","pdf":{"pageBreaksBefore":"/","headerTemplate":null,"paperSize":"a4","margin":{"right":62,"left":62,"top":36,"bottom":36},"fontSize":12,"fontFamily":"Arial","footerTemplate":null,"chapterMark":"pagebreak","pageNumbers":false},"structure":{"langs":"LANGS.md","readme":"README.md","glossary":"GLOSSARY.md","summary":"SUMMARY.md"},"variables":{},"links":{"sharing":{"google":false,"facebook":false,"twitter":false,"weibo":false,"all":false}},"gitbook":"*"},"file":{"path":"Desktops/desktop-ec.md","mtime":"2020-02-25T19:01:11.148Z","type":"markdown"},"gitbook":{"version":"3.2.3","time":"2020-02-25T19:02:02.283Z"},"basePath":"..","book":{"language":""}});
|
|
});
|
|
</script>
|
|
</div>
|
|
|
|
|
|
|
|
<script src="../gitbook/gitbook.js"></script>
|
|
<script src="../gitbook/theme.js"></script>
|
|
|
|
|
|
<script src="../gitbook/gitbook-plugin-search-plus/jquery.mark.min.js"></script>
|
|
|
|
|
|
|
|
<script src="../gitbook/gitbook-plugin-search-plus/search.js"></script>
|
|
|
|
|
|
|
|
<script src="../gitbook/gitbook-plugin-sharing/buttons.js"></script>
|
|
|
|
|
|
|
|
<script src="../gitbook/gitbook-plugin-fontsettings/fontsettings.js"></script>
|
|
|
|
|
|
|
|
|
|
|
|
</body>
|
|
</html>
|
|
|