Jump to content

Toshiba L850 7670M LVDS problems


karlcloudy
 Share

5 posts in this topic

Recommended Posts

Hello,

 

I've been trying to get the graphics working on my Toshiba L850 which uses a 7670M (rebranded 6000 series chip) and Clover. Using Clover, I've been able to get the LVDS internal display to output an image, but it appears corrupted like this:

 

Z0OccuD.jpg

 

I have tried setting a Custom EDID (as opposed to allowing Clover to generate it on it's own), but it doesn't make any difference. Apart from the corrupt image, other outputs work fine and the brightness control for the internal display also works fine. I did have to modify the dual-link option on config.plist for clover to get this image (setting it to 0), using the default setting resulted in an even more corrupt image (since it's a 1366x768 panel, it shouldn't be using dual link afaik). The HDMI output works fine with no corruption in both mirror and extended mode. VGA doesn't function at all on the brief tests I did with a few framebuffers, but I am not concerned about VGA output, so it doesn't bother me.

 

Things I have tried:

  • Using chameleon - cannot get the internal LCD to work at all in accelerated mode, with any combination of settings

  • Messing about the the framebuffer personalities in AMD6000Controller - my LVDS display has an odd sense id (7), but worked fine (with the corruption mentioned above) with cattail's default settings. Pondweed would produce a blank, but backlit display (although patched with a connector that had sense id of 7, seemed to work the same as cattail). Other framebuffers produced either one of the above situations, or same as pondweed, but with no backlight at all.

  • Manual EDID override (messing with /System/Library/Displays/...)


My config.plist for clover:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
	<key>Boot</key>
	<dict>
		<key>Timeout</key>
		<integer>2</integer>
		<key>Arguments</key>
		<string></string>
		<key>DefaultVolume</key>
		<string>MacHDD</string>
		<key>Log</key>
		<false/>
		<key>Fast</key>
		<false/>
		<key>XMPDetection</key>
		<string>-1</string>
		<key>Legacy</key>
		<string>PBR</string>
	</dict>
	<key>KernelAndKextPatches</key>
	<dict>
		<key>Debug</key>
		<false/>
		<key>KernelCpu</key>
		<false/>
		<key>AsusAICPUPM</key>
		<false/>
		<key>AppleRTC</key>
		<true/>
		<key>KextsToPatch</key>
		<array>
			<dict>
				<key>Name</key>
				<string>AppleAHCIPort</string>
				<key>Comment</key>
				<string>External icons patch</string>
				<key>Find</key>
				<data>RXh0ZXJuYWw=</data>
				<key>Replace</key>
				<data>SW50ZXJuYWw=</data>
			</dict>
		</array>
	</dict>
	<key>ACPI</key>
	<dict>
		<key>HaltEnabler</key>
		<false/>
		<key>DSDT</key>
		<dict>
			<key>Debug</key>
			<false/>
			<key>Name</key>
			<string>DSDT.aml</string>
			<key>GenerateIvyStates</key>
			<true/>
			<key>Fixes</key>
			<dict>
				<key>AddDTGP_0001</key>
				<true/>
				<key>FixDarwin_0002</key>
				<true/>
				<key>FixShutdown_0004</key>
				<true/>
				<key>AddMCFG_0008</key>
				<false/>
				<key>FixHPET_0010</key>
				<true/>
				<key>FakeLPC_0020</key>
				<false/>
				<key>FixIPIC_0040</key>
				<true/>
				<key>FixSBUS_0080</key>
				<true/>
				<key>FixDisplay_0100</key>
				<true/>
				<key>FixIDE_0200</key>
				<false/>
				<key>FixSATA_0400</key>
				<false/>
				<key>FixFirewire_0800</key>
				<true/>
				<key>FixUSB_1000</key>
				<true/>
				<key>FixLAN_2000</key>
				<true/>
				<key>FixAirport_4000</key>
				<true/>
				<key>FixHDA_8000</key>
				<true/>
			</dict>
		</dict>
		<key>DropTables</key>
		<array>
			<dict>
				<key>Signature</key>
				<string>MCFG</string>
			</dict>
			<dict>
				<key>Signature</key>
				<string>DMAR</string>
			</dict>
			<dict>
				<key>Signature</key>
				<string>SSDT</string>
				<key>TableId</key>
				<string>CpuPm</string>
			</dict>
		</array>
		<key>SSDT</key>
		<dict>
			<key>Generate</key>
			<dict>
				<key>PStates</key>
				<false/>
				<key>CStates</key>
				<false/>
			</dict>
			<key>PLimitDict</key>
			<integer>0</integer>
			<key>UnderVoltStep</key>
			<integer>0</integer>
			<key>MinMultiplier</key>
			<integer>8</integer>
		</dict>
	</dict>
	<key>DisableDrivers</key>
	<array>
		<string>Nothing</string>
	</array>
	<key>RtVariables</key>
	<dict>
		<key>MLB</key>
		<string>C07JD041DWYN48AHC</string>
		<key>MountEFI</key>
		<true/>
		<key>LogLineCount</key>
		<integer>3000</integer>
		<key>LogEveryBoot</key>
		<string>10</string>
	</dict>
	<key>GUI</key>
	<dict>
		<key>TextOnly</key>
		<false/>
		<key>Language</key>
		<string>en:0</string>
		<key>Theme</key>
		<string>bootcamp</string>
		<key>Mouse</key>
		<dict>
			<key>Enabled</key>
			<false/>
			<key>Speed</key>
			<integer>0</integer>
		</dict>
		<key>Hide</key>
		<array>
			<string>Windows</string>
			<string>\EFI\BOOT\BOOTX64.EFI</string>
		      <string>UEFI Internal</string>
		      <string>Internal UEFI</string>
		</array>
		<key>Scan</key>
		<dict>
			<key>Entries</key>
			<true/>
			<key>Tool</key>
			<false/>
			<key>Legacy</key>
			<false/>
		</dict>
	</dict>
	<key>Devices</key>
	<dict>
		<key>Inject</key>
		<false/>
		<key>Audio</key>
		<dict>
			<key>Inject</key>
			<string>No</string>
		</dict>
		<key>FakeID</key>
		<dict>
			<key>ATI</key>
			<string>0x0</string>
			<key>IntelGFX</key>
			<string>0x0</string>
			<key>NVidia</key>
			<string>0x0</string>
			<key>SATA</key>
			<string>0x0</string>
			<key>WIFI</key>
			<string>0x0</string>
			<key>LAN</key>
			<string>0x0</string>
			<key>XHCI</key>
			<string>0x0</string>
		</dict>
		<key>USB</key>
		<dict>
			<key>Inject</key>
			<true/>
			<key>FixOwnership</key>
			<true/>
			<key>AddClockID</key>
			<true/>
		</dict>
	</dict>
	<key>SystemParameters</key>
	<dict>
		<key>InjectSystemID</key>
		<true/>
	</dict>
    <key>SMBIOS</key>
    <dict>
        <key>BiosVendor</key>
        <string>Apple Inc.</string>
        <key>BiosVersion</key>
        <string>MBP91.88Z.00D3.B00.1203211536</string>
        <key>BiosReleaseDate</key>
        <string>21/03/12</string>
        <key>Manufacturer</key>
        <string>Apple Inc.</string>
        <key>ProductName</key>
        <string>MacBookPro9,2</string>
        <key>Version</key>
        <string>1.0</string>
        <key>Family</key>
        <string>MacBook Pro</string>
	<key>Board-ID</key>
	<string>Mac-F65AE981FFA204ED</string>
	<key>BoardSerialNumber</key>
	<string>C02K6472DTY3</string>
        <key>SmUUID</key>
        <string>00000000-0000-X000-X000-XXXXXXXXXXXX</string>
        <key>BoardManufacturer</key>
        <string>Apple Inc.</string>
    </dict>
	<key>Graphics</key>
	<dict>
		<key>Inject</key>
		<dict>
			<key>Intel</key>
			<false/>
			<key>ATI</key>
			<true/>
			<key>NVidia</key>
			<false/>
		</dict>
		<key>CustomEDID</key>
		<data>AP///////wBMo1AxAAAAAAAVAQOAIhN4Co2lnVtVnCYZUFQAAAABAQEBAQEBAQEBAQEBAQEBQRxWoFAAFjAwICUAWMEQAAAZAAAADwAAAAAAAAAAAB60AhUAAAAA/gBTQU1TVU5HCiAgICAgAAAA/gAxNTZBVDI0LVQwMQogADk=</data>
                <key>InjectEDID</key>
                <true/>
		<key>PatchVBios</key>
		<true/>
		<key>DualLink</key>
		<integer>0</integer>
		<key>LoadVBios</key>
		<true/>
		<key>FBName</key>
		<string>Cttail</string>
	</dict>
</dict>
</plist>

The dumps from both redsock and radeon_bios_decode:

ATOM BIOS Rom: 
	SubsystemVendorID: 0x1179 SubsystemID: 0xfb31
	IOBaseAddress: 0x3000
	Filename: BR42771.016 
	BIOS Bootup Message: 
Toshiba_Pegatron_Port_Louis_Thames_XT_DDR3_DIS                              

PCI ID: 1002:6840
Connector at index 0
	Type [@offset 44692]: LVDS (7)
	Encoder [@offset 44696]: INTERNAL_UNIPHY (0x1e)
	i2cid [@offset 44766]: 0x96, OSX senseid: 0x7
Connector at index 1
	Type [@offset 44702]: HDMI-A (11)
	Encoder [@offset 44706]: INTERNAL_UNIPHY1 (0x20)
	i2cid [@offset 44789]: 0x90, OSX senseid: 0x1
Connector at index 2
	Type [@offset 44712]: VGA (1)
	Encoder [@offset 44716]: INTERNAL_KLDSCP_DAC1 (0x15)
	i2cid [@offset 44816]: 0x97, OSX senseid: 0x8

BR42771.016 :

Toshiba_Pegatron_Port_Louis_Thames_XT_DDR3_DIS                              

Subsystem Vendor ID: 1179
       Subsystem ID: fb31
Object Header Structure Size: 199
Connector Object Table Offset: 34
Router Object Table Offset: 0
Encoder Object Table Offset: 99
Display Path Table Offset: 12
Connector Object Id [14] which is [LVDS]
	encoder obj id [0x1e] which is [INTERNAL_UNIPHY (osx txmit 0x10 [duallink 0x0] enc 0x0)] linkb: false
Connector Object Id [12] which is [HDMI_TYPE_A]
	encoder obj id [0x20] which is [INTERNAL_UNIPHY1 (osx txmit 0x11 [duallink 0x1] enc 0x2)] linkb: false
Connector Object Id [5] which is [VGA]
	encoder obj id [0x15] which is [INTERNAL_KLDSCP_DAC1 (osx txmit 0x00 enc 0x10?)] linkb: false

Thanks :)

Link to comment
Share on other sites

You have to edit EDID and inject it through DSDT or string. Check this post: http://www.insanelymac.com/forum/topic/277042-amd-radeon-hd-6650m-graphics-enabler-dsdt-hdmi-audio-acer-aspire-7750g-2674g50mnkk-gradients-fixed/page-28

Explained in a bit more detail on applelife: http://applelife.ru/threads/mobility-amd-radeon-hd6650m-hd6550m-hd7670m.32223/page-11#post-339043

 

All in all, if you need a ready, working string for your card, you can take it from my config. Looks like we have the same cards. Make sure you don't use any graphics injectors. What you need is basically "Device properties" string in PCI section and "StringInjector=Yes".

config.plist.zip

Link to comment
Share on other sites

You have to edit EDID and inject it through DSDT or string. Check this post: http://www.insanelymac.com/forum/topic/277042-amd-radeon-hd-6650m-graphics-enabler-dsdt-hdmi-audio-acer-aspire-7750g-2674g50mnkk-gradients-fixed/page-28

Explained in a bit more detail on applelife: http://applelife.ru/threads/mobility-amd-radeon-hd6650m-hd6550m-hd7670m.32223/page-11#post-339043

 

All in all, if you need a ready, working string for your card, you can take it from my config. Looks like we have the same cards. Make sure you don't use any graphics injectors. What you need is basically "Device properties" string in PCI section and "StringInjector=Yes".

 

