#define FW_FEATURE_OPAL                ASM_CONST(0x0000000010000000)
 #define FW_FEATURE_SET_MODE    ASM_CONST(0x0000000040000000)
 #define FW_FEATURE_BEST_ENERGY ASM_CONST(0x0000000080000000)
-#define FW_FEATURE_TYPE1_AFFINITY ASM_CONST(0x0000000100000000)
+#define FW_FEATURE_FORM1_AFFINITY ASM_CONST(0x0000000100000000)
 #define FW_FEATURE_PRRN                ASM_CONST(0x0000000200000000)
 #define FW_FEATURE_DRMEM_V2    ASM_CONST(0x0000000400000000)
 #define FW_FEATURE_DRC_INFO    ASM_CONST(0x0000000800000000)
                FW_FEATURE_SPLPAR | FW_FEATURE_LPAR |
                FW_FEATURE_CMO | FW_FEATURE_VPHN | FW_FEATURE_XCMO |
                FW_FEATURE_SET_MODE | FW_FEATURE_BEST_ENERGY |
-               FW_FEATURE_TYPE1_AFFINITY | FW_FEATURE_PRRN |
+               FW_FEATURE_FORM1_AFFINITY | FW_FEATURE_PRRN |
                FW_FEATURE_HPT_RESIZE | FW_FEATURE_DRMEM_V2 |
                FW_FEATURE_DRC_INFO | FW_FEATURE_BLOCK_REMOVE |
                FW_FEATURE_PAPR_SCM | FW_FEATURE_ULTRAVISOR |
 
 #define OV5_MSI                        0x0201  /* PCIe/MSI support */
 #define OV5_CMO                        0x0480  /* Cooperative Memory Overcommitment */
 #define OV5_XCMO               0x0440  /* Page Coalescing */
-#define OV5_TYPE1_AFFINITY     0x0580  /* Type 1 NUMA affinity */
+#define OV5_FORM1_AFFINITY     0x0580  /* FORM1 NUMA affinity */
 #define OV5_PRRN               0x0540  /* Platform Resource Reassignment */
 #define OV5_HP_EVT             0x0604  /* Hot Plug Event support */
 #define OV5_RESIZE_HPT         0x0601  /* Hash Page Table resizing */
 
 
 static int primary_domain_index;
 static int n_mem_addr_cells, n_mem_size_cells;
-static int form1_affinity;
+
+#define FORM0_AFFINITY 0
+#define FORM1_AFFINITY 1
+static int affinity_form;
 
 #define MAX_DISTANCE_REF_POINTS 4
 static int distance_ref_points_depth;
        int i;
        int distance = LOCAL_DISTANCE;
 
-       if (!form1_affinity)
+       if (affinity_form == FORM0_AFFINITY)
                return ((a == b) ? LOCAL_DISTANCE : REMOTE_DISTANCE);
 
        for (i = 0; i < distance_ref_points_depth; i++) {
 {
        int i;
 
-       if (!form1_affinity)
+       if (affinity_form != FORM1_AFFINITY)
                return;
 
        for (i = 0; i < distance_ref_points_depth; i++) {
        int index;
        struct device_node *root;
 
+       /*
+        * Check for which form of affinity.
+        */
+       if (firmware_has_feature(FW_FEATURE_OPAL)) {
+               affinity_form = FORM1_AFFINITY;
+       } else if (firmware_has_feature(FW_FEATURE_FORM1_AFFINITY)) {
+               dbg("Using form 1 affinity\n");
+               affinity_form = FORM1_AFFINITY;
+       } else
+               affinity_form = FORM0_AFFINITY;
+
        if (firmware_has_feature(FW_FEATURE_OPAL))
                root = of_find_node_by_path("/ibm,opal");
        else
        }
 
        distance_ref_points_depth /= sizeof(int);
-
-       if (firmware_has_feature(FW_FEATURE_OPAL) ||
-           firmware_has_feature(FW_FEATURE_TYPE1_AFFINITY)) {
-               dbg("Using form 1 affinity\n");
-               form1_affinity = 1;
-       }
-
-       if (form1_affinity) {
-               index = of_read_number(distance_ref_points, 1);
-       } else {
+       if (affinity_form == FORM0_AFFINITY) {
                if (distance_ref_points_depth < 2) {
                        printk(KERN_WARNING "NUMA: "
-                               "short ibm,associativity-reference-points\n");
+                              "short ibm,associativity-reference-points\n");
                        goto err;
                }
 
                index = of_read_number(&distance_ref_points[1], 1);
+       } else {
+               index = of_read_number(distance_ref_points, 1);
        }
 
        /*
 
 
 static __initdata struct vec5_fw_feature
 vec5_fw_features_table[] = {
-       {FW_FEATURE_TYPE1_AFFINITY,     OV5_TYPE1_AFFINITY},
+       {FW_FEATURE_FORM1_AFFINITY,     OV5_FORM1_AFFINITY},
        {FW_FEATURE_PRRN,               OV5_PRRN},
        {FW_FEATURE_DRMEM_V2,           OV5_DRMEM_V2},
        {FW_FEATURE_DRC_INFO,           OV5_DRC_INFO},