diff --git a/plat/juno/bl1_plat_setup.c b/plat/juno/bl1_plat_setup.c
index 7284521f8ebee14ae4fed6374fb2a057c100b999..3e97a8cd8a1e2678a7a1db0648ac8990f0e65cc5 100644
--- a/plat/juno/bl1_plat_setup.c
+++ b/plat/juno/bl1_plat_setup.c
@@ -174,6 +174,18 @@ static void init_tzc400(void)
 		);
 }
 
+#define PCIE_SECURE_REG		0x3000
+#define PCIE_SEC_ACCESS_MASK	((1 << 0) | (1 << 1)) /* REG and MEM access bits */
+
+static void init_pcie(void)
+{
+	/*
+	 * PCIE Root Complex Security settings to enable non-secure
+	 * access to config registers.
+	 */
+	mmio_write_32(PCIE_CONTROL_BASE + PCIE_SECURE_REG, PCIE_SEC_ACCESS_MASK);
+}
+
 
 /*******************************************************************************
  * Function which will perform any remaining platform-specific setup that can
@@ -183,6 +195,7 @@ void bl1_platform_setup(void)
 {
 	init_nic400();
 	init_tzc400();
+	init_pcie();
 
 	/* Initialise the IO layer and register platform IO devices */
 	io_setup();
diff --git a/plat/juno/platform.h b/plat/juno/platform.h
index d032a12bc4d19f03702de0ae10dc034cbe257859..1a572525ee99bfd0e3a7ad17aa4dd7693dc185a0 100644
--- a/plat/juno/platform.h
+++ b/plat/juno/platform.h
@@ -119,6 +119,7 @@
 #define DEVICE1_BASE		0x40000000
 #define DEVICE1_SIZE		0x40000000
 #define SOC_NIC400_BASE		0x7fd00000
+#define PCIE_CONTROL_BASE	0x7ff20000
 
 #define DRAM_BASE		0x80000000
 #define DRAM_SIZE		0x80000000