From: Alex D. <ale...@gm...> - 2009-06-30 15:22:23
|
2009/6/30 Rafał Miłecki <za...@gm...>: > W dniu 29 czerwca 2009 03:03 użytkownik Alex Deucher > <ale...@gm...> napisał: >> 2009/6/24 Rafał Miłecki <za...@gm...>: >>> Khem, hi, my first patch here and my first touching kernel code ever. >>> >>> I try to make my RV620 work in console using radeon KMS. Using >>> Jerome's WIP code and my own hacks I discovered this quite general bug >>> in treating encoders. >>> >>> Before patch: >>> Jun 23 15:15:49 linux-aodr kernel: i2c-adapter i2c-1: unable to read EDID block. >>> Jun 23 15:15:49 linux-aodr kernel: radeon 0000:01:00.0: VGA-1: no EDID data >>> Jun 23 15:15:49 linux-aodr kernel: i2c-adapter i2c-2: unable to read EDID block. >>> Jun 23 15:15:49 linux-aodr kernel: radeon 0000:01:00.0: LVDS-1: no EDID data >>> Jun 23 15:15:49 linux-aodr kernel: i2c-adapter i2c-3: unable to read EDID block. >>> Jun 23 15:15:49 linux-aodr kernel: radeon 0000:01:00.0: HDMI Type B-1: >>> no EDID data >>> Jun 23 15:15:49 linux-aodr kernel: i2c-adapter i2c-2: unable to read EDID block. >>> Jun 23 15:15:49 linux-aodr kernel: radeon 0000:01:00.0: LVDS-1: no EDID data >>> Jun 23 15:15:49 linux-aodr kernel: [drm:drm_helper_initial_config] >>> *ERROR* connectors have no modes, using standard modes >>> Jun 23 15:15:49 linux-aodr kernel: >>> [drm_mode:drm_mode_debug_printmodeline], Modeline 11:"800x600" 60315 >>> 40000 800 840 968 1056 600 601 605 628 0x10 0x5 >>> Jun 23 15:15:49 linux-aodr kernel: >>> [drm_mode:drm_mode_debug_printmodeline], Modeline 12:"800x600" 60315 >>> 40000 800 840 968 1056 600 601 605 628 0x10 0x5 >>> Jun 23 15:15:49 linux-aodr kernel: >>> [drm_mode:drm_mode_debug_printmodeline], Modeline 13:"800x600" 60315 >>> 40000 800 840 968 1056 600 601 605 628 0x10 0x5 >>> Jun 23 15:15:49 linux-aodr kernel: [drm] fb mappable at 0xFFFFC90011800000 >>> Jun 23 15:15:49 linux-aodr kernel: [drm] vram apper at 0xC0000000 >>> Jun 23 15:15:49 linux-aodr kernel: [drm] size 1996800 >>> Jun 23 15:15:49 linux-aodr kernel: [drm] fb depth is 24 >>> Jun 23 15:15:49 linux-aodr kernel: [drm] pitch is 3328 >>> Jun 23 15:15:49 linux-aodr kernel: Console: switching to colour frame >>> buffer device 100x37 >>> >>> Witch patch applied: >>> Jun 23 15:25:20 linux-aodr kernel: i2c-adapter i2c-1: unable to read EDID block. >>> Jun 23 15:25:20 linux-aodr kernel: radeon 0000:01:00.0: VGA-1: no EDID data >>> Jun 23 15:25:20 linux-aodr kernel: i2c-adapter i2c-2: unable to read EDID block. >>> Jun 23 15:25:20 linux-aodr kernel: radeon 0000:01:00.0: LVDS-1: no EDID data >>> Jun 23 15:25:20 linux-aodr kernel: i2c-adapter i2c-3: unable to read EDID block. >>> Jun 23 15:25:20 linux-aodr kernel: radeon 0000:01:00.0: HDMI Type B-1: >>> no EDID data >>> Jun 23 15:25:20 linux-aodr kernel: i2c-adapter i2c-2: unable to read EDID block. >>> Jun 23 15:25:20 linux-aodr kernel: radeon 0000:01:00.0: LVDS-1: no EDID data >>> Jun 23 15:25:20 linux-aodr kernel: >>> [drm_mode:drm_mode_debug_printmodeline], Modeline 11:"1600x900" 59954 >>> 88540 1600 1614 1626 1630 900 902 904 906 0x48 0x0 >>> Jun 23 15:25:20 linux-aodr kernel: [drm] fb mappable at 0xFFFFC90011E00000 >>> Jun 23 15:25:20 linux-aodr kernel: [drm] vram apper at 0xC0000000 >>> Jun 23 15:25:20 linux-aodr kernel: [drm] size 5760000 >>> Jun 23 15:25:20 linux-aodr kernel: [drm] fb depth is 24 >>> Jun 23 15:25:20 linux-aodr kernel: [drm] pitch is 6400 >>> Jun 23 15:25:20 linux-aodr kernel: Console: switching to colour frame >>> buffer device 200x56 >>> Jun 23 15:25:20 linux-aodr kernel: >>> [drm_mode:drm_mode_debug_printmodeline], Modeline 0:"" 0 0 0 0 0 0 0 0 >>> 0 0 0x0 0x0 >>> Jun 23 15:25:20 linux-aodr kernel: >>> [drm_mode:drm_mode_debug_printmodeline], Modeline 13:"1600x900" 59954 >>> 88540 1600 1614 1626 1630 900 902 904 906 0x48 0x0 >>> Jun 23 15:25:20 linux-aodr kernel: >>> [drm_mode:drm_mode_debug_printmodeline], Modeline 13:"1600x900" 59954 >>> 88540 1600 1614 1626 1630 900 902 904 906 0x48 0x0 >>> >>> So this just makes radeon drm call radeon_atombios_get_lvds_info to >>> get mode for PANEL. >>> >>> I'm not sure how would you like to apply this and if this actually is >>> important for 2.6.31. As we support up to R5xx only here, can we hit >>> this bug actually? Can hardware below R6xx use >>> ENCODER_OBJECT_ID_INTERNAL_KLDSCP_LVTMA? >> >> Only DCE 3.0/3.1 cards have ENCODER_OBJECT_ID_INTERNAL_KLDSCP_LVTMA, >> so you'll only see this on rv620/rv635/rv780/rv770 hw. The proper fix >> is attached. We'll need to get lvds info for other encoder types as >> well since newer cards only have uniphy blocks. > > I suspected your patch may incorrectly try to use > radeon_atombios_get_lvds_info (if first condition block) also for my > LCD controlled by UNIPHY (HDMI). > > After testing it seems > if (radeon_encoder->devices & (ATOM_DEVICE_LCD_SUPPORT)) > is actually condition testing if device is notebook panel, not any LCD > monitor (poor const name imo). > In the bios LCD refers to locally connected flat panels. Digital connectors (DVI, hdmi, dp) are referred to as DFP, and analog connectors are CRT. > So finally: yes, your patch works fine. Acked/Tested/don't know :) Thanks for verifying. Alex |