samersh94 Posted February 8, 2012 Share Posted February 8, 2012 Hi all, I have a XFX 9500 GT 1GB graphics card. I've extracted the ROM from it using NVFLASH and I want to calculate the NVCAP from it. I've used "NVCAP MAKER" but I failed after adding the result in the DSDT. Also I want to know how to calculate the buffer length in a DSDT Code, Should I count then add one then convert to hex? Quote Link to comment Share on other sites More sharing options...
Cassio Posted February 8, 2012 Share Posted February 8, 2012 Add 0x before and , after each 2 digits, see example here http://Olarila.com/forum/viewtopic.php?f=19&t=609 Your method to calculate buffer size is correct (actually the "add one" part is only for strings), but you can just leave it blank and the compiler will count, see example in the link above. Quote ASUS N53Jq • CPU: Intel Core i7-740QM 1.73GHz • RAM: 6,0GB • HD: 500GB • GPU: GeForce GT 425M 1GB 1920x1080 • OS: OS X 10.8.4 • Linux Mint 15 • Windows 8 Link to comment Share on other sites More sharing options...
samersh94 Posted February 8, 2012 Author Share Posted February 8, 2012 Thanks for the quick reply but Is there a way to calculate the NVCAP from ROM directly? Quote Link to comment Share on other sites More sharing options...
Cassio Posted February 8, 2012 Share Posted February 8, 2012 I have no idea. Isn't that what NVCAP Maker does? Quote ASUS N53Jq • CPU: Intel Core i7-740QM 1.73GHz • RAM: 6,0GB • HD: 500GB • GPU: GeForce GT 425M 1GB 1920x1080 • OS: OS X 10.8.4 • Linux Mint 15 • Windows 8 Link to comment Share on other sites More sharing options...
samersh94 Posted February 8, 2012 Author Share Posted February 8, 2012 I have no idea. Isn't that what NVCAP Maker does? It does but It's not working. So Should I use the NVEnabler's one ? What about the non-string values, I mean how the buffer size is calculated? Quote Link to comment Share on other sites More sharing options...
Cassio Posted February 8, 2012 Share Posted February 8, 2012 It does but It's not working. So Should I use the NVEnabler's one ? You can try. There's some info about it in this topic http://www.insanelymac.com/forum/index.php?showtopic=215236  What about the non-string values, I mean how the buffer size is calculated? Just count, don't add one. Again, you don't need to calculate, just leave it blank, the compiler will count. Buffer () { ... } Quote ASUS N53Jq • CPU: Intel Core i7-740QM 1.73GHz • RAM: 6,0GB • HD: 500GB • GPU: GeForce GT 425M 1GB 1920x1080 • OS: OS X 10.8.4 • Linux Mint 15 • Windows 8 Link to comment Share on other sites More sharing options...
samersh94 Posted February 8, 2012 Author Share Posted February 8, 2012 Device (PCI0) { Name (_HID, EisaId ("PNP0A03")) Name (_ADR, Zero) Name (_UID, One) Name (_BBN, Zero) Method (_S3D, 0, NotSerialized) { If (LEqual (OSFL, 0x02)) { Return (0x02) } Else { Return (0x03) } } Device (PEGP) { Name (_ADR, 0x00030000) Device (GFX0) { Name (_ADR, Zero) Name (_SUN, One) Method (_DSM, 4, NotSerialized) { Store (Package (0x1A) { "@0,compatible", Buffer (0x0B) { "NVDA,NVMac" }, "@0,device_type", Buffer (0x08) { "display" }, "@0,name", Buffer (0x0F) { "NVDA,Display-A" }, "@1,compatible", Buffer (0x0B) { "NVDA,NVMac" }, "@1,device_type", Buffer (0x08) { "display" }, "@1,name", Buffer (0x0F) { "NVDA,Display-B" }, "AAPL,slot-name", Buffer (0x07) { "Slot-1" }, "device_type", Buffer (0x0C) { "NVDA,Parent" }, "model", Buffer (0x10) { "GeForce 9500 GT" }, "", Buffer () { "" }, "NVPM", Buffer (0x1C) { 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, "NVCAP", Buffer () { 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x19, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x00 }, "rom-revision", Buffer (0x0F) { "62.94.4B.00.96" }, "vendor-id", Buffer (0x04) { 0xDE, 0x10, 0x00, 0x00 }, "VRAM,totalsize", Buffer (0x04) { 0x00, 0x00, 0x00, 0x40 } }, Local0) DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0)) Return (Local0) } } } Â I've made this code but it's not working at all, I don't know where the error comes from! NOTE: NVCAP obtained from NVEnabler 64.kext My IORegistryExplorer: http://imageshack.us/photo/my-images/804/ioreg.png/ Quote Link to comment Share on other sites More sharing options...
Cassio Posted February 8, 2012 Share Posted February 8, 2012 _ADR of PEGP is wrong, should be 0x00010000 according to your ioreg (pci-bridge@1). You can remove this part "", Buffer () { "" }, Also delete the size of Package inside _DSM. Quote ASUS N53Jq • CPU: Intel Core i7-740QM 1.73GHz • RAM: 6,0GB • HD: 500GB • GPU: GeForce GT 425M 1GB 1920x1080 • OS: OS X 10.8.4 • Linux Mint 15 • Windows 8 Link to comment Share on other sites More sharing options...
samersh94 Posted February 8, 2012 Author Share Posted February 8, 2012 Working perfectly What about the "reg" entry should I fill it from IORegistry info or it is bumped automatically? Quote Link to comment Share on other sites More sharing options...
Cassio Posted February 8, 2012 Share Posted February 8, 2012 Which "reg" entry? Quote ASUS N53Jq • CPU: Intel Core i7-740QM 1.73GHz • RAM: 6,0GB • HD: 500GB • GPU: GeForce GT 425M 1GB 1920x1080 • OS: OS X 10.8.4 • Linux Mint 15 • Windows 8 Link to comment Share on other sites More sharing options...
samersh94 Posted February 8, 2012 Author Share Posted February 8, 2012 like this one: "reg", Buffer (0x78) { /* 0000 */ 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0008 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0010 */ 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x01, 0x02, /* 0018 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0020 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, /* 0028 */ 0x14, 0x00, 0x01, 0x42, 0x00, 0x00, 0x00, 0x00, /* 0030 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0038 */ 0x00, 0x00, 0x00, 0x10, 0x1C, 0x00, 0x01, 0x02, /* 0040 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0048 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, /* 0050 */ 0x24, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, /* 0058 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0060 */ 0x80, 0x00, 0x00, 0x00, 0x30, 0x00, 0x01, 0x02, /* 0068 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0070 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00 }, Â Also what is the EDID? is it necessary? Quote Link to comment Share on other sites More sharing options...
Cassio Posted February 8, 2012 Share Posted February 8, 2012 I don't think it's necessary. About EDID you can read this (I think you don't need to inject it) http://Olarila.com/forum/viewtopic.php?f=18&t=736 Quote ASUS N53Jq • CPU: Intel Core i7-740QM 1.73GHz • RAM: 6,0GB • HD: 500GB • GPU: GeForce GT 425M 1GB 1920x1080 • OS: OS X 10.8.4 • Linux Mint 15 • Windows 8 Link to comment Share on other sites More sharing options...