From 0691f40588c115a5e3f266fdd4f982e0bd6e67e7 Mon Sep 17 00:00:00 2001 From: Adam Honse Date: Wed, 15 Apr 2026 00:03:38 -0500 Subject: [PATCH] Update PawnIO modules to release 0.2.4 and implement SMBus sleep mode setting --- dependencies/PawnIO/modules/SmbusI801.bin | Bin 40788 -> 42396 bytes dependencies/PawnIO/modules/SmbusNCT6793.bin | Bin 17548 -> 18844 bytes dependencies/PawnIO/modules/SmbusPIIX4.bin | Bin 37260 -> 38892 bytes i2c_smbus/Windows/i2c_smbus_pawnio.cpp | 98 ++++++++++++++++++--------- i2c_smbus/Windows/i2c_smbus_pawnio.h | 8 +++ 5 files changed, 75 insertions(+), 31 deletions(-) diff --git a/dependencies/PawnIO/modules/SmbusI801.bin b/dependencies/PawnIO/modules/SmbusI801.bin index 48cf3185f9b8b6a2d92b58ea46418db989066f27..dddcb7dcc2923b84892265264fd7d3117e4fe167 100644 GIT binary patch delta 2595 zcmb_c4Nw&28-Mq`3zyG15xXt%lTpcdy0iVm)=4#HvG;Pr7-c`EFsYv_&_>WetZM%H0j-wX!2IgE+L{#NYzg{^qrYSf=yY%%{&l->0 z3iRVs-+v`!pQ*@Y9=!kRq00MA{`!E+CFxIPPqH0sPr2*St@Lk~KFN7;&-uhX*P4em z<5%=S57cn|NA|heH+=I|NMyhg)29RLtGpjm`nsZNb58n^?du*1`9zie^Z#Z~e@FW= zwe7;Yu!FgFaa?QUq89C*%0oxLi3n89X*C7N6?;!iUA{SQ{aeW+BY}nT)tm92 z_msUaeivl=I)3&1r1NygNY9j!-M={GA0j-%5M`#r(>}ja_EXjqFVuH#o<|*$^(V#Y zVw=-KBRf8BGal6X^u9a)K!w+an8YUxm#+BkB%7)}OeVf8PLEy374&ZEtGrxuce9*a<%S%39xUk=wX{;-qH+f>i z+}!_UH@p$GqG@Ao>yH(k|3&qmwH{wndG6@8RAuLmb>IYix7#12!!6;gpk`; z6HcJ-UqXmM2$}i!|A7*OKI4&8AoMMd+T{qz_*%Lr5enkb{Y;UN5pfPm zl^l5z7E4$z;qwyKNw`a^S&E9Rg(XYPMQ|BE>Qhp@uxzQ| zg9l}1Xpv21`(#>7sA2a5VZcO@EaSD)hc`piN*Gp9(4bLx`-`Me7t{vCfzy{9+a-C@ zCG3D&O&D_d9zOG)=bbG|ZKG7x=Te54H^ zO0xNrDLf|dmn*?<4D}BPScm=(1gy6uU@WT#=MohJ&s9Lvl6+{e*unCo7W8TghV3LI zMDTN)Oc64;5T*oMgbunV@hf>G466C4Y;fXhe$r+$;rL2XnV zbSKhaOXP>m7Y^c!*cK>2PcIe=CFlg(FFI3DpF7hQEyfN?Yg{xGeRiKFzn``X+Y&@1R#*Q<|8{xsRc8tzJUF?410_4TbCLQNR0fDQ60?)RF z!?n;9uVB-(Lj*RRVW&?WA$STY2^j(fSAt;_dFCE|GSgI}d|b2&oFoZ;iH<+}SuW9v z1&29V7%?;@^OE8xGngt)g1M(hup{mjZI?pfK1+fxjh~2948ikZ>|p;xEzYj#2>=OM)eBr%*6>rqG48%%nvAh(VZxkf#Tp-C;IwRZyD?Z?TLxC=1wa`d939O|+H(C&Wrcr`mohAd{*vGRKV2Wwh z_(;B7sN(sBHzjR%@&|h3VgnxX_2jWkv0cn*EwSJJDi|)MZ*!lxFN$t!#~nlxySriw zzI6#p7zKV$ca2^oD2S<^%QigI<%JE;Kq;wYYga9m i)uGV3L5oTM8{G9()|*%n6dO|=hM{^R$?9Js{eK5GWxk^T delta 2271 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 J#>q0C4FERIH>dyr diff --git a/dependencies/PawnIO/modules/SmbusPIIX4.bin b/dependencies/PawnIO/modules/SmbusPIIX4.bin index bfd72c2fc904a87792134c61fe483ff1eb3e50fd..cf660881e736e210991b763392f4c4739625fea0 100644 GIT binary patch delta 2456 zcmbtU4Nwzz7T^5~xWEF7AXy=SAmKv^AGIQp3m;WP>jfu*(zFJ_Q*6LcqHvD(VuLLd zI+J>-uV}1+qhssEib`i~M=N%;L#uXDn|ii~1#hVJBbL-cJr1;3@4sPzIBjP-)1BG* z?fdw@_j~XE-kJ{}_c3H55JAkTY?%4tmGs4Adj58*<w2`dC2XbG2?qaC(%6?|+_pZA~?PvDxxuyMbQE|iD z2QOcLnbgXc>aFDz?GGYYej`Sy50?3``Y1C&r;u@ z;j9O5B=5FVmG!>$*^J_nkd6Ch747#wlco{>eYUgvzZa$t#g0VJYU&*TqW$Aq&Edi< z$~iapE5owY1^bN|y1idVhII~na_VpTO}p-0%+!6<`0V|n@0zm0GiqON{WLG;slI~a zriGVoAGBGcH|<;5`cc%t@LlV?C;#1>(G<1SaA9QghFjsi`=Y8=fB5dGp?8eh=y$2% z>z!v`NY)$vbu-zYd(%}d{vwg0-fP_|{b6_Ku(px{ zLk$D_5>{+X?J)UNE<4v4Vt8?p{L-Pazc!YwTIV!bz6xEwx3wtW)j|;839JI5kxSFBQXRKhq1W^+c5Ia zlL9_7jwWKApr{kDNx3PV|S&4vnyn5GV>u3W#R#-rmZri~ynfh+agr5TCQ$xC z<4K4f$ex}C;#4ZMN6-`q=!9xI2K2rx=o1NpGGNS+ z&Jm6hN#o8Bg^~zXkcAS6a*%|GU@VyZ9hnWIez{1=Vznc`M1ay@S99k*px3kcfz#{fOq^?K+M*#(0an0Ze zwL)D)C&<@GL6yXC`C&;Uui(TpH6+k1Zc}(W$V4u1NN`Fu1#(tHj)H_v1M@7LFj5M1 z7zJ*&9URdtC`$|w9%)7ANr#r0%Ays8m_Tw)+y&?@00v2b1D zg02__`l36@L3lML4Laf(aK!X`Np7hQS$&{Q!bfJo7MtWVh_4X(MRJgpV1Bb1FK_K^ z9kTdNded=vi13@FWsY-V-%{C9Pad}v=kjI1oJe8qRYB{(eDdR^9!(n1CF$U1C~(B5 zBiA+fIevt^0c|THfKD`^(Qn~}#0anKd_*OV=uVR&XFs$piQwc(6!|D&;~X8*O>uHZ z;ttNWAlH966q?k@I5U~L_I;!<`)6x;`6982v!6~b9JlgNu)al zcS2G@zaB5bN;_%}@j9vi?NjZZ?W8qoT#v+Ggm*Z_PsEuug zAi{qn7K|o*xhj@38yFJ$Obpkt+2x0t8zIM6#2wj|>x0w{aL4!@%3~&}+ZM81*ABbK ZAG8J*%qBI-a92$R5~RB*u5f2A^MBy8h0p*1 delta 2077 zcmZ`(3s4hR6y1G5j1bF;6c#}ee-KC@K~O5UqoV!B5l?B?whVKm%b!gj!TO z*Rj|^#Sh99QQEbl6si_S<4h1c+KMB;R!4$HjDNJKeM=UM9lJ9-XWx1E-goZ4d#~vf zDmj951R{vYq6MW#g&8d8EnzwRQtulH}Q|h)NzNmV7)UJ@&{nZEG^bi3tH%@0& zzjO;Qh3nS6_1^X9;q7ufik7(+d% z>i9)6sxd8j?UdQK_ULCty?mOQThtdWt$O-ntY&`2R%f1M`4_MBr*rlnE4=UQ85Q1A zudc7tX&of1$~sHWGzDL~o?E}*P5zx^WA%>0)UL?N(Yd$lpQ`VFW>_@Z0u@ zH%Uzp9hj%E!DEc{B7%5_aoHMz7)9a_{7m3*GKXOnR1LpBc)OmL@|a^3}d(i>7n%0TLy3DPxXP~t=} z2D*=AKfpj&fMAvgG=3Cw)Ll$M16>Q+F-9ylEH+D6qHCPDChAZ%u8>@3NWj2g@Z&n5CNrOO4VY@M68T9*N z#bWvsUIuXjDz+Os_(TW=8-3)c&(2CW4gEf6v2Wb^=m8x9iI|N$-?A!^$nmOC5^Xt! zqCjga0+m07s2)g^z9R2Iyx(>da}RpGT&xsG{S~P1KC{l>lVqcDDh;wsw2U`&xK>_; zx;`vDg!qr=(ohnRgj$CUSq;+4Nk-H+{6Dk^l%G>@I*?U4c!~|QqvHWiYn{} z{{y3$EJk>D`ZP;crm1CCtG3`wyow9qGWMaNAtc{wUmDAvHMs8)%3ALX{b1c6df|Vq z%comgo7e)GLE|dTo$88xYG!w2z$Vw_>iZ5gRIAu&*f?}X9xGK}k5i{lUX-i}oc#NglQe*@R6o~7` zRAe4ub@eoOEYzdEb3=_LO{zc_J{uCDO$i3&q9pul)1^Yty7I~E(7dRVtYT`C50a?# z=K)8hmh zR^4fb9otj8L94>8n^pmBZkcdzZ8p1RG-+KtHZIp|Y|ksF@u6WoTY+)wWniLkKl)P4 zi4A?oGN%e@#;^&`Csi8F2(r6)sP-GCH!sl^W$%C)E-s)dNJ7EXU;<2k0iH_O78*9; bsZc<{^FjqQ6yka2%V(6^7m-X&Q8@K4chUz7 diff --git a/i2c_smbus/Windows/i2c_smbus_pawnio.cpp b/i2c_smbus/Windows/i2c_smbus_pawnio.cpp index e1469063..fe643f97 100644 --- a/i2c_smbus/Windows/i2c_smbus_pawnio.cpp +++ b/i2c_smbus/Windows/i2c_smbus_pawnio.cpp @@ -20,6 +20,39 @@ std::unordered_map i2c_smbus_pawnio::using_handle; +s32 piix4_port_sel(HANDLE pawnio_handle, s32 port) +{ + const SIZE_T in_size = 1; + ULONG64 in[in_size] = {(ULONG64)port}; + const SIZE_T out_size = 1; + ULONG64 out[out_size]; + SIZE_T return_size; + HRESULT status; + + /*-----------------------------------------------------*\ + | Execute PIIX4 port_sel ioctl | + \*-----------------------------------------------------*/ + status = pawnio_execute(pawnio_handle, "ioctl_piix4_port_sel", in, in_size, out, 1, &return_size); + + return(status ? -EIO : 0); +} + +s32 set_sleep_mode(HANDLE pawnio_handle, s32 sleep_mode) +{ + const SIZE_T in_size = 1; + ULONG64 in[in_size] = {(ULONG64)sleep_mode}; + const SIZE_T out_size = 0; + SIZE_T return_size; + HRESULT status; + + /*-----------------------------------------------------*\ + | Execute PIIX4 port_sel ioctl | + \*-----------------------------------------------------*/ + status = pawnio_execute(pawnio_handle, "ioctl_set_sleep_mode", in, in_size, NULL, 1, &return_size); + + return(status ? -EIO : 0); +} + i2c_smbus_pawnio::i2c_smbus_pawnio(HANDLE handle, std::string name) { /*-----------------------------------------------------*\ @@ -49,23 +82,23 @@ i2c_smbus_pawnio::i2c_smbus_pawnio(HANDLE handle, std::string name) if(!status) { - this->pci_vendor = (out[2] & 0x000000000000FFFF); - this->pci_device = (out[2] & 0x00000000FFFF0000) >> 16; - this->pci_subsystem_vendor = (out[2] & 0x0000FFFF0000FFFF) >> 32; - this->pci_subsystem_device = (out[2] & 0xFFFF000000000000) >> 48; + this->pci_vendor = (int)(out[2] & 0x000000000000FFFF); + this->pci_device = (int)((out[2] & 0x00000000FFFF0000) >> 16); + this->pci_subsystem_vendor = (int)((out[2] & 0x0000FFFF0000FFFF) >> 32); + this->pci_subsystem_device = (int)((out[2] & 0xFFFF000000000000) >> 48); char name_str[9]; - name_str[0] = (out[0] & 0x00000000000000FF); - name_str[1] = (out[0] & 0x000000000000FF00) >> 8; - name_str[2] = (out[0] & 0x0000000000FF0000) >> 16; - name_str[3] = (out[0] & 0x00000000FF000000) >> 24; - name_str[4] = (out[0] & 0x000000FF00000000) >> 32; - name_str[5] = (out[0] & 0x0000FF0000000000) >> 40; - name_str[6] = (out[0] & 0x00FF000000000000) >> 48; - name_str[7] = (out[0] & 0xFF00000000000000) >> 56; + name_str[0] = (char)(out[0] & 0x00000000000000FF); + name_str[1] = (char)((out[0] & 0x000000000000FF00) >> 8); + name_str[2] = (char)((out[0] & 0x0000000000FF0000) >> 16); + name_str[3] = (char)((out[0] & 0x00000000FF000000) >> 24); + name_str[4] = (char)((out[0] & 0x000000FF00000000) >> 32); + name_str[5] = (char)((out[0] & 0x0000FF0000000000) >> 40); + name_str[6] = (char)((out[0] & 0x00FF000000000000) >> 48); + name_str[7] = (char)((out[0] & 0xFF00000000000000) >> 56); name_str[8] = 0; - strncpy( this->device_name, name_str, 512 ); + strncpy(this->device_name, name_str, 512 ); } /*-----------------------------------------------------*\ @@ -79,6 +112,26 @@ i2c_smbus_pawnio::i2c_smbus_pawnio(HANDLE handle, std::string name) } /*-----------------------------------------------------*\ + | Get shared SMBus access setting | + \*-----------------------------------------------------*/ + unsigned int smbus_sleep_mode = PAWNIO_SLEEPMODE_ALWAYSSLEEP; + + if(drivers_settings.contains("smbus_sleep_mode")) + { + smbus_sleep_mode = drivers_settings["smbus_sleep_mode"]; + } + + if(smbus_sleep_mode >= PAWNIO_SLEEPMODE_MAX) + { + smbus_sleep_mode = PAWNIO_SLEEPMODE_ALWAYSSLEEP; + } + + /*-----------------------------------------------------*\ + | Initialize sleep mode | + \*-----------------------------------------------------*/ + set_sleep_mode(handle, smbus_sleep_mode); + + /*-----------------------------------------------------*\ | Create global SMBus mutex if enabled | \*-----------------------------------------------------*/ if(shared_smbus_access) @@ -274,23 +327,6 @@ HRESULT i2c_smbus_pawnio::start_pawnio(std::string filename, PHANDLE phandle) return(S_OK); } -s32 piix4_port_sel(HANDLE pawnio_handle, s32 port) -{ - const SIZE_T in_size = 1; - ULONG64 in[in_size] = {(ULONG64)port}; - const SIZE_T out_size = 1; - ULONG64 out[out_size]; - SIZE_T return_size; - HRESULT status; - - /*-----------------------------------------------------*\ - | Execute PIIX4 port_sel ioctl | - \*-----------------------------------------------------*/ - status = pawnio_execute(pawnio_handle, "ioctl_piix4_port_sel", in, in_size, out, 1, &return_size); - - return(status ? -EIO : 0); -} - bool i2c_smbus_pawnio_detect() { ULONG dll_version; @@ -331,7 +367,7 @@ bool i2c_smbus_pawnio_detect() \*-----------------------------------------------------*/ if(i2c_smbus_pawnio::start_pawnio("SmbusPIIX4.bin", &pawnio_handle) == S_OK) { - /*--------------------------------------------------*\ + /*-------------------------------------------------*\ | Select port 1 | \*-------------------------------------------------*/ piix4_port_sel(pawnio_handle, 1); diff --git a/i2c_smbus/Windows/i2c_smbus_pawnio.h b/i2c_smbus/Windows/i2c_smbus_pawnio.h index 7a27ae83..05f609ea 100644 --- a/i2c_smbus/Windows/i2c_smbus_pawnio.h +++ b/i2c_smbus/Windows/i2c_smbus_pawnio.h @@ -21,6 +21,14 @@ #define GLOBAL_SMBUS_MUTEX_NAME "Global\\Access_SMBUS.HTP.Method" +enum +{ + PAWNIO_SLEEPMODE_ALWAYSBUSY = 0, + PAWNIO_SLEEPMODE_SHORTBUSY = 1, + PAWNIO_SLEEPMODE_ALWAYSSLEEP = 2, + PAWNIO_SLEEPMODE_MAX +}; + class i2c_smbus_pawnio : public i2c_smbus_interface { public: