I've done more searching on my side, and as I thought, building a fake EDID with AtomBios informations gives enough information to the "official" framebuffer.
This doesn't usually work on the R600 framebuffers for laptop internal displays ( it is possible to inject your real display EDID with Natit ). the problem is that the R600 framebuffers like Iago will not bring up the LVDS connection even if you do that.
There are other settings you can use to inject EDID - ( "override-no-connect" is one of them) if you put your EDID in there, the framebuffer will read your display EDID and try to construct a display according to the type you specify in "connector-type". Unfortunately Iago will still refuse to switch LVDS on
(maybe because _HW_InitLVDS() looks like this

)
void __cdecl HW_InitLVDS()
{
;
}I have tried to patch in code from Triakis' HW_InitTDMS2() and set LVDS mode without any success so far.
the override-no-connect property is read like this;
signed int __cdecl DoDDCForceRead(int a1, int a2, char a3, unsigned __int8 a4, char a5, char a6)
{
__int16 v7; // ax@6
char v8; // [sp+3Ch] [bp-1Ch]@1
unsigned __int8 v9; // [sp+38h] [bp-20h]@1
char v10; // [sp+34h] [bp-24h]@1
char v11; // [sp+30h] [bp-28h]@1
signed int v12; // [sp+2Ch] [bp-2Ch]@2
char *v13; // [sp+4Ch] [bp-Ch]@6
__int16 v14; // [sp+4Ah] [bp-Eh]@6
v8 = a3;
v9 = a4;
v10 = a5;
v11 = a6;
if ( *(_DWORD *)(a1 + 8) & 1 )
{
if ( *(_DWORD *)(a1 + 4) )
{
v12 = -50;
}
else
{
if ( v10 & v9 )
{
v13 = "override-no-connect";
v7 = ReadOverrideEDIDProperty(a2, v9, (unsigned __int8)*(_DWORD *)a1, "override-no-connect", a1 + 16);
v14 = v7;
if ( v7 )
return -19;
}
else
{
DDCInit(a2);
if ( (unsigned __int8)DDCGetEDID(a2, (unsigned __int8)*(_DWORD *)a1, a1 + 16, v9) == 1 )
{
if ( (unsigned __int8)EdidDigital(a2, a1 + 16) )
v13 = "override-has-edid-digital";
else
v13 = "override-has-edid";
ReadOverrideEDIDProperty(a2, v9, (unsigned __int8)*(_DWORD *)a1, v13, a1 + 16);
}
else
{
v14 = -19;
if ( v11 & v9 )
{
v13 = "override-no-edid";
v14 = ReadOverrideEDIDProperty(a2, v9, (unsigned __int8)*(_DWORD *)a1, "override-no-edid", a1 + 16);
}
if ( v14 )
return -19;
}
}
if ( (unsigned __int8)DDCCheckEDID(a2, a1 + 16, (unsigned __int8)((unsigned __int8)*(_DWORD *)a1 - 1), 128) == 1 )
v12 = 0;
else
v12 = -19;
}
}
else
{
v12 = -50;
}
return v12;
}