Re: gma500: Cannot find any crtc or sizes - going 1024x768

From: Christian Gmeiner
Date: Tue Jun 12 2012 - 04:59:49 EST


Hi Patrik

2012/6/12 Patrik Jakobsson <patrik.r.jakobsson@xxxxxxxxx>:
> On Mon, Jun 11, 2012 at 4:16 PM, Christian Gmeiner
> <christian.gmeiner@xxxxxxxxx> wrote:
>> Hi,
>>
>> I am working with a custom/embedded device, which has the following device:
>>
> -- Snip ---
>>
>> At the moment (kernel 3.2.20) I am using this device with the vesa
>> driver, but I tested 3.5-rc2+ on the
>> device with the gma500 driver.
>>
>>
>> [ Â Â7.885054] gma500 0000:00:02.0: setting latency timer to 64
>> [ Â Â7.885395] [drm:psb_intel_opregion_setup], Public ACPI methods supported
>> [ Â Â7.885408] [drm:psb_intel_opregion_setup], ASLE supported
>> [ Â Â7.885435] gma500 0000:00:02.0: Enabling MSI failed!
>> [ Â Â7.885542] [drm] internal display is MIPI display
>> [ Â Â7.885658] ioremap error for 0x3ddbd000-0x3ddbe000, requested 0x10, got 0x0
>> [ Â Â7.885759] gma500 0000:00:02.0: Unable to read GCT!
> --- Snip ---
>> [ Â Â7.914951] gma500 0000:00:02.0: VBT signature missing
> --- Snip ---
>> [ Â Â8.063001] [drm] Supports vblank timestamp caching Rev 1 (10.10.2010).
>> [ Â Â8.063127] [drm] No driver support for vblank timestamp query.
>> [ Â Â8.063369] gma500 0000:00:02.0: DSI is not supported
> Indicates that oaktrail_lvds_init() is skipped
>
>> [ Â Â8.113473] No connectors reported connected with modes
>> [ Â Â8.113575] [drm:drm_setup_crtcs],
>> [ Â Â8.113591] [drm:drm_setup_crtcs], picking CRTCs for 2048x2048 config
>> [ Â Â8.113601] [drm] Cannot find any crtc or sizes - going 1024x768
>> [ Â Â8.125973] fbcon: psbfb (fb0) is primary device
>> [ Â Â8.127827] [drm:drm_crtc_helper_set_config],
>> [ Â Â8.127835] [drm:drm_crtc_helper_set_config], [CRTC:3] [NOFB]
>> [ Â Â8.168231] [drm:drm_crtc_helper_set_config],
>> [ Â Â8.168238] [drm:drm_crtc_helper_set_config], [CRTC:4] [NOFB]
>> [ Â Â8.231312] Console: switching to colour frame buffer device 128x48
>> [ Â Â8.257610] fb0: psbfb frame buffer device
>> [ Â Â8.257807] drm: registered panic notifier
>> [ Â Â8.258049] [drm] Initialized gma500 1.0.0 2011-06-06 for
>> 0000:00:02.0 on minor 0
> --- Snip ---
>> An run into this problem - there may be some more:
>> Cannot find any crtc or sizes - going 1024x768
>>
>> Depending on the connected display, there are two ways the panel is connected.
>>
>> 1) up to WVGA - LVDS
>> 2) else SDVO
>>
>> There is no EDID available.. it is only possible to read out the
>> defined display resolution
>> via an at24 eeprom found on the i2c bus of the device.
> --- Snip ---
>> So... what options do I have to fix my problems?
>
> Your device seems to lack the pieces needed for auto-detection of the outputs.
>
> I'd start by forcing oaktrail_lvds_init to run. Look at the first function in
> oaktrail_device.c. You'll find that a fuse value is required and that you don't
> have it.
>


Got a little bit further:

diff --git a/drivers/gpu/drm/gma500/mid_bios.c
b/drivers/gpu/drm/gma500/mid_bios.c
index b2a790b..9ee3122 100644
--- a/drivers/gpu/drm/gma500/mid_bios.c
+++ b/drivers/gpu/drm/gma500/mid_bios.c
@@ -55,8 +55,12 @@ static void mid_get_fuse_settings(struct drm_device *dev)
pci_read_config_dword(pci_root, 0xD4, &fuse_value);

/* FB_MIPI_DISABLE doesn't mean LVDS on with Medfield */
+#if 0
if (IS_MRST(dev))
dev_priv->iLVDS_enable = fuse_value & FB_MIPI_DISABLE;
+#else
+ dev_priv->iLVDS_enable = 1;
+#endif

