diff --git a/res/values/config.xml b/res/values/config.xml
index 9a6e486..d34c481 100755
--- a/res/values/config.xml
+++ b/res/values/config.xml
@@ -473,4 +473,10 @@
 
     <!-- Authority of advanced device battery prediction -->
     <string name="config_battery_prediction_authority" translatable="false"></string>
+
+    <!-- Packages for overriding tile positions on the homepage -->
+    <string-array name="config_homepage_tile_packages" translatable="false"/>
+
+    <!-- Orders for overriding tile positions on the homepage -->
+    <integer-array name="config_homepage_tile_orders"/>
 </resources>
diff --git a/src/com/android/settings/dashboard/DashboardFeatureProviderImpl.java b/src/com/android/settings/dashboard/DashboardFeatureProviderImpl.java
index 0243b8a..9c00e4b 100644
--- a/src/com/android/settings/dashboard/DashboardFeatureProviderImpl.java
+++ b/src/com/android/settings/dashboard/DashboardFeatureProviderImpl.java
@@ -184,6 +184,9 @@
                 pref.setOrder(order + baseOrder);
             }
         }
+
+        overrideTilePosition(tile, pref);
+
         return outObservers.isEmpty() ? null : outObservers;
     }
 
@@ -457,4 +460,25 @@
         }
         return eligibleUsers;
     }
+
+    private void overrideTilePosition(Tile tile, Preference pref) {
+        if (FeatureFlagUtils.isEnabled(mContext, FeatureFlags.SILKY_HOME)
+                && TextUtils.equals(tile.getCategory(), CategoryKey.CATEGORY_HOMEPAGE)) {
+            final String[] homepageTilePackages = mContext.getResources().getStringArray(
+                    R.array.config_homepage_tile_packages);
+            final int[] homepageTileOrders = mContext.getResources().getIntArray(
+                    R.array.config_homepage_tile_orders);
+            if (homepageTilePackages.length == 0
+                    || homepageTilePackages.length != homepageTileOrders.length) {
+                return;
+            }
+
+            for (int i = 0; i < homepageTilePackages.length; i++) {
+                if (TextUtils.equals(tile.getPackageName(), homepageTilePackages[i])) {
+                    pref.setOrder(homepageTileOrders[i]);
+                    return;
+                }
+            }
+        }
+    }
 }
diff --git a/tests/robotests/res/values-mcc999/config.xml b/tests/robotests/res/values-mcc999/config.xml
index b1d4be9..af02d45 100644
--- a/tests/robotests/res/values-mcc999/config.xml
+++ b/tests/robotests/res/values-mcc999/config.xml
@@ -100,4 +100,14 @@
 
     <!-- Uri to query non-public Slice Uris. -->
     <string name="config_non_public_slice_query_uri" translatable="false">content://com.android.settings.slices/test</string>
+
+    <!-- Packages for overriding tile positions on the homepage -->
+    <string-array name="config_homepage_tile_packages" translatable="false">
+        <item>com.android.settings</item>
+    </string-array>
+
+    <!-- Orders for overriding tile positions on the homepage -->
+    <integer-array name="config_homepage_tile_orders">
+        <item>100</item>
+    </integer-array>
 </resources>
diff --git a/tests/robotests/src/com/android/settings/dashboard/DashboardFeatureProviderImplTest.java b/tests/robotests/src/com/android/settings/dashboard/DashboardFeatureProviderImplTest.java
index 36bc376..a0024c0 100644
--- a/tests/robotests/src/com/android/settings/dashboard/DashboardFeatureProviderImplTest.java
+++ b/tests/robotests/src/com/android/settings/dashboard/DashboardFeatureProviderImplTest.java
@@ -707,4 +707,18 @@
         assertThat(preference.getSummary()).isEqualTo(
                 mContext.getText(R.string.about_settings_summary));
     }
+
+    @Test
+    @Config(qualifiers = "mcc999")
+    public void bindPreference_specificHomepageTile_shouldOverridePosition() {
+        FeatureFlagUtils.setEnabled(mContext, FeatureFlags.SILKY_HOME, true);
+        final Preference preference = new Preference(RuntimeEnvironment.application);
+        final Tile tile = new ActivityTile(mActivityInfo, CategoryKey.CATEGORY_HOMEPAGE);
+
+        mImpl.bindPreferenceToTileAndGetObservers(mActivity, mForceRoundedIcon,
+                MetricsEvent.VIEW_UNKNOWN, preference, tile, null /*key */,
+                Preference.DEFAULT_ORDER);
+
+        assertThat(preference.getOrder()).isEqualTo(100);
+    }
 }
