int bank;
        int offset;
 
-       if (reg >= 0x30) {
+       if (reg >= 0x54) {
                /*
-                * Reserved block between 14h and 2Fh does not align on
-                * expected bank boundaries like other devices.
+                * Handle lack of reserved registers after output port
+                * configuration register to form a bank.
                 */
-               int temp = reg - 0x30;
+               int temp = reg - 0x54;
 
                bank = temp / NBANK(chip);
                offset = temp - (bank * NBANK(chip));
-               bank += 8;
-       } else if (reg >= 0x54) {
+               bank += 16;
+       } else if (reg >= 0x30) {
                /*
-                * Handle lack of reserved registers after output port
-                * configuration register to form a bank.
+                * Reserved block between 14h and 2Fh does not align on
+                * expected bank boundaries like other devices.
                 */
-               int temp = reg - 0x54;
+               int temp = reg - 0x30;
 
                bank = temp / NBANK(chip);
                offset = temp - (bank * NBANK(chip));
-               bank += 16;
+               bank += 8;
        } else {
                bank = reg / NBANK(chip);
                offset = reg - (bank * NBANK(chip));