diff -r -u xf86-video-ati-6.7.197/src/radeon_driver.c radeon/xf86-video-ati-6.7.197/src/radeon_driver.c --- xf86-video-ati-6.7.197/src/radeon_driver.c 2007-12-20 23:21:32.000000000 +0100 +++ radeon/xf86-video-ati-6.7.197/src/radeon_driver.c 2008-01-15 22:52:53.000000000 +0100 @@ -155,6 +155,9 @@ #ifdef USE_EXA { OPTION_ACCEL_DFS, "AccelDFS", OPTV_BOOLEAN, {0}, FALSE }, #endif +#ifdef __linux__ + { OPTION_CHECKLID, "CheckLID", OPTV_BOOLEAN, {0}, FALSE}, +#endif #endif { OPTION_DDC_MODE, "DDCMode", OPTV_BOOLEAN, {0}, FALSE }, { OPTION_IGNORE_EDID, "IgnoreEDID", OPTV_BOOLEAN, {0}, FALSE }, diff -r -u xf86-video-ati-6.7.197/src/radeon.h radeon/xf86-video-ati-6.7.197/src/radeon.h --- xf86-video-ati-6.7.197/src/radeon.h 2007-12-20 23:21:32.000000000 +0100 +++ radeon/xf86-video-ati-6.7.197/src/radeon.h 2008-01-15 22:56:18.000000000 +0100 @@ -129,6 +129,9 @@ OPTION_ACCEL_DFS, #endif #endif +#ifdef __linux__ + OPTION_CHECKLID, +#endif OPTION_DDC_MODE, OPTION_IGNORE_EDID, OPTION_DISP_PRIORITY, diff -r -u xf86-video-ati-6.7.197/src/radeon_output.c radeon/xf86-video-ati-6.7.197/src/radeon_output.c --- xf86-video-ati-6.7.197/src/radeon_output.c 2007-12-20 23:21:32.000000000 +0100 +++ radeon/xf86-video-ati-6.7.197/src/radeon_output.c 2008-01-15 23:28:30.000000000 +0100 @@ -693,24 +693,29 @@ RADEONMonitorType MonType = MT_NONE; #ifdef __linux__ char lidline[50]; /* 50 should be sufficient for our purposes */ - FILE *f = fopen ("/proc/acpi/button/lid/LID/state", "r"); - - if (f != NULL) { - while (fgets(lidline, sizeof lidline, f)) { - if (!strncmp(lidline, "state:", strlen ("state:"))) { - if (strstr(lidline, "open")) { - fclose(f); - ErrorF("proc lid open\n"); - return MT_LCD; - } - else if (strstr(lidline, "closed")) { - fclose(f); - ErrorF("proc lid closed\n"); - return MT_NONE; - } - } - } - fclose(f); + + if (xf86ReturnOptValBool(info->Options, OPTION_CHECKLID, FALSE)) { + FILE *f = fopen ("/proc/acpi/button/lid/LID/state", "r"); + + if (f != NULL) { + ErrorF("Reading LID Status\n"); + while (fgets(lidline, sizeof lidline, f)) { + if (!strncmp(lidline, "state:", strlen ("state:"))) { + if (strstr(lidline, "open")) { + fclose(f); + ErrorF("proc lid open\n"); + return MT_LCD; + } + else if (strstr(lidline, "closed")) { + fclose(f); + ErrorF("proc lid closed\n"); + return MT_NONE; + } + } + } + fclose(f); + } + else ErrorF("Can't Read LID Status\n"); } #endif