]> git.karo-electronics.de Git - mv-sheeva.git/blobdiff - drivers/auxdisplay/cfag12864b.c
[PATCH] cfag12864b: fix crash when built-in and no parport present
[mv-sheeva.git] / drivers / auxdisplay / cfag12864b.c
index 889583dfc1a6652be25486d394d80f9c16d44c8e..cb44cb4f6a47bf25c38a37f0a15832517f2d0c26 100644 (file)
@@ -311,6 +311,17 @@ EXPORT_SYMBOL_GPL(cfag12864b_enable);
 EXPORT_SYMBOL_GPL(cfag12864b_disable);
 EXPORT_SYMBOL_GPL(cfag12864b_isenabled);
 
+/*
+ * Is the module inited?
+ */
+
+static unsigned char cfag12864b_inited;
+unsigned char cfag12864b_isinited(void)
+{
+       return cfag12864b_inited;
+}
+EXPORT_SYMBOL_GPL(cfag12864b_isinited);
+
 /*
  * Module Init & Exit
  */
@@ -319,6 +330,13 @@ static int __init cfag12864b_init(void)
 {
        int ret = -EINVAL;
 
+       /* ks0108_init() must be called first */
+       if (!ks0108_isinited()) {
+               printk(KERN_ERR CFAG12864B_NAME ": ERROR: "
+                       "ks0108 is not initialized\n");
+               goto none;
+       }
+
        if (PAGE_SIZE < CFAG12864B_SIZE) {
                printk(KERN_ERR CFAG12864B_NAME ": ERROR: "
                        "page size (%i) < cfag12864b size (%i)\n",
@@ -354,6 +372,7 @@ static int __init cfag12864b_init(void)
        cfag12864b_clear();
        cfag12864b_on();
 
+       cfag12864b_inited = 1;
        return 0;
 
 cachealloced: