diff --git a/core/modules/field_ui/field_ui.admin.inc b/core/modules/field_ui/field_ui.admin.inc
index 566959b..cb12151 100644
--- a/core/modules/field_ui/field_ui.admin.inc
+++ b/core/modules/field_ui/field_ui.admin.inc
@@ -519,6 +519,17 @@ function field_ui_field_settings_form($form, &$form_state, $instance) {
     $form['field']['#prefix'] = '<div class="messages error">' . t('There is data for this field in the database. The field settings can no longer be changed.') . '</div>' . $form['field']['#prefix'];
   }
 
+  // Add settings provided by the field module. The field module is
+  // responsible for not returning settings that cannot be changed if
+  // the field already has data.
+  $form['field']['settings'] = array(
+    '#weight' => -10,
+  );
+  $additions = module_invoke($field['module'], 'field_settings_form', $field, $instance, $has_data);
+  if (is_array($additions)) {
+    $form['field']['settings'] += $additions;
+  }
+
   // Build the configurable field values.
   $cardinality = $field['cardinality'];
   $form['field']['container'] = array(
@@ -560,17 +571,6 @@ function field_ui_field_settings_form($form, &$form_state, $instance) {
   $form['field']['module'] = array('#type' => 'value', '#value' => $field['module']);
   $form['field']['active'] = array('#type' => 'value', '#value' => $field['active']);
 
-  // Add settings provided by the field module. The field module is
-  // responsible for not returning settings that cannot be changed if
-  // the field already has data.
-  $form['field']['settings'] = array(
-    '#weight' => 10,
-  );
-  $additions = module_invoke($field['module'], 'field_settings_form', $field, $instance, $has_data);
-  if (is_array($additions)) {
-    $form['field']['settings'] += $additions;
-  }
-
   $form['actions'] = array('#type' => 'actions');
   $form['actions']['submit'] = array('#type' => 'submit', '#value' => t('Save field settings'));
   return $form;
