Overclock.net banner

21 - 40 of 80 Posts

·
Registered
Joined
·
1,104 Posts
+rep<br><br>
Wish this was open source tho (learning purpose). Does this use its own driver to access the i2c bus or you can do this using the ADL?
 

·
Registered
Joined
·
715 Posts
Someone tested with 290? :)
 

·
Registered
Joined
·
55 Posts
Discussion Starter #23
<div class="quote-container" data-huddler-embed="/t/1605757/vrmtool-a-simple-tool-to-read-and-write-to-i2c-vrm-controllers/20#post_25367224" data-huddler-embed-placeholder="false"><span>Quote:</span>
<div class="quote-block">Originally Posted by <strong>Bartouille</strong> <a href="/t/1605757/vrmtool-a-simple-tool-to-read-and-write-to-i2c-vrm-controllers/20#post_25367224"><img alt="View Post" class="inlineimg" src="/img/forum/go_quote.gif"></a><br><br>
+rep<br><br>
Wish this was open source tho (learning purpose). Does this use its own driver to access the i2c bus or you can do this using the ADL?</div>
</div>
Currently it uses ADL to access the I2C lines. Regarding releasing it as open source, I'll probably do that at one point but currently the code is an ugly hack to get everything working.<br><br><br><div class="quote-container" data-huddler-embed="/t/1605757/vrmtool-a-simple-tool-to-read-and-write-to-i2c-vrm-controllers/20#post_25368826" data-huddler-embed-placeholder="false"><span>Quote:</span>
<div class="quote-block">Originally Posted by <strong>OneB1t</strong> <a href="/t/1605757/vrmtool-a-simple-tool-to-read-and-write-to-i2c-vrm-controllers/20#post_25368826"><img alt="View Post" class="inlineimg" src="/img/forum/go_quote.gif"></a><br><br>
Someone tested with 290? :)</div>
</div>
I don't think so. Please go ahead and report <img alt="smile.gif" class="bbcode_smiley" src="http://files.overclock.net/images/smilies/smile.gif">
 

·
Registered
Joined
·
715 Posts
looks like its working <img alt="smile.gif" class="bbcode_smiley" src="http://files.overclock.net/images/smilies/smile.gif"> but im to scared to change any value <img alt="biggrin.gif" class="bbcode_smiley" src="http://files.overclock.net/images/smilies/biggrin.gif"><img alt="biggrin.gif" class="bbcode_smiley" src="http://files.overclock.net/images/smilies/biggrin.gif"><br><br>
will this be opensource after some time? <img alt="wink.gif" class="bbcode_smiley" src="http://files.overclock.net/images/smilies/wink.gif"><br><br>
edit: on windows 10 graphs are little bit broken
 

·
Registered
Joined
·
55 Posts
Discussion Starter #25
<div class="quote-container" data-huddler-embed="/t/1605757/vrmtool-a-simple-tool-to-read-and-write-to-i2c-vrm-controllers/20#post_25370202" data-huddler-embed-placeholder="false"><span>Quote:</span>
<div class="quote-block">Originally Posted by <strong>OneB1t</strong> <a href="/t/1605757/vrmtool-a-simple-tool-to-read-and-write-to-i2c-vrm-controllers/20#post_25370202"><img alt="View Post" class="inlineimg" src="/img/forum/go_quote.gif"></a><br><br>
looks like its working <img alt="smile.gif" class="bbcode_smiley" src="http://files.overclock.net/images/smilies/smile.gif"> but im to scared to change any value <img alt="biggrin.gif" class="bbcode_smiley" src="http://files.overclock.net/images/smilies/biggrin.gif"><img alt="biggrin.gif" class="bbcode_smiley" src="http://files.overclock.net/images/smilies/biggrin.gif"><br><br>
will this be opensource after some time? <img alt="wink.gif" class="bbcode_smiley" src="http://files.overclock.net/images/smilies/wink.gif"><br><br>
edit: on windows 10 graphs are little bit broken</div>
</div>
<br>
Regarding open source: see answer above <img alt="smile.gif" class="bbcode_smiley" src="http://files.overclock.net/images/smilies/smile.gif"><br><br>
Could you post a screenshot? That way I can see if the values are all sane and what's wrong with the graphs.
 

