summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThomas White <taw@bitwiz.org.uk>2009-11-08 19:42:19 +0100
committerThomas White <taw@bitwiz.org.uk>2009-11-08 19:57:28 +0100
commitf84cf6e1b0a6692e7e5a41b7133544265cefed49 (patch)
tree317822e7d479344549ac53abf036286018e7d190
parent69bce744911378f139e7a7159d294439e8acc140 (diff)
Support both old and new sysfs layout in GlamoKernelModesettingAvailable()
-rw-r--r--src/glamo-kms-driver.c47
1 files 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;
}