diff --git a/plat/arm/board/sgi/sgi575/include/platform_def.h b/plat/arm/board/sgi/sgi575/include/platform_def.h
new file mode 100644
index 0000000..3bceec3
--- /dev/null
+++ b/plat/arm/board/sgi/sgi575/include/platform_def.h
@@ -0,0 +1,16 @@
+/*
+ * Copyright (c) 2018, Arm Limited. All rights reserved.
+ *
+ * SPDX-License-Identifier: BSD-3-Clause
+ */
+
+#ifndef PLATFORM_DEF_H
+#define PLATFORM_DEF_H
+
+#include <sgi_base_platform_def.h>
+
+#define SGI_CLUSTER_COUNT		2
+#define SGI_MAX_CPUS_PER_CLUSTER	4
+#define SGI_MAX_PE_PER_CPU		1
+
+#endif /* PLATFORM_DEF_H */
diff --git a/plat/arm/board/sgi/sgi575/platform.mk b/plat/arm/board/sgi/sgi575/platform.mk
new file mode 100644
index 0000000..b5eb8b4
--- /dev/null
+++ b/plat/arm/board/sgi/sgi575/platform.mk
@@ -0,0 +1,13 @@
+#
+# Copyright (c) 2018, Arm Limited. All rights reserved.
+#
+# SPDX-License-Identifier: BSD-3-Clause
+#
+
+include plat/arm/sgi/common/sgi_common.mk
+
+PLAT_INCLUDES		+=	-Iplat/arm/board/sgi/sgi575/include/
+
+PLAT_SOURCES		+=	plat/arm/board/sgi/sgi575/sgi575_topology.c
+
+PLAT_TESTS_SKIP_LIST	:=	plat/arm/board/sgi/sgi575/tests_to_skip.txt
diff --git a/plat/arm/board/sgi/sgi575/sgi575_topology.c b/plat/arm/board/sgi/sgi575/sgi575_topology.c
new file mode 100644
index 0000000..bda06d3
--- /dev/null
+++ b/plat/arm/board/sgi/sgi575/sgi575_topology.c
@@ -0,0 +1,58 @@
+/*
+ * Copyright (c) 2018, Arm Limited. All rights reserved.
+ *
+ * SPDX-License-Identifier: BSD-3-Clause
+ */
+
+#include <assert.h>
+#include <plat_topology.h>
+#include <tftf_lib.h>
+
+static const struct {
+	unsigned int cluster_id;
+	unsigned int cpu_id;
+} sgi575_cores[] = {
+	/* Cluster0: 4 cores*/
+	{ 0, 0 },
+	{ 0, 1 },
+	{ 0, 2 },
+	{ 0, 3 },
+	/* Cluster1: 4 cores */
+	{ 1, 0 },
+	{ 1, 1 },
+	{ 1, 2 },
+	{ 1, 3 },
+};
+
+/*
+ * The power domain tree descriptor. The cluster power domains are
+ * arranged so that when the PSCI generic code creates the power domain tree,
+ * the indices of the CPU power domain nodes it allocates match the linear
+ * indices returned by plat_core_pos_by_mpidr().
+ */
+const unsigned char sgi575_pd_tree_desc[] = {
+	/* Number of root nodes */
+	SGI_CLUSTER_COUNT,
+	/* Number of children for the 1st node */
+	SGI_MAX_CPUS_PER_CLUSTER,
+	/* Number of children for the 2nd node */
+	SGI_MAX_CPUS_PER_CLUSTER
+};
+
+const unsigned char *tftf_plat_get_pwr_domain_tree_desc(void)
+{
+	return sgi575_pd_tree_desc;
+}
+
+uint64_t tftf_plat_get_mpidr(unsigned int core_pos)
+{
+	unsigned int mpid;
+
+	assert(core_pos < PLATFORM_CORE_COUNT);
+
+	mpid = make_mpid(
+			sgi575_cores[core_pos].cluster_id,
+			sgi575_cores[core_pos].cpu_id);
+
+	return mpid;
+}
diff --git a/plat/arm/board/sgi/sgi575/tests_to_skip.txt b/plat/arm/board/sgi/sgi575/tests_to_skip.txt
new file mode 100644
index 0000000..802b5f7
--- /dev/null
+++ b/plat/arm/board/sgi/sgi575/tests_to_skip.txt
@@ -0,0 +1,9 @@
+#
+# Copyright (c) 2018, Arm Limited. All rights reserved.
+#
+# SPDX-License-Identifier: BSD-3-Clause
+#
+
+# System suspend is not supported as there are no wakeup sources in SGI-575 FVP
+PSCI STAT/Stats test cases after system suspend
+PSCI System Suspend Validation
