done:
        /* invalidate CIS cache on failure */
        if (!dev_ok || !ident_ok || !count) {
-               mutex_lock(&s->ops_mutex);
-               destroy_cis_cache(s);
-               mutex_unlock(&s->ops_mutex);
-               ret = -EIO;
+#if defined(CONFIG_MTD_PCMCIA_ANONYMOUS)
+               /* Set up as an anonymous card. If we don't have anonymous
+                  memory support then just error the card as there is no
+                  point trying to second guess.
+
+                  Note: some cards have just a device entry, it may be
+                  worth extending support to cover these in future */
+               if (!dev_ok || !ident_ok) {
+                       dev_info(&s->dev, "no CIS, assuming an anonymous memory card.\n");
+                       pcmcia_replace_cis(s, "\xFF", 1);
+                       count = 1;
+                       ret = 0;
+               } else
+#endif
+               {
+                       mutex_lock(&s->ops_mutex);
+                       destroy_cis_cache(s);
+                       mutex_unlock(&s->ops_mutex);
+                       ret = -EIO;
+               }
        }
 
        if (info)