Jump to content

Mobility Radeon HD 4650:Full Resolution with QE & CI working on Internal LVDS screen


mucha
 Share

696 posts in this topic

Recommended Posts

On linux:

There are two digital output blocks in the 5xx and 6xx ASICs, which handle TMDS (the signalling for DVI and HDMI) and LVDS (the signalling for internal LCD panels). They sort of correspond to "digital output 1" and "digital output 2".

 

The first block is TMDS only, and is called TMDSA (ie the first TMDS block).

 

The second block can output TMDS or LVDS, and is called LVTMA (ie LVds plus TMds A or the first LVTM block).

 

The two blocks are programmed differently. While we were preparing the initial documentation for 5xx and 6xx display logic we realized at the last minute that the information for the LVTMA block was missing from the documents. We were able to replace the 5xx document with a new one containing most of the 5xx LVTMA info but were only able to get the updated 6xx LVTMA info to Novell a few weeks ago. I'm hoping to get the same info posted publicly over the next week or two.

 

As a result, until very recently if you had a card with dual DVI connectors there was a pretty good chance that one DVI connector (the one wired to the TMDSA block) worked and the other (the one wired to the LVTMA block) did not.

 

Hope this helps.

 

I'd ask OP to post the ioreg -l of his configuration to see how is recognized his working internal display.

  • Like 1
Link to comment
Share on other sites

Another info. With Transmitter set to 12 (linkA) the display is listed as TMDSA, with 02 (supposedly A+B dual link), is listed as TMDSB (LINK2). TMDS is not LVDS..I think is used on DVI displays? Imac connection shows LVDS. Check the logs and let me know.

I already tested this, apparently the ATY,EFIDisplay is only cosmetic/information. Change it doesn't make the internal LCD usable or not. It also hardcoded in ati.c (trunk). I even change it to LVDS (mine was TMDSB) but all monitors still working.

Link to comment
Share on other sites

you are right the ATY,EFIDISPALY reported by the ioreg dump is injected by chameleon bootloader Not detected by the drivers & only cosmetic

 

but as he reported :

 

TMDS-A (HDMI-A & Single Link DVI) are Single Link,

TMDS-B (HDMI-B & Dual Link DVI) are Dual Link,

LVDS is Single Link, but for some High Resolution Internal LCD is Dual Link.

Link to comment
Share on other sites

I already tested this, apparently the ATY,EFIDisplay is only cosmetic/information. Change it doesn't make the internal LCD usable or not. It also hardcoded in ati.c (trunk). I even change it to LVDS (mine was TMDSB) but all monitors still working.

What resolution do you have on your display? And mucha's one?

 

I see a dual-link value enabled in the imac ioreg, plus several more defined values that are not present in our ioregs. I think the problem lies in the connection configurations in the ati.c file in the bootloader. I am checking it right now. I think we have to edit the ati.c file that is lacking some values to get some lvds displays working. It would be useful to talk with the developers behind the ati injection, they probably would find the issue much faster than me.

Link to comment
Share on other sites

also I have a Sony Vaio (VGN-NW21EF) but it lacks the i2cid of LVDS

 

ATOM BIOS Rom: 
SubsystemVendorID: 0x104d SubsystemID: 0x9056
IOBaseAddress: 0xd000
Filename: BR34079.001 
BIOS Bootup Message: 
Sony_M851_M92S2_XT_GDDR3 M92 GDDR3 64bit 680e/800m						  

Connector at index 0 type: LVDS (7)
Connector at index 1 type: VGA (1)
Connector's i2cid: 90
Connector at index 2 type: HDMI-A (11)
Connector's i2cid: 94

 

I noticed this:

GPIO_I2C_Clk_Mask: [b]0x1f90[/b]
GPIO_I2C_Clk_Mask_Shift: 0x0
GPIO_I2C_Data_Mask: 0x1f90
GPIO_I2C_Data_Mask_Shift: 0x8
I2C bus "RHD I2C line 0" initialized.
GPIO_I2C_Clk_Mask: [b]0x1f94[/b]
GPIO_I2C_Clk_Mask_Shift: 0x0
GPIO_I2C_Data_Mask: 0x1f94
GPIO_I2C_Data_Mask_Shift: 0x8
I2C bus "RHD I2C line 1" initialized.
GPIO_I2C_Clk_Mask: [b]0x1f98[/b]
GPIO_I2C_Clk_Mask_Shift: 0x0
GPIO_I2C_Data_Mask: 0x1f98
GPIO_I2C_Data_Mask_Shift: 0x8
I2C bus "RHD I2C line 2" initialized.
GPIO_I2C_Clk_Mask: [b]0x1f88[/b]
GPIO_I2C_Clk_Mask_Shift: 0x0
GPIO_I2C_Data_Mask: 0x1f88
GPIO_I2C_Data_Mask_Shift: 0x8
I2C bus "RHD I2C line 3" initialized.
GPIO_I2C_Clk_Mask:[b] 0x1fc4[/b]
GPIO_I2C_Clk_Mask_Shift: 0x0
GPIO_I2C_Data_Mask: 0x1fc4
GPIO_I2C_Data_Mask_Shift: 0x8
I2C bus "RHD I2C line 4" initialized.
GPIO_I2C_Clk_Mask: [b]0x1fe8[/b]
GPIO_I2C_Clk_Mask_Shift: 0x0
GPIO_I2C_Data_Mask: 0x1fe8
GPIO_I2C_Data_Mask_Shift: 0x8
I2C bus "RHD I2C line 5" initialized.