It seems that I was able to get it working with only a personality change patch in AMD6000Controller.kext. The key element was to change the encoder for the LVDS output to 0x01 instead of 0x00. One issue is that Clover connector patching doesn't seem to work for me (hence why I patched the kext directly), although they seem to have changed the structure in the later versions, so perhaps it needs to be specified another way now. The only issue I have now is a phantom VGA display that I can't seem to get rid of (except via AtiPorts -- this disables the HDMI though, which I'd rather avoid, since I do use it sometimes). If I plug a HDMI display in, the VGA display disappears (probably something to do with the 2 output limit the 7670M has) and the HDMI works normally. If I do plug a VGA monitor in (with no HDMI), an image is displayed, so it seems the ability for it to sense that there is no VGA display connected is what is broken, rather than it being a fake output.

 

EDID patching also resulted in issues, since any deviation from the dumped EDID from the montior (I changed the first part of basic params from 80 to 90 for the gradient fix before I tried the LVDS encoder change) would result in Clover displaying in 1024x768 immediately (instead of native), then in OSX, the monitor would detected as generic once more. Leaving the dumped EDID in and injecting that worked fine, so I'm not sure what's going on there (I don't currently have an explicit DSDT patch specified, so perhaps this is why?). Backlight control works perfectly with that EDID injection as well, no other settings necessary :).

 

This is the personality override I used (for Pondweed as it is the closest match):

02000000 40000000 0901 0000 10 01 00 07 - LVDS
00080000 00020000 0001 0000 11 02 01 01 - HDMI
10000000 10000000 0001 0000 00 01 02 08 - VGA

I did have the display detection working properly at one stage (except with the bad LVDS encoder), but cannot remember what made it work correctly (I did have a few versions that I had patched) to patch it into my current Pondweed personality. Not sure what settings I should be looking at adjusting (perhaps HotplugID?) for fixing this.

 

Thanks for your help so far, it's greatly appreciated :)

Link to comment
Share on other sites

Yep, they change syntax very often. That's why I haven't updated my bootloader for ages :)

01 encoder doesn't help at all. Well it makes things a bit better, but you will have only 16bit colour. While with the solution I provided it's normal 32bits colour. 

VGA doesn't work good at all. On 10.8 it sometimes even crashes the system when you try to change resolution. That's why I don't patch kext with VGA output at all. 

Link to comment
Share on other sites

Yep, they change syntax very often. That's why I haven't updated my bootloader for ages :)