·
Registered
Joined
·
715 Posts
<a href="https://s31.postimg.org/6dwt4h5aj/vrmtool.png" target="_blank">https://s31.postimg.org/6dwt4h5aj/vrmtool.png</a><br>
values looks fine i crosschecked with hawaii bios reader VRM section<br><br>
what is interesting is that LLC is enabled even on bioses which does not have it in VRM command table o_O<br><br>
maybe driver is in control of this value?<br><br>
output scaling and phase gain is prolly not used on 290X
 

·
Registered
Joined
·
55 Posts
Discussion Starter #27
<div class="quote-container" data-huddler-embed="/t/1605757/vrmtool-a-simple-tool-to-read-and-write-to-i2c-vrm-controllers/20#post_25370551" data-huddler-embed-placeholder="false"><span>Quote:</span>
<div class="quote-block">Originally Posted by <strong>OneB1t</strong> <a href="/t/1605757/vrmtool-a-simple-tool-to-read-and-write-to-i2c-vrm-controllers/20#post_25370551"><img alt="View Post" class="inlineimg" src="/img/forum/go_quote.gif"></a><br><br>
<a href="https://s31.postimg.org/6dwt4h5aj/vrmtool.png" target="_blank">https://s31.postimg.org/6dwt4h5aj/vrmtool.png</a><br>
values looks fine i crosschecked with hawaii bios reader VRM section<br><br>
what is interesting is that LLC is enabled even on bioses which does not have it in VRM command table o_O<br><br>
maybe driver is in control of this value?<br><br>
output scaling and phase gain is prolly not used on 290X</div>
</div>
<br>
Awesome, the values look all good. Only issue is that it seems to detect two IR3567B devices but only one I2C one - which probably means one of the PMBus devices correspond to the unidentified I2C device. Which version of the 290X do you have?<br><br>
The LLC setting is probably set as a default setting stored in the VRM chip.<br><br>
Regarding the graphs, I probably just have to draw it correctly for different UI scaling values. I use a 4k monitor @ 125%.
 

·
Registered
Joined
·
715 Posts
i have reference 290X with [email protected]% <img alt="biggrin.gif" class="bbcode_smiley" src="http://files.overclock.net/images/smilies/biggrin.gif"><br><br>
can you provide more info about LLC slope? it looks like by lowering that value i can get little better efficiency <img alt="smile.gif" class="bbcode_smiley" src="http://files.overclock.net/images/smilies/smile.gif"><br><br>
edit: is is somehow possible that LLC setting is other way around?
 

·
Registered
Joined
·
715 Posts
LLC is other way around <img alt="biggrin.gif" class="bbcode_smiley" src="http://files.overclock.net/images/smilies/biggrin.gif"> when i press off it enables LLC and when i press on it disables LLC <img alt="biggrin.gif" class="bbcode_smiley" src="http://files.overclock.net/images/smilies/biggrin.gif"> dunno how that happened but i can see it in gpu-z/afterburner that while i press OFF voltage is constant 1.275V and when i press ON voltage jumps all over the place down to 1.2V
 

·
Registered
Joined
·
34 Posts
deeper-blue, any chance you could include the memory frequency setting in the tool? Right now its great, but if it could also have that, keeping in mind AMD said "thy frequency shalt not be higher than 2050 Mhz <img alt="teaching.gif" class="bbcode_smiley" src="http://files.overclock.net/images/smilies/teaching.gif"> ", it would be the best thing since Babylon 5 <img alt="biggrin.gif" class="bbcode_smiley" src="http://files.overclock.net/images/smilies/biggrin.gif">
 

·
Registered
Joined
·
715 Posts
you can use asus tweak for this <img alt="wink.gif" class="bbcode_smiley" src="http://files.overclock.net/images/smilies/wink.gif">
 

·
Registered
Joined
·
117 Posts
<a data-huddler-embed="href" href="/u/506823/deeper-blue">@deeper-blue</a> I am trying to use ADL2_Display_WriteAndReadI2C but the desciption of the ADLI2C structure members are lacking. What are the correct values?<br><br>
I2C clock speed in KHz is 100 (Normal), 400 (Fast) or 1000 (Max speed). So is 400 ok?
 

