* region already (FIXME) */
        request_region(0x3c0, 32, "vesafb");
 
+       if (mtrr == 3) {
 #ifdef CONFIG_MTRR
-       if (mtrr) {
                unsigned int temp_size = size_total;
-               unsigned int type = 0;
+               int rc;
 
-               switch (mtrr) {
-               case 1:
-                       type = MTRR_TYPE_UNCACHABLE;
-                       break;
-               case 2:
-                       type = MTRR_TYPE_WRBACK;
-                       break;
-               case 3:
-                       type = MTRR_TYPE_WRCOMB;
-                       break;
-               case 4:
-                       type = MTRR_TYPE_WRTHROUGH;
-                       break;
-               default:
-                       type = 0;
-                       break;
-               }
-
-               if (type) {
-                       int rc;
-
-                       /* Find the largest power-of-two */
-                       temp_size = roundup_pow_of_two(temp_size);
+               /* Find the largest power-of-two */
+               temp_size = roundup_pow_of_two(temp_size);
 
-                       /* Try and find a power of two to add */
-                       do {
-                               rc = mtrr_add(vesafb_fix.smem_start, temp_size,
-                                             type, 1);
-                               temp_size >>= 1;
-                       } while (temp_size >= PAGE_SIZE && rc == -EINVAL);
-               }
-       }
+               /* Try and find a power of two to add */
+               do {
+                       rc = mtrr_add(vesafb_fix.smem_start, temp_size,
+                                     MTRR_TYPE_WRCOMB, 1);
+                       temp_size >>= 1;
+               } while (temp_size >= PAGE_SIZE && rc == -EINVAL);
 #endif
-       
-       switch (mtrr) {
-       case 1: /* uncachable */
-               info->screen_base = ioremap_nocache(vesafb_fix.smem_start, vesafb_fix.smem_len);
-               break;
-       case 2: /* write-back */
-               info->screen_base = ioremap_cache(vesafb_fix.smem_start, vesafb_fix.smem_len);
-               break;
-       case 3: /* write-combining */
                info->screen_base = ioremap_wc(vesafb_fix.smem_start, vesafb_fix.smem_len);
-               break;
-       case 4: /* write-through */
-       default:
+       } else {
+#ifdef CONFIG_MTRR
+               if (mtrr && mtrr != 3)
+                       WARN_ONCE(1, "Only MTRR_TYPE_WRCOMB (3) make sense\n");
+#endif
                info->screen_base = ioremap(vesafb_fix.smem_start, vesafb_fix.smem_len);
-               break;
        }
+
        if (!info->screen_base) {
                printk(KERN_ERR
                       "vesafb: abort, cannot ioremap video memory 0x%x @ 0x%lx\n",