when

0x1f90 ----> i2cid:90 (VGA)

0x1f94 ----> i2cid:94 (HDMI)

then

0x1f98 or 0x1f88 or 0x1fc4 or 0x1fe8 can be LVDS. Right?

 

Are accepted tips or denials.

Link to comment
Share on other sites

you are right the ATY,EFIDISPALY reported by the ioreg dump is injected by chameleon bootloader Not detected by the drivers & only cosmetic

 

but as he reported :

 

TMDS-A (HDMI-A & Single Link DVI) are Single Link,

TMDS-B (HDMI-B & Dual Link DVI) are Dual Link,

LVDS is Single Link, but for some High Resolution Internal LCD is Dual Link.

mucha we need someone to insert the values I need into the ati.c of TRUNK/KABYL. I don't know if we need only dual link but it would be a nice start. I dont know how it could be put in the first section of trunk (where TMDSA/:wub: names are, but it does seem simper on the KABYL section. In the kabyl there are also some disabled checks and values.

 

Trunk:

 

const char *ati_compatible_0[]			= { "@0,compatible", "ATY,%s" };
const char *ati_compatible_1[]			= { "@1,compatible", "ATY,%s" };
const char *ati_device_type_0[]			= { "@0,device_type", "display" };
const char *ati_device_type_1[]			= { "@1,device_type", "display" };
const char *ati_device_type[]			= { "device_type", "ATY,%sParent" };
const char *ati_name_0[]			= { "@0,name", "ATY,%s" };
const char *ati_name_1[]			= { "@1,name", "ATY,%s" };
const char *ati_name[]				= { "name", "ATY,%sParent" };
const char *ati_efidisplay_0[]			= { "@0,ATY,EFIDisplay", "LVDS" };
struct ati_data_key ati_connector_type_0	= { 0x04, "@0,connector-type", {0x00, 0x04, 0x00, 0x00} };
struct ati_data_key ati_connector_type_1	= { 0x04, "@1,connector-type", {0x04, 0x00, 0x00, 0x00} };
struct ati_data_key ati_display_con_fl_type_0	= { 0x04, "@0,display-connect-flags", {0x00, 0x00, 0x04, 0x00} };
const char *ati_display_type_0[]		= { "@0,display-type", "LCD" };
const char *ati_display_type_1[]		= { "@1,display-type", "NONE" };
struct ati_data_key ati_aux_power_conn		= { 0x04, "AAPL,aux-power-connected", {0x01, 0x00, 0x00, 0x00} };
struct ati_data_key ati_backlight_ctrl		= { 0x04, "AAPL,backlight-control", {0x00, 0x00, 0x00, 0x00} };
struct ati_data_key ati_aapl01_coher		= { 0x04, "AAPL01,Coherency", {0x01, 0x00, 0x00, 0x00} };
const char *ati_card_no[]			= { "ATY,Card#", "109-B77101-00" };
const char *ati_copyright[]			= { "ATY,Copyright", "Copyright AMD Inc. All Rights Reserved. 2005-2009" };
const char *ati_efi_compile_d[]			= { "ATY,EFICompileDate", "Jan 26 2009" };
struct ati_data_key ati_efi_disp_conf		= { 0x08, "ATY,EFIDispConfig", {0x45, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01} };
struct ati_data_key ati_efi_drv_type		= { 0x01, "ATY,EFIDriverType", {0x02} };
struct ati_data_key ati_efi_enbl_mode		= { 0x01, "ATY,EFIEnabledMode", {0x01} };
struct ati_data_key ati_efi_init_stat		= { 0x04, "ATY,EFIHWInitStatus", {0x00, 0x00, 0x00, 0x00} };
struct ati_data_key ati_efi_orientation		= { 0x02, "ATY,EFIOrientation", {0x02, 0x00} };
const char *ati_efi_version[]			= { "ATY,EFIVersion", "01.00.318" };
const char *ati_efi_versionB[]			= { "ATY,EFIVersionB", "113-SBSJ1G04-00R-02" };
const char *ati_efi_versionE[]			= { "ATY,EFIVersionE", "113-B7710A-318" };
struct ati_data_key ati_mclk			= { 0x04, "ATY,MCLK", {0x70, 0x2e, 0x11, 0x00} };
struct ati_data_key ati_mem_rev_id		= { 0x02, "ATY,MemRevisionID", {0x03, 0x00} };
struct ati_data_key ati_mem_vend_id		= { 0x02, "ATY,MemVendorID", {0x02, 0x00} };
const char *ati_mrt[]				= { "ATY,MRT", " " };
const char *ati_romno[]				= { "ATY,Rom#", "113-B7710C-176" };
struct ati_data_key ati_sclk			= { 0x04, "ATY,SCLK", {0x28, 0xdb, 0x0b, 0x00} };
struct ati_data_key ati_vendor_id		= { 0x02, "ATY,VendorID", {0x02, 0x10} };
struct ati_data_key ati_platform_info		= { 0x80, "ATY,PlatformInfo", {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, 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, 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, 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00} };
struct ati_data_key ati_mvad			= { 0x40, "MVAD", {0x3f, 0x5c, 0x82, 0x02, 0xff, 0x90, 0x00, 0x54, 0x60, 0x00, 0xac, 0x10, 0xa0, 0x17, 0x00, 0x03, 0xb0, 0x68, 0x00, 0x0a, 0xa0, 0x0a, 0x30, 0x00, 0x20, 0x00, 0x40, 0x06, 0x6e, 0x06, 0x03, 0x00, 0x06, 0x00, 0x40, 0x06, 0x00, 0x0a, 0x10, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x21, 0x00, 0x10, 0x06, 0x92, 0x20, 0x00, 0x03} };
struct ati_data_key ati_saved_config		= { 0x100, "saved-config", {0x3f, 0x5c, 0x82, 0x02, 0xff, 0x90, 0x00, 0x54, 0x60, 0x00, 0xac, 0x10, 0xa0, 0x17, 0x00, 0x03, 0xb0, 0x68, 0x00, 0x0a, 0xa0, 0x0a, 0x30, 0x00, 0x20, 0x00, 0x40, 0x06, 0x6e, 0x06, 0x03, 0x00, 0x06, 0x00, 0x40, 0x06, 0x00, 0x0a, 0x10, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x21, 0x00, 0x10, 0x06, 0x92, 0x20, 0x00, 0x03, 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, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xee, 0x02, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x31, 0x30, 0x50, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x32, 0x32, 0x32, 0x01, 0x00, 0x00, 0x00, 0x00, 0x02, 0x05, 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, 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, 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, 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, 0x00, 0x00, 0x00, 0x00} };
///non 48xx keys
const char *ati_efidisplay_0_n4[]		= { "@0,ATY,EFIDisplay", "TMDSA" };
struct ati_data_key ati_connector_type_0_n4	= { 0x04, "@0,connector-type", {0x04, 0x00, 0x00, 0x00} };
struct ati_data_key ati_connector_type_1_n4	= { 0x04, "@1,connector-type", {0x00, 0x02, 0x00, 0x00} };
struct ati_data_key ati_aapl_emc_disp_list_n4	= { 0x40, "AAPL,EMC-Display-List", {0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x10, 0x00, 0x00, 0x1b, 0x92, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x10, 0x00, 0x00, 0x1c, 0x92, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x10, 0x00, 0x00, 0x21, 0x92, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00} };
struct ati_data_key ati_fb_offset_n4		= { 0x08, "ATY,FrameBufferOffset", {0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00} };
struct ati_data_key ati_hwgpio_n4		= { 0x04, "ATY,HWGPIO", {0x23, 0xa8, 0x48, 0x00} };
struct ati_data_key ati_iospace_offset_n4	= { 0x08, "ATY,IOSpaceOffset", {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00} };
struct ati_data_key ati_mclk_n4			= { 0x04, "ATY,MCLK", {0x00, 0x35, 0x0c, 0x00} };
struct ati_data_key ati_sclk_n4			= { 0x04, "ATY,SCLK", {0x60, 0xae, 0x0a, 0x00} };
struct ati_data_key ati_refclk_n4		= { 0x04, "ATY,RefCLK", {0x8c, 0x0a, 0x00, 0x00} };
struct ati_data_key ati_regspace_offset_n4	= { 0x08, "ATY,RegisterSpaceOffset", {0x00, 0x00, 0x00, 0x00, 0x90, 0xa2, 0x00, 0x00} };
struct ati_data_key ati_vram_memsize_0		= { 0x08, "@0,VRAM,memsize", {0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00} };
struct ati_data_key ati_vram_memsize_1		= { 0x08, "@1,VRAM,memsize", {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00} };
struct ati_data_key ati_aapl_blackscr_prefs_0_n4= { 0x04, "AAPL00,blackscreen-preferences", {0x00, 0x00, 0x00, 0x00} };
struct ati_data_key ati_aapl_blackscr_prefs_1_n4= { 0x04, "AAPL01,blackscreen-preferences", {0x00, 0x00, 0x00, 0x00} };
struct ati_data_key ati_swgpio_info_n4		= { 0x04, "ATY,SWGPIO Info", {0x00, 0x48, 0xa8, 0x23} };
struct ati_data_key ati_efi_orientation_n4	= { 0x01, "ATY,EFIOrientation", {0x08} };
struct ati_data_key ati_mvad_n4			= { 0x100, "MVAD", {0x3e, 0x5c, 0x82, 0x00, 0xff, 0x90, 0x00, 0xf6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x28, 0x3c, 0x80, 0x07, 0x20, 0x08, 0x30, 0x00, 0x20, 0x00, 0xb0, 0x04, 0xd3, 0x04, 0x03, 0x00, 0x06, 0x00, 0xb0, 0x04, 0x80, 0x07, 0x00, 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, 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, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x90, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x31, 0x30, 0x50, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x32, 0x32, 0x32, 0x01, 0x00, 0x00, 0x00, 0x00, 0x02, 0x05, 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, 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, 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, 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, 0x00, 0x00, 0x00, 0x00} };
struct ati_data_key ati_saved_config_n4		= { 0x100, "saved-config", {0x3e, 0x5c, 0x82, 0x00, 0xff, 0x90, 0x00, 0xf6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x28, 0x3c, 0x80, 0x07, 0x20, 0x08, 0x30, 0x00, 0x20, 0x00, 0xb0, 0x04, 0xd3, 0x04, 0x03, 0x00, 0x06, 0x00, 0xb0, 0x04, 0x80, 0x07, 0x00, 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, 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, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x90, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x31, 0x30, 0x50, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x32, 0x32, 0x32, 0x01, 0x00, 0x00, 0x00, 0x00, 0x02, 0x05, 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, 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, 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, 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, 0x00, 0x00, 0x00, 0x00} };

 

and Kabyl section:

 

} dev_prop_t;

dev_prop_t ati_devprop_list[] = {
{FLAGTRUE,	false,	"@0,AAPL,boot-display",		get_bootdisplay_val,	NULVAL							},
//	{FLAGTRUE,	false,	"@0,ATY,EFIDisplay",		NULL,					STRVAL("TMDSA")					},

//	{FLAGTRUE,	true,	"@0,AAPL,vram-memory",		get_vrammemory_val,		NULVAL							},
//	{FLAGTRUE,	true,	"@0,compatible",			get_name_val,			NULVAL							},
//	{FLAGTRUE,	true,	"@0,connector-type",		get_conntype_val,		NULVAL							},
//	{FLAGTRUE,	true,	"@0,device_type",			NULL,					STRVAL("display")				},
//	{FLAGTRUE,	false,	"@0,display-connect-flags",	NULL,					DWRVAL((uint32_t)0)				},
//	{FLAGTRUE,	true,	"@0,display-type",			NULL,					STRVAL("NONE")					},
{FLAGTRUE,	true,	"@0,name",					get_name_val,			NULVAL							},
//	{FLAGTRUE,	true,	"@0,VRAM,memsize",			get_vrammemsize_val,	NULVAL							},

//	{FLAGTRUE,	false,	"AAPL,aux-power-connected",	NULL,					DWRVAL((uint32_t)1)				},
//	{FLAGTRUE,	false,	"AAPL,backlight-control",	NULL,					DWRVAL((uint32_t)0)				},
{FLAGTRUE,	false,	"ATY,bin_image",			get_binimage_val,		NULVAL							},
{FLAGTRUE,	false,	"ATY,Copyright",			NULL,	STRVAL("Copyright AMD Inc. All Rights Reserved. 2005-2010")	},
{FLAGTRUE,	false,	"ATY,Card#",				get_romrevision_val,	NULVAL							},
{FLAGTRUE,	false,	"ATY,VendorID",				NULL,					WRDVAL((uint16_t)0x1002)		},
{FLAGTRUE,	false,	"ATY,DeviceID",				get_deviceid_val,		NULVAL							},

//	{FLAGTRUE,	false,	"ATY,MCLK",					get_mclk_val,			NULVAL							},
//	{FLAGTRUE,	false,	"ATY,SCLK",					get_sclk_val,			NULVAL							},
//	{FLAGTRUE,	false,	"ATY,RefCLK",				get_refclk_val,			DWRVAL((uint32_t)0x0a8c)		},

//	{FLAGTRUE,	false,	"ATY,PlatformInfo",			get_platforminfo_val,	NULVAL							},

{FLAGTRUE,	false,	"name",						get_nameparent_val,		NULVAL							},
{FLAGTRUE,	false,	"device_type",				get_nameparent_val,		NULVAL							},
{FLAGTRUE,	false,	"model",					get_model_val,			STRVAL("ATI Radeon")			},
//	{FLAGTRUE,	false,	"VRAM,totalsize",			get_vramtotalsize_val,	NULVAL							},

{FLAGTRUE,	false,	NULL,						NULL,					NULVAL							}
};

Link to comment
Share on other sites

Thank you. However, somehow, RadeonHD doesn't detect the monitor connected to HDMI port & I presume that it also failed to extract correct EDID from internal LCD:-

Query for AtomBIOS Get Panel EDID: failed
Raw EDID data:
  00 ff ff ff ff ff ff 00 30 ae 22 40 00 00 00 00
  2d 10 01 03 80 1d 15 78 ea 6f 95 9c 54 4c 87 26
  21 50 54 21 08 00 81 80 01 01 01 01 01 01 01 01
  01 01 01 01 01 01 30 2a 78 20 51 1a 10 40 30 70
  13 00 1f d7 10 00 00 18 25 23 78 20 51 1a 10 40
  30 70 13 00 1f d7 10 00 00 18 00 00 00 0f 00 90
  43 32 90 43 28 0f 01 00 30 64 90 55 00 00 00 fe
  00 4c 54 44 31 34 31 45 4e 39 42 0a 20 20 00 35
EDID data for LVDS Panel
00: 0  1  2  3  4  5  6  7  8  9  A  B  C  D  E  F
00: 00 ff ff ff ff ff ff 00 30 ae 22 40 00 00 00 00 
10: 2d 10 01 03 80 1d 15 78 ea 6f 95 9c 54 4c 87 26 
20: 21 50 54 21 08 00 81 80 01 01 01 01 01 01 01 01 
30: 01 01 01 01 01 01 30 2a 78 20 51 1a 10 40 30 70 
40: 13 00 1f d7 10 00 00 18 25 23 78 20 51 1a 10 40 
50: 30 70 13 00 1f d7 10 00 00 18 00 00 00 0f 00 90 
60: 43 32 90 43 28 0f 01 00 30 64 90 55 00 00 00 fe 
70: 00 4c 54 44 31 34 31 45 4e 39 42 0a 20 20 00 35 
RHDAtomOutputAllocFree
Mapping DIG1 encoder to KLDSKP_UNIPHYE
Crtc[0]: found native mode from Monitor[LVDS Panel]: 
Modeline "1600x900"  96  1600 1648 1680 1736  900 901 906 922
Connector "PANEL" uses Monitor "LVDS Panel":
RHDValidateScaledToMode
rhdModeValidateCrtc
DxModeValid: ATOM CRTC 1
rhdAtomOutputModeValid
Listing modesetting layout:
ATOM CRTC 1: tied to Atom PLL 1 and LUT A:
 Outputs: AtomOutputUniphyE (PANEL)
