}
 }
 
-static void __init calgary_increase_split_completion_timeout(void __iomem *bbar,
-       unsigned char busnum)
+static void __init calgary_set_split_completion_timeout(void __iomem *bbar,
+       unsigned char busnum, unsigned long timeout)
 {
        u64 val64;
        void __iomem *target;
        /* zero out this PHB's timer bits */
        mask = ~(0xFUL << phb_shift);
        val64 &= mask;
-       val64 |= (CCR_2SEC_TIMEOUT << phb_shift);
+       val64 |= (timeout << phb_shift);
        writeq(cpu_to_be64(val64), target);
        readq(target); /* flush */
 }
         * http://bugzilla.kernel.org/show_bug.cgi?id=7180
         */
        if (busnum == 1)
-               calgary_increase_split_completion_timeout(bbar, busnum);
+               calgary_set_split_completion_timeout(bbar, busnum,
+                                                    CCR_2SEC_TIMEOUT);
 
        init_timer(&tbl->watchdog_timer);
        tbl->watchdog_timer.function = &calgary_watchdog;