}
 
        /*
-        * If we're mapping for MSI, set the MSI bit in the ATE
+        * If we're mapping for MSI, set the MSI bit in the ATE.  If it's a
+        * TIOCP based pci bus, we also need to set the PIO bit in the ATE.
         */
-       if (dma_flags & SN_DMA_MSI)
+       if (dma_flags & SN_DMA_MSI) {
                ate |= PCI32_ATE_MSI;
+               if (IS_TIOCP_SOFT(pcibus_info))
+                       ate |= PCI32_ATE_PIO;
+       }
 
        ate_write(pcibus_info, ate_index, ate_count, ate);
 
 
 #define IS_PCI_BRIDGE_ASIC(asic) (asic == PCIIO_ASIC_TYPE_PIC || \
                 asic == PCIIO_ASIC_TYPE_TIOCP)
 #define IS_PIC_SOFT(ps)     (ps->pbi_bridge_type == PCIBR_BRIDGETYPE_PIC)
+#define IS_TIOCP_SOFT(ps)   (ps->pbi_bridge_type == PCIBR_BRIDGETYPE_TIOCP)
 
 
 /*
  * Bridge PMU Address Transaltion Entry Attibutes
  */
 #define PCI32_ATE_V                     (0x1 << 0)
-#define PCI32_ATE_CO                    (0x1 << 1)
-#define PCI32_ATE_PREC                  (0x1 << 2)
+#define PCI32_ATE_CO                    (0x1 << 1)     /* PIC ASIC ONLY */
+#define PCI32_ATE_PIO                   (0x1 << 1)     /* TIOCP ASIC ONLY */
 #define PCI32_ATE_MSI                   (0x1 << 2)
 #define PCI32_ATE_PREF                  (0x1 << 3)
 #define PCI32_ATE_BAR                   (0x1 << 4)