vserver 1.9.3
[linux-2.6.git] / arch / ppc / platforms / pmac_feature.c
index 493f4a2..24b2214 100644 (file)
@@ -1156,7 +1156,7 @@ core99_usb_enable(struct device_node* node, long param, long value)
                        (void)MACIO_IN32(KEYLARGO_FCR1);
                        mdelay(1);
                        LOCK(flags);
-                       MACIO_BIS(KEYLARGO_FCR0, KL1_USB2_CELL_ENABLE);
+                       MACIO_BIS(KEYLARGO_FCR1, KL1_USB2_CELL_ENABLE);
                }
                if (number < 4) {
                        reg = MACIO_IN32(KEYLARGO_FCR4);
@@ -1282,6 +1282,25 @@ core99_firewire_cable_power(struct device_node* node, long param, long value)
        return 0;
 }
 
+static long __pmac
+intrepid_aack_delay_enable(struct device_node* node, long param, long value)
+{
+       unsigned long flags;
+
+       if (uninorth_rev < 0xd2)
+               return -ENODEV;
+
+       LOCK(flags);
+       if (param)
+               UN_BIS(UNI_N_AACK_DELAY, UNI_N_AACK_DELAY_ENABLE);
+       else
+               UN_BIC(UNI_N_AACK_DELAY, UNI_N_AACK_DELAY_ENABLE);
+       UNLOCK(flags);
+
+       return 0;
+}
+
+
 #endif /* CONFIG_POWER4 */
 
 static long __pmac
@@ -1914,6 +1933,7 @@ static struct feature_table_entry intrepid_features[]  __pmacdata = {
        { PMAC_FTR_SLEEP_STATE,         core99_sleep_state },
        { PMAC_FTR_READ_GPIO,           core99_read_gpio },
        { PMAC_FTR_WRITE_GPIO,          core99_write_gpio },
+       { PMAC_FTR_AACK_DELAY_ENABLE,   intrepid_aack_delay_enable },
        { 0, NULL }
 };
 
@@ -2116,6 +2136,14 @@ static struct pmac_mb_def pmac_mb_defs[] __pmacdata = {
                PMAC_TYPE_UNKNOWN_INTREPID,     intrepid_features,
                PMAC_MB_HAS_FW_POWER | PMAC_MB_MOBILE,
        },
+       {       "PowerBook5,4",                 "PowerBook G4 15\"",
+               PMAC_TYPE_UNKNOWN_INTREPID,     intrepid_features,
+               PMAC_MB_HAS_FW_POWER | PMAC_MB_MOBILE,
+       },
+       {       "PowerBook5,5",                 "PowerBook G4 17\"",
+               PMAC_TYPE_UNKNOWN_INTREPID,     intrepid_features,
+               PMAC_MB_HAS_FW_POWER | PMAC_MB_MOBILE,
+       },
        {       "PowerBook6,1",                 "PowerBook G4 12\"",
                PMAC_TYPE_UNKNOWN_INTREPID,     intrepid_features,
                PMAC_MB_HAS_FW_POWER | PMAC_MB_MOBILE,
@@ -2128,6 +2156,10 @@ static struct pmac_mb_def pmac_mb_defs[] __pmacdata = {
                PMAC_TYPE_UNKNOWN_INTREPID,     intrepid_features,
                PMAC_MB_HAS_FW_POWER | PMAC_MB_MOBILE,
        },
+       {       "PowerBook6,4",                 "PowerBook G4 12\"",
+               PMAC_TYPE_UNKNOWN_INTREPID,     intrepid_features,
+               PMAC_MB_HAS_FW_POWER | PMAC_MB_MOBILE,
+       },
        {       "PowerBook6,5",                 "iBook G4",
                PMAC_TYPE_UNKNOWN_INTREPID,     intrepid_features,
                PMAC_MB_HAS_FW_POWER | PMAC_MB_MOBILE,
@@ -2633,7 +2665,7 @@ set_initial_features(void)
                        struct device_node *p = of_get_parent(ui2c);
                        if (p && !strcmp(p->name, "uni-n"))
                                break;
-                       ui2c = of_find_node_by_type(np, "i2c");
+                       ui2c = of_find_node_by_type(ui2c, "i2c");
                }
                if (ui2c == NULL)
                        break;