From f989009df7e18e990ef3dc356b798faf6d5b6546 Mon Sep 17 00:00:00 2001
From: Marijan Limov <marijan.limov@gmail.com>
Date: Thu, 3 Feb 2022 20:27:33 +0100
Subject: [PATCH] beryllium: Fix Focaltech touchscreen

---
 beryllium/DSDT.AML                | Bin 256839 -> 258709 bytes
 beryllium/Dsdt.asl                |   2 +-
 beryllium/audio_bus.asl           |   1 +
 beryllium/dsdt_common.asl         |   5 +-
 beryllium/focaltech.asl           | 141 ++++++++++++++++++++++++++++++
 beryllium/focaltech_resources.asl | 141 ++++++++++++++++++++++++++++++
 beryllium/pep.asl                 |   2 +-
 7 files changed, 288 insertions(+), 4 deletions(-)
 create mode 100644 beryllium/focaltech.asl
 create mode 100644 beryllium/focaltech_resources.asl

diff --git a/beryllium/DSDT.AML b/beryllium/DSDT.AML
index 2c3b9939c04052e078cc4e371a2bced4ca3244ce..ec21eea86ad9502a7d98f52a9bbad7630c71644f 100644
GIT binary patch
delta 2411
zcmbW3e{54#6vxlKukY>ct#93KOS_J3eH$S#-Il$Ibtpg9z1OlryOy;O5Zq%F!%zbw
zK!|^65fT#&CN>S+5QA=H#Q29Xi-!8+55)N6FQX>9V1!MQ%^36_O_09~-uJqeZnn|*
z$GUsZ=X}pS=f3;yd0);r&M!D5J*lV8|G@!%J1ec^POaITUHdf-dFkK+-i`-c^z{Yo
z%iZV2`eY)qes7PF955n&Es+0W0m~?R?~<U`Cw0wF6W4JQ*%FEOipF3>m$z&2n15X$
zkZVOsCJ+G8*b&i@XlPmxTw0Bx4JSby9@r6X3<}ayFV_Ns{!=0}0Gt&7q2B=DoWhI<
zTG=1;p6~#8VHGof0()5!J?2uD3ql~8E&wH$7t36phbii~hWRGJ&?8B3)f&lE5T+!@
zp40t8a6mV*f3=*sit<+x@_&cVy+QAMk2-CybRb*aJ%jqh=4h6e_0Z0U76RE?*(?``
zo~fnRTk+~lEbNsNEM_WXBtt0x;^h|SY%F7@jRtoE;See#Xc=iPX(U`7aTQR;S{fu<
z1-6Lz>PV=LYN{i#3}wv1%F?ebW6Mxob!4xO<m#xNp-lM(m*wH8E^DZc8ml8x8MUWE
zAUT(@m_sa{0m((Pw^1jZzJ*k;`iK!MoK;d^IvF-3t)k!FM4h#&N$sZ|>dw71*xgld
zHm8838d#<v8gDDDvBK1^Eh=7nyrrUItH_rW?*Fl3f0^F%psL+ft0G#xu(+c2ZXnWA
zI_E$-u&hPn+BP6fSU#9e8^;c$(|%)geEgV^e(qV2Fdh96H)kp#(GJ}zV(&_z6p&3i
zOA&pxiV>OY_FaCdjQbZ^C(A^%@4JHSOc!=7DTrByY^4n7Y!g-lc0Fi@KR2CQL5(iN
zH+=eQUAYsYb4}P+?)A+j%r~;MNc=%4R{JtH_mlgvRWu2gxpB1pGu*ZqjsAWbyWL@X
z@hMw-E^*`uc2H>R8Qg|AdNhbvh!Tc^aW0Qr5XxPj_B2Qskqr+{6x;h5<ffyWv8Nfc
zGNVF~6{6Zm7pt4TIf}jB#pgD*-+F9_bQgDoPQHa*?xmQ;+9KA-x|vW*8%S=_jOA1`
z7E8p3Q|!Xz>@aZ=>h5Ri=6zPS9LsibU@Hu25G!g>tf6DKkU~$+AP=%xnYLjDs)Yl|
zjN(C_d~6oI|6~5=k8yY{H`EiP**kcIzB-Q+Xo$|v<FWtP{^mc=-+h;xU$d!Un=27Y
z^t$SziP$cfiY9hxqWR<0oQTAUZE5>RB{daDL=t7)x}WJ$A9f-io&5-Vumbd}o2YB6
zy3V=^`cJMbyvdH@ZQ<lm-7g$*7xrvRA`%BuD@cmjDS<3;Q-;Wpz|(+){jG&~01^-X
z)Y6|6?ACm&gCf{-I@WGxSm@&6R4Uo`n7W>|@4?}ntbGUd;ZiHtLkUvPnU$NpIHIYK
z($zP(4trmr`<e!za~C)dD-K=5&P+@)^kmF-IV7=2DWkWMLvZQB7?|UUK{039oKnNR
zKj$_a9M}<hhksAnc(!l$a#XMcDvV!z#`IPvx=m*lF0ZzLpMgUr@K4xH;73y|Ha97l
z|KQ5x!xL+mxyMk^xEy=>_}GyHikXQLK5;mG{LqoZ3j1P#J?fOCOrk4A6@B3bw-0Tk
v6CZF&Tg%8ukNL3>+&K^(*V$(ao12w~qk6Av6FrjW+Fg}=^64MA`NqEirCt~D

delta 1430
zcmaJ>TWAwm7(SOYre`y@GpVL=%XX-!QLr|ml0{rMnM*pF$xJe-RZ@&=b$b!Cf(QyF
z>aws8OHsz%1H0~;UHTySq@uygqqisZLA+A!gS&!4^+9}D5YNf9(o5EX1M`39`@io$
z|D1n*`KRI5g9f5HYCiQE19bBQ`4S&H|ILZ$U3Uci@q_5Ah(4IVk4A#D?-5*%)5me;
z<Rcgl(A+B+si0Tzx2N@u>Q_DOMJHLL*)hDJRnl9alx*<{s<y>YG$8b_z4pAL#DJtV
z5c=n06suoXOaK@Jxfb`sruKN;i~d~+AejfGFcR`<(@fch1tj7pVaRYi7aykOF&s8}
z0e}EV^AU4QC$<5}2MLlEP8X^7lU^n=n{`{#zL+PdPCk*>0KxQd6h-NG<8ZaVS`nac
z@1Q1MnCa8~cTfm3CpyF+|1jX5l~Xs69>r>Vf@a^L?NpgSHdN`!3Dl1^H`5OjD2qBn
zH2Vg%27}P+kz*TQUpNW{SaIK?hu2Gnn$Z<CQ0z2RA+yzvb#%l)ps27Yq1eV0;`fqm
zrz=@xixF~;sQE}@B*N-|h*jeUM;7@(6jZxytX9^5pJl$sDy=^36cMnPy>9d<DZ}aj
zhe{y8{2eh$mT)?pOFuB3US->#VFzch8|QPE!jX(_TLAzIN0;`j!u+Oin1ir{CK28R
zwruv*HP{riEh__tAdjkn4u${^c(wXx{I~v(zh28<pX;xiDV_W4-IM-0^JjtQ&w|XN
zqUxBwA;H{zpnu;knbjk6MBcf(Z(uJd#LDSrw_gmA#_R82{vH4INA<L{CnH}HddutG
zK`=Y7WXjntEw_y)wzvauS~pk=^g<hH8Wk~YD5vV&L4szdo3f+jZL3?$nU<<?k+8dG
zmPm$+a2(VSFO{u&cM#Up)w`!eH_Q~}&EcXo^kzbyHOroE&Aa(2yOb>QFF$qGTIn0v
z!SUPzHO<ahrmXDS`~5&4JNc-%kc3XP#v^AgZ$A6im3#8RpH_@xC<g45p^5?_)xqFq
zAfP6@bg@oN>S_AlbDX5VU&F^MgBS6OWeW<&zK!sIl{b;5)7i~NlAgPPLhj?bU^BnC
z-YgnQZ0+P!YIX;G_zbtLlfB!=x2C2Kc@y|)`i5s*(9s;LgpNJOJG>gMj^iidN3Pyu
Ab^rhX

diff --git a/beryllium/Dsdt.asl b/beryllium/Dsdt.asl
index c3024f3..41f0140 100644
--- a/beryllium/Dsdt.asl
+++ b/beryllium/Dsdt.asl
@@ -22,7 +22,7 @@ DefinitionBlock("DSDT.AML", "DSDT", 0x02, "QCOMM ", "SDM850 ", 3)
         //
         // Touch
         //
-        Include("cust_touch.asl")
+        Include("focaltech.asl")
 
 		//
         // Buttons
diff --git a/beryllium/audio_bus.asl b/beryllium/audio_bus.asl
index d0c74f9..7dbff2e 100644
--- a/beryllium/audio_bus.asl
+++ b/beryllium/audio_bus.asl
@@ -44,6 +44,7 @@ Device (ADCM)
             Name (_DEP, Package()
             {
                 \_SB_.SPI9,
+                \_SB_.I2C6
             })
 
             Method (_CRS, 0x0, NotSerialized) 
diff --git a/beryllium/dsdt_common.asl b/beryllium/dsdt_common.asl
index 7cb6338..ba08adb 100644
--- a/beryllium/dsdt_common.asl
+++ b/beryllium/dsdt_common.asl
@@ -27,12 +27,13 @@ Name (TCML, 0x01400000)         // Holds TrEE Carveout Memory Length
 
 //Audio Drivers
 Include("audio.asl")
+Include("audio_bus.asl")
 		
         //
         // Storage - UFS/SD 
         //
         Include("../Common/ufs.asl")
-        // Include("../Common/sdc.asl") // No SD support on polaris
+        Include("../Common/sdc.asl")
         
         //
         // ASL Bridge Device
@@ -143,6 +144,6 @@ Include("pmic_batt.asl")
 //
 Include("../Common/qgpi.asl")
 
-Include("nfc.asl")
+//Include("nfc.asl")
 
 Include("../Common/sar_manager.asl")
diff --git a/beryllium/focaltech.asl b/beryllium/focaltech.asl
new file mode 100644
index 0000000..8390051
--- /dev/null
+++ b/beryllium/focaltech.asl
@@ -0,0 +1,141 @@
+Include ("focaltech_resources.asl")
+
+Device (TSC1)
+{
+    Name (_HID, "FTTS8719")  // _HID: Hardware ID
+    //Name (_HID, "TEST3330")  // _HID: Hardware ID
+    Name (_HRV, One)  // _HRV: Hardware Revision
+    Name (_ADR, Zero)  // _ADR: Address
+    Name (_UID, One)  // _UID: Unique ID
+    Name (_DEP, Package (0x03)  // _DEP: Dependencies
+    {
+        PEP0, 
+        GIO0, 
+        IC15
+    })
+    Method (_CRS, 0, NotSerialized)  // _CRS: Current Resource Settings
+    {
+        Name (RBUF, ResourceTemplate ()
+        {
+            I2cSerialBusV2 (0x0038, ControllerInitiated, 0x00061A80,
+                AddressingMode7Bit, "\\_SB.IC15",
+                0x00, ResourceConsumer, , Exclusive,
+                )
+            GpioInt (Edge, ActiveLow, ExclusiveAndWake, PullUp, 0x0000,
+                "\\_SB.GIO0", 0x00, ResourceConsumer, ,
+                )
+                {   // Pin list
+                    0x001F
+                }
+        })
+        Return (RBUF) /* \_SB_.TSC1._CRS.RBUF */
+    }
+
+    Method (_DSM, 4, NotSerialized)  // _DSM: Device-Specific Method
+    {
+        While (One)
+        {
+            Name (_T_0, Buffer (One)  // _T_x: Emitted by ASL Compiler, x=0-9, A-Z
+            {
+                    0x00                                             // .
+            })
+            CopyObject (ToBuffer (Arg0), _T_0) /* \_SB_.TSC1._DSM._T_0 */
+            If ((_T_0 == ToUUID ("3cdff6f7-4267-4555-ad05-b30a3d8938de") /* HID I2C Device */))
+            {
+                While (One)
+                {
+                    Name (_T_1, Zero)  // _T_x: Emitted by ASL Compiler, x=0-9, A-Z
+                    _T_1 = ToInteger (Arg2)
+                    If ((_T_1 == Zero))
+                    {
+                        While (One)
+                        {
+                            Name (_T_2, Zero)  // _T_x: Emitted by ASL Compiler, x=0-9, A-Z
+                            _T_2 = ToInteger (Arg1)
+                            If ((_T_2 == One))
+                            {
+                                Return (Buffer (One)
+                                {
+                                        0x03                                             // .
+                                })
+                            }
+                            Else
+                            {
+                                Return (Buffer (One)
+                                {
+                                        0x00                                             // .
+                                })
+                            }
+
+                            Break
+                        }
+                    }
+                    ElseIf ((_T_1 == One))
+                    {
+                        Debug = "Method _DSM Function HID"
+                        Return (0x20)
+                    }
+                    Else
+                    {
+                    }
+
+                    Break
+                }
+            }
+            Else
+            {
+                Return (Buffer (One)
+                {
+                        0x00                                             // .
+                })
+            }
+
+            Break
+        }
+    }
+
+    Name (PGID, Buffer (0x0A)
+    {
+        "\\_SB.TSC1"
+    })
+    Name (DBUF, Buffer (DBFL){})
+    CreateByteField (DBUF, Zero, STAT)
+    CreateByteField (DBUF, 0x02, DVAL)
+    CreateField (DBUF, 0x18, 0xA0, DEID)
+    Method (_S1D, 0, NotSerialized)  // _S1D: S1 Device State
+    {
+        Return (0x03)
+    }
+
+    Method (_S2D, 0, NotSerialized)  // _S2D: S2 Device State
+    {
+        Return (0x03)
+    }
+
+    Method (_S3D, 0, NotSerialized)  // _S3D: S3 Device State
+    {
+        Return (0x03)
+    }
+
+    Method (_PS0, 0, NotSerialized)  // _PS0: Power State 0
+    {
+        DEID = Buffer (ESNL){}
+        DVAL = Zero
+        DEID = PGID /* \_SB_.TSC1.PGID */
+        If (^^ABD.AVBL)
+        {
+            ^^PEP0.FLD0 = DBUF /* \_SB_.TSC1.DBUF */
+        }
+    }
+
+    Method (_PS3, 0, NotSerialized)  // _PS3: Power State 3
+    {
+        DEID = Buffer (ESNL){}
+        DVAL = 0x03
+        DEID = PGID /* \_SB_.TSC1.PGID */
+        If (^^ABD.AVBL)
+        {
+            ^^PEP0.FLD0 = DBUF /* \_SB_.TSC1.DBUF */
+        }
+    }
+}
\ No newline at end of file
diff --git a/beryllium/focaltech_resources.asl b/beryllium/focaltech_resources.asl
new file mode 100644
index 0000000..335daf3
--- /dev/null
+++ b/beryllium/focaltech_resources.asl
@@ -0,0 +1,141 @@
+Scope (PEP0)
+        {
+            Method (LPMX, 0, NotSerialized)
+            {
+                Return (LPXC) /* \_SB_.PEP0.LPXC */
+            }
+
+            Name (LPXC, Package (0x01)
+            {
+                Package (0x04)
+                {
+                    "DEVICE", 
+                    "\\_SB.TSC1", 
+                    Package (0x08)
+                    {
+                        "DSTATE", 
+                        Zero, 
+                        Package (0x02)
+                        {
+                            "TLMMGPIO", 
+                            Package (0x06)
+                            {
+                                0x1F, 
+                                Zero, 
+                                Zero, 
+                                Zero, 
+                                0x03, 
+                                Zero
+                            }
+                        }, 
+
+                        Package (0x02)
+                        {
+                            "TLMMGPIO", 
+                            Package (0x06)
+                            {
+                                0x20, 
+                                Zero, 
+                                Zero, 
+                                One, 
+                                Zero, 
+                                Zero
+                            }
+                        }, 
+
+                        Package (0x02)
+                        {
+                            "PMICVREGVOTE", 
+                            Package (0x06)
+                            {
+                                "PPP_RESOURCE_ID_LDO14_A", 
+                                One, 
+                                0x001B7740, 
+                                One, 
+                                0x07, 
+                                Zero
+                            }
+                        }, 
+
+                        Package (0x02)
+                        {
+                            "DELAY", 
+                            Package (0x01)
+                            {
+                                0x03E8
+                            }
+                        }, 
+
+                        Package (0x02)
+                        {
+                            "TLMMGPIO", 
+                            Package (0x06)
+                            {
+                                0x20, 
+                                One, 
+                                Zero, 
+                                One, 
+                                Zero, 
+                                Zero
+                            }
+                        }, 
+
+                        Package (0x02)
+                        {
+                            "DELAY", 
+                            Package (0x01)
+                            {
+                                0x4E20
+                            }
+                        }
+                    }, 
+
+                    Package (0x05)
+                    {
+                        "DSTATE", 
+                        0x03, 
+                        Package (0x02)
+                        {
+                            "PMICVREGVOTE", 
+                            Package (0x06)
+                            {
+                                "PPP_RESOURCE_ID_LDO14_A", 
+                                One, 
+                                Zero, 
+                                Zero, 
+                                0x05, 
+                                Zero
+                            }
+                        }, 
+
+                        Package (0x02)
+                        {
+                            "TLMMGPIO", 
+                            Package (0x06)
+                            {
+                                0x20, 
+                                Zero, 
+                                Zero, 
+                                Zero, 
+                                One, 
+                                Zero
+                            }
+                        }, 
+
+                        Package (0x02)
+                        {
+                            "TLMMGPIO", 
+                            Package (0x06)
+                            {
+                                0x1F, 
+                                Zero, 
+                                Zero, 
+                                Zero, 
+                                One, 
+                                Zero
+                            }
+                        }
+                    }
+                }
+            })
+        }
\ No newline at end of file
diff --git a/beryllium/pep.asl b/beryllium/pep.asl
index de49c9d..42beb38 100644
--- a/beryllium/pep.asl
+++ b/beryllium/pep.asl
@@ -9,4 +9,4 @@
 Include("../Common/pep_common.asl")
 Include("cust_camera_resources.asl")
 //Include("nfc_resources.asl") //NFC
-Include("cust_touch_resources.asl")
+//Include("cust_touch_resources.asl")
-- 
2.49.0