Merge ../linux-2.6-watchdog-mm
[linux-drm-fsl-dcu.git] / arch / powerpc / platforms / iseries / setup.c
index 7f1953066ff8f7ae2f26d35a1511feeac24b1012..6f73469fd3b0c64b1a753003af5e3a93a1fef072 100644 (file)
@@ -649,15 +649,21 @@ static void iseries_dedicated_idle(void)
 void __init iSeries_init_IRQ(void) { }
 #endif
 
+/*
+ * iSeries has no legacy IO, anything calling this function has to
+ * fail or bad things will happen
+ */
+static int iseries_check_legacy_ioport(unsigned int baseport)
+{
+       return -ENODEV;
+}
+
 static int __init iseries_probe(void)
 {
        unsigned long root = of_get_flat_dt_root();
        if (!of_flat_dt_is_compatible(root, "IBM,iSeries"))
                return 0;
 
-       powerpc_firmware_features |= FW_FEATURE_ISERIES;
-       powerpc_firmware_features |= FW_FEATURE_LPAR;
-
        hpte_init_iSeries();
 
        return 1;
@@ -680,6 +686,7 @@ define_machine(iseries) {
        .calibrate_decr = generic_calibrate_decr,
        .progress       = iSeries_progress,
        .probe          = iseries_probe,
+       .check_legacy_ioport    = iseries_check_legacy_ioport,
        /* XXX Implement enable_pmcs for iSeries */
 };
 
@@ -687,6 +694,14 @@ void * __init iSeries_early_setup(void)
 {
        unsigned long phys_mem_size;
 
+       /* Identify CPU type. This is done again by the common code later
+        * on but calling this function multiple times is fine.
+        */
+       identify_cpu(0);
+
+       powerpc_firmware_features |= FW_FEATURE_ISERIES;
+       powerpc_firmware_features |= FW_FEATURE_LPAR;
+
        iSeries_fixup_klimit();
 
        /*