·
Registered
Joined
·
55 Posts
Discussion Starter #33
<div class="quote-container" data-huddler-embed="/t/1605757/vrmtool-a-simple-tool-to-read-and-write-to-i2c-vrm-controllers/30#post_25440407" data-huddler-embed-placeholder="false"><span>Quote:</span>
<div class="quote-block">Originally Posted by <strong>BromoL</strong> <a href="/t/1605757/vrmtool-a-simple-tool-to-read-and-write-to-i2c-vrm-controllers/30#post_25440407"><img alt="View Post" class="inlineimg" src="/img/forum/go_quote.gif"></a><br><br><a data-huddler-embed="href" href="/u/506823/deeper-blue">@deeper-blue</a> I am trying to use ADL2_Display_WriteAndReadI2C but the desciption of the ADLI2C structure members are lacking. What are the correct values?<br><br>
I2C clock speed in KHz is 100 (Normal), 400 (Fast) or 1000 (Max speed). So is 400 ok?</div>
</div>
<br>
This is my wrapper code for using this function it shoudl get you started. I use 100 but I think 400 should also be no problem.<br><div class="bbcode_code">
<div class="bbcode_code_head">Code:</div>
<pre>
<code>int I2C_WriteAndRead(int iAdapterIndex, int iLine, int iAddress, int iOffset, int iAction, int iDataSize, char *pI2Cdata)
{
ADLI2C *pI2C;
ADLI2C I2Cstore;
pI2C = &I2Cstore;

pI2C->iSize = sizeof(ADLI2C);
pI2C->iSpeed = 100;
pI2C->iAction = iAction;

pI2C->iLine = iLine;
pI2C->iAddress = iAddress << 1;

pI2C->iOffset = iOffset;

pI2C->iDataSize = iDataSize;
pI2C->pcData = pI2Cdata;

return ADL_Display_WriteAndReadI2C(iAdapterIndex, pI2C);
}</code>
</pre></div>
 

·
Registered
Joined
·
117 Posts
Ok, thanks. On problem i still have is, that i can only read single bytes. Setting iDataSize greater one only repeats the first byte multiple times.<br><br>
So far i am using the ADL2-variants of functions with context argument. But i have some performance issues. Reading 6 values per second (directly one after the other) already produces stuttering in 3d applications. Is the locking mechanism only relevant for multithreading and performance better without it? Or does using the wrong frequency add some expensive frequency switching? I will make some more tests.<br><br>
I also use ADL2_Display_WriteAndReadI2C to acces the SMB. Is this 'the way its meant to done'?. I use information from <a class="bbcode_url" href="http://www.irf.com/product-info/datasheets/data/ir3565b.pdf" target="_blank">http://www.irf.com/product-info/datasheets/data/ir3565b.pdf</a>. I assume, that your plot voltage is also from the SMB, because it differs from VID and VDDC. VIN seems also to be encoded in the 11-bit linear format (i get plausible values around 12V this way). I was not successful in decoding any current or power values. Sometimes they seem right (close to power target under load) but often they are way of. That also holds for the current from I2C registers. Or constantly polling the bus causes some kind of throttling. But HWiNFO also fails to read plausible values.<br><br>
AMD released ADL SDK 10. So i tried some of the ODN-APIs (OverdriveNext). But i could not get power draw from there either. I wonder what GPU-Z is doing. Most of the stuff (clocks, fan control, ...) seems to work fine. Currently i am trying to combine Wattman and I2C/SMB features (with logging) in one application.<br><br>
I would like to have LLC permanently enabled, because vdroop seems kind of unpredictable under varying load. But booting with low voltages and failing to enable LLC is predetermined to crash rather soon. With LLC enabled i can undervolt to 1000mV at stock clocks. Without LLC i need 1025 mV VID, which drops to 1002 sometimes. The register mapping posted py <a data-huddler-embed="href" href="/u/442759/gupsterg">@gupsterg</a> mentions that "no VDroop sends driver "iffy" so no good for 24/7 use". I wonder what that means. I could not observe any problems with LLC enabled so far (using it for some gaming sessions).<br><br>
I am currently not sure what i want to achive with my application. I think having some easy profile switching (including stuff not available in Wattman) combined with logging would be fine. But transfering like 100 bytes over the I2C bus equates to 8 ms (at 100kHz). If the GPU or driver is somehow blocked during this time, logging I2C registers (few per second) is probably not reasonable.<br><br>
I really enjoyed buildzoid's RX 480 hardmodding <a class="bbcode_url" href="https://www.youtube.com/watch?v=ltHktJnWbi8" target="_blank">streams</a>. Softmodding is more accessible to me. I learned some stuff about VRMs and I2C/SMB and had fun with my RX 480 (outside of gaming).
 

