Hi!

> > >A while back I proposed a patch to support powerpc. The comments where
> > >that it was a bit ugly with all those #ifdef's. Now the question is how
> > >do I do this neatly?
> > [...]
> > >I could solve this as Stefan suggested like this:
> > >
> > >#ifdef CONFIG_PPC
> > >int s2ram_hacks(void) return 0;
> > >#else
> > >int s2ram_hacks(void)
> > >{
> > >.
> > >}
> > >#end
> > >
> > >for a few functions. Still I would put a large part in #ifdef/#end
> > >blocks, just because it is not used. Also there will be some #ifdefs left
> > >in main.
> > 
> > Looking at the older patch:
> > - move PMU check into s2ram_is_supported, return error on failure
> > - rename s2ram_do_pmu to s2ram_hacks (and maybe find a better name for
> > both); this would be the hook for doing platform-specific black magic
> > (PMU_IOC_SLEEP for PPC)
> > - nop for s2ram_resume()
> > - not sure about command line arguments...
> > 
> > Then maybe split s2ram.c into s2ram, s2ram-x86.c and s2ram-ppc.c; this
> > will ease the addition of a new platform.
> 
> Patch for the split (compile tested only). usage() and command line
> handling  still require work, I'll think something (-ENOSLEEP now).
> Btw, when test_mode is set there's a call to machine_known with id -1...
> is this a leftover of some previous patch?

Yes, this looks like way to go.

