#define TQMX86_REG_IO_EXT_INT_MASK             0x3
 #define TQMX86_REG_IO_EXT_INT_GPIO_SHIFT       4
 
-#define TQMX86_REG_I2C_DETECT  0x47
+#define TQMX86_REG_I2C_DETECT  0x1a7
 #define TQMX86_REG_I2C_DETECT_SOFT             0xa5
-#define TQMX86_REG_I2C_INT_EN  0x49
 
 static uint gpio_irq;
 module_param(gpio_irq, uint, 0);
                 "Found %s - Board ID %d, PCB Revision %d, PLD Revision %d\n",
                 board_name, board_id, rev >> 4, rev & 0xf);
 
-       i2c_det = ioread8(io_base + TQMX86_REG_I2C_DETECT);
+       /*
+        * The I2C_DETECT register is in the range assigned to the I2C driver
+        * later, so we don't extend TQMX86_IOSIZE. Use inb() for this one-off
+        * access instead of ioport_map + unmap.
+        */
+       i2c_det = inb(TQMX86_REG_I2C_DETECT);
 
        if (gpio_irq_cfg) {
                io_ext_int_val =