From 8dd8f66807643cf3f3d76014b7fc0e03b7f9fd6f Mon Sep 17 00:00:00 2001 From: Bill XIE Date: Tue, 11 May 2021 15:27:43 +0800 Subject: [PATCH] mb/asus/p8z77-series: Add P8Z77-V as a variant of P8Z77 series Mainboard information can be found in the included documentation. Signed-off-by: Bill XIE Change-Id: Ic56ac0e5f93a6e818ef0666e41996718471b1cf6 Reviewed-on: https://review.coreboot.org/c/coreboot/+/54338 Tested-by: build bot (Jenkins) Reviewed-by: Angel Pons --- Documentation/mainboard/asus/p8z77-v.jpg | Bin 0 -> 33839 bytes Documentation/mainboard/asus/p8z77-v.md | 112 +++++++++++ Documentation/mainboard/asus/wifigo_v1.md | 40 ++++ .../mainboard/asus/wifigo_v1_board.jpg | Bin 0 -> 20525 bytes .../mainboard/asus/wifigo_v1_connector.jpg | Bin 0 -> 25401 bytes Documentation/mainboard/index.md | 1 + src/mainboard/asus/p8z77-series/Kconfig | 2 + src/mainboard/asus/p8z77-series/Kconfig.name | 10 + .../variants/p8z77-v/board_info.txt | 7 + .../variants/p8z77-v/cmos.default | 6 + .../p8z77-series/variants/p8z77-v/cmos.layout | 86 +++++++++ .../p8z77-series/variants/p8z77-v/data.vbt | Bin 0 -> 3902 bytes .../variants/p8z77-v/early_init.c | 57 ++++++ .../variants/p8z77-v/gma-mainboard.ads | 19 ++ .../asus/p8z77-series/variants/p8z77-v/gpio.c | 181 ++++++++++++++++++ .../p8z77-series/variants/p8z77-v/hda_verb.c | 37 ++++ .../variants/p8z77-v/overridetree.cb | 72 +++++++ 17 files changed, 630 insertions(+) create mode 100644 Documentation/mainboard/asus/p8z77-v.jpg create mode 100644 Documentation/mainboard/asus/p8z77-v.md create mode 100644 Documentation/mainboard/asus/wifigo_v1.md create mode 100644 Documentation/mainboard/asus/wifigo_v1_board.jpg create mode 100644 Documentation/mainboard/asus/wifigo_v1_connector.jpg create mode 100644 src/mainboard/asus/p8z77-series/variants/p8z77-v/board_info.txt create mode 100644 src/mainboard/asus/p8z77-series/variants/p8z77-v/cmos.default create mode 100644 src/mainboard/asus/p8z77-series/variants/p8z77-v/cmos.layout create mode 100644 src/mainboard/asus/p8z77-series/variants/p8z77-v/data.vbt create mode 100644 src/mainboard/asus/p8z77-series/variants/p8z77-v/early_init.c create mode 100644 src/mainboard/asus/p8z77-series/variants/p8z77-v/gma-mainboard.ads create mode 100644 src/mainboard/asus/p8z77-series/variants/p8z77-v/gpio.c create mode 100644 src/mainboard/asus/p8z77-series/variants/p8z77-v/hda_verb.c create mode 100644 src/mainboard/asus/p8z77-series/variants/p8z77-v/overridetree.cb diff --git a/Documentation/mainboard/asus/p8z77-v.jpg b/Documentation/mainboard/asus/p8z77-v.jpg new file mode 100644 index 0000000000000000000000000000000000000000..84acab76acfa26482eaeb5e85f1bf65ff847b846 GIT binary patch literal 33839 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 literal 0 HcmV?d00001 diff --git a/Documentation/mainboard/asus/p8z77-v.md b/Documentation/mainboard/asus/p8z77-v.md new file mode 100644 index 0000000000..dba02b9435 --- /dev/null +++ b/Documentation/mainboard/asus/p8z77-v.md @@ -0,0 +1,112 @@ +# ASUS P8Z77-V + +This page describes how to run coreboot on the [ASUS P8Z77-V]. + +## Flashing coreboot + +```eval_rst ++---------------------+----------------+ +| Type | Value | ++=====================+================+ +| Socketed flash | yes | ++---------------------+----------------+ +| Model | W25Q64FVA1Q | ++---------------------+----------------+ +| Size | 8 MiB | ++---------------------+----------------+ +| Package | DIP-8 | ++---------------------+----------------+ +| Write protection | yes | ++---------------------+----------------+ +| Dual BIOS feature | no | ++---------------------+----------------+ +| Internal flashing | no | ++---------------------+----------------+ +``` + +The flash IC is located between the black and white PCI Express x16 slots (circled): +![](p8z77-v.jpg) + +### How to flash + +The main SPI flash cannot be written because the vendor firmware disables BIOSWE +and enables BLE/SMM_BWP flags in BIOS_CNTL for their latest BIOSes. An external +programmer is required. You must flash standalone, flashing in-circuit doesn't +work. The flash chip is socketed, so it's easy to remove and reflash. + +## Working + +- PS/2 keyboard with SeaBIOS 1.14.0 and Debian GNU/Linux with kernel 5.10.28 +- Integrated Ethernet NIC +- S3 Suspend to RAM +- USB2 on rear and front panel connectors +- USB3 (Z77's and ASMedia's works) +- Integrated SATA of Z77 +- Integrated SATA of ASM1061 (works under GNU/Linux but not under SeaBIOS) +- CPU Temp sensors (tested PSensor on GNU/Linux) +- TPM on TPM-header (tested tpm-tools with TPM 1.2 Infineon SLB9635TT12) +- Native raminit +- Integrated graphics with libgfxinit (VGA/DVI-D/HDMI tested and working) +- PCIe in PCIe-16x/8x slots (tested using an S3 Matrix GPU) +- Debug output from serial port +- Atheros AR9485 half-height mini PCIe WNIC adapted with Wi-Fi Go! Adapter +- Default PCIe config (PCIEX_16_3 as 1x, PCIe Port 4 to ASM1061 SATA, see below + for other potential options) + +## Untested + +- EHCI debugging +- S/PDIF audio +- PS/2 mouse + +## Not working + +- PCIEX_1_2 (expected under default PCIe config) +- Other PCIe configs (see below) + +## PCIe config +On Asus vendor firmware, other than the default config already supported here, +there remain another two configs: "PCIEX_16_3 as x4, with PCIEX_1_1, PCIEX_1_2 +and onboard ASM1061 disabled" and "PCIEX_16_3 as x1, but PCIe Port 4 to PCIEX_1_2, +with onboard ASM1061 disabled". + +Configuring PCIEX_16_3 as x4 needs to program 0x3 to the LSB of PCHSTRP9, but +also needs to configure GPIOs in the Super I/O chip different than the default +config in this board's override tree. + +Configuring PCIe Port 4 to PCIEX_1_2 needs to configure GPIOs in the Super I/O +chip differently than the default config. + +I have tried a lot, but sadly I am unable to produce the same result as the vendor +firmware. + +## Asus Wi-Fi Go! +Asus Wi-Fi Go! has several versions. P8Z77-V has the earliest version. +See [Asus Wi-Fi Go! v1]. + +## Technology + +```eval_rst ++------------------+--------------------------------------------------+ +| Northbridge | :doc:`../../northbridge/intel/sandybridge/index` | ++------------------+--------------------------------------------------+ +| Southbridge | bd82x6x | ++------------------+--------------------------------------------------+ +| CPU | model_206ax | ++------------------+--------------------------------------------------+ +| Super I/O | Nuvoton NCT6779D | ++------------------+--------------------------------------------------+ +| EC | None | ++------------------+--------------------------------------------------+ +| Coprocessor | Intel Management Engine | ++------------------+--------------------------------------------------+ +``` + +## Extra resources + +- [Flash chip datasheet][W25Q64FVA1Q] + +[ASUS P8Z77-V]: https://www.asus.com/supportonly/p8z77v/helpdesk_knowledge/ +[W25Q64FVA1Q]: https://www.winbond.com/resource-files/w25q64fv%20revs%2007182017.pdf +[flashrom]: https://flashrom.org/Flashrom +[Asus Wi-Fi Go! v1]: ./wifigo_v1.md diff --git a/Documentation/mainboard/asus/wifigo_v1.md b/Documentation/mainboard/asus/wifigo_v1.md new file mode 100644 index 0000000000..d5ad327053 --- /dev/null +++ b/Documentation/mainboard/asus/wifigo_v1.md @@ -0,0 +1,40 @@ +# Asus Wi-Fi Go! v1 + +In this version, a standard half-length mPCIe card is mounted on the Asus Wi-Fi +Go! daughter board, and the daughter board is connected to the motherboard +through a proprietary 16-1 pin connector. +![](wifigo_v1_connector.jpg) + +I managed to grope the most pinout of the proprietary connector. +See [Mini PCIe pinout] for more info. + +```eval_rst ++------------+----------+-----------+------------+----------+-----------+ +| WIFIGO Pin | Usage | mPCIe pin | WIFIGO Pin | Usage | mPCIe pin | ++============+==========+===========+============+==========+===========+ +| 1 | 3.3v | (many) | 2 | REFCLK- | 11 | ++------------+----------+-----------+------------+----------+-----------+ +| 3 | GND | (many) | 4 | REFCLK+ | 13 | ++------------+----------+-----------+------------+----------+-----------+ +| 5 | WAKE# | 1 | 6 | PERn0 | 23 | ++------------+----------+-----------+------------+----------+-----------+ +| 7 | (absent) | | 8 | PERp0 | 25 | ++------------+----------+-----------+------------+----------+-----------+ +| 9 | GND | | 10 | PETn0 | 31 | ++------------+----------+-----------+------------+----------+-----------+ +| 11 | PERST# | 20 | 12 | PETp0 | 33 | ++------------+----------+-----------+------------+----------+-----------+ +| 13 | GND | | 14 | (USBD-?) | (36?) | ++------------+----------+-----------+------------+----------+-----------+ +| 15 | 3.3v | | 16 | (USBD+?) | (38?) | ++------------+----------+-----------+------------+----------+-----------+ +``` + +There are two kinds of daughter boards using this connector. One among them has +one MMCX antenna connector, the other has two antenna connectors and USB lane +wired (this kind may be called BT Go!). I can only obtain the former, so I +cannot confirm the exact way the USB data lane gets wired. +![](wifigo_v1_board.jpg) + +## Extra resources +[Mini PCIe pinout]: https://pinoutguide.com/Slots/mini_pcie_pinout.shtml diff --git a/Documentation/mainboard/asus/wifigo_v1_board.jpg b/Documentation/mainboard/asus/wifigo_v1_board.jpg new file mode 100644 index 0000000000000000000000000000000000000000..f7d97ab496217f8dae6a96fa27c81bec73f05074 GIT binary patch literal 20525 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 XZ=>ku8|vscj{3Vzkls7=JzxLX2e48+ literal 0 HcmV?d00001 diff --git a/Documentation/mainboard/asus/wifigo_v1_connector.jpg b/Documentation/mainboard/asus/wifigo_v1_connector.jpg new file mode 100644 index 0000000000000000000000000000000000000000..cd84cba4d3a8f92fa81fb49385ce5d61a94ab6d2 GIT binary patch literal 25401 zcma&N30M>0CU|52H7!eV-PQsF~83C0|1q=cj5CI(=w-88B76}27 zO=TCW|GD?O&%cbJy1RbooH|>b>h4Sp zOg#oPcUPe+z`-D9bb+G* zz?VoiMaL8D0EmuBi1TsdA^rh@h{gyY0z;qyW&u{{rubN{NaP9r*Y@!qfRq5ZV}sH9 zUx)pFU!aP^<2M0-L*Qj}Q*2xU?1#XnKxG1lLM^`j*_ zpls6(o1s>C%o<<#mj(YD12-T9UO)s85C(RDC?Ej|zy|(}foI}@54_I%U+{+0co9T} zK~xmj1QE_)8;Ay>(|CZ{0FHs}zq*azypS_}3a7;bfcX2=)O#}kG;#p=s+^koTsk%N zwG05Y2LQCh{1?Bi1OUgs;CbbL&#{gJFe3$krmO!w7j^`I^Qi#n55|VZg--KPgWveg zn*n%t0sv|N05f|4pagx_8@z^H2j#y3;0JZ(c@uzwLIBJoAnoA)W!@wR_>bQHf5-fz zzo{X>2cpHxT$gb~u3Xo^HKL7)owCH3n8d%%UdZm8`oC+C2yRVaU}99_E1B%o{~hN4 zHL4Bhkkpj;9yOc}!0X`DbZ}Ewf&O&F;V?z~+i-X_0=%M!h2sBl0l+I$_korg4&Z5O zH0Z)Ffx4%XmI4?gDF6!t?QmWOY!pm;FrP(?u8g(IP+J&-<*v_;M#@p5~WA`Afy zi2}qDGU&SA6a%@!cK07~DiMr+nlR8l1kV_h;-)VG5sJfc1=`u=vy!)$z~Ok^1~a?DW#A>t7jfW5Yo0IEJ1lu1c|jq&u!?aFbnn?~N+kyGkn{AwEN<+`;1 z*FWu2QYj5{DH3IkN0BanGYN`|mjXCf8eYvcL(TPHY_)aV>7&$Qfkf9nu3GYT+WgWA zP>}>cQdD@}=IguyFsKBe1fU|6LL&LPay<(+^0ZzHb-A49t>fMZ2#;?q8JqBV0 z7XUc{gGMe4sc?uV+C$ew*f?&P0Vt^eitb!BGpCM2JGABM-e`q=!V+2qyXPffYAK;k zAdUc1O5OPpoMcxNK!vgU*lAtb@`L_BI+!fx_@0g&bszIdR!1EoTV;&F@(?_&iv-od zg?>+psb*5*Eg?gAM$Jv2n1_t{8&^|!xpD}UjBfs!QG%nufT98tp9PhQ!y!1p{JGVO zcH&=t>YZW`2_;n=h-~$)YdFdew}jMz8amB~NFWfT1d!@JnviLHBlxB?KUl}bC4Z33>Pzh2vC<=pshSKos_yyG!Ht}o$oFcw(v2mBkorskA6lJVM z9kh~9OP-6yV7yGD3?NEG!r=%wuyDPWuI0&i=vvUzH2n1!3Q<5zc73`?N@a99b=(ST z`aeK0*FezeB2GePaeDA|AAo~?MoNdOq?jK-DR54`qkYK!9Nyj~$5s9bKqHb~$v3Q$#km zdsIXcQD>u;L=41ZRDcv_7$Bot>_Z;LTOt4taD8TEHi`$%cMA{t6CL=(rLL#!PKx3= z3F@A+ajMzU?@-K5xp*+oj9qQ8I5^D*;|MRSe53?YeXhQGYxb-ktEPd>e*Gm!laeh$ z;Dn(v03J`v7J$>aii3=YaqJSzmxu&=e`^s=T>^0R^!3S6C%Xd~#u-Hfj-(1VfS2O5 zAPh)TXb8UE$4H0z8-fKIT$*)iNhN712r#mXS+Ba8+r{N}c5x{vbv8FA1i*X=g@l!7UJ$a70)*=7X2UY4BtqUPBbO6#R!70WvE}>V6R{br3^l z03_%Xrr3)@09BcNuBPy%51_29Oc(bwvvw{62pX%ym$>(;xhgI6e2m8`%4*XC(XdzwwjGL2Gv&YTY};Mf+P`1B%HfQ(;+-W3hOaYLXY7zAXOO!>PgDTw<73H1Uodc7yXWL$4z5! zRtzZvuU7H9fj)8BAx0qM;bdA*4iCLh7!?xuXE+N=ySz6&o?j&Fm;}nV(I? z7{Q4`^Abs`p$cG-EezyP^WjVY?%u)x!046Xl}2`wPG$ork+a$^)=c5EW?7lPO$z+fhO2!E)0>c+gb0Z>{0wJ@i7AE0m z`{FTQ*X!DwNs=+XQo~oB>-`wBtt9~}4=87Ca@8&HT4x9Ok)VG=9ZFgNKG#DiW_uM8 zm*}hCN^z9#SfVtX&J&e@HmwXFoMiLOX%HqT0Fo95@oX)n>UF!Ua{X+IwkxioCg*^L zZvk$a85{l1j9?k0->^oCAu#JgpJ;Ii8H;x^;KT$ESVbjB7*E7TP6g8pp(YUyFBd;O zIl%jgY2Dk6S3+b73?j_`D3Y!mv`gSqb!2mr_hxQ+X-+n-e-wqvOkq+eP?tD>&?ua| z#%X05F>$yO-Zah!_#%v&%E2-zToF+cu&0oC04JCR=xFsA+JD!+rvXgwkdq-tTj7;& zFYY8-MJGg-z={HsUkw31Q0*v*;NDe>lVYc)o213b_?CiNU`ZgK>n)Q406)+kUH?j? zGtazRZ8J6$mdLP2GBuWZC#A@~u>?C0m|R%GPG>t52dOuJLDlqm?8^uGOQB=}ZZo$hf!OlP~1dI#xV=1iNF-=J&oq*Phxe2B# z?Gp=~?c>$Er3v;TcmhZEQxjo=!Fq&5f(zHQa;1`990k`6V5tskv~GM6Q>HZH_{?_4 zAQbU)pLXqu67YY3i1s0~weV6OSk(RFjBuz#aVx?X#Y=fo5-GkW?3X7}Xmywkp>)&p zVf0E9>>}$ZVKqv4))Hoe28e=X?(8&-6HxbFYyT!4{TD)CByT~q>pfJB&$^axZEj_=2?a451h3lnyW(T!!$yyj=hD?~&mC%3~hML>u zN$Zsra(rNAKy7)>ZzduLiBqfZ)Y1<34@}gaXSm3~A#x-D#vm3Va?C9D6pDCIphfFV zcFo9@cGW8%RE&t;;^1DI)`ioq+scBa@KG&8w)f^k**R!?2*gb{sP#dL=pU#UR>P7i zua@VcHxvUq-*Bc1@V7VEGi5U9#YRgC55eqJ{Vx=oqEF#c;|yglYR4;J3n*eEHnqdk z&q+z^@|JdKz=70QveHJ5eeoc1FSGX;c~;QH-IjOI`Guo zIB;Lq0HiSE!mI!oRbI4Sl}tv16k*QdJF_Xg0vPSEa)i1Bj0!dt;{f*}TrAFU?!Gn2 z=3X-8^qOw3ot@T2W#DNgC0*!ZL*$GY64CG}$TS|qtSyH}nBx-J<(oYVobVvtKC-o} z_$DkPl@HuU`7RBcJ#SEHca!No{0fm4+)72N72xi%b4t4pV}&YQgm7F;#@_O%9L<~> zPnq$}0()OXaVy+`zgo-BLCjiT05^;j?QDV8TCR5mVTp9dBI8@vn88vk%>hg1G<*PBd-H*K2NJdTW&z^ByLwuAU&OO@7x@_2Yu9PrE1#u=%RIpK*X3;9YGDUe2X~r2 zG|Y%p;CKJM6Jt~q&n{Q*Rt|cHJBS%w6dyx4N)3HQulF@ap>FTZqB>Xe34j5s6*M0p|c+-(NIn)&Iq+XBaS14W4mpxhph2C8l*QTqvlt7q&TOrw!n35q?2`tLJPleJA5iaTT@_ zVcC^k4%a2M8tChVc4Ea%TCcWPJrl2N6?_-k*~x?FdsI9YlFHZM6YX}glOs6!Y^XBW z@Uq-ifp00?N%WQ(+KCxeX>kPgo3sj!uLUY@!B{_NtnuEFcCkSg~O$QNtc z9o!tm5bofsD0~+V3V_teUMyvF{bC&+3svO|?^Cry6{8w_w}mVxeYR>E1;$_z5LtET zgeic#M$Bn@DL79hjCm#scNVa2Bxr0}1#9z@Qj4&E|- z+{?wP3xH2{b&p~SYNgm1xOW9r?zEbd=`&ZG6-=MOc|}z1=nnpH>q1hA&w%V%Rgz}` z0!`-yOVV;;y*uo~=7TR}!bGbKIJtRbQKcd#Z2GL)t{0i{r#6?7<4Y)fS9gh=+1=}D z1P69`DSLCwI8j!wTR1#8v;<$Mo~axa_iD?w3X7H)G8f))8l5IVeO|Tb)=#(IpZT#U zV~AZ|D$}=@bP3{}XmYl!a7peUg>UKaQ^>(-NdXb4l{T0s|5oyA8Bbw`g<#0r?ckko~xT1D*6F>#l-!X4I}p4CtRkSp9RP-zv5 z>;qjltuY-b2mw2mz~zX&`E~z=n;lhc!LN>`6*|P9vh~j1S|AANg?EPdrCN+$TsgrK zl7N{UE?2zV6bGoIe5NN<_Zq84&qmoP7d5-?u6df z3rQyn?0?3T;DeU|-_iy%c8Q9imp6QxR4lQsem(rf|459N>sxHcJC$QFa$V)vb`(-136*0$fj@Z+6eOg~UUv+yJb?fwgT?yQA${{WQn;Yv1Qc8jN*l~U`+W?mw{&|bDUwlKZRBVITRXxx zyP|SK1mB!O(pI2scy|o8!5pMlHdtz#k&Iwz+>&4q*JN`qs7+<`5^I8kFT6bpt8BQ= zQTX9R0nP@M!rQ$t;1tvV58DGMAHhpW6m7);Uso*ydwvOVNns5m#UTWGPX$K5!V(4z zte!n{OHRPt12i{hT<1wa1rbO~20fwghudFpD&&Z}U|>NBVD>}d)0082Y&I!=sR2jC zcf(NBfnXF+C^%Sw!qrduI^N3`-jxnR2pAI)96;eQ#zHEXWd;sfxwPqRnA+Oawi$SM z36`zCE^K(82@o~xV0I~sCJe2fIYIK)C%U`s`S zsNSjsi#MA|r7*786*e4^yDJKBeHX0HH;s;q=9J*zKBxrnj!NK@hq-W9sYXzPJ0-Xk zm~J>g)4?MPxJ)}#MCWlr;8O?^yoMv<|9W|IkLda6mM))4_Z6G^f|pGGJi$z#Q8;Uz z@vc?E*!I+$q|rNB>=zDsy6$<0=Ue%Gp%xulcB10G|8g%6T~ZP5@7MoapW*A%p4?`= zd}vAI)9dj)(GLCnbG?8vQU?;5sa$3vF7*2_m4CqIn#4QE!$ zThnL6y3PBv_XoGl{x(Onq8+l*IB}Pc{1zGaq2{u+PHe}RsFdHPkk9FPX1VdktES?* z8$P9)H}tgjMYhQaNaOR_eN}^2+cd+km>iqsueoY@_NbQVQ_={rf)jr~zMpa58apiA zCko_StVoIt3TdBFtkZ%W6f{Oij1yF;?YX+juG`HvwXdvK7+Z=;qp~jA)Q%mtTFrl& z5_@e$J{&fG`P|{$ScUgqTzZ?lNv~ffCpB8S%#bo_Hl=XlU(Wx@@nXq{M$L?5?bru% z2UpNCW$*eb>3x-q73BC-$B$ZeE}A!Z>B+|vE?gOGa(G$TJE^lfBtgjwVxU6!1%0X)+=4Gn%EWAH9nPCp{}_)2qA6(sOs$sH$4BS_j{xKY6d9Kq(tjz1A~Lk{cexhq%61=r^oi z6QG;2Py6=SRnWig&tBu$Z2Gi+q3`R-Tl0Hf+UgJJY=8T3LxVy~k0dX>>)Y4S_w-@I zE5~T${%@;)^uNCk$6fQvF{IhKZr*xlOHs1Xs#b$jO}28qVtZ&+-fwvf%fGemJ|+FW z(MNXpr@h|#lQ*V-Wti>}P5G6q;@E3*${wF#)c8zJT4-&5dFqt+itSgn-t|>z%4bxX zpck%HUsAe6o%`TXZ1+6^o?Z=})s}b6XruFmE1G}x=v@43>(~*;E&fZQ6Rl#c=btSL z9-=rAO)-E{@>vinCrWG7o zbu)3s+Tz4jjTd0Nt<+4nX#SAyc3^TuZ$(4joE3YZeLdU{A7Ao9Pwo8`iS){?A6*`Q zIUu_1pl(_F{#fDKw})2}1`G{P*M_yvSn@(M@ zxw7qI>GrtR3FmXx8z9ZQd6qVfHGdp?mwY{Md1zXm{`)o2f?1Q!C-)&uyTilxtsBw$ zq3C5(m7=ngm&N>LEyL!}K#c#cmrWJ=B~90659?Vm0xBu`rQ2U=asE9mb0D@^5~&m$ z$_dK_+;gGam@6Tga;8p5o5>5svb#Y()V25_BQ?K9PF!82>-hcJ((SPiY;_#8=D(PA zcF|g8Y1>1&?2!A6(*wIlWDn(Si_dNo>FcZ*z}mYpdS-H0}7vvo3~rwW?S&HqxGR9LUj?d7X2 zis)Fl_D8&drA^s~8lR5V*vMCUx|LHP*G^+mxE51&MQzb8ux4{7Os@(9ZnPe?t;o&G z|AppG-6Kc7I<^^D+i~KDTc8~swC?6_%+s4w`>s+WchzjumTRX&D;4VAdo1*{iWQb@ zpA(n%u`bUMj2WD=ANG@{SpK1)+Q78%swf=BdvvOF=+ug&!iLF>749c+GV9&9)Q;O* zhUOf#j9gK@JttpO>ML#4wZ<#tREn)-XxfQuRFbK}+gpucCkk3JUew{uXV9*b>b8v@ z{_0l~*VfjkUvi?&npB#Tqj1!aiEiDB!SUpuM5WN#7ONX9(Wc#$pK~7=(Ou?P`_yyK z@e_F`EG+b5{>&nEbz1Q(!-@y|XIaDMc*n%cI`-Yrw?i@d&Q?4tM|_W2%W#^3oWij2 z&4Xgvw`Q#7B}QNesX(gV3_@1Y}t6d z;$%a#qnu*=@krkwmzQNczf&~J^4a4c@11eOYwj+uEpUxdYP!aHyL(<Gj=}uemR3{3tEeWKUcJtAzDu`YPS?j=jKw ze$wyDrZi6w{NdQ0XHcJ((c|A2a<$9vN_p@^LM}cf(57gH4-OW42 zsZ8=wcyH?wrSq2AOfN;wANOO$4Se|mN5JFpYTrv6_>IHUbm$Av5T*#RE2(XnE^c7; zvl90;=HA%LwmB1Xbh0mH>HHzr`J>!<_pmMO%CaqbpDZ7z8;yN3FkpWDWH6Wc%M{R~ zud_ZFlf6uje_l;qNh2yUtc*cEYi0&F5+(mhBv*>#Hi)P;N)$=YckqK57vBNcc2EJ%^ zkMqM`-PbJ~w^>Zu;P@aS)6HQe{{7i_O|Qfs;EDc_-6Yn^;QTL|pAv(foF@g(E2#E& zTvcjad-!J7ovq2i$4@t2-fZ&n05YZGmy{?|hnV*irtA4CUvU#WY2GI>vG9^`*qKw8B9>*nOE{Lt%Z zmSz8Z=E=@vTF>GoEZSSsZ%bjkU8SMt?m#unh~HPHnA9yiG%;sMKzQE2pFh3j+>G>Nv{I6kXxRHqT46V7%U1THRds^T)Tb z1+mLMHQFlk8%Lb#lihzFIq-Um9xk$Z38_-lo)$)0vFdJEf)87Fh3~baQ3q$lZA%XC zKDuBcXw z?y?!FUVk!W(ZejJ$Hto>lL2WCdpqU?n0`rpOO0*)tL^dDd;7{2W0U@k!Ljde?}=IP zoZ7W}_2ePl<8E^_o~shpe>&gIzHG32W1Cy=LX)dEe0;;k9e)X1H=Y~m=cjt~c#-{P z{foHQz2SKq$8DeFKQh*}dDlhVm6h)rn%-6S%bzRfjhC9<6sBIbYAY$pxc=nzbp|ca zQkD7RYyN0|TJDFiPvnU^8Sb(%_wEIc-^OiC-uLRs$;UP}DX%(?YWEyJG!gRUVDKW> zWsH}*iAw`6&;0Advf$IpZg|dnpEEwA$yRxI;A40E1OGbDs@2|$ZGOA-%Sh+8E$v6Cs>gLU64P8xKZfP5ow6p!m%59?3KT4H-=_Y@xH6jlan(t&J z%6TI<>gHMgc{$2w<+CX;H}%uXu8nQSVfOsOo>(`2VwfjiiB#y?EOY7@UeHtT>z8n? zR(?#^;Noici&=NV{#=>-$b)IKGhyX0wfV%=-6YY*GuK`;e;VGeaY;^|A&-ro*q>vS zuw34{f58onPla;Lx<5*q9Yd^V%{!XmI3qOn+WR?X&olG-Y(fRx_D2~tD^4E#hbL%27(!*JDf%a zw>>!Zcm8|*Sk6&MHTdVF-usj5ep&G5;+59HLC@>(q`RK&3E$(715J2$Rt$Apt@`Hr zmcB;fR~fqjTx&Qsdv{Gw zMSW!XY4x|F+vii0iurr5>rrn#HMZM2VZY$b@VpN(19`Vnd$k&u=h_UPv5xiM`p9y_ z)0FB;_Qf{+QccA~U2EvsU3|m8^*vUHb=J+WI~vP-;$K@QE0ZgJ{rK!!)!NxhhS>#i z?di;?D!sHcE6WP@ANlW2&iV6pvV5`Y(?HwxsfPp`Z&u{m7;N}`o!KVJmS3zl(k>UJ z48IxiGSc{z-gvgGzjXg%@|B^s_p!DP0pUl!cve0gYRj$Mw6pz>x{}G*$~c$yDKMWB z`|(}n53`H(sMNnm8*jE1n_1U|O#xzO)H=DX;?yy}o*+hmruL36Kisy8Ep8T^NweI+ z8!r$&cz4mWtaSfUc+#==;{weMhZuu{QRG2^d!A?*JAJ(TMR;EDd>463l@0po)y>$_ z@XrOlsRz`){OIU&be6&7QV%v`IHI8RX@iZ_gd^&W^2r%NX0^Gq&~Ex`XYm%Nc)tyOG8@ zVYQ)@mn|seK398kl=}YqcxA)M^788a!sR=kz#UZT#8US4kMAxnopYG=B7NeJ^@aLR z_@^6N*PZz^{`xa%e@D^$Yh^#1D9iu&4W5{^$twT*#qqNc$zoN*EzU;M$7r&#gAmedotgD8h@1HPE~Rm=ldZ46J4gCA^Z+NQYj*SBRWa-WLIW6R`Ki$uNESC3%U-D6#s?p7b> zI@k57+dy$@U*tf&_2rFEWxbzgH8aZ}1if9+G3-WMX!_b>b2+VKQcrgQ#Y8=;?8TJ~ z*UXNri?6?=YrG!%ZQ^lb&xeGLw`(n&(qESD(7pO9nbydBd|`TUZT?eQdt90|=jpS(>NhVgx}G-t zZbf0RZlNX5fnQ#Jmg>b=?ZQ}>IrfcjzuHCk%Z5e$K_+9hxxW)G+3w2x3ec72)LYGC^$BfmNFN4pa* zs^@Ed+*Cn2wE-mFTpnI^gjn4h7*Ssh$; z^uj#T>NthXqT#)%uOkK5>`$M395?R&bSyh5;y}gK7~PSrx|&XgXUcJex$566SJ?DS zm@f{yv%#3x{-Ca{xRUuTcFo}j%XHnzk=G71ZCPwV`r_35J6Jjq_GsSxyg75{Us0s; zYVUS_oTKT;u>MoG?d=cUpR}lZWV>w6x~FZLf8dvJwY8R_0JYu=Hg4-Eti{`MUN6(t zB$nCfCZ>^AH~SU)S**(UPu%*dXVG{Y5vGmuH71qygW;L`e0ON{ZFJThlOJ1@cP(?5 zN7V!C-}+B~damnnOzy6GvF3`q3llznDH#7=3I#`hnt4PNy@nb2cip7<8!tv$MhTZ^ z5O$|bnWfy?l+Yy|!sCGvtaMKMcXec4%8}Zw_kssePD9=>wW3+a(Qe;ck`1ic3T$c&N#bz3T%4OQ}(h{ zvcMq8B((InyXDsFhx06BFW=IC%h}AnkhR>TI&iTl|KnE9jbtsu4F1>_!v&PVyM9~r zGbl5vG^zt)zg);F-;=+3lYhyF*z#LzXMLSF>HA>{Y>zgDYpu!PE{lfiA-B)W+}pwY zxMLIbLxQM(?9@6#g(WRW|HGZKHi@JzhKdNv8=Bpw0RQ)Ex9V@$9O)=44RwvZ{=wVm z679JTI=MqjWz_7o-00-$n$_%0clIm) z_c$yRA|~lIq_OtLwiC>@%veU$>h+o2lkbDZ`KG?wIeQHsYr46V9a)m6k&=-vZ6Ev~*|0@1cP#fBIW8~L(Z;a)!t0IPQ|0f( zyV;wTlOrCdbwJZdfF*%QZawRcG#o zmY;I}a4odSJaVVLz0TYw@74{IIWBeeH*EFx1*$7+s{^l2EbWRMOKl*-8c9PS2ilVIbyk6O4ivPp>UAC4# zuIn`rwSKPazn1#>k2@=M-3BZo_@$LBWocu=pj(&xnds`}B`aMOsb#HaGG-*6eJox; z4A0WOwqtg?ZB}jfeA9u_$Y7((R@@WXllpTer@*qm1v_WBa*SSDPpnB_RlZ_b`b{jB zQcAHcG;i(7t1GYJLf3!tsh96}|91H6$_H=OC0jPHjd0UWUhm>c@Qdj9B}`t{8@WE$ z@91oX)4PiY+se{Jk@NA!FJ=sSrGHDkQ)+&rr|89St(Bj}VD;YoL)E+Hm*1J!aq*sY zP;!NT{zEPQrhu^a8%K-`^(P%C=1O*t1V)hsl76FCZF%XDQy{#e%GcVLoqIhZVrOXL zy|}Bau!WZWqVB|xTdbRd7mf6jJ{q_kx|!P;?5-DnHSF)3pO<-Tg8Rhj-z@-a+f7q( zfgvyY?6)CF5wlSxG#8px!0()B`<(rfzK5^#hGK*SHL@n>@=)~0$g2B7Rv*qjC%Una zOQ%O~%h|slZic~|3oN=b!TSCbh(7<&JO}5X60)X02*u0n@~Umv80_COrI16TZ++AB z=vEFY4G1+KWHshQ=CvZUwJ-i1^KA;KxaI;>aJFeECexXYvXp%&Kv^myvkK|%9Y06g z|910?kWj=V;x7$FU$|W_fa4)I0Q$tbJ-9c=UYxtXtFenk_e!DTKSwtW1d@^OKk@r!b=ORjeG0!5U<-8+k-tA?U4k_k#K)d7m}vjgBFkPCdKO2Z*^)a*@PRMk*aV=e51 zl>1PO-cB-030O)<1O;><;m9x1qbjeDcTlMS(f8Q)rU_;g1gJdBSV}@lPNWLn7uoP; z@qMBFWiNn3jKtLCABQGig{Xu!O)V%rC)&J|MJMlXER1p}+SLdMG!#hx9@_TOD@B0G zK__`C)k2iOY+qqiW1p9O4^TP7$4!r-r@+@H9g-BlsaS|TUf_kuxo=UdoT#Qk6ffie z0dep7DIi7(coaYbW)*0@;}T@|9#*IVSVKZUW_1c#jE|4L_KImFfEN%{Go$Rg2y}9g zxyq{v0+g(rP=w|&1ifP07?gwzWOrho-3L{|Yl6lZ4J z7v1FR)iel{VimyIK<9L(bD`y+haDS|9IFBZ#``FRQrI{o#&hWbLc+PrQvlEjN&uAP zp-(nVfl8p%jVcQiR@FzV$OK_DLFO|BzFc_(;B!{gqLMZEDeNk(VDHWYUKND`a{&~k z5l=Fi0tNG5LpLRZl$>7HTW6`^hQ9`wNDxv2J;S*kkXV0w6Ce4LfVq*!DwKGaj0YG+0JRc*@hBAa+{`E`-OE8qfXWv}Au`t~FiIMt!zpA8AH-4ySwlGj za0I$u*E15La);)F%@W`c{HsVQd8w2af)}!~!wEFO(ioH=!{q@o0@KZ$Rsvq=izl%% zWs#7A$}?AqGJl!~QIS~HWB_dgv=Ka+l>+SP8lUKJfY1Tu0>$57WN@Y>FscxMR^zz< zc%ai);Q-cPGy$*q=y4PR+@&fKpbHt$?PWNi)&rx(iY_1kG9E$U zTnJJwv^7D+W#OGK1(Fb*%VHG@&I_3|z;gJ4C}DJw3DXn^N;3UL2qJ|_hsQ9ei=_lQ z7m*5pQb02_s}SN?bd+_&Oe(`^e#2O@=rBJB2~sk^GZ9qC;j>bDpf;fckqGlA2y|!? zK#)Qo0W3f!B!?pdkP%?viH$N6pq+n6gG5j`42BI*qAWU57n%$n0g|o{iACc*A|^pD z06sFu3kgsiG=al_SzfCI5<~(l5gKYFS?UY{a6X_wiv}soU=2Y95o`6~Pkmw@%TVy< z(tJo?CC~zVF=RoDOv;I_7$E4j*kS3j4c_o<8mR7Kskjy;AX3SNepa*DxhaSVJXlfy z@;pccpnc2$GR*x&__4wN3yNr;hk(@=PQ*IX3uS>MAY(A-!` zG6HZ2T{s>2fTh&R6SAa3k_Wi>AS0^;C?X{@paauTf(i$fhTw6ClmvCvG#DbL3(SQ~AOoye z0U`|yfy1yF!O7yxgT#448kiju{f%>Y) zO;9GfaK8ivbTUgdh`<4O-*ET?AQ=~^$cVv5Yh?f;<67)*MgX)snT3ZVaM8dFq2mxG ziIB97YuZbY0m9+GTciMiu>eSL0H{#r`AS&lC$waQqN}$?XjCBEI8+9gH|U}O`XK?_ z2~&~rdAXxacPN2qfPE6w!|vA*3&p^6f&ewIH0X*!`wMbH>rn8vj{t-gUwc?!T8S_z z%LLS>Qg|}zwVEWCizI)Gghn|s1yE>sJSHn7!IBnK0HIl94@-v9a@>U_fI#2)nl2!~ znG_0GN}@V65*}c|Gbl7|BdQcAG@DRKLTDtGl#Hl=JzmI`VJz`iSmr|lx_U2wL4|oR zLMMfwcP8oOA1TpPH-3u4vd&W8XTOL5s*hC+3);DVDwBADL+Ndjb%a?u*r!A@_u z){_B!#UnTgJQo_@Tt!$(yW=@v4O))31U*xEgcyB;VsST0ga~F~5>hDOM5IM?s3kh+ z`sDNdLpIEP<1hlu{>X+w16KfojLizNXXmycN;0A#)b~k%T!rdH5sI}@6$u;=0vfkM zC8RawKz4|oU&A&4=o??)#R%SaNxpzUhblwWRRR{TFj9&mNCgfZ7oiz9eGueIg_IK|CMwX^18L40)G*2?l#vFyeL^6Ly zM}gu#3>QEHK*ySO5X*~rlv-;}Jp2kke+!}u;R4D!0F4iiyjUt0Fk%9{(4hx#Jj5kZ z9LVFEcL`0FKCJ*a=!Vv5g-t61LvUo43MJhB(1dvenSd9V&8mE+0tBd*$GgJrUyQD@ zsTe|-=gdSZ7(%U+nA)qKi zqmoHL3kfo@QZ=-1&|0@ohwK@F9ZDk<3k)Tf z)n9T7)-Xd+R0r;v{kgkj(RqVWNU~WU&61S_Gdd1Y;ne$trb4sa>`3dNcfI4}dJnV4 zTI%I0ZmlZB0p=3ALt>E7e8{@K&+T4-ByV-LX^_N}r&_zGJC8>OLvR7)PJus`vos}5 zgM!OZ;-(w!#Dio4nZL_pLM0^ICr1NVB~F2hACzoU80ude@7;+hp_>tuX4D-se7eLH zIaDl#>7C!vC#WcZvstX_AvX=dOv=hD@~r8#R;k1e{#a13yqLPGD7w&+j(4fQ{gFNt z&KVNdT7=gJqPc@n1T_hsua)NxlSnkoR&-$~CkW)iy_@QA-(V<`6V9S}_Gf$LwP6ZY zNr81bwE|4N+@Z><4gywRX3tp7Ftb%(MJckyt9e;-%lfX)J%D1>Q;u12`A(z@-+lG^eAJh7&IVV`j*7C&{( z(zj1+E$^Vtv5WjO*)8MZ<|%O5xBgG&r(aJFubUrqO4%S`6d-u#~FSt0@r7rpsHGN^?;=dw#99Jw{oV0)Kx}L|6 zDY-pigO94@p~Ig%f}=mFM?b^ukB+{kN~!{PDyi*4OCcj|EqMZFo_crST!EUv-mU(yaJ;{HouBIhr3{r1|BA zAJyNwH=@RCLsGQM&fh_(_>*n z`)BeG3=OUrH5s0ZJ;l}m@VCuSg>X^*-Y_kO(3q$w7O|5mOSsbt#GakgK9QXI*UBT| zXGi|&toGiY7*3t{viw#yzIW;6IT#k3Ds>u2q2K0YwUysCshB%ZQ6HBQ(sp+N_aox* zEYI8b*j_CzU)<>}?%{FnE+Od+9Bj>yz8{`LB*R{cT9q@?c--y4(F4UdEaT<(PWjEI zopZU4`}O(Nxt~)en!H?oHE-Nc`Qz?!I8`$m{M`wBx8eH(`|0`Opu;c`uHEX;?Py(6 zX?E*>9@*0#Ph@87+TfAN`219Fk$5Fr-J7qgWiM(vf$efwt zC&HP@JHFmvJz=TZN?mPk(Tc*>*rl6r87y~GbFztrN~k|Raa>Lk8dm8ZF-$z&Jo;%} z*6Q|*lJdeT-L-r4Xi?N#{*MSF+jkkUvWNd%FhM&uo;&J$UHE>*#a*mzl-_R!>uj%w zhHu_cP;#+OT%Gj9+ah~pczi)ti}I{y{)vf%W%mLeuT68DM+}dxf9|CWEv$&_%!mV@S_{=A(YRvZv|FY;m?z3vdBzJ$;jIl2> zu9)=aC9hdxLo0fbxpw~tlluFQe~On~?7ZY>d(%|sM9Sk=5yAfBiMzIv0`?KC8~4ng z&%EY%J=&MPn^7GcxT4H5S`-vueZfT@d4kP*-R+@YXV>L800D`-8{^E-pZ=!LYLzwp%*1ADfxd(YSz0rd`=y_jvrhnzLp{ z{(&`_n%mAeL0c!1#RaDDUGd?{1!d|A`zlW8i$jT#Lea+L@#8W0c z_he!CDIkZx{irY2DZ4$KcH_sH{n5=+po7gyS%klnJGWN9r_-te=GfF(b$>Qg zSl=?IE%U5f7#r2mvEY-5!_{Z|^V1jpb}X7WC~}MRK$6BhBF1ul(q7nP!EPKe{G92k zP`rs78b1(uOfhzh@VLtEla?esY-@UJ#=gb3+6v(-!E^^nj)ktx;y*XTyB@z%xBX~Q z$ck}!^RTxzlYC*TXz}^{;ux}h>F~bv>(^(6ZYIr5F(ue;Q(y3B@bRT#d9TfzJ#){O z7FWKKX70)jO;~<>WtyOX7g^yNs9)GR;$W(?SI@Wo!uI`hTeDQpK3z@8q>>EvClcq3 zTUS??chU1~N7Q16--TTd&pfhf2C|9onN1taTjSIos`*L(+Os`FLk_E5IxS9=mhaNb zngX8b%c2g6KF@St6=(Z9>w{_DL-Mgg)98a&vfm7k&XJ@2%jTs&=6&-u$$nSTG|#&; zZ=>_efxgO~OkqUvUh`iygO*;5^g1yZ_UZA^+}bz8{Ia%fnnmxH>3_*OObqvTzIuD? zV?f%)Q;~~nAAB;S^=CdDul{3VX`(10xc0(%(qQQ?%Osmjvfsb1U#hvb5Xp zmvWll40C(Kp6FSANFi8cW^5XrxU@IV**s{)>kkVb%ugZCL>*~`@p$)D@hWSyYb9dOsY?E2|d`Pi4vBJ4B z-K&my<&vi5yl>NZ>lHhfd3=Qb2EGzEXe2)#Z@#E!dyThEy>O``e6D3^PWO+@(wym~ zGS8VayY@tZ!?xDn`K1H-{L<)k!879hjw^8rIf6aoF?>F;V~8@UF0@T>n?( z!UxO-$>G6oiHWWb4(z!b7Ay9M>&hI_p7Da64iBHl4J9pnoNFoA`^(j_*Z%$&<}Oon zGwo6M)INZDU}BE{Cnwt2TKSIZm9Gu9jeqDT+wn5>d)X3KqZhRHD2hh=lTCtlY5s8? z(O71>CdX&bjHGufoPRZ8R_}4VfO*ML$~7JPZ(Ai2|Lk=2p~ zr3{hkKqmUYa{j@4y1L^<^WV&IVw{dCZJ)dshQy@bD-h|aZg-X zKVJ!%=_@l4a5YdHj&h|%@7W8BXJ%?Y-us;U-@TuE&mZTWd(Zd#J^47~a}`*_Jft$F z?Xyg;xE1zt=#~j7KP|m_gfzARpV<;QUO~7Kd+3fDK10s0hu)v?$Qc0r@`qx=GNO+C zmHmJ;Gn9}DMxKSod$GArRR%-lws|!P>ty#(c>bg`D5rFL+m8+ioh{AC@_UrC=4C>k zb=@-c?FKq|V`f|#Uip!nQVCLCrL$bQaybP0_Y2no7APC>Sx~p9uYHp%VJpm~#c-_| zU+B#ykfxt(Fnj%`GO3Kg2<1__Fgawk=Ca(jqEVW;zc^GT1-JCWN|rI0;`IPi)uP=2 z`wX-J=~m`nuaSGB2Hh4}*{=Mqyqk=dX;ZehH&$#L`Q6PrwiMHzJ1_t>Rx$b5UcjsO zITQ=DKJ;7m^0jX3RDwn`^PH1LQex0Lzj2QP0kmHL|C<0_@XBK|0^^ui@~a z^Nl#b6RKN(BGOieK67Xq6Mg?}lemp~^Pn6fz?FRHxuouMCvzFx#7AG7|Gk%+{LiLM zwoJc$TAtzZ3GH2QpR7w=ex`9xr^0E>aE9$e6Vgr*Zu}c#_UJL6cvlqfl`uW;PZ6Gs zcz%&pzGbJ@Sio#Nz*l<06BQLU?tA+NDMiGy2G3?1rQn#-DHo3_j)ffldYP^e6{cy` zX&k{&ihotLw*fzqaY#+jz4Q04eYuh+-P-2@{3U%VVC!D`b|N81RAMZ&H`?mvA`rve zDToq#loh-bLa5h9t;3USD=0dsLbb0|l#S$*JHH{|{z^-g8o&1a6ZuC++fi8%eNDp# zg;IP{@b#9mZ0@|&wF+(YAbz0fs4wyKV(|>+f>)Z}`m2-Hj^AD=3GUC-v@V%g?5+eC zMD=$acQE}LZ1pWYC`Iomv#gZujE zF@WkN3_kIp6h!|@ZqOD_=eG4YeDq~3C}8X5WTKG-HQw6~)E|WO>aT+&E2j*`$qMz( z_|FN^ZKV;qat7?9?U?u}&()oBDTJfii*ajwH;HhfE)jz@GF!&6R3$iDi+`V3^J^8~Vb?kew9 zoIMi=f4~i+-}{pD^=?K^D|SmOhg54C;UR#UF$Pxal%r<7}Xvj0d zKb`#Y&0n+lks1Gj)`q1oO%*h)!5UwA4^8G|KaM>=Rw{W~TXm^MxuhV&+oe)cH@Bua zNMC(R!XrnI7r5=Z6dYoDTNO6j=gDmlXxn$NvT}5@`qZo+j zmg;4S5!D2Jk1ev7a_&y{E{sb#-C87EfcVn|SZ}r4X<8@birfshnht%i*1L1~d_sJd zd}Ww|&;}1Y)4JqI<2qR=e&D|S&{Dc+g2Z1VH=0DJL&oVF7t&Vc8Wit;a`ruZD^F5v6iqAn!;lT*s$y@eW;LrZUwy0q7@>)O?@5SbsYRx}C#5xh?bWtVE^bd+85v8YNe!Vp-rkx$+MACIz@a zUY?p>gkyaW{9r8Z+xx9QeCQ4AR@4$o4igr|{L`q{{?_qihfJuw|6#Z<1>wb7;X0XL zk~2-gJ=R7xAq2PA2=u>vJ>Kv>Ufr3X6CH}y>6e_Sm_Ejubot7b)uQt&{cW9>K&c3= z$qj>-Wy3a{_(o))CvN=Cu|0(td+@?=Y(HLI695lB9{zk}%^TyXa&-x-#{d>9=@P92 z<|e03*(C-g3?tZg= z@B8m`j>Unck;<#j#>JNNdVW{jG=Mn52eZzqvlG&cQOD-g@2QWgKYpWrMZv!F(H#{} zG0eYVND`!+Pk;5df5ans)umtivOwQ-8WJpaq`UtCu&Y-~?z!o_Z2vv#Y^eMuyL_xv zn!RPUJh_n6VQ;2pHc)U>9A5yRtDHz2q!Wg2nUz_A33*Qe#Imly1NdJTxp z>7e12LDHX!S-!!?Eu5fCqUiJd$lt7Q0>1!Z#v2YqSPhUTqm;{pgsoexSeolX>euZp zJGTt6+a9guTB_s$5KM2DH}f=)@Ap@uk4H_y(s|W$L(~FRnzKivWwXz+vtNrIo}cy7 zrdVOej2asekCT5S2VC)ZCdTxk+xx21U8m0g4$~nw^7#K+X*KGOoXL=L^ws5a1<5_5 zSvt|jcH})pAxK1eirL|*82`V-_PTepv!b5@9DNkZgpSvhm$K|nvih#>s^3<{=}fDL zNWoHCIa#wjv-#~-pzTJg7Dws#+_Dkb#f^VRk?H<}d@6{y$@0*hRy;abQCf(bLE-Sl zwMLL-*t}{VC3+q2Z$~7?mt9vPHayaIw)C`LaZfjqU2KW-jV->hNf5k8z9VZ_9<~zT zk%{c3m>8^kyd>%$6>l6zL7 zUgEDMPBrGnJ>{m4g@Y28CiU<+w~^jgIW@+2pZlW21Kf{VXEH6DcV$Vt$fxf7x@f1Z2LJGk*I(Z5le%=1PCiQk3|veA6KAz?Xw?dytotNS?q9 z75GPV;FAdk1+h#{HlPWW_Z%z|dkS8j^-4_*}T_$9SF+4>gmU2=?yZ)yV*7{vxH8#!RZi`VV7j&Mk zFXrhcX+50_y;Z(kjLM=bIkU-1npM^)kWB48Ts&u~e6JMz1@^2;wmB+RdMX#@W*-^S zo$U5MhK_;aPSW*_rk};M5Cil>GE%<;zkXudP6ic_br-pu?f1yv4SSsjLo#yb&mB_~UHXu7`l0HQ-z}W2y!`&!Y0dMRt1CZ=wCxocL#15r5cXFT(}> zds$szwN}K|bFBj^N2HsEjI4>1KkK0wGQH39Uz zo^ZBAC-kRej={XgMcOYTnQ?KF?vsWe;rq2aP{Ql2%Ie7)`=_d3GtQbZqRIYvci7~X zXlpp%3*p&P6j({@&SNlx59@B4`Y#xBYpTJ=p0wSg#-r^-Fc~a@;glg%zD`tL39_BD z4!?Q1^#skYiEakeR)D`8lH{H*+(bz$O&d&ulkO)aC}HhXZ- zr6B07cDBH$YQ$Dl7u;EKcWD-;(bo{*SgUO{+8Wd`alI&1x9ICFco#mCN#KV8f<5;C z+9!vLrVhapF<%?)0^otHOSqa_0pYtrXU&TO1FmjgwF}(P?z+UMdH;tt5?x(s^C|#P z*Wn}Dzxkoj;;Xv=?kbrI_fixzwy>u?tGUug8R7n3+nA zvb0RSXQo{3CXSxOtSJjs>9LWu{9W_0tdHQ)B^A%+1|HK-94f*={~G|%dVFw~jlSn2 zx8gR+HWiMkLEv{X3Vyik_eUQAoJ2RsG-pPXHPkte@Vv|bpep83ZdE}oY;a^7M(0A$tID-Ay+=#~uB?Ot3>67vfcRYnnNDAR;msU{_eHL}az(%ek>Dt2 zzqB9ZeUBSt%77kcWzr)4Fz~?V0t)s;Hzs39@2sJn=o|X(8n@tdkb;96jk!n?;b)0m zX9_Ja9?xRg@hfVqI^QCm9gQ`W7YQs|RaLCng|Uv8S#b2%Bq|i zFDRPryxBR~0kZuz+sK}B7thk{^@W+t7@fkR%puPv?Xv4-@RWu zA7~zI05D5y9e~!~>zI9KDpcPyJ5Qx4wZK>rPil&LRS!Pv*v5Vrw?nzdmXX``fYI{$ zABu8#M1>31M|7iOI(r^u%`2v<`FQEm448b%whLdbx#!oucSBO!ac+}t;v{#pJ@qVm zkud}^I;P$)9bfau*uii;GgdIl{HMCLkF7$BIOB-V#_UV7jGj*BxT%GXAH<4&JB{i&V|gXF~vN2yxF1&~x| zmj%R+o~CcbLLJLx3*+!UOkqgC&*J7XVcSuTGDnjj$f3E76uMEd5P0rFocjw zTR~UsLp}BtvP|4rK_?y;Cs|UKt2fBOBjQ6&y_2NUlO0vM^q9k|5!=26RDc@kgW#Ko77*2bGEI(& z{w0#~^>We@u8oq2`SNCT9mBA_3B@;~@pyCCb2WrCqgCrdI>La0px?VBDhO%0=*h#A zGY;b(V+S+}T|9ZnICn?L%W(}`r(00%sCLsTW;heQTRhRE`&40QWnAq1(J_svR#+Mm z8D#A1T3JP}wlnRAMDDapGykG~gl}|!z{KK81+(qLmg#~aVOLaTz2Xw>8`?%a_Y=?t zOAl=w!SjjyAWPW`;4@FUuyD%0!;ZBIQBSR`!DJ}3+VptIP^zyfQv*#-inVQb^RKw4O zdI!8caiE4`5Y?R!56dM#A=_`WN;N4-&cmsWLqPS=(Sjks4+(B#92TS5mU8-zNu%n{=4$DfQl)zsV^qH4_Nf zR=&62OfyD6&qt#hNw3Jqc;iWaN`=xcDWml=XAO1bMehZ7Ku%6hiu2M(4PCb$$2+6$vn_j-USKDkyT=_D5CBdny(6nC|GpjC2wp2__3!V&81kEa3)uN^QS5vIb z4N%@o{7X9#hZ^JP^a+O_RD`rI#Q7`IM@E6<6*LI`^&qRc%dliW6Sv+5ch!ebW(MBw zi$D?Ml*L()KGh6*d(-4aMKw%%S?%=|sMe^DA4S8_*~+HN89Ex?yM^ZGvV|AtDDCR!Hr|MF56e8fw~nHOW0UBWGVyK*OjDZ$RYc@&yrU?z H{+j(i%_JFW literal 0 HcmV?d00001 diff --git a/Documentation/mainboard/index.md b/Documentation/mainboard/index.md index a08cc43ba6..fae5a53068 100644 --- a/Documentation/mainboard/index.md +++ b/Documentation/mainboard/index.md @@ -22,6 +22,7 @@ This section contains documentation about coreboot on specific mainboards. - [P8H61-M LX](asus/p8h61-m_lx.md) - [P8H61-M Pro](asus/p8h61-m_pro.md) - [P8Z77-M Pro](asus/p8z77-m_pro.md) +- [P8Z77-V](asus/p8z77-v.md) ## Cavium diff --git a/src/mainboard/asus/p8z77-series/Kconfig b/src/mainboard/asus/p8z77-series/Kconfig index 0b28a7e365..da0814aa41 100644 --- a/src/mainboard/asus/p8z77-series/Kconfig +++ b/src/mainboard/asus/p8z77-series/Kconfig @@ -23,11 +23,13 @@ config VARIANT_DIR string default "p8z77-m_pro" if BOARD_ASUS_P8Z77_M_PRO default "p8z77-v_lx2" if BOARD_ASUS_P8Z77_V_LX2 + default "p8z77-v" if BOARD_ASUS_P8Z77_V config MAINBOARD_PART_NUMBER string default "P8Z77-M PRO" if BOARD_ASUS_P8Z77_M_PRO default "P8Z77-V LX2" if BOARD_ASUS_P8Z77_V_LX2 + default "P8Z77-V" if BOARD_ASUS_P8Z77_V config OVERRIDE_DEVICETREE string diff --git a/src/mainboard/asus/p8z77-series/Kconfig.name b/src/mainboard/asus/p8z77-series/Kconfig.name index 49ed7e1487..a61b82d218 100644 --- a/src/mainboard/asus/p8z77-series/Kconfig.name +++ b/src/mainboard/asus/p8z77-series/Kconfig.name @@ -13,3 +13,13 @@ config BOARD_ASUS_P8Z77_V_LX2 select REALTEK_8168_RESET select SUPERIO_NUVOTON_NCT6779D select USE_NATIVE_RAMINIT + +config BOARD_ASUS_P8Z77_V + bool "P8Z77-V" + select BOARD_ASUS_P8Z77_SERIES + select BOARD_ROMSIZE_KB_8192 + select DRIVERS_ASMEDIA_ASPM_BLACKLIST # for ASM1061 eSATA + select MAINBOARD_HAS_LPC_TPM + select MAINBOARD_USES_IFD_GBE_REGION + select SUPERIO_NUVOTON_NCT6779D + select USE_NATIVE_RAMINIT diff --git a/src/mainboard/asus/p8z77-series/variants/p8z77-v/board_info.txt b/src/mainboard/asus/p8z77-series/variants/p8z77-v/board_info.txt new file mode 100644 index 0000000000..3f875f9118 --- /dev/null +++ b/src/mainboard/asus/p8z77-series/variants/p8z77-v/board_info.txt @@ -0,0 +1,7 @@ +Category: desktop +Board URL: https://www.asus.com/supportonly/p8z77v/helpdesk_knowledge/ +ROM package: DIP-8 +ROM protocol: SPI +ROM socketed: y +Flashrom support: y +Release year: 2013 diff --git a/src/mainboard/asus/p8z77-series/variants/p8z77-v/cmos.default b/src/mainboard/asus/p8z77-series/variants/p8z77-v/cmos.default new file mode 100644 index 0000000000..c7aa6208f4 --- /dev/null +++ b/src/mainboard/asus/p8z77-series/variants/p8z77-v/cmos.default @@ -0,0 +1,6 @@ +boot_option=Fallback +debug_level=Debug +nmi=Disable +power_on_after_fail=Disable +sata_mode=AHCI +gfx_uma_size=64M diff --git a/src/mainboard/asus/p8z77-series/variants/p8z77-v/cmos.layout b/src/mainboard/asus/p8z77-series/variants/p8z77-v/cmos.layout new file mode 100644 index 0000000000..0f9de5ed18 --- /dev/null +++ b/src/mainboard/asus/p8z77-series/variants/p8z77-v/cmos.layout @@ -0,0 +1,86 @@ +## SPDX-License-Identifier: GPL-2.0-only + +# ----------------------------------------------------------------- +entries + +# ----------------------------------------------------------------- +0 120 r 0 reserved_memory + +# ----------------------------------------------------------------- +# RTC_BOOT_BYTE (coreboot hardcoded) +384 1 e 2 boot_option +388 4 h 0 reboot_counter + +# ----------------------------------------------------------------- +# coreboot config options: console +395 4 e 3 debug_level + +# coreboot config options: southbridge +408 1 e 1 nmi + +409 2 e 4 power_on_after_fail +411 2 e 5 sata_mode + +# coreboot config options: northbridge +416 5 e 6 gfx_uma_size + +# coreboot config options: check sums +984 16 h 0 check_sum + +# ----------------------------------------------------------------- + +enumerations +#ID value text + +# Generic on/off enum +1 0 Disable +1 1 Enable + +# boot_option +2 0 Fallback +2 1 Normal + +# debug_level +3 0 Emergency +3 1 Alert +3 2 Critical +3 3 Error +3 4 Warning +3 5 Notice +3 6 Info +3 7 Debug +3 8 Spew + +# power_on_after_fail +4 0 Disable +4 1 Enable +4 2 Keep + +# sata_mode +5 0 AHCI +5 1 Compatible +5 2 Legacy + +# gfx_uma_size (Intel IGP Video RAM size) +6 0 32M +6 1 64M +6 2 96M +6 3 128M +6 4 160M +6 5 192M +6 6 224M +6 7 256M +6 8 288M +6 9 320M +6 10 352M +6 11 384M +6 12 416M +6 13 448M +6 14 480M +6 15 512M +6 16 1024M + +# ----------------------------------------------------------------- +checksums + +checksum 392 423 984 diff --git a/src/mainboard/asus/p8z77-series/variants/p8z77-v/data.vbt b/src/mainboard/asus/p8z77-series/variants/p8z77-v/data.vbt new file mode 100644 index 0000000000000000000000000000000000000000..37fa165793527b5ad3ad93085e45ae92995119a5 GIT binary patch literal 3902 zcmdT{U2GIp6h5;v`*&xi-A*fP*V3FKfo-AfbZMHVsXDve)-EjVw!3UrVq^=u{3NB6 zi0<$I_A3Xn%5TYB-St6<(-5PWAi}i47+=M#HJ_#z=g) zZ!LZTi=e9d&NYA>aJ6!%Bh(q2*pnX*jy7X*Y$A7HQ(=24y2);&d#3I zoidB|_YJR0#Ny#pYeXm>3-%j74Ip{;15%t@Q1jJW$xab=w{c z_BCTjRn=CL&|EV1?JP{TVR(ETM~ykVaWua>U)Yz=waLsNxX6114uEq)^&ySp{tSWF z!$}@t(4z%C=;VYjr!{dH6*QR>`Z*ydXfaM}<}fa3%LL4#<^zY!IRt>F`z(uwPJMF) zO+|o9S@8LUcWZ$y@4$Se@GnFehcHzm&}>~@NzF)w4c%Vlqtnjw0g zT+KcP^2evWh@V1}PK&go0j>2;T4Ju&Nx6T5!&z7|H)hI*Cp<7{H2(PnsTLxXB6v^l zVacRl4^Tc*x|dClBYF>B4e!&fBJ`{rJ)`w(0KtKsgQ z>wH-Lmm`bTQoiBMVD=bcV-|I~3Lrj^*q9ib$d3<=?Z{WySUd>1deFkKT=gIAvdH{u z3!EAORZ}Nxt)9lS?fb8c1eR-=Q*%9oFKX(h^C3;UIM?G3Le~^;8B^+-a)O!UN#ly9 zdy?j|t`Vs|2=#D_o_Z*92-Y)0H-`1B;_hhygXP(8VU{xCtotT+wD#%LEJIaNm&*-Z zaM`OD@yZgPC%e>or?HZrpr4God%+)Reh2syUi{pveC=gFc=483kr-RVu$L)AjAan4bGUZLqN77lng6@p@+b74doeBAj&$;eHQ zXP6%ehC^G%g$(m!)nIU$ zcF6HO+`B^ zHFix2MX$LF-CfBpg1vfa^89ne&|pSnl;GkP@DDnYK*t6HGt31qzZ4U v|IM_OyTG-^w*oTf*38gX?GvfX50zEVz*_@k%os3O4+;9OyNWvrzw& +#include +#include +#include +#include +#include +#include + +#define GLOBAL_DEV PNP_DEV(0x2e, 0) +#define SERIAL_DEV PNP_DEV(0x2e, NCT6779D_SP1) +#define ACPI_DEV PNP_DEV(0x2e, NCT6779D_ACPI) + +const struct southbridge_usb_port mainboard_usb_ports[] = { + { 1, 2, 0 }, + { 1, 2, 0 }, + { 1, 2, 1 }, + { 1, 0, 1 }, + { 1, 0, 2 }, + { 1, 2, 2 }, + { 1, 2, 3 }, + { 1, 2, 3 }, + { 1, 2, 4 }, + { 1, 0, 4 }, + { 1, 2, 6 }, + { 1, 2, 5 }, + { 1, 2, 5 }, + { 1, 2, 6 }, +}; + +void bootblock_mainboard_early_init(void) +{ + nuvoton_pnp_enter_conf_state(GLOBAL_DEV); + + /* Select SIO pin states */ + pnp_write_config(GLOBAL_DEV, 0x1a, 0x00); + pnp_write_config(GLOBAL_DEV, 0x2a, 0x40); + pnp_write_config(GLOBAL_DEV, 0x2c, 0x00); + + /* Power RAM in S3 */ + pnp_set_logical_device(ACPI_DEV); + pnp_write_config(ACPI_DEV, 0xe4, 0x10); + + nuvoton_pnp_exit_conf_state(GLOBAL_DEV); + + /* Enable UART */ + nuvoton_enable_serial(SERIAL_DEV, CONFIG_TTYS0_BASE); +} + +void mainboard_get_spd(spd_raw_data *spd, bool id_only) +{ + read_spd(&spd[0], 0x50, id_only); + read_spd(&spd[1], 0x51, id_only); + read_spd(&spd[2], 0x52, id_only); + read_spd(&spd[3], 0x53, id_only); +} diff --git a/src/mainboard/asus/p8z77-series/variants/p8z77-v/gma-mainboard.ads b/src/mainboard/asus/p8z77-series/variants/p8z77-v/gma-mainboard.ads new file mode 100644 index 0000000000..e6b0407446 --- /dev/null +++ b/src/mainboard/asus/p8z77-series/variants/p8z77-v/gma-mainboard.ads @@ -0,0 +1,19 @@ +-- SPDX-License-Identifier: GPL-2.0-or-later + +with HW.GFX.GMA; +with HW.GFX.GMA.Display_Probing; + +use HW.GFX.GMA; +use HW.GFX.GMA.Display_Probing; + +private package GMA.Mainboard is + + ports : constant Port_List := + (DP1, + HDMI1, + HDMI2, + HDMI3, + Analog, + others => Disabled); + +end GMA.Mainboard; diff --git a/src/mainboard/asus/p8z77-series/variants/p8z77-v/gpio.c b/src/mainboard/asus/p8z77-series/variants/p8z77-v/gpio.c new file mode 100644 index 0000000000..5d5e4e707f --- /dev/null +++ b/src/mainboard/asus/p8z77-series/variants/p8z77-v/gpio.c @@ -0,0 +1,181 @@ +/* SPDX-License-Identifier: GPL-2.0-only */ + +#include + +static const struct pch_gpio_set1 pch_gpio_set1_mode = { + .gpio0 = GPIO_MODE_GPIO, + .gpio1 = GPIO_MODE_GPIO, + .gpio2 = GPIO_MODE_NATIVE, + .gpio3 = GPIO_MODE_NATIVE, + .gpio4 = GPIO_MODE_NATIVE, + .gpio5 = GPIO_MODE_NATIVE, + .gpio6 = GPIO_MODE_GPIO, + .gpio7 = GPIO_MODE_GPIO, + .gpio8 = GPIO_MODE_GPIO, + .gpio9 = GPIO_MODE_NATIVE, + .gpio10 = GPIO_MODE_NATIVE, + .gpio11 = GPIO_MODE_NATIVE, + .gpio12 = GPIO_MODE_NATIVE, + .gpio13 = GPIO_MODE_GPIO, + .gpio14 = GPIO_MODE_NATIVE, + .gpio15 = GPIO_MODE_GPIO, + .gpio16 = GPIO_MODE_GPIO, + .gpio17 = GPIO_MODE_GPIO, + .gpio18 = GPIO_MODE_NATIVE, + .gpio19 = GPIO_MODE_NATIVE, + .gpio20 = GPIO_MODE_NATIVE, + .gpio21 = GPIO_MODE_NATIVE, + .gpio22 = GPIO_MODE_GPIO, + .gpio23 = GPIO_MODE_NATIVE, + .gpio24 = GPIO_MODE_GPIO, + .gpio25 = GPIO_MODE_NATIVE, + .gpio26 = GPIO_MODE_NATIVE, + .gpio27 = GPIO_MODE_GPIO, + .gpio28 = GPIO_MODE_GPIO, + .gpio29 = GPIO_MODE_GPIO, + .gpio30 = GPIO_MODE_NATIVE, + .gpio31 = GPIO_MODE_GPIO, +}; + +static const struct pch_gpio_set1 pch_gpio_set1_direction = { + .gpio0 = GPIO_DIR_INPUT, + .gpio1 = GPIO_DIR_INPUT, + .gpio6 = GPIO_DIR_INPUT, + .gpio7 = GPIO_DIR_INPUT, + .gpio8 = GPIO_DIR_INPUT, + .gpio13 = GPIO_DIR_INPUT, + .gpio15 = GPIO_DIR_OUTPUT, + .gpio16 = GPIO_DIR_INPUT, + .gpio17 = GPIO_DIR_INPUT, + .gpio22 = GPIO_DIR_INPUT, + .gpio24 = GPIO_DIR_OUTPUT, + .gpio27 = GPIO_DIR_INPUT, + .gpio28 = GPIO_DIR_OUTPUT, + .gpio29 = GPIO_DIR_OUTPUT, + .gpio31 = GPIO_DIR_OUTPUT, +}; + +static const struct pch_gpio_set1 pch_gpio_set1_level = { + .gpio15 = GPIO_LEVEL_LOW, + .gpio24 = GPIO_LEVEL_LOW, + .gpio28 = GPIO_LEVEL_LOW, + .gpio29 = GPIO_LEVEL_HIGH, + .gpio31 = GPIO_LEVEL_HIGH, +}; + +static const struct pch_gpio_set1 pch_gpio_set1_reset = { +}; + +static const struct pch_gpio_set1 pch_gpio_set1_invert = { + .gpio1 = GPIO_INVERT, + .gpio8 = GPIO_INVERT, + .gpio13 = GPIO_INVERT, +}; + +static const struct pch_gpio_set1 pch_gpio_set1_blink = { +}; + +static const struct pch_gpio_set2 pch_gpio_set2_mode = { + .gpio32 = GPIO_MODE_GPIO, + .gpio33 = GPIO_MODE_GPIO, + .gpio34 = GPIO_MODE_GPIO, + .gpio35 = GPIO_MODE_NATIVE, + .gpio36 = GPIO_MODE_NATIVE, + .gpio37 = GPIO_MODE_NATIVE, + .gpio38 = GPIO_MODE_GPIO, + .gpio39 = GPIO_MODE_GPIO, + .gpio40 = GPIO_MODE_NATIVE, + .gpio41 = GPIO_MODE_NATIVE, + .gpio42 = GPIO_MODE_NATIVE, + .gpio43 = GPIO_MODE_NATIVE, + .gpio44 = GPIO_MODE_NATIVE, + .gpio45 = GPIO_MODE_NATIVE, + .gpio46 = GPIO_MODE_NATIVE, + .gpio47 = GPIO_MODE_NATIVE, + .gpio48 = GPIO_MODE_GPIO, + .gpio49 = GPIO_MODE_GPIO, + .gpio50 = GPIO_MODE_NATIVE, + .gpio51 = GPIO_MODE_NATIVE, + .gpio52 = GPIO_MODE_NATIVE, + .gpio53 = GPIO_MODE_NATIVE, + .gpio54 = GPIO_MODE_NATIVE, + .gpio55 = GPIO_MODE_NATIVE, + .gpio56 = GPIO_MODE_NATIVE, + .gpio57 = GPIO_MODE_GPIO, + .gpio58 = GPIO_MODE_NATIVE, + .gpio59 = GPIO_MODE_NATIVE, + .gpio60 = GPIO_MODE_NATIVE, + .gpio61 = GPIO_MODE_NATIVE, + .gpio62 = GPIO_MODE_NATIVE, + .gpio63 = GPIO_MODE_NATIVE, +}; + +static const struct pch_gpio_set2 pch_gpio_set2_direction = { + .gpio32 = GPIO_DIR_OUTPUT, + .gpio33 = GPIO_DIR_OUTPUT, + .gpio34 = GPIO_DIR_INPUT, + .gpio38 = GPIO_DIR_INPUT, + .gpio39 = GPIO_DIR_INPUT, + .gpio48 = GPIO_DIR_OUTPUT, + .gpio49 = GPIO_DIR_INPUT, + .gpio57 = GPIO_DIR_INPUT, +}; + +static const struct pch_gpio_set2 pch_gpio_set2_level = { + .gpio32 = GPIO_LEVEL_HIGH, + .gpio33 = GPIO_LEVEL_HIGH, + .gpio48 = GPIO_LEVEL_LOW, +}; + +static const struct pch_gpio_set2 pch_gpio_set2_reset = { +}; + +static const struct pch_gpio_set3 pch_gpio_set3_mode = { + .gpio64 = GPIO_MODE_NATIVE, + .gpio65 = GPIO_MODE_NATIVE, + .gpio66 = GPIO_MODE_NATIVE, + .gpio67 = GPIO_MODE_NATIVE, + .gpio68 = GPIO_MODE_GPIO, + .gpio69 = GPIO_MODE_GPIO, + .gpio70 = GPIO_MODE_NATIVE, + .gpio71 = GPIO_MODE_NATIVE, + .gpio72 = GPIO_MODE_GPIO, + .gpio73 = GPIO_MODE_NATIVE, + .gpio74 = GPIO_MODE_NATIVE, + .gpio75 = GPIO_MODE_NATIVE, +}; + +static const struct pch_gpio_set3 pch_gpio_set3_direction = { + .gpio68 = GPIO_DIR_INPUT, + .gpio69 = GPIO_DIR_INPUT, + .gpio72 = GPIO_DIR_INPUT, +}; + +static const struct pch_gpio_set3 pch_gpio_set3_level = { +}; + +static const struct pch_gpio_set3 pch_gpio_set3_reset = { +}; + +const struct pch_gpio_map mainboard_gpio_map = { + .set1 = { + .mode = &pch_gpio_set1_mode, + .direction = &pch_gpio_set1_direction, + .level = &pch_gpio_set1_level, + .blink = &pch_gpio_set1_blink, + .invert = &pch_gpio_set1_invert, + .reset = &pch_gpio_set1_reset, + }, + .set2 = { + .mode = &pch_gpio_set2_mode, + .direction = &pch_gpio_set2_direction, + .level = &pch_gpio_set2_level, + .reset = &pch_gpio_set2_reset, + }, + .set3 = { + .mode = &pch_gpio_set3_mode, + .direction = &pch_gpio_set3_direction, + .level = &pch_gpio_set3_level, + .reset = &pch_gpio_set3_reset, + }, +}; diff --git a/src/mainboard/asus/p8z77-series/variants/p8z77-v/hda_verb.c b/src/mainboard/asus/p8z77-series/variants/p8z77-v/hda_verb.c new file mode 100644 index 0000000000..e431593ab4 --- /dev/null +++ b/src/mainboard/asus/p8z77-series/variants/p8z77-v/hda_verb.c @@ -0,0 +1,37 @@ +/* SPDX-License-Identifier: GPL-2.0-only */ + +#include + +const u32 cim_verb_data[] = { + 0x10ec0892, /* Codec Vendor / Device ID: Realtek ALC892 */ + 0x104384fb, /* Subsystem ID */ + 15, /* Number of 4 dword sets */ + AZALIA_SUBVENDOR(0, 0x104384fb), + AZALIA_PIN_CFG(0, 0x11, 0x99430140), + AZALIA_PIN_CFG(0, 0x12, 0x411111f0), + AZALIA_PIN_CFG(0, 0x14, 0x01014010), + AZALIA_PIN_CFG(0, 0x15, 0x01011012), + AZALIA_PIN_CFG(0, 0x16, 0x01016011), + AZALIA_PIN_CFG(0, 0x17, 0x01012014), + AZALIA_PIN_CFG(0, 0x18, 0x01a19850), + AZALIA_PIN_CFG(0, 0x19, 0x02a19c60), + AZALIA_PIN_CFG(0, 0x1a, 0x0181305f), + AZALIA_PIN_CFG(0, 0x1b, 0x02214c20), + AZALIA_PIN_CFG(0, 0x1c, 0x411111f0), + AZALIA_PIN_CFG(0, 0x1d, 0x4005e601), + AZALIA_PIN_CFG(0, 0x1e, 0x01456130), + AZALIA_PIN_CFG(0, 0x1f, 0x411111f0), + + 0x80862806, /* Codec Vendor / Device ID: Intel HDMI */ + 0x80860101, /* Subsystem ID */ + 4, /* Number of 4 dword sets */ + AZALIA_SUBVENDOR(3, 0x80860101), + AZALIA_PIN_CFG(3, 0x05, 0x58560010), + AZALIA_PIN_CFG(3, 0x06, 0x18560020), + AZALIA_PIN_CFG(3, 0x07, 0x18560030), + +}; + +const u32 pc_beep_verbs[0] = {}; + +AZALIA_ARRAY_SIZES; diff --git a/src/mainboard/asus/p8z77-series/variants/p8z77-v/overridetree.cb b/src/mainboard/asus/p8z77-series/variants/p8z77-v/overridetree.cb new file mode 100644 index 0000000000..77484c775a --- /dev/null +++ b/src/mainboard/asus/p8z77-series/variants/p8z77-v/overridetree.cb @@ -0,0 +1,72 @@ +## SPDX-License-Identifier: GPL-2.0-only + +chip northbridge/intel/sandybridge + device domain 0 on + subsystemid 0x1043 0x84ca inherit + device pci 01.1 on end # PCIEX_16_2 + chip southbridge/intel/bd82x6x + register "gen1_dec" = "0x000c0291" + + device pci 19.0 on end # Intel Gigabit Ethernet + device pci 1c.0 on end # PCIe Port 1 PCIEX_16_3 (electrical x1 or x4) + device pci 1c.1 on end # PCIe Port 2 PCIEX_1_1 + device pci 1c.3 on end # PCIe Port 4 ASM1061 SATA or PCIEX_1_2 + device pci 1c.4 on end # PCIe Port 5 ASM1083 PCI Bridge + device pci 1c.6 on end # PCIe Port 7 Wi-Fi Go! + device pci 1c.7 on end # PCIe Port 8 ASM1042 USB3 + + device pci 1f.0 on # LPC bridge + chip superio/nuvoton/nct6779d + device pnp 2e.1 off end # Parallel + device pnp 2e.2 on # UART A + io 0x60 = 0x3f8 + irq 0x70 = 4 + end + device pnp 2e.3 off end # UART B, IR + device pnp 2e.5 on # PS2 KBC + io 0x60 = 0x0060 # KBC1 base + io 0x62 = 0x0064 # KBC2 base + irq 0x70 = 1 # Keyboard IRQ + irq 0x72 = 12 # Mouse IRQ + + # KBC 12Mhz/A20 speed/sw KBRST + drq 0xf0 = 0x82 + end + device pnp 2e.6 off end # CIR + device pnp 2e.7 off end # GPIOs 6-8 + device pnp 2e.8 off end # WDT1 GPIO 0-1 + device pnp 2e.108 on end # GPIO0-1 + device pnp 2e.109 on end # GPIO1 + device pnp 2e.209 on # GPIO2 + drq 0xe0 = 0xdf + end + device pnp 2e.309 on end # GPIO3 + device pnp 2e.509 on # GPIO5 + drq 0xf4 = 0xfc + end + device pnp 2e.a on # ACPI + drq 0xe3 = 0x04 # Thermal shutdown event issued + drq 0xe7 = 0x11 # Enable 3VSBS to power RAM on S3 + drq 0xf2 = 0x5d # Enable PME + end + device pnp 2e.b on # H/W Monitor, FP LED + io 0x60 = 0x290 + io 0x62 = 0 + irq 0x70 = 0 + end + device pnp 2e.d off end # WDT1 + device pnp 2e.e off end # CIR wake-up + device pnp 2e.f on # Push-pull/Open-drain + drq 0xe4 = 0xfc # GP5 PP + drq 0xe6 = 0x7f # GP7 PP + end + device pnp 2e.14 off end # Port 80 UART + device pnp 2e.16 off end # Deep sleep + end + chip drivers/pc80/tpm + device pnp c31.0 on end # TPM + end + end + end + end +end