> 
> ---
> 
>  Makefile    |    4 
>  s2ram-x86.c |  310 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
>  s2ram.c     |  295 -----------------------------------------------------
>  s2ram.h     |   11 +
>  4 files changed, 325 insertions(+), 295 deletions(-)
> 
> --- a/Makefile        2007-03-26 23:44:04.000000000 +0200
> +++ b/Makefile        2007-04-06 01:52:38.000000000 +0200
> @@ -98,10 +98,10 @@
>  s2disk:      $(SWSUSP_OBJ) suspend.c
>       $(CC) -g $(CC_FLAGS)  $^ -o $@ $(SWSUSP_LD_FLAGS)
>  
> -s2ram:       $(S2RAM_OBJ) s2ram.o
> +s2ram:       $(S2RAM_OBJ) s2ram.o s2ram-x86.o
>       $(CC) -g $(CC_FLAGS)  $^ -o $@ $(S2RAM_LD_FLAGS)
>  
> -s2both:      $(SWSUSP_OBJ) $(S2RAM_OBJ) s2ram-both.o suspend.c 
> +s2both:      $(SWSUSP_OBJ) $(S2RAM_OBJ) s2ram-both.o suspend.c s2ram-x86.o
>       $(CC) -g $(CC_FLAGS) -DCONFIG_BOTH  $^ -o $@ $(SWSUSP_LD_FLAGS) 
> $(S2RAM_LD_FLAGS)
>  
>  resume:      resume.c $(SWSUSP_OBJ)
> --- a/s2ram.c 2007-04-02 21:57:15.000000000 +0200
> +++ b/s2ram.c 2007-04-06 01:44:14.000000000 +0200
> @@ -20,13 +20,7 @@
>  #include "vt.h"
>  #include "s2ram.h"
>  
> -static void *vbe_buffer;
> -static unsigned char vga_pci_state[256];
> -static struct pci_dev vga_dev;
> -static struct pci_access *pacc;
> -/* Flags set from whitelist */
> -static int flags = 0, force = 0, vbe_mode = -1;
> -char bios_version[1024], sys_vendor[1024], sys_product[1024], 
> sys_version[1024];
> +int force;
>  
>  /* return codes for s2ram_is_supported */
>  #define S2RAM_OK     0
> @@ -34,221 +28,6 @@
>  #define S2RAM_NOFB   126
>  #define S2RAM_UNKNOWN        127
>  
> -/* flags for the whitelist */
> -#define S3_BIOS     0x01     /* machine needs acpi_sleep=s3_bios */
> -#define S3_MODE     0x02     /* machine needs acpi_sleep=s3_mode */
> -#define VBE_SAVE    0x04     /* machine needs "vbetool save / restore" */
> -#define VBE_POST    0x08     /* machine needs "vbetool post" */
> -#define RADEON_OFF  0x10     /* machine needs "radeontool light off" */
> -#define UNSURE      0x20     /* unverified entries from acpi-support 0.59 */
> -#define NOFB        0x40     /* must not use a frame buffer */
> -#define VBE_MODE    0x80     /* machine needs "vbetool vbemode get / set" */
> -#define PCI_SAVE   0x100     /* we need to save the VGA PCI registers */
> -
> -#include "whitelist.c"
> -
> -static void identify_machine(void)
> -{
> -     printf("This machine can be identified by:\n");
> -     printf("    sys_vendor   = \"%s\"\n"
> -            "    sys_product  = \"%s\"\n"
> -            "    sys_version  = \"%s\"\n"
> -            "    bios_version = \"%s\"\n",
> -            sys_vendor, sys_product, sys_version, bios_version);
> -     printf("See http://en.opensuse.org/S2ram for details.\n"
> -            "\n"
> -            "If you report a problem, please include the complete output "
> -            "above.\n");
> -}
> -
> -void machine_known(int i)
> -{
> -     if (i < 0) {
> -             printf("Internal error: machine_known, i<0. Please report.\n");
> -             return;
> -     }
> -
> -     printf("Machine matched entry %d:\n"
> -            "    sys_vendor   = '%s'\n"
> -            "    sys_product  = '%s'\n"
> -            "    sys_version  = '%s'\n"
> -            "    bios_version = '%s'\n", i,
> -            whitelist[i].sys_vendor, whitelist[i].sys_product,
> -            whitelist[i].sys_version, whitelist[i].bios_version);
> -     printf("Fixes: 0x%x  %s%s%s%s%s%s%s%s\n", flags,
> -            (flags & VBE_SAVE) ? "VBE_SAVE " : "",
> -            (flags & VBE_POST) ? "VBE_POST " : "",
> -            (flags & VBE_MODE) ? "VBE_MODE " : "",
> -            (flags & RADEON_OFF) ? "RADEON_OFF " : "",
> -            (flags & S3_BIOS) ? "S3_BIOS " : "",
> -            (flags & S3_MODE) ? "S3_MODE " : "",
> -            (flags & NOFB) ? "NOFB " : "",
> -            (flags & PCI_SAVE) ? "PCI_SAVE " : "");
> -     if (flags & UNSURE)
> -             printf("Machine is in the whitelist but perhaps using "
> -                    "vbetool unnecessarily.\n"
> -                    "Please try to find minimal options.\n\n");
> -     /* in case of a bugreport we might need to find a better match than
> -      * the one we already have (additional BIOS version e.g)...
> -      */
> -     identify_machine();
> -}
> -
> -static int set_acpi_video_mode(int mode)
> -{
> -     FILE *f = fopen("/proc/sys/kernel/acpi_video_flags", "w");
> -     if (!f) {
> -             printf("/proc/sys/kernel/acpi_video_flags does not exist; you 
> need a kernel >=2.6.16.\n");
> -             return S2RAM_FAIL;
> -     }
> -     fprintf(f, "%d", mode);
> -     fflush(f);
> -     fclose(f);
> -     return S2RAM_OK;
> -}
> -
> -static int match(const char *t, const char *s)
> -{
> -     int len = strlen(s);
> -     /* empty string matches always */
> -     if (len == 0)
> -             return 1;
> -
> -     if (s[len-1] == '*') {
> -             len--;
> -             return !strncmp(t, s, len);
> -     } else {
> -             return !strcmp(t,s);
> -     }
> -}
> -
> -static int machine_match(void)
> -{
> -     int i;
> -     /* sys_vendor = NULL terminates the whitelist array */
> -     for (i = 0; whitelist[i].sys_vendor; i++) {
> -             if (match(sys_vendor,   whitelist[i].sys_vendor)  &&
> -                 match(sys_product,  whitelist[i].sys_product) &&
> -                 match(sys_version,  whitelist[i].sys_version) &&
> -                 match(bios_version, whitelist[i].bios_version)) {
> -                     return i;
> -             }
> -     }
> -     return -1;
> -}
> -
> -int s2ram_check(int id)
> -{
> -     int ret = S2RAM_OK;
> -
> -     if (id < 0) {
> -             ret = S2RAM_UNKNOWN;
> -     } else {
> -             flags = whitelist[id].flags;
> -             if ((flags & NOFB) && is_framebuffer())
> -                     ret = S2RAM_NOFB;
> -     }
> -
> -     return ret;
> -}
> -
> -int find_vga(void)
> -{
> -     struct pci_dev *dev;
> -     unsigned int class;
> -
> -     pci_scan_bus(pacc);     /* We want to get the list of devices */
> -
> -     for (dev=pacc->devices; dev; dev=dev->next) {
> -             pci_fill_info(dev, PCI_FILL_IDENT);
> -             class = pci_read_word(dev, PCI_CLASS_DEVICE);
> -             if (class == 0x300)
> -                     break;
> -     }
> -
> -     if (!dev)
> -             return 0;
> -
> -     memcpy(&vga_dev, dev, sizeof(*dev));
> -     vga_dev.next = NULL;
> -
> -     return 1;
> -}
> -
> -void save_vga_pci(void)
> -{
> -     pci_read_block(&vga_dev, 0, vga_pci_state, 256);
> -}
> -
> -void restore_vga_pci(void)
> -{
> -     pci_write_block(&vga_dev, 0, vga_pci_state, 256);
> -}
> -
> -/* warning: we have to be on a text console when calling this */
> -int s2ram_hacks(void)
> -{
> -     int ret = 0;
> -
> -     /* 0 means: don't touch what was set on kernel commandline */
> -     if (flags & (S3_BIOS | S3_MODE))
> -             ret = set_acpi_video_mode(flags & (S3_BIOS | S3_MODE));
> -
> -     if (ret)
> -             return ret;
> -
> -     if (flags & VBE_SAVE) {
> -             int size;
> -             vbetool_init();
> -             printf("Calling save_state\n");
> -             vbe_buffer = __save_state(&size);
> -     }
> -     if (flags & VBE_MODE) {
> -             vbetool_init();
> -             printf("Calling get_mode\n");
> -             vbe_mode = __get_mode();
> -     }
> -     if (flags & RADEON_OFF) {
> -             map_radeon_cntl_mem();
> -             printf("Calling radeon_cmd_light(0)\n");
> -             radeon_cmd_light(0);
> -     }
> -     if (flags & PCI_SAVE) {
> -             pacc = pci_alloc();     /* Get the pci_access structure */
> -             pci_init(pacc);         /* Initialize the PCI library */
> -
> -             if (find_vga()) {
> -                     printf("saving PCI config of device %02x:%02x.%d\n",
> -                             vga_dev.bus, vga_dev.dev, vga_dev.func);
> -                     save_vga_pci();
> -             } else
> -                     /* pci_save requested, no VGA device found => abort */
> -                     return 1;
> -     }
> -
> -     return 0;
> -}
> -
> -int s2ram_is_supported(void)
> -{
> -     int ret = 0, id;
> -
> -     if (flags && !force) {
> -             printf("acpi_sleep, vbe_save, vbe_post, radeontool and pci_save"
> -                     " parameter must be used with --force\n\n");
> -             return EINVAL;
> -     }
> -
> -     if (!force) {
> -             dmi_scan();
> -             id = machine_match();
> -             ret = s2ram_check(id);
> -     } 
> -
> -     return ret;
> -}
> -
> -/* Actually enter the suspend. May be ran on frozen system. */
>  int s2ram_do(void)
>  {
>       int ret = 0;
> @@ -271,74 +50,6 @@
>       return ret;
>  } 
>  
> -void s2ram_resume(void)
> -{
> -     if (flags & PCI_SAVE) {
> -             printf("restoring PCI config of device %02x:%02x.%d\n",
> -                     vga_dev.bus, vga_dev.dev, vga_dev.func);
> -             restore_vga_pci();
> -
> -             pci_cleanup(pacc);
> -     }
> -     // FIXME: can we call vbetool_init() multiple times without cleaning up?
> -     if (flags & VBE_POST) {
> -             vbetool_init();
> -             printf("Calling do_post\n");
> -             do_post();
> -     }
> -     if (vbe_buffer) {
> -             vbetool_init();
> -             printf("Calling restore_state_from\n");
> -             restore_state_from(vbe_buffer);
> -     }
> -     if (vbe_mode >= 0) {
> -             vbetool_init();
> -             printf("Calling set_vbe_mode\n");
> -             do_set_mode(vbe_mode, 0);
> -     }
> -     if (flags & RADEON_OFF) {
> -             printf("Calling radeon_cmd_light(1)\n");
> -             radeon_cmd_light(1);
> -     }
> -}
> -
> -void s2ram_add_flag(int opt, const char *opt_arg)
> -{
> -     /* The characters are the `deprecated' short options. They will not
> -      * clash with the new labels untill we reach quirk 65... */
> -     switch (opt) {
> -             case 1:
> -             case 'f':
> -                     force = 1;
> -                     break;
> -             case 2:
> -             case 's':
> -                     flags |= VBE_SAVE;
> -                     break;
> -             case 3:
> -             case 'p':
> -                     flags |= VBE_POST;
> -                     break;
> -             case 4:
> -             case 'm':
> -                     flags |= VBE_MODE;
> -                     break;
> -             case 5:
> -             case 'r':
> -                     flags |= RADEON_OFF;
> -                     break;
> -             case 6:
> -             case 'v':
> -                     flags |= PCI_SAVE;
> -                     break;
> -             case 7:
> -             case 'a':
> -                     flags |= (atoi(optarg) & (S3_BIOS | S3_MODE));
> -                     break;
> -
> -     }
> -}
> -
>  #ifndef CONFIG_BOTH
>  static void usage(void)
>  {
> @@ -384,7 +95,6 @@
>                       usage();
>                       break;
>               case 'i':
> -                     dmi_scan();
>                       identify_machine();
>                       exit(0);
>               case 'n':
> @@ -405,7 +115,8 @@
>       }
>  
>       if (test_mode) {
> -             machine_known(id);
> +             /* WTF? */
> +             // machine_known(id);
>               goto out;
>       }
>  
> --- a/s2ram.h 2007-04-02 21:57:15.000000000 +0200
> +++ b/s2ram.h 2007-04-06 01:40:21.000000000 +0200
> @@ -13,9 +13,18 @@
>  void dmi_scan(void);
>  
>  /* from s2ram.c */
> -int s2ram_check(int id);
> +
> +/* return codes for s2ram_is_supported */
> +#define S2RAM_OK        0
> +#define S2RAM_FAIL      1
> +#define S2RAM_NOFB      126
> +#define S2RAM_UNKNOWN   127
> +
> +extern int force;
> +
>  int s2ram_hacks(void);
>  int s2ram_is_supported(void);
> +void identify_machine(void);
>  int s2ram_do(void);
>  void s2ram_resume(void);
>  void s2ram_add_flag(int opt, const char *arg);
> --- suspend/s2ram-x86.c       1970-01-01 01:00:00.000000000 +0100
> +++ suspend.new/s2ram-x86.c   2007-04-06 01:43:14.000000000 +0200
> @@ -0,0 +1,310 @@
> +#include <stdio.h>
> +#include <stdlib.h>
> +#include <string.h>
> +#include <getopt.h>
> +#include <errno.h>
> +
> +#include <pci/pci.h>
> +
> +#include "vbetool/vbetool.h"
> +#include "s2ram.h"
> +#include "vt.h"
> +
> +static void *vbe_buffer;
> +static unsigned char vga_pci_state[256];
> +static struct pci_dev vga_dev;
> +static struct pci_access *pacc;
> +char bios_version[1024], sys_vendor[1024], sys_product[1024], 
> sys_version[1024];
> +
> +static int flags;
> +static int vbe_mode = -1;
> +
> +/* flags for the whitelist */
> +#define S3_BIOS     0x01     /* machine needs acpi_sleep=s3_bios */
> +#define S3_MODE     0x02     /* machine needs acpi_sleep=s3_mode */
> +#define VBE_SAVE    0x04     /* machine needs "vbetool save / restore" */
> +#define VBE_POST    0x08     /* machine needs "vbetool post" */
> +#define RADEON_OFF  0x10     /* machine needs "radeontool light off" */
> +#define UNSURE      0x20     /* unverified entries from acpi-support 0.59 */
> +#define NOFB        0x40     /* must not use a frame buffer */
> +#define VBE_MODE    0x80     /* machine needs "vbetool vbemode get / set" */
> +#define PCI_SAVE   0x100     /* we need to save the VGA PCI registers */
> +
> +#include "whitelist.c"
> +
> +void identify_machine(void)
> +{
> +     static int dmi_done = 0;
> +
> +     if (!dmi_done) {
> +             dmi_scan();
> +             dmi_done = 1;
> +     }
> +
> +     printf("This machine can be identified by:\n");
> +     printf("    sys_vendor   = \"%s\"\n"
> +            "    sys_product  = \"%s\"\n"
> +            "    sys_version  = \"%s\"\n"
> +            "    bios_version = \"%s\"\n",
> +            sys_vendor, sys_product, sys_version, bios_version);
> +     printf("See http://en.opensuse.org/S2ram for details.\n"
> +            "\n"
> +            "If you report a problem, please include the complete output "
> +            "above.\n");
> +}
> +
> +static void machine_known(int i)
> +{
> +     if (i < 0) {
> +             printf("Internal error: machine_known, i<0. Please report.\n");
> +             return;
> +     }
> +
> +     printf("Machine matched entry %d:\n"
> +            "    sys_vendor   = '%s'\n"
> +            "    sys_product  = '%s'\n"
> +            "    sys_version  = '%s'\n"
> +            "    bios_version = '%s'\n", i,
> +            whitelist[i].sys_vendor, whitelist[i].sys_product,
> +            whitelist[i].sys_version, whitelist[i].bios_version);
> +     printf("Fixes: 0x%x  %s%s%s%s%s%s%s%s\n", flags,
> +            (flags & VBE_SAVE) ? "VBE_SAVE " : "",
> +            (flags & VBE_POST) ? "VBE_POST " : "",
> +            (flags & VBE_MODE) ? "VBE_MODE " : "",
> +            (flags & RADEON_OFF) ? "RADEON_OFF " : "",
> +            (flags & S3_BIOS) ? "S3_BIOS " : "",
> +            (flags & S3_MODE) ? "S3_MODE " : "",
> +            (flags & NOFB) ? "NOFB " : "",
> +            (flags & PCI_SAVE) ? "PCI_SAVE " : "");
> +     if (flags & UNSURE)
> +             printf("Machine is in the whitelist but perhaps using "
> +                    "vbetool unnecessarily.\n"
> +                    "Please try to find minimal options.\n\n");
> +     /* in case of a bugreport we might need to find a better match than
> +      * the one we already have (additional BIOS version e.g)...
> +      */
> +     identify_machine();
> +}
> +
> +static int set_acpi_video_mode(int mode)
> +{
> +     FILE *f = fopen("/proc/sys/kernel/acpi_video_flags", "w");
> +     if (!f) {
> +             printf("/proc/sys/kernel/acpi_video_flags does not exist; you 
> need a kernel >=2.6.16.\n");
> +             return S2RAM_FAIL;
> +     }
> +     fprintf(f, "%d", mode);
> +     fflush(f);
> +     fclose(f);
> +     return S2RAM_OK;
> +}
> +
> +static int match(const char *t, const char *s)
> +{
> +     int len = strlen(s);
> +     /* empty string matches always */
> +     if (len == 0)
> +             return 1;
> +
> +     if (s[len-1] == '*') {
> +             len--;
> +             return !strncmp(t, s, len);
> +     } else {
> +             return !strcmp(t,s);
> +     }
> +}
> +
> +static int machine_match(void)
> +{
> +     int i;
> +     /* sys_vendor = NULL terminates the whitelist array */
> +     for (i = 0; whitelist[i].sys_vendor; i++) {
> +             if (match(sys_vendor,   whitelist[i].sys_vendor)  &&
> +                 match(sys_product,  whitelist[i].sys_product) &&
> +                 match(sys_version,  whitelist[i].sys_version) &&
> +                 match(bios_version, whitelist[i].bios_version)) {
> +                     return i;
> +             }
> +     }
> +     return -1;
> +}
> +
> +static int s2ram_check(int id)
> +{
> +     int ret = S2RAM_OK;
> +
> +     if (id < 0) {
> +             ret = S2RAM_UNKNOWN;
> +     } else {
> +             flags = whitelist[id].flags;
> +             if ((flags & NOFB) && is_framebuffer())
> +                     ret = S2RAM_NOFB;
> +     }
> +
> +     return ret;
> +}
> +
> +static int find_vga(void)
> +{
> +     struct pci_dev *dev;
> +     unsigned int class;
> +
> +     pci_scan_bus(pacc);     /* We want to get the list of devices */
> +
> +     for (dev=pacc->devices; dev; dev=dev->next) {
> +             pci_fill_info(dev, PCI_FILL_IDENT);
> +             class = pci_read_word(dev, PCI_CLASS_DEVICE);
> +             if (class == 0x300)
> +                     break;
> +     }
> +
> +     if (!dev)
> +             return 0;
> +
> +     memcpy(&vga_dev, dev, sizeof(*dev));
> +     vga_dev.next = NULL;
> +
> +     return 1;
> +}
> +
> +static void save_vga_pci(void)
> +{
> +     pci_read_block(&vga_dev, 0, vga_pci_state, 256);
> +}
> +
> +static void restore_vga_pci(void)
> +{
> +     pci_write_block(&vga_dev, 0, vga_pci_state, 256);
> +}
> +
> +/* warning: we have to be on a text console when calling this */
> +int s2ram_hacks(void)
> +{
> +     int ret = 0;
> +
> +     /* 0 means: don't touch what was set on kernel commandline */
> +     if (flags & (S3_BIOS | S3_MODE))
> +             ret = set_acpi_video_mode(flags & (S3_BIOS | S3_MODE));
> +
> +     if (ret)
> +             return ret;
> +
> +     if (flags & VBE_SAVE) {
> +             int size;
> +             vbetool_init();
> +             printf("Calling save_state\n");
> +             vbe_buffer = __save_state(&size);
> +     }
> +     if (flags & VBE_MODE) {
> +             vbetool_init();
> +             printf("Calling get_mode\n");
> +             vbe_mode = __get_mode();
> +     }
> +     if (flags & RADEON_OFF) {
> +             map_radeon_cntl_mem();
> +             printf("Calling radeon_cmd_light(0)\n");
> +             radeon_cmd_light(0);
> +     }
> +     if (flags & PCI_SAVE) {
> +             pacc = pci_alloc();     /* Get the pci_access structure */
> +             pci_init(pacc);         /* Initialize the PCI library */
> +
> +             if (find_vga()) {
> +                     printf("saving PCI config of device %02x:%02x.%d\n",
> +                             vga_dev.bus, vga_dev.dev, vga_dev.func);
> +                     save_vga_pci();
> +             } else
> +                     /* pci_save requested, no VGA device found => abort */
> +                     return 1;
> +     }
> +
> +     return 0;
> +}
> +
> +int s2ram_is_supported(void)
> +{
> +     int ret = 0, id;
> +
> +     if (flags && !force) {
> +             printf("acpi_sleep, vbe_save, vbe_post, radeontool and pci_save"
> +                     " parameter must be used with --force\n\n");
> +             return EINVAL;
> +     }
> +
> +     if (!force) {
> +             dmi_scan();
> +             id = machine_match();
> +             ret = s2ram_check(id);
> +     } 
> +
> +     return ret;
> +}
> +
> +void s2ram_resume(void)
> +{
> +     if (flags & PCI_SAVE) {
> +             printf("restoring PCI config of device %02x:%02x.%d\n",
> +                     vga_dev.bus, vga_dev.dev, vga_dev.func);
> +             restore_vga_pci();
> +
> +             pci_cleanup(pacc);
> +     }
> +     // FIXME: can we call vbetool_init() multiple times without cleaning up?
> +     if (flags & VBE_POST) {
> +             vbetool_init();
> +             printf("Calling do_post\n");
> +             do_post();
> +     }
> +     if (vbe_buffer) {
> +             vbetool_init();
> +             printf("Calling restore_state_from\n");
> +             restore_state_from(vbe_buffer);
> +     }
> +     if (vbe_mode >= 0) {
> +             vbetool_init();
> +             printf("Calling set_vbe_mode\n");
> +             do_set_mode(vbe_mode, 0);
> +     }
> +     if (flags & RADEON_OFF) {
> +             printf("Calling radeon_cmd_light(1)\n");
> +             radeon_cmd_light(1);
> +     }
> +}
> +
> +void s2ram_add_flag(int opt, const char *opt_arg)
> +{
> +     /* The characters are the `deprecated' short options. They will not
> +      * clash with the new labels untill we reach quirk 65... */
> +     switch (opt) {
> +             case 1:
> +             case 'f':
> +                     force = 1;
> +                     break;
> +             case 2:
> +             case 's':
> +                     flags |= VBE_SAVE;
> +                     break;
> +             case 3:
> +             case 'p':
> +                     flags |= VBE_POST;
> +                     break;
> +             case 4:
> +             case 'm':
> +                     flags |= VBE_MODE;
> +                     break;
> +             case 5:
> +             case 'r':
> +                     flags |= RADEON_OFF;
> +                     break;
> +             case 6:
> +             case 'v':
> +                     flags |= PCI_SAVE;
> +                     break;
> +             case 7:
> +             case 'a':
> +                     flags |= (atoi(optarg) & (S3_BIOS | S3_MODE));
> +                     break;
> +
> +     }
> +}
> +
> 
> 
> Luca - oh, did I mentioned that CVS sucks?

-- 
(english) http://www.livejournal.com/~pavelmachek
(cesky, pictures) 
http://atrey.karlin.mff.cuni.cz/~pavel/picture/horses/blog.html

-------------------------------------------------------------------------
Take Surveys. Earn Cash. Influence the Future of IT
Join SourceForge.net's Techsay panel and you'll get the chance to share your
opinions on IT & business topics through brief surveys-and earn cash
http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
_______________________________________________
Suspend-devel mailing list
Suspend-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/suspend-devel

Reply via email to