ATOM CRTC 2: unused
 Unused Outputs: AtomOutputDACA, AtomOutputUniphyA

As you can see - "Mapping DIG1 encoder to KLDSKP_UNIPHYE" - only LVDS is got mapped while HDMI is not.

 

Honestly, at this point, I don't know how to get LVDS working but if you want to continue testing, please see below.

 

Can you provide:-

1) Get EDID value in Windows by using a software called "MonInfo". The "Raw data" is EDID value:-

edid.jpg

2) Please try this connectors table with Shrike framebuffer. Please test this without any external monitor plugged in. I change the LVDS link a little bit, telling it to use DUAL_LINK:-

CRTC0 > DIG1 > UNIPHY_EF > LVDS: Encoder=0x00 Transmitter=0x02

--> 00000000 02 00 00 00 40 00 00 00 09 01 00 00 02 00 00 07 (LVDS)

--> 00000010 10 00 00 00 10 00 00 00 00 01 00 00 00 10 01 01 (VGA)

--> 00000020 00 08 00 00 00 02 00 00 00 01 00 00 10 01 02 02 (HDMI)

Offset of Shrike connections table (3 connections):-

  • 32bit: 0x00037298
  • 64bit: 0x00010F80

 

The extracted EDID value is

"4CA34B540000000000130103902615780A56259D5B539A2817505400000001010101010101010101010101010101A525408860841630302015007ED71000001AA525408860841630302015007ED71000001A000000FE004A31334A58803137334B540A200000000000000000000000000002010A20200002"

Link to comment
Share on other sites

Hello all! Help me please with my video card ATI Radeon Mobility 4570 512 mb on ASUS k40ad. I read the manual but did not quite understand it works. Apparently this is due to lack of knowledge and experience. What should I do first? I'll be very grateful for your help!

Link to comment
Share on other sites

you are right the ATY,EFIDISPALY reported by the ioreg dump is injected by chameleon bootloader Not detected by the drivers & only cosmetic

 

but as he reported :

 

TMDS-A (HDMI-A & Single Link DVI) are Single Link,

TMDS-B (HDMI-B & Dual Link DVI) are Dual Link,

LVDS is Single Link, but for some High Resolution Internal LCD is Dual Link.

Yes, I know. I just let everyone know that I already experiment the ATY,EFIDisplay injection in the ati.c (chameleon). So that no one waste their time trying the same thing. The injection only cosmetic.

Link to comment
Share on other sites

The extracted EDID value is

"4CA34B540000000000130103902615780A56259D5B539A2817505400000001010101010101010101010101010101A525408860841630302015007ED71000001AA525408860841630302015007ED71000001A000000FE004A31334A58803137334B540A200000000000000000000000000002010A20200002"

 

Kizwan,

 

