FKA Posted November 12, 2009 Share Posted November 12, 2009 I'm going along these lines: Device (PEGP) { Name (_ADR, 0x00010000) Method (_STA, 0, NotSerialized) { Return (0x0F) } Method (_PRW, 0, NotSerialized) { Return (Package (0x02) { 0x09, 0x05 }) } Device (GFX0) { Name (_ADR, Zero) Name (_SUN, 0x0B) Method (_PRW, 0, NotSerialized) { Return (Package (0x02) { 0x0B, 0x04 }) } Method (_DSM, 4, NotSerialized) { Store (Package (0x02) { "ATY,DeviceID", Buffer (0x02) { 0x42, 0x94 } }, Local0) DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0)) Return (Local0) } } } It doesn't work BTW - any genius out there have any ideas ? - would be really appreciated! D. I've been going about this the wrong way - I would have to add a device ID to GFX0 part of DSDT that is NOT for my GPU but is in the Vanilla ATI4000 kext. So I'll stick to the legacy kext I think. Many thanks to netkas. A real ATI for such a low price? I also want a faster card, much faster, but I cannot make up my mind. I first want to know if the 5xxx series works (display port) because that would be a more logical jump for me. With graphics enabler you mean the PC EFI 10.5 option right? In that case... do you happen to have a IOREG or IORegistryExplorer dump for me? I might jump camp... still looking for a real ATI instead of the usual ASUS, Sapphire and Power Cooler brands so that I can flash it with official Apple firmware. It's a powercolor - not 'real' was a one off from a usually overpriced high street comp shop! Yes GFX enabler from PC EFI 10.5 ... I think this works as IOREG dump ? IOREG.zip D. Link to comment Share on other sites More sharing options...
VCH888 Posted November 12, 2009 Share Posted November 12, 2009 Origininally posted this in the wrong place. It occurred to me people may be having firewire problems with their Gigabyte boards. FireWire runtime power conservation disabled. (2) This is how to fix that. Method (_L1A, 0, NotSerialized) // <-- Added for firewire { Notify (\_SB.PCI0.PCIB.FRWR, 0x00) Notify (\_SB.PWRB, 0x02) } Within the Device (PCIB) I added another device: Device (FRWR) // <--Firewire (check to be sure the _GPE value is OK) { Name (_ADR, 0x00070000) Name (_GPE, 0x1A) Method (_DSM, 4, NotSerialized) { Store (Package (0x02) { "fwhub", Buffer (0x04) { 0x00, 0x00, 0x00, 0x00 } }, Local0) DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0)) Return (Local0) } } Let me know what kind of results people get. dsdt_GA_EP45_UD3P.dsl.zip @ kdawg If I added these to DSDT, hot plug-in didn't work. It's fine if connected Firewire before booting. Tested by my hard drive dock on my two PCs. Do you have any idea? Link to comment Share on other sites More sharing options...
sk1nhead Posted November 12, 2009 Share Posted November 12, 2009 how bout this image below, can this be fix via dsdt? just want the product name to appear if possible D card is Linksys WMP300N, works flawlessly BTW only after you edit and add (4329) on broadcom's info.plist. already added LAN, and GFX (screenshot) on my dsdt so might as well add my wireless card. Thanks in advance Link to comment Share on other sites More sharing options...
mm67 Posted November 12, 2009 Share Posted November 12, 2009 how bout this image below, can this be fix via dsdt? just want the product name to appear if possible D card is Linksys WMP300N, works flawlessly BTW only after you edit and add (4329) on broadcom's info.plist. already added LAN, and GFX (screenshot) on my dsdt so might as well add my wireless card. Thanks in advance You want something like this ? Mine is the Atheros version, with dsdt injection works fine using both 32- and 64-kernels. Link to comment Share on other sites More sharing options...
sk1nhead Posted November 12, 2009 Share Posted November 12, 2009 that's exactly what i want mm67 Link to comment Share on other sites More sharing options...
mm67 Posted November 12, 2009 Share Posted November 12, 2009 that's exactly what i want mm67 This is how I did it: Device (WLAN) { Name (_ADR, 0x00020000) Name (_SUN, 0x3) Method (_DSM, 4, NotSerialized) { Store (Package (0x08) { "device-id", Buffer (0x04) { 0x2a, 0x00, 0x00, 0x00 }, "device_type", "WLAN Controller", "model", "Linksys WMP300N v.2", "name", "Linksys" }, Local0) DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0)) Return (Local0) } } On my board this is located under device PCIB(HUB0), you must check the place and address from IORegistry. And remember that the device-id is for Atheros version, you will want to replace that with Broadcomm value or remove it. Link to comment Share on other sites More sharing options...
sk1nhead Posted November 12, 2009 Share Posted November 12, 2009 thanks mm67, ah finally after a few tries it showed on my system profiler, what did the trick was changed from (0x00020000) to (0x00010000).. noob any way to changed the "slot"? i want ethernet to changed as "PCI" only including the WPM300N to be uniform. or like your screenshot posted ethernet = PCI slot 1 WMP300N = PCI slot 2 using EthernetBuiltIn=Y on my LAN BTW. Link to comment Share on other sites More sharing options...
MacUser2525 Posted November 12, 2009 Share Posted November 12, 2009 @ kdawg If I added these to DSDT, hot plug-in didn't work. It's fine if connected Firewire before booting. Tested by my hard drive dock on my two PCs. Do you have any idea? Just tested the changes and I see the same behavior if turned on when booting then the drive is detected if you eject it will not mount again no changes and it works as expected. Link to comment Share on other sites More sharing options...
mm67 Posted November 12, 2009 Share Posted November 12, 2009 thanks mm67, ah finally after a few tries it showed on my system profiler, what did the trick was changed from (0x00020000) to (0x00010000).. noob any way to changed the "slot"? i want ethernet to changed as "PCI" only including the WPM300N to be uniform. or like your screenshot posted ethernet = PCI slot 1 WMP300N = PCI slot 2 using EthernetBuiltIn=Y on my LAN BTW. Don't know know how to do that but this one is easy, I'm using both EthernetBuiltIn and GraphicsEnabler. For some reason Slot 1 cannot be used. Link to comment Share on other sites More sharing options...
relikwie Posted November 12, 2009 Share Posted November 12, 2009 Don't know know how to do that but this one is easy, I'm using both EthernetBuiltIn and GraphicsEnabler.For some reason Slot 1 cannot be used. mm67, do you think dsdt edditing is able to solve an issue I have with wireless playing dead after a wake from sleep. I have a DWA 556, Atheros chipset. My guts says no and it's in the firmware of the card, ideas? Else I need to get me one of those WMP300N Link to comment Share on other sites More sharing options...
mm67 Posted November 12, 2009 Share Posted November 12, 2009 mm67, do you think dsdt edditing is able to solve an issue I have with wireless playing dead after a wake from sleep.I have a DWA 556, Atheros chipset. My guts says no and it's in the firmware of the card, ideas? Else I need to get me one of those WMP300N Don't think that dsdt will do any good for that problem, isn't that one using same driver as WMP300N v.2. Link to comment Share on other sites More sharing options...
relikwie Posted November 12, 2009 Share Posted November 12, 2009 Don't think that dsdt will do any good for that problem, isn't that one using same driver as WMP300N v.2. Fair enough.. Yes, if Atheros chip it uses the same driver. Only for some reason this card is useless after a return from standby. The issue is know, and is because the driver just applies the generic part due to mismatching subsys and vendor id's. Link to comment Share on other sites More sharing options...
kdawg Posted November 12, 2009 Share Posted November 12, 2009 Fair enough.. Yes, if Atheros chip it uses the same driver. Only for some reason this card is useless after a return from standby.The issue is know, and is because the driver just applies the generic part due to mismatching subsys and vendor id's. Your DWA-556 should work just fine. I have a DWA-552 that's work but you have to add your device-I'd to the atheros driver as well as add it into your DSDT. I actually use a legacy kext to inject the ID but you should still add the device via DSDT. I'm on my iPhone so im away from my machine. I'll get the details as soon as I can. Link to comment Share on other sites More sharing options...
AudiSport Posted November 13, 2009 Share Posted November 13, 2009 any way to changed the "slot"? i want ethernet to changed as "PCI" only including the WPM300N to be uniform. or like your screenshot posted ethernet = PCI slot 1 WMP300N = PCI slot 2 using EthernetBuiltIn=Y on my LAN BTW. Do you mean something like this? I did this using 2 different ways. This one uses the _SUN line but as mm67 noted PCI Slot 1 will always be shown as just PCI. Device (FRWR) // FireWire { Name (_ADR, 0x00010000) Name (_SUN, 0x2) Method (_DSM, 4, NotSerialized) { Store (Package (0x06) { "device-id", Buffer (0x04) { 0x20, 0x80, 0x00, 0x00 }, "name", "Texas Instruments", "model", "TSB12LV26 Firewire" }, Local0) MCDP (Arg2, RefOf (Local0)) Return (Local0) } } Or the second way is to omit the _SUN line and use the AAPL,slot-name and put whatever string you like. Device (GIGE) // Ethernet { Name (_ADR, 0x00000000) Method (_DSM, 4, NotSerialized) { Store (Package (0x08) { "device-id", Buffer (0x04) { 0x69, 0x81, 0x00, 0x00 }, "AAPL,slot-name", "PCI Slot 1", "name", "Realtek", "model", "RTL8169 Gigabit Ethernet" }, Local0) MCDP (Arg2, RefOf (Local0)) Return (Local0) } } This is how I got the video card to show PCI-E x16 Slot. Device (PEGP) { Name (_ADR, 0x00010000) Device (GFX0) { Name (_ADR, 0x00000000) Method (_DSM, 4, NotSerialized) { Store (Package (0x02) { "AAPL,slot-name", "PCI-E x16 Slot" }, Local0) MCDP (Arg2, RefOf (Local0)) Return (Local0) } } } Link to comment Share on other sites More sharing options...
MacUser2525 Posted November 13, 2009 Share Posted November 13, 2009 Pretty neat idea I was playing with it a little earlier and came up with this that I pieced together for my e-SATA card in my spare machine that I found the settings for in another thread. //Added to display in System Profiler Device (EATA) { Name (_ADR, Zero) Name (_SUN, 0x06) Method (_DSM, 4, NotSerialized) { Store (Package (0x02) { "name", Buffer (0x16) { "J-Micron JMB36x eSATA" } }, Local0) DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0)) Return (Local0) } } It shows up as being in Slot 6 in System Profiler now I am trying to understand just exactly what we are doing with this a little better. I take it the Store (Package (0x02) in the above means I am storing two items the "name" and the contents of the Buffer (0x16). Is this correct and where does the (_SUN, 0x06) and Buffer (0x16) numbers come from? I have seen a few examples of them here and they are all different so if anyone could explain it that would be greatly appreciated. Link to comment Share on other sites More sharing options...
Master Chief Posted November 13, 2009 Share Posted November 13, 2009 Pretty neat idea I was playing with it a little earlier and came up with this that I pieced together for my e-SATA card in my spare machine that I found the settings for in another thread. ... (see post #491) It shows up as being in Slot 6 in System Profiler now I am trying to understand just exactly what we are doing with this a little better. I take it the Store (Package (0x02) in the above means I am storing two items the "name" and the contents of the Buffer (0x16). Is this correct and where does the (_SUN, 0x06) and Buffer (0x16) numbers come from? I have seen a few examples of them here and they are all different so if anyone could explain it that would be greatly appreciated. The 0x16 in Buffer (0x16) represents the length of the provided data plus 1 (\0). And here's a little snippet to read about _SUN: "_SUN is an object that evaluates to the slot-unique ID number for a slot. _SUN is used by OSPM UI to identify slots for the user. For example, this can be used for battery slots, PCI slots, PCMCIA slots, or swappable bay slots to inform the user of what devices are in each slot. _SUN evaluates to an integer that is the number to be used in the user interface. This number is required to be unique among the slots of the same type. It is also recommended that this number match the slot number printed on the physical slot whenever possible." Object _SUN adds a new property called "AAPL,slot-name" with the slot info. As an example; adding Name (_SUN, One) to my PSX1 (graphics card) gives me: AAPL,slot-name string <"PCIEX16_1"> Showing the recommended match with the physical slot number. And there's no need to add PCI slot data for on-board hardware. In fact it's all just a cosmetic thing. Link to comment Share on other sites More sharing options...
MacUser2525 Posted November 13, 2009 Share Posted November 13, 2009 The 0x16 in Buffer (0x16) represents the length of the provided data plus 1 (\0). Firstly thanks for the reply MC and for your great work here in general. I was going to say I did not understand that but got thinking that it is in hex and Google tells me that 0x16 in decimal is 22 so the 21 characters plus 1 makes sense now. I take it this Buffer (0x04) refers to the values 0x20, 0x80, 0x00, 0x00 being stored then. <span class="postcolor">"device-id", Buffer (0x04) { 0x20, 0x80, 0x00, 0x00 }, And here's a little snippet to read about _SUN: "_SUN is an object that evaluates to the slot-unique ID number for a slot. _SUN is used by OSPM UI to identify slots for the user. For example, this can be used for battery slots, PCI slots, PCMCIA slots, or swappable bay slots to inform the user of what devices are in each slot. _SUN evaluates to an integer that is the number to be used in the user interface. This number is required to be unique among the slots of the same type. It is also recommended that this number match the slot number printed on the physical slot whenever possible." Object _SUN adds a new property called "AAPL,slot-name" with the slot info. As an example; adding Name (_SUN, One) to my PSX1 (graphics card) gives me: AAPL,slot-name string <"PCIEX16_1"> Showing the recommended match with the physical slot number. Alright that seems straight forward it used 0x06 (six) so got Slot 6. And there's no need to add PCI slot data for on-board hardware. In fact it's all just a cosmetic thing. True but in my instance that is an add-in PCI-e e-SATA card that I am hoping to get going following the instructions in the following thread with any luck it will work in 64bit mode as Sonnet in their wisdom has decided that the driver they made for my present card needs to be 32bit only for SL. Going to be a little while before I get to it though as I can't get my head around trusting it with the 4TB in that box I have when one poster mentions data corruption may have to buy a couple of spare drives to put in for testing or re-use some of the ones in my spare machine. http://www.insanelymac.com/forum/index.php...=186558&hl= BTW I seem to remember reading you have no Gigabyte hardware while working on this with us I have a GA-P35-DS3R leftover from the spare machine upgrade so I could have near identical hardware to work on this that you could have if that would help out. Edit: One more thing if you don't mind. I see that you have eliminated Method DTGP are there any of your three methods ( MCDP, MCID or MCBN) I have seen that replace it? Link to comment Share on other sites More sharing options...
mm67 Posted November 13, 2009 Share Posted November 13, 2009 Your DWA-556 should work just fine. I have a DWA-552 that's work but you have to add your device-I'd to the atheros driver as well as add it into your DSDT. I actually use a legacy kext to inject the ID but you should still add the device via DSDT. I'm on my iPhone so im away from my machine. I'll get the details as soon as I can. For me device-id in dsdt is enough. I was using AtherosFix.kext by Netkas but this device-id injection does the same thing, don't need that kext anymore. Rest of the code is just cosmetical. Link to comment Share on other sites More sharing options...
Master Chief Posted November 13, 2009 Share Posted November 13, 2009 Firstly thanks for the reply MC and for your great work here in general. I was going to say I did not understand that but got thinking that it is in hex and Google tells me that 0x16 in decimal is 22 so the 21 characters plus 1 makes sense now. I take it this Buffer (0x04) refers to the values 0x20, 0x80, 0x00, 0x00 being stored then. That's correct. And thanks. Tip: You can use the calculator in the Applications directory, which has three view options: Basic, Scientific and Programmer – the latter option enables you to convert values from: octal, decimal and binary to another output. BTW I seem to remember reading you have no Gigabyte hardware while working on this with us I have a GA-P35-DS3R leftover from the spare machine upgrade so I could have near identical hardware to work on this that you could have if that would help out. Very kind of you. However, I don't think to need one anymore. This of course thanks to people like mm67 et all for doing such a great job, filling the blanks. Thanks again! Edit: One more thing if you don't mind. I see that you have eliminated Method DTGP are there any of your three methods ( MCDP, MCID or MCBN) I have seen that replace it? You can use MCDP (Master Chief Device Properties) as replacement. The others can be used to set the device-id (ID) and Bay Number. Link to comment Share on other sites More sharing options...
MacUser2525 Posted November 13, 2009 Share Posted November 13, 2009 That's correct. And thanks. Tip: You can use the calculator in the Applications directory, which has three view options: Basic, Scientific and Programmer �" the latter option enables you to convert values from: octal, decimal and binary to another output. That is good to know I always use the Spotlight box for quick calculations thanks again. Very kind of you. However, I don't think to need one anymore. This of course thanks to people like mm67 et all for doing such a great job, filling the blanks. Thanks again! Fair enough if you ever do need it let me know it is just sitting there gathering dust. You can use MCDP (Master Chief Device Properties) as replacement. The others can be used to set the device-id (ID) and Bay Number. Just tried that in my Device (GFX0) I use and be damned if it didn't work first shot many thanks again, BTW like the naming of the method as well. Device (GFX0) { Name (_ADR, Zero) Name (_SUN, One) Method (_DSM, 4, NotSerialized) { Store (Package (0x16) { "@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" }, "NVCAP", Buffer (0x18) { /* 0000 */ 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, /* 0008 */ 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, /* 0010 */ 0x00, 0x00, 0x00, 0x00 }, "VRAM,totalsize", Buffer (0x04) { 0x00, 0x00, 0x00, 0x10 }, "device_type", Buffer (0x0D) { "NVDA,GeForce" }, "model", Buffer (0x17) { "nVidia GeForce 7900 GS" }, "rom-revision", Buffer (0x25) { "nVidia GeForce 7900 GS OpenGL Engine" } }, Local0) MCDP (Arg2, RefOf (Local0)) //DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0)) Return (Local0) } } Link to comment Share on other sites More sharing options...
sk1nhead Posted November 13, 2009 Share Posted November 13, 2009 im going with this look, forgot to edit out "PCI-E" on my ethernet but the slot assignment will be the same. Thanks a lot mm67 and audisport for all the help BTW tried changing "display" on my graphic card type and got a black screen after boot, dont know if it can be replaced but i'll stop for now. Link to comment Share on other sites More sharing options...
MacUser2525 Posted November 13, 2009 Share Posted November 13, 2009 im going with this look, forgot to edit out "PCI-E" on my ethernet but the slot assignment will be the same. Thanks a lot mm67 and audisport for all the help BTW tried changing "display" on my graphic card type and got a black screen after boot, dont know if it can be replaced but i'll stop for now. According to this thread I found when I was searching on this earlier it is done by standard and cannot be changed. http://www.insanelymac.com/forum/lofiversi...hp/t134842.html Link to comment Share on other sites More sharing options...
relikwie Posted November 13, 2009 Share Posted November 13, 2009 Your DWA-556 should work just fine. I have a DWA-552 that's work but you have to add your device-I'd to the atheros driver as well as add it into your DSDT. I actually use a legacy kext to inject the ID but you should still add the device via DSDT. I'm on my iPhone so im away from my machine. I'll get the details as soon as I can. kdawg, the dwa-556 works perfectly well. It only becomes dead after a wake from sleep (need to reboot to wake it again), which renders sleep useless. What I just noticed is that I have the same issue in Windows 7.. So maybe it is a faulty card. Don't think D-Link releases firmware so I can reprogram the PROM in case of a faulty card (I was using the Atheros 64 bit driver before 10.6.2 was released and I added the device ID to the drivers plist to make it work. After updating to 6.2 it just worked. Or the driver wasn't overwritten by the update because it was already the correct version. Or Apple has added my device id in the final update) Anyhow, this is my as shown by lcpi -vv: 03:00.0 Network controller: Atheros Communications, Inc. AR5418 802.11a/b/g/n Wireless PCI Express Adapter (rev 01) Subsystem: D-Link System Inc Unknown device 3a70 Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr+ Stepping- SERR+ FastB2B- DisINTx- Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx- Latency: 0, Cache Line Size: 32 bytes Interrupt: pin A routed to IRQ 17 Region 0: Memory at f9000000 (64-bit, non-prefetchable) Capabilities: [40] Power Management version 2 Flags: PMEClk- DSI- D1+ D2- AuxCurrent=375mA PME(D0+,D1+,D2-,D3hot+,D3cold-) Status: D0 PME-Enable- DSel=0 DScale=0 PME- Capabilities: [50] Message Signalled Interrupts: Mask- 64bit- Queue=0/0 Enable- Address: fee00000 Data: 4098 Capabilities: [60] Express (v1) Legacy Endpoint, MSI 00 DevCap: MaxPayload 128 bytes, PhantFunc 0, Latency L0s <512ns, L1 <64us ExtTag- AttnBtn- AttnInd- PwrInd- RBE- FLReset- DevCtl: Report errors: Correctable- Non-Fatal- Fatal- Unsupported- RlxdOrd+ ExtTag- PhantFunc- AuxPwr- NoSnoop- MaxPayload 128 bytes, MaxReadReq 512 bytes DevSta: CorrErr- UncorrErr- FatalErr- UnsuppReq- AuxPwr- TransPend- LnkCap: Port #0, Speed 2.5GT/s, Width x1, ASPM L0s L1, Latency L0 <512ns, L1 <64us ClockPM- Suprise- LLActRep- BwNot- LnkCtl: ASPM L1 Enabled; RCB 128 bytes Disabled- Retrain- CommClk- ExtSynch- ClockPM- AutWidDis- BWInt- AutBWInt- LnkSta: Speed 2.5GT/s, Width x1, TrErr- Train- SlotClk+ DLActive- BWMgmt- ABWMgmt- Capabilities: [90] MSI-X: Enable- Mask- TabSize=1 Vector table: BAR=0 offset=00000000 PBA: BAR=0 offset=00000000 Capabilities: [100] #168c Capabilities: [002] #24 Link to comment Share on other sites More sharing options...
Master Chief Posted November 13, 2009 Share Posted November 13, 2009 Is there anyone with a GB board here where shutdown works without OpenHaltRestart.kext or EvOreboot.kext? If not then we should work on this as it will likely get more important over time. The good news is that shutdown works on my Asus board, so we have a starting point. The bad part is that it involves a BIOS table starting at address 0xCFF8E064 (0xff length) for which I don't know the address of a GB board, in case it is different. The first byte of this table is sleep related BTW and you likely have a BIOS setting related to some sleep setting, and this we should be able to get the address. Again, I am assuming that the address is different. The million dollar ticket is to get the address where the first byte changes when you change this (unknown to me) BIOS setting for sleep. Anyone here willing to jump in and help? Link to comment Share on other sites More sharing options...
blackosx Posted November 13, 2009 Share Posted November 13, 2009 Is there anyone with a GB board here where shutdown works without OpenHaltRestart.kext or EvOreboot.kext? If not then we should work on this as it will likely get more important over time. The good news is that shutdown works on my Asus board, so we have a starting point. The bad part is that it involves a BIOS table starting at address 0xCFF8E064 (0xff length) for which I don't know the address of a GB board, in case it is different. The first byte of this table is sleep related BTW and you likely have a BIOS setting related to some sleep setting, and this we should be able to get the address. Again, I am assuming that the address is different. The million dollar ticket is to get the address where the first byte changes when you change this (unknown to me) BIOS setting for sleep. Anyone here willing to jump in and help? I am pretty certain shutdown works on my system without OHR or EvOreboot. But I am away from my hack now so unfortunately won't be able to double check until later tonight. But I am willing to help if i can. EDIT: So much for my earlier confidence.... After 28 tests and reboots I can reveal that shutdown doesn't work everytime and I can't isolate why. This needs plenty more testing to try and find a pattern. Maybe AudiSport's testing shows better results. Link to comment Share on other sites More sharing options...
Recommended Posts