01 encoder doesn't help at all. Well it makes things a bit better, but you will have only 16bit colour. While with the solution I provided it's normal 32bits colour. 

VGA doesn't work good at all. On 10.8 it sometimes even crashes the system when you try to change resolution. That's why I don't patch kext with VGA output at all. 

Ahh yes, I had a feeling it may have been in 16-bit (despite saying 32-bit in System Profiler) as I was getting a banding effect on gradients. I decided to delve further into the Clover issue and had a look through the source code to see what had been changed (yes, they have changed it  :wacko:) with the config.plist and worked out how to inject the property string into Clover (Now it's under Devices/Properties. After doing that and plonking the default AMD6000Controller kext (with no patches), I am getting full 32-bit colour (banding gone) and the phantom VGA display has vanished (and HDMI still works fine, apart from audio, which wasn't working before anyway). My Samsung LCD panel has turned into an LG one now though  :hysterical: (I didn't alter your device properties string, so it has your EDID in it I imagine). This isn't a problem as it displays perfectly anyway and everything still works fine. The AtiConnector patching doesn't look like it's changed though, so I'm not sure why that particular setting wouldn't work for me.

 

How the "new" config.plist injects devices:

<key>Devices</key>
	<dict>
		<key>Inject</key>
		<true/>
		<key>Properties</key>
                <string>blahblahblah... Device string here</string>
		...
		Other settings...
		...
	</dict>

Thanks for your help :)

Link to comment
Share on other sites

 Share

×
×
  • Create New...