·
Registered
Joined
·
632 Posts
Could you incude support for r9 380 and 285 NCP81022?. This datasheet will help: <a href="http://media.digikey.com/pdf/Data%20Sheets/ON%20Semiconductor%20PDFs/NCP81022.pdf" target="_blank">http://media.digikey.com/pdf/Data%20Sheets/ON%20Semiconductor%20PDFs/NCP81022.pdf</a><br><br>
I2c dump is:
<a class="spoiler-link H-spoiler-toggle" href="#"><strong>Warning: Spoiler!</strong> <span class="spoiler-help">(Click to show)</span></a><div class="spoiler-hidden">
<div class="bbcode_code">
<div class="bbcode_code_head">Code:</div>
<pre>
<code>------[ ATI I2C Device GPU #1 / B06-D24 ]------

0000 FF 80 17 7F FF FF FF FF FF FF FF FF FF FF FF FF ...............
0010 00 FF FF FF FF FF FF FF FF B0 FF FF FF FF FF FF ................
0020 22 00 FF FF 00 18 A8 FF FF FF FF FF FF FF FF FF "...............
0030 FF FF FF FF FF FF FF FF 01 00 FF FF FF FF FF FF ................
0040 FF FF FF FF FF FF FF FF FF FF 64 FF FF FF FF 55 ..........d....U
0050 FF 46 00 64 FF 10 FF FF FF FF FF FF FF FF FF FF .F.d............
0060 FF FF FF FF FF FF FF FF 2C FF FF FF FF FF FF FF ........,.......
0070 FF FF FF FF FF FF FF FF 00 00 00 00 00 00 FF FF ................
0080 FF FF FF FF FF FF FF FF E9 FF FF 3F F0 00 FF FF ...........?....
0090 FF FF FF FF FF FF 64 FF FF 1A 22 03 FF FF FF FF ......d...".....
00A0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF ................
00B0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF ................
00C0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF ................
00D0 00 01 00 03 50 02 00 FF FF FF 01 FF FF FF FF FF ....P...........
00E0 FF 00 00 02 03 03 00 3D FF FF FF FF FF FF FF FF .......=........
00F0 FF FF FF 68 FF FF FF 0A BC 9C FF 07 FF 0F FF FF ...h............

------[ ATI I2C Device GPU #1 / B06-D24 ]------

0000 FFFF 2F80 7E17 FF7F FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF
0010 6F00 FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF 4CB0 FFFF FFFF FFFF FFFF FFFF FFFF
0020 6022 0000 FFFF FFFF 0000 0018 00A8 FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF
0030 FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF 0001 0000 FFFF FFFF FFFF FFFF FFFF FFFF
0040 FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF 0064 FFFF FFFF FFFF FFFF 0055
0050 FFFF 0046 0000 0064 FFFF 0010 FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF
0060 FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF 012C FFFF FFFF FFFF FFFF FFFF FFFF FFFF
0070 FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF FB00 0000 2D00 4600 5000 3B00 FFFF FFFF
0080 FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF D2E9 FFFF FFFF 013F A2F0 0000 FFFF FFFF
0090 FFFF FFFF FFFF FFFF FFFF FFFF A364 FFFF FFFF 001A 1022 8103 FFFF FFFF FFFF FFFF
00A0 FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF
00B0 FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF
00C0 FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF
00D0 E200 8E01 3400 5603 BA50 2C02 9F00 FFFF FFFF FFFF 6201 FFFF FFFF FFFF FFFF FFFF
00E0 FFFF 6800 D500 B002 A103 CA03 7E00 003D FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF
00F0 FFFF FFFF FFFF 0368 FFFF FFFF FFFF 810A F5BC F29C FFFF 5807 FFFF 1D0F FFFF FFFF</code>
</pre></div>
</div>
<br>
Thanks <img alt="thumb.gif" class="bbcode_smiley" src="http://files.overclock.net/images/smilies/thumb.gif">
 

·
Registered
Joined
·
55 Posts
Discussion Starter #36
<div class="quote-container" data-huddler-embed="/t/1605757/vrmtool-a-simple-tool-to-read-and-write-to-i2c-vrm-controllers/30#post_25447722" data-huddler-embed-placeholder="false"><span>Quote:</span>
<div class="quote-block">Originally Posted by <strong>BromoL</strong> <a href="/t/1605757/vrmtool-a-simple-tool-to-read-and-write-to-i2c-vrm-controllers/30#post_25447722"><img alt="View Post" class="inlineimg" src="/img/forum/go_quote.gif"></a><br><br>
Ok, thanks. On problem i still have is, that i can only read single bytes. Setting iDataSize greater one only repeats the first byte multiple times.<br><br>
So far i am using the ADL2-variants of functions with context argument. But i have some performance issues. Reading 6 values per second (directly one after the other) already produces stuttering in 3d applications. Is the locking mechanism only relevant for multithreading and performance better without it? Or does using the wrong frequency add some expensive frequency switching? I will make some more tests.<br></div>
</div>
<br>
If you haven't already figured it out yourself, here is how I can read a word instead of just one byte - which you will need to read from the PMBus address of the I2C device. And yes as you guessed that's what I'm reading out to generate the graphs.<br><br>
Also I don't think the context versions of the functions make any difference, they are more meant for preventing issues if you access ADL from multiple threads in your app.<br><br>
Regarding the problem of stalling the GPU during access - it seems like we can't prevent that. Running VRM tool and having it read out all the register values does interrupt the GPU quite heavily. Not sure if there's a better way do to it.<br><br>
I'm in the middle of rewriting the whole thing to allow me more flexibility for things that I want to support - when/if that works it will be put up on github.<br><div class="bbcode_code">
<div class="bbcode_code_head">Code:</div>
<pre>
<code> char *pI2Cdata;
UINT16 I2Cdata;
pI2Cdata = (char *)&I2Cdata;

int iResult = I2C_WriteAndRead(iAdapterIndex, iLine, iAddress, iRegister, ADL_DL_I2C_ACTIONREAD_REPEATEDSTART, 2, pI2Cdata);
if (iResult != ADL_OK) {
m_TextOut.Format(_T("%s\r\nFailed to read from I2C register. Error code: %d\r\n"), m_TextOut.GetString(), iResult);
}</code>
</pre></div>
 

·
Registered
Joined
·
55 Posts
Discussion Starter #37
<div class="quote-container" data-huddler-embed="/t/1605757/vrmtool-a-simple-tool-to-read-and-write-to-i2c-vrm-controllers/30#post_25461722" data-huddler-embed-placeholder="false"><span>Quote:</span>
<div class="quote-block">Originally Posted by <strong>mynm</strong> <a href="/t/1605757/vrmtool-a-simple-tool-to-read-and-write-to-i2c-vrm-controllers/30#post_25461722"><img alt="View Post" class="inlineimg" src="/img/forum/go_quote.gif"></a><br><br>
Could you incude support for r9 380 and 285 NCP81022?. This datasheet will help: <a href="http://media.digikey.com/pdf/Data%20Sheets/ON%20Semiconductor%20PDFs/NCP81022.pdf" target="_blank">http://media.digikey.com/pdf/Data%20Sheets/ON%20Semiconductor%20PDFs/NCP81022.pdf</a><br><br>
I2c dump is:
<a class="spoiler-link H-spoiler-toggle" href="#"><strong>Warning: Spoiler!</strong> <span class="spoiler-help">(Click to show)</span></a><div class="spoiler-hidden">
<div class="bbcode_code">
<div class="bbcode_code_head">Code:</div>
<pre>
<code>------[ ATI I2C Device GPU #1 / B06-D24 ]------

0000 FF 80 17 7F FF FF FF FF FF FF FF FF FF FF FF FF ...............
0010 00 FF FF FF FF FF FF FF FF B0 FF FF FF FF FF FF ................
0020 22 00 FF FF 00 18 A8 FF FF FF FF FF FF FF FF FF "...............
0030 FF FF FF FF FF FF FF FF 01 00 FF FF FF FF FF FF ................
0040 FF FF FF FF FF FF FF FF FF FF 64 FF FF FF FF 55 ..........d....U
0050 FF 46 00 64 FF 10 FF FF FF FF FF FF FF FF FF FF .F.d............
0060 FF FF FF FF FF FF FF FF 2C FF FF FF FF FF FF FF ........,.......
0070 FF FF FF FF FF FF FF FF 00 00 00 00 00 00 FF FF ................
0080 FF FF FF FF FF FF FF FF E9 FF FF 3F F0 00 FF FF ...........?....
0090 FF FF FF FF FF FF 64 FF FF 1A 22 03 FF FF FF FF ......d...".....
00A0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF ................
00B0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF ................
00C0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF ................
00D0 00 01 00 03 50 02 00 FF FF FF 01 FF FF FF FF FF ....P...........
00E0 FF 00 00 02 03 03 00 3D FF FF FF FF FF FF FF FF .......=........
00F0 FF FF FF 68 FF FF FF 0A BC 9C FF 07 FF 0F FF FF ...h............

------[ ATI I2C Device GPU #1 / B06-D24 ]------

0000 FFFF 2F80 7E17 FF7F FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF
0010 6F00 FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF 4CB0 FFFF FFFF FFFF FFFF FFFF FFFF
0020 6022 0000 FFFF FFFF 0000 0018 00A8 FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF
0030 FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF 0001 0000 FFFF FFFF FFFF FFFF FFFF FFFF
0040 FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF 0064 FFFF FFFF FFFF FFFF 0055
0050 FFFF 0046 0000 0064 FFFF 0010 FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF
0060 FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF 012C FFFF FFFF FFFF FFFF FFFF FFFF FFFF
0070 FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF FB00 0000 2D00 4600 5000 3B00 FFFF FFFF
0080 FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF D2E9 FFFF FFFF 013F A2F0 0000 FFFF FFFF
0090 FFFF FFFF FFFF FFFF FFFF FFFF A364 FFFF FFFF 001A 1022 8103 FFFF FFFF FFFF FFFF
00A0 FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF
00B0 FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF
00C0 FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF
00D0 E200 8E01 3400 5603 BA50 2C02 9F00 FFFF FFFF FFFF 6201 FFFF FFFF FFFF FFFF FFFF
00E0 FFFF 6800 D500 B002 A103 CA03 7E00 003D FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF
00F0 FFFF FFFF FFFF 0368 FFFF FFFF FFFF 810A F5BC F29C FFFF 5807 FFFF 1D0F FFFF FFFF</code>
</pre></div>
</div>
<br>
Thanks <img alt="thumb.gif" class="bbcode_smiley" src="http://files.overclock.net/images/smilies/thumb.gif"></div>
</div>
<br>
Thank you for the dump!<br>
And yes I plan to add support for that VRM controller. I'm rewriting the tool right now to make it easier for me to extend it with additional chips and functionality.
 

·
Registered
Joined
·
632 Posts
<div class="quote-container" data-huddler-embed="/t/1605757/vrmtool-a-simple-tool-to-read-and-write-to-i2c-vrm-controllers/30#post_25462420" data-huddler-embed-placeholder="false"><span>Quote:</span>
<div class="quote-block">Originally Posted by <strong>deeper-blue</strong> <a href="/t/1605757/vrmtool-a-simple-tool-to-read-and-write-to-i2c-vrm-controllers/30#post_25462420"><img alt="View Post" class="inlineimg" src="/img/forum/go_quote.gif"></a><br><br>
Thank you for the dump!<br>
And yes I plan to add support for that VRM controller. I'm rewriting the tool right now to make it easier for me to extend it with additional chips and functionality.</div>
</div>
<br>
Great! Tranks <img alt="thumb.gif" class="bbcode_smiley" src="http://files.overclock.net/images/smilies/thumb.gif">
 

·
Registered
Joined
·
117 Posts
<div class="quote-container" data-huddler-embed="/t/1605757/vrmtool-a-simple-tool-to-read-and-write-to-i2c-vrm-controllers/30#post_25462417" data-huddler-embed-placeholder="false"><span>Quote:</span>
<div class="quote-block">Originally Posted by <strong>deeper-blue</strong> <a href="/t/1605757/vrmtool-a-simple-tool-to-read-and-write-to-i2c-vrm-controllers/30#post_25462417"><img alt="View Post" class="inlineimg" src="/img/forum/go_quote.gif"></a><br><br>
If you haven't already figured it out yourself, here is how I can read a word instead of just one byte - which you will need to read from the PMBus address of the I2C device. And yes as you guessed that's what I'm reading out to generate the graphs.<br><br>
Also I don't think the context versions of the functions make any difference, they are more meant for preventing issues if you access ADL from multiple threads in your app.<br><br>
Regarding the problem of stalling the GPU during access - it seems like we can't prevent that. Running VRM tool and having it read out all the register values does interrupt the GPU quite heavily. Not sure if there's a better way do to it.<br><br>
I'm in the middle of rewriting the whole thing to allow me more flexibility for things that I want to support - when/if that works it will be put up on github.<br><div class="bbcode_code">
<div class="bbcode_code_head">Code:</div>
<pre>
<code> char *pI2Cdata;
UINT16 I2Cdata;
pI2Cdata = (char *)&I2Cdata;

int iResult = I2C_WriteAndRead(iAdapterIndex, iLine, iAddress, iRegister, ADL_DL_I2C_ACTIONREAD_REPEATEDSTART, 2, pI2Cdata);
if (iResult != ADL_OK) {
m_TextOut.Format(_T("%s\r\nFailed to read from I2C register. Error code: %d\r\n"), m_TextOut.GetString(), iResult);
}</code>
</pre></div>
</div>
</div>
<br>
I think I am using only ADL_DL_I2C_ACTIONREAD to read 2 bytes (as a word) from the PMBus. It is working there, but not for multiple consecutive I2C registers (where i only get the first byte repeated several times). The PMBus does not work like registers, because consecutive command codes return different data sizes.<br><br>
Regarding the locking and multithreading i am confused. There are 4 variants of ADL_Main_Control_Create. The difference ADL2 variants create a context handle with unknown purpose. The SDK explicitly states: "ADL initialized using ADL2_Main_Control_Create will not enforce serialization of ADL API executions by multiple threads." Only the X2 variants have an argument that sets the threading model. But it is still unclear how/whether serialization is done for multiple processes. I had two system crashes while running GPU-Z and my application simultaneously. But it never crashed with only my application running.
 

·
Registered
Joined
·
55 Posts
Discussion Starter #40
<div class="quote-container" data-huddler-embed="/t/1605757/vrmtool-a-simple-tool-to-read-and-write-to-i2c-vrm-controllers/30#post_25463761" data-huddler-embed-placeholder="false"><span>Quote:</span>
<div class="quote-block">Originally Posted by <strong>BromoL</strong> <a href="/t/1605757/vrmtool-a-simple-tool-to-read-and-write-to-i2c-vrm-controllers/30#post_25463761"><img alt="View Post" class="inlineimg" src="/img/forum/go_quote.gif"></a><br><br>
I think I am using only ADL_DL_I2C_ACTIONREAD to read 2 bytes (as a word) from the PMBus. It is working there, but not for multiple consecutive I2C registers (where i only get the first byte repeated several times). The PMBus does not work like registers, because consecutive command codes return different data sizes.<br><br>
Regarding the locking and multithreading i am confused. There are 4 variants of ADL_Main_Control_Create. The difference ADL2 variants create a context handle with unknown purpose. The SDK explicitly states: "ADL initialized using ADL2_Main_Control_Create will not enforce serialization of ADL API executions by multiple threads." Only the X2 variants have an argument that sets the threading model. But it is still unclear how/whether serialization is done for multiple processes. I had two system crashes while running GPU-Z and my application simultaneously. But it never crashed with only my application running.</div>
</div>
<br>
I too noticed that just ACTIONREAD does seem to work - but from reading the PMBus spec I think the REPEATED_START would be the correct approach.<br>
Now I'm not sure what exactly you're trying to do but each register is only one byte and you cannot read out all registers in one command, you do have to read one single byte from each register to get the whole register map - which of course is super slow hence you only want to do this for sparsingly.<br><br>
The crashes are easily explained and the context functions of ADL don't work across processes. So what happens is that two apps access the I2C bus and their commands can corrupt each other which can quickly result in a crash (a simple way to see that it's easy to crash the system via I2C is this: just try to read one single byte from all the PMBus device offsets, aka just make a register map like you would for the I2C register interface of the VRM -> Reboot every single time).<br>
I've read that afterburner does work with a mutex that is supposed to safeguard I2C access across different tools that access the bus - but haven't really looked into it yet.<br>
Also the Fury cards crash very fast after starting VRM tool. I suspect the I2C commands from the GPU interfere with the I2C commands from the tool, newer/older GPUs likely have a safeguard against that.
 
21 - 40 of 80 Posts
Top