From f84cf6e1b0a6692e7e5a41b7133544265cefed49 Mon Sep 17 00:00:00 2001 From: Thomas White Date: Sun, 8 Nov 2009 19:42:19 +0100 Subject: Support both old and new sysfs layout in GlamoKernelModesettingAvailable() --- src/glamo-kms-driver.c | 47 ++++++++++++++++++++++++++++++++++++----------- 1 file changed, 36 insertions(+), 11 deletions(-) diff --git a/src/glamo-kms-driver.c b/src/glamo-kms-driver.c index 34c7baf..f790576 100644 --- a/src/glamo-kms-driver.c +++ b/src/glamo-kms-driver.c @@ -78,24 +78,49 @@ Bool GlamoKernelModesettingAvailable() { DIR *dir; - struct dirent *ent; + /* Try old location */ dir = opendir("/sys/bus/platform/devices/glamo-fb.0/"); - if ( !dir ) return FALSE; + if ( dir ) { - do { + struct dirent *ent; - ent = readdir(dir); - if ( !ent ) return FALSE; + do { - if ( strncmp(ent->d_name, "drm:controlD", 12) == 0 ) { - closedir(dir); - return TRUE; - } + ent = readdir(dir); + if ( !ent ) return FALSE; + + if ( strncmp(ent->d_name, "drm:controlD", 12) == 0 ) { + closedir(dir); + return TRUE; + } + + } while ( ent ); + + closedir(dir); + } + + /* Try new location */ + dir = opendir("/sys/bus/platform/devices/glamo-fb.0/drm/"); + if ( dir ) { - } while ( ent ); + struct dirent *ent; + + do { + + ent = readdir(dir); + if ( !ent ) return FALSE; + + if ( strncmp(ent->d_name, "drm:controlD", 12) == 0 ) { + closedir(dir); + return TRUE; + } + + } while ( ent ); + + closedir(dir); + } - closedir(dir); return FALSE; } -- cgit v1.2.3