Here is EDID raw dara:

Raw data

00,FF,FF,FF,FF,FF,FF,00,4C,A3,4B,54,00,00,00,00,00,13,01,03,90,26,15,78,0A,56,25,9D,5B,53,9A,28,

17,50,54,00,00,00,01,01,01,01,01,01,01,01,01,01,01,01,01,01,01,01,A5,25,40,88,60,84,16,30,30,20,

15,00,7E,D7,10,00,00,1A,A5,25,40,88,60,84,16,30,30,20,15,00,7E,D7,10,00,00,1A,00,00,00,FE,00,4A,

31,33,4A,58,80,31,37,33,4B,54,0A,20,00,00,00,00,00,00,00,00,00,00,00,00,00,02,01,0A,20,20,00,02

Link to comment
Share on other sites

What resolution do you have on your display? And mucha's one?

On my Dell Studio 1557, it has a dual-link LVDS transmitter and can support up to WUXGA panel resolution (1920x1280). But right now it only fitted with WXGA panel resolution (1366x768). I can upgrade anytime to Full HD LCD panel (1920x1280) since it already have dual-link LVDS transmitter.

 

Any Dell Studio notebooks, including Studio 1747 (almuras), SXPS 1640 (sydlix) & SXPS 1645 (jvilla), also has dual-link LVDS transmitter. I got all three of RadeonHD's log from them & I found all three have Full HD LCD panel. So far they unable to get LVDS working. Also RadeonHD's log said all three have single-link LVDS transmitter which is weird. Based on the notebooks specification, it should be dual-link LVDS transmitter.

 

@Mucha, does your notebook have single or dual-link LVDS transmitter (hardware specification)?

Link to comment
Share on other sites

Kizwan,

 

Here is EDID raw dara:

Raw data

00,FF,FF,FF,FF,FF,FF,00,4C,A3,4B,54,00,00,00,00,00,13,01,03,90,26,15,78,0A,56,25,9D,5B,53,9A,28,

17,50,54,00,00,00,01,01,01,01,01,01,01,01,01,01,01,01,01,01,01,01,A5,25,40,88,60,84,16,30,30,20,

15,00,7E,D7,10,00,00,1A,A5,25,40,88,60,84,16,30,30,20,15,00,7E,D7,10,00,00,1A,00,00,00,FE,00,4A,

31,33,4A,58,80,31,37,33,4B,54,0A,20,00,00,00,00,00,00,00,00,00,00,00,00,00,02,01,0A,20,20,00,02

Is this internal LCD's EDID? I'll prepare the display overrides for you later.

Link to comment
Share on other sites

Is this internal LCD's EDID? I'll prepare the display overrides for you later.

 

Yes, it is internal LCD's EDID.

 

Please try this connectors table with Shrike framebuffer. Please test this without any external monitor plugged in. I change the LVDS link a little bit, telling it to use DUAL_LINK:-

CRTC0 > DIG1 > UNIPHY_EF > LVDS: Encoder=0x00 Transmitter=0x02

--> 00000000 02 00 00 00 40 00 00 00 09 01 00 00 02 00 00 07 (LVDS)

--> 00000010 10 00 00 00 10 00 00 00 00 01 00 00 00 10 01 01 (VGA)

--> 00000020 00 08 00 00 00 02 00 00 00 01 00 00 10 01 02 02 (HDMI)

 

I tried these connectors, only HDMI is working, VGA and internal LCD have black screens (I think they are detected though)

Link to comment
Share on other sites

@Mucha, does your notebook have single or dual-link LVDS transmitter (hardware specification)?

 