DRM_INFO("internal display is %s\n",
dev_priv->iLVDS_enable ? "LVDS display" : "MIPI display");
diff --git a/drivers/gpu/drm/gma500/psb_intel_lvds.c
b/drivers/gpu/drm/gma500/psb_intel_lvds.c
index c83f5b5..5b49522 100644
--- a/drivers/gpu/drm/gma500/psb_intel_lvds.c
+++ b/drivers/gpu/drm/gma500/psb_intel_lvds.c
@@ -530,11 +530,14 @@ static int psb_intel_lvds_get_modes(struct
drm_connector *connector)
struct psb_intel_lvds_priv *lvds_priv = psb_intel_encoder->dev_priv;
int ret = 0;

+ printk(KERN_INFO "test 1\n");
+#if 0
if (!IS_MRST(dev))
ret = psb_intel_ddc_get_modes(connector,
&lvds_priv->i2c_bus->adapter);

if (ret)
return ret;
+#endif

/* Didn't get an EDID, so
* Set wide sync ranges so we get all modes


[ 8.233858] [drm:drm_helper_probe_single_connector_modes],
[CONNECTOR:7:LVDS-1]
[ 8.233869] test 1
[ 8.233967] [drm:drm_helper_probe_single_connector_modes],
[CONNECTOR:7:LVDS-1] probed modes :
[ 8.233993] [drm:drm_mode_debug_printmodeline], Modeline
10:"1024x600" 75 53990 1024 1072 1104 1184 600 603 604 608 0x48 0x0
[ 8.234038] [drm:drm_setup_crtcs],
[ 8.234053] [drm:drm_enable_connectors], connector 7 enabled? yes
[ 8.234066] [drm:drm_target_preferred], looking for cmdline mode on
connector 7
[ 8.234077] [drm:drm_target_preferred], looking for preferred mode
on connector 7
[ 8.234088] [drm:drm_target_preferred], found mode 1024x600
[ 8.234101] [drm:drm_setup_crtcs], picking CRTCs for 2048x2048 config
[ 8.234116] [drm:drm_setup_crtcs], desired mode 1024x600 set on crtc 3
[ 8.242199] fbcon: psbfb (fb0) is primary device
[ 8.244065] [drm:drm_crtc_helper_set_config],
[ 8.244076] [drm:drm_crtc_helper_set_config], [CRTC:3] [FB:12]
#connectors=1 (x y) (0 0)
[ 8.244099] [drm:drm_crtc_helper_set_config], crtc has no fb, full mode set
[ 8.244106] [drm:drm_crtc_helper_set_config], modes are different,
full mode set
[ 8.244120] [drm:drm_mode_debug_printmodeline], Modeline 0:"" 0 0 0
0 0 0 0 0 0 0 0x0 0x0
[ 8.244138] [drm:drm_mode_debug_printmodeline], Modeline
11:"1024x600" 75 53990 1024 1072 1104 1184 600 603 604 608 0x48 0x0
[ 8.244145] [drm:drm_crtc_helper_set_config], encoder changed, full
mode switch
[ 8.244151] [drm:drm_crtc_helper_set_config], crtc changed, full mode switch
[ 8.244161] [drm:drm_crtc_helper_set_config], [CONNECTOR:7:LVDS-1]
to [CRTC:3]
[ 8.244168] [drm:drm_crtc_helper_set_config], attempting to set
mode from userspace
[ 8.244184] [drm:drm_mode_debug_printmodeline], Modeline
11:"1024x600" 75 53990 1024 1072 1104 1184 600 603 604 608 0x48 0x0
[ 8.244195] Can't support LVDS on pipe A
[ 8.244201] [drm:drm_crtc_helper_set_mode], Encoder fixup failed
[ 8.244211] [drm:drm_crtc_helper_set_config] *ERROR* failed to set
mode on [CRTC:3]
[ 8.244222] fbcon_init: detected unhandled fb_set_par error, error code -22
[ 8.262085] Console: switching to colour frame buffer device 128x37
[ 8.293680] fb0: psbfb frame buffer device
[ 8.294817] drm: registered panic notifier
[ 8.295173] [drm] Initialized gma500 1.0.0 2011-06-06 for
0000:00:02.0 on minor 0



> We have no SDVO support for Oaktrail and I've never seen any hardware
> that does LVDS over SDVO (though there is support for that on Poulsbo).
>

Don't ask... my hardware guy has some ominous reasons that its done this way :)

---
Christian Gmeiner, MSc
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/