not sure about it, i know my screen is 1366x768 (doesn't need a dual-link) & AMD website says Mobility Radeon 4600 Series support dual channel LVDS

Link to comment
Share on other sites

I suggest to open another thread that should be reserved only for Working System logs (no commentary allowed, only systems logs & for woking configurations only) to keep it clean & usefull,

just to help us getting feed-back informations that may help to figure the working combinations & mapping

 

the proposed template is:

 

1- System identification: HP Pavilion DV6-1240ek - ATI Mobility Radeon 4650 (DeviceID:0x9480) - Max screen resolution: 1366x768.

 

2- bcc9 RadeonDump log:

 

Desktop Mucha$ ./radeondump < 1002_9480.rom 
ATOM BIOS Rom: 
SubsystemVendorID: 0x103c SubsystemID: 0x3629
IOBaseAddress: 0x7000
Filename: br33507.001 
BIOS Bootup Message: 
HP_Quanta_Jones_Cujo_M96M_DDR3 M96 DDR3 128bit 550e/667m					

Connector at index 0 type: LVDS (7)
Connector's i2cid: 96
Connector at index 1 type: VGA (1)
Connector's i2cid: 95
Connector at index 2 type: HDMI-A (11)
Connector's i2cid: 90

 

3- Dong's RadeonHD.kext or Linux log:

 

Mapping DIG1 encoder to KLDSKP_UNIPHYE
Crtc[0]: found native mode from Monitor[LVDS Panel]: 
Modeline "1366x768" 72 1366 1414 1446 1486 768 771 775 806
Connector "PANEL" uses Monitor "LVDS Panel":
RHDMonitorInit
Connector "VGA 1": Failed to retrieve Monitor information.
RHDValidateScaledToMode
rhdModeValidateCrtc
DxModeValid: ATOM CRTC 1
rhdAtomOutputModeValid
Listing modesetting layout:
ATOM CRTC 1: tied to Atom PLL 1 and LUT A:
Outputs: AtomOutputduleDemandUniphyE (PANEL)
ATOM CRTC 2: tied to Atom PLL 2 and LUT B:
Outputs: AtomOutputvalueDACA (VGA 1)
Unused Outputs: AtomOutputUniphyB

 

4- Tested Framebuffer :

 

Shrike (10.6.6-10.6.7)

 

02 00 00 00 40 00 00 00 09 01 00 00 12 00 00 07 LVDS > working

10 00 00 00 10 00 00 00 00 01 00 00 00 10 01 06 VGA > working

00 08 00 00 00 02 00 00 00 01 00 00 20 01 02 01 HDMI > not tested or not working

Link to comment
Share on other sites

also I have a Sony Vaio (VGN-NW21EF) but it lacks the i2cid of LVDS

 

ATOM BIOS Rom: 
SubsystemVendorID: 0x104d SubsystemID: 0x9056
IOBaseAddress: 0xd000
Filename: BR34079.001 
BIOS Bootup Message: 
Sony_M851_M92S2_XT_GDDR3 M92 GDDR3 64bit 680e/800m						  

Connector at index 0 type: LVDS (7)
Connector at index 1 type: VGA (1)
Connector's i2cid: 90
Connector at index 2 type: HDMI-A (11)
Connector's i2cid: 94

 

It's interesting, could you upload the file of RadeonHD's log?

dmesg >Encoder.txt

Link to comment
Share on other sites

On my Dell Studio 1557, it has a dual-link LVDS transmitter and can support up to WUXGA panel resolution (1920x1280). But right now it only fitted with WXGA panel resolution (1366x768). I can upgrade anytime to Full HD LCD panel (1920x1280) since it already have dual-link LVDS transmitter.

 

Any Dell Studio notebooks, including Studio 1747 (almuras), SXPS 1640 (sydlix) & SXPS 1645 (jvilla), also has dual-link LVDS transmitter. I got all three of RadeonHD's log from them & I found all three have Full HD LCD panel. So far they unable to get LVDS working. Also RadeonHD's log said all three have single-link LVDS transmitter which is weird. Based on the notebooks specification, it should be dual-link LVDS transmitter.

 

@Mucha, does your notebook have single or dual-link LVDS transmitter (hardware specification)?

Where do you see on RadeonHD log that our lvds is detected as single link? Do you have the full radeondump log to show us?

Link to comment
Share on other sites

3-Features;

 

/* Features byte 0 , for example for LVDS screen it's almost 0x09 = 0x01 + 0x08 > Internal + Backlight */

#define FEATURE_USE_INTERNAL 0x01

#define FEATURE_USE_RGB_ON_YUV 0x04

#define FEATURE_USE_BACKLIGHT 0x08

#define FEATURE_BACKLIGHT_INVERTED 0x10

#define FEATURE_USE_CLAMSHELL 0x20

 

 

I am sorry but what the difference between internal and clamshell? When should I choose one or the other?

 

Thanks,

almuras

Link to comment
Share on other sites

Where do you see on RadeonHD log that our lvds is detected as single link? Do you have the full radeondump log to show us?

This is your radeondump's log:-

[RadeonHD]: Mapping DIG1 encoder to KLDSKP_UNIPHYE
[RadeonHD]: Crtc[0]: found native mode from Monitor[LVDS Panel]: 
[RadeonHD]: Modeline "1920x1080"  153  1920 1968 2000 2280  1080 1082 1087 1122[RadeonHD]: 
[RadeonHD]: Connector "PANEL" uses Monitor "LVDS Panel":
[RadeonHD]: RHDValidateScaledToMode
[RadeonHD]: rhdModeValidateCrtc
[RadeonHD]: DxModeValid: ATOM CRTC 1
[RadeonHD]: rhdAtomOutputModeValid
[RadeonHD]: Listing modesetting layout:
[RadeonHD]: ATOM CRTC 1: tied to Atom PLL 1 and LUT A:
[RadeonHD]: 	Outputs: AtomOutput UniphyE (PANEL)[RadeonHD]:

See? LCD panel (LVDS) is using UNIPHYE transmitter (UNIPHY2:LINKA).

Link to comment
Share on other sites

This is your radeondump's log:-

[RadeonHD]: Mapping DIG1 encoder to KLDSKP_UNIPHYE
[RadeonHD]: Crtc[0]: found native mode from Monitor[LVDS Panel]: 
[RadeonHD]: Modeline "1920x1080"  153  1920 1968 2000 2280  1080 1082 1087 1122[RadeonHD]: 
[RadeonHD]: Connector "PANEL" uses Monitor "LVDS Panel":
[RadeonHD]: RHDValidateScaledToMode
[RadeonHD]: rhdModeValidateCrtc
[RadeonHD]: DxModeValid: ATOM CRTC 1
[RadeonHD]: rhdAtomOutputModeValid
[RadeonHD]: Listing modesetting layout:
[RadeonHD]: ATOM CRTC 1: tied to Atom PLL 1 and LUT A:
[RadeonHD]: 	Outputs: AtomOutput UniphyE (PANEL)[RadeonHD]:

See? LCD panel (LVDS) is using UNIPHYE transmitter (UNIPHY2:LINKA).

I know we are discussing this on the other thread.

 

But mine also says UNIPHYE, but I get no output with single link only with dual link.

Further, you said my screen resolution requires dual link.

Mapping DIG1 encoder to KLDSKP_UNIPHYE
Crtc[0]: found native mode from Monitor[LVDS Panel]:
Modeline "1600x900"  97  1600 1648 1680 1760  900 903 908 926
Connector "PANEL" uses Monitor "LVDS Panel":
DxModeValid: ATOM CRTC 1
Listing modesetting layout:
ATOM CRTC 1: tied to Atom PLL 1 and LUT A:
Outputs: AtomOutput UniphyE (PANEL)
ATOM CRTC 2: unused
Unused Outputs: AtomOutput DACA
Validating Modes from Monitor "LVDS Panel" on "PANEL"

I don't think we have entirely figured this out yet.

Link to comment
Share on other sites

also I have a Sony Vaio (VGN-NW21EF) but it lacks the i2cid of LVDS

 

ATOM BIOS Rom: 
SubsystemVendorID: 0x104d SubsystemID: 0x9056
IOBaseAddress: 0xd000
Filename: BR34079.001 
BIOS Bootup Message: 
Sony_M851_M92S2_XT_GDDR3 M92 GDDR3 64bit 680e/800m						  

Connector at index 0 type: LVDS (7)
Connector at index 1 type: VGA (1)
Connector's i2cid: 90
Connector at index 2 type: HDMI-A (11)
Connector's i2cid: 94

i have attached my encoder.txt

This is the important part from the encoder.txt:-

Mapping DIG1 encoder to KLDSKP_UNIPHYE
Crtc[0]: found native mode from Monitor[LVDS Panel]: 
Modeline "1366x768"  72  1366 1414 1446 1540  768 771 776 780
Connector "PANEL" uses Monitor "LVDS Panel":
I2C device "RHD I2C line 4:ddc2" registered at address 0xA0.
Mapping DIG2 encoder to KLDSKP_UNIPHYA
Connector "DVI-D 1" uses Monitor "HSG1074":
DxModeValid: ATOM CRTC 1
Listing modesetting layout:
ATOM CRTC 1: tied to Atom PLL 1 and LUT A:
Outputs: AtomOutputUniphyE (PANEL)
ATOM CRTC 2: tied to Atom PLL 2 and LUT B:
Outputs: AtomOutputUniphyA (DVI-D 1)
Unused Outputs: AtomOutputDACA

CRTC0 > DIG1 > UNIPHYE > LVDS: Encoder=0x00 Transmitter=0x12

CRTC1 > DIG2 > UNIPHYA > HDMI: Encoder=0x01 Transmitter=0x10

CRTC1 > DAC > DACA > VGA: Encoder=0x10 Transmitter=0x00

 

senseid = (i2cid And 0xF) + 1

LVDS: (? And 0xF) + 1 = ?

VGA: (90 And 0xF) + 1 = 1

HDMI: (94 And 0xF) + 1 = 5

 

Please try senseid 0 for LVDS.

 

Shrike framebuffer (32bit):-

--> 00037298	 02  00  00  00  40  00  00  00  09  01  00  00  12  00  00  00 	(LVDS)
--> 000372A8	 10  00  00  00  10  00  00  00  00  01  00  00  00  10  01  01 	(VGA)
--> 000372B8	 00  08  00  00  00  02  00  00  00  01  00  00  10  01  02  05 	(HDMI)

 

Shrike framebuffer (64bit):-

--> 00010F80	 02  00  00  00  40  00  00  00  09  01  00  00  12  00  00  00 	(LVDS)
--> 00010F90	 10  00  00  00  10  00  00  00  00  01  00  00  00  10  01  01 	(VGA)
--> 00010FA0	 00  08  00  00  00  02  00  00  00  01  00  00  10  01  02  05 	(HDMI)

 

Please test & let me know the results. Probably you'll need to inject EDID for your LVDS but just try the above first.

 

(P/S: I'm not confident LVDS will work on Sony VAIO. I know Sony VAIO have known issue with LVDS.)

Link to comment
Share on other sites

 Share

×
×
  • Create New...