diff --git a/include/lib/gpt/gpt.h b/include/lib/gpt/gpt.h
new file mode 100644
index 0000000..89d3017
--- /dev/null
+++ b/include/lib/gpt/gpt.h
@@ -0,0 +1,86 @@
+/*
+ * Copyright (c) 2021, Arm Limited. All rights reserved.
+ *
+ * SPDX-License-Identifier: BSD-3-Clause
+ */
+
+#ifndef GPT_H
+#define GPT_H
+
+#include <stdint.h>
+
+#include <arch.h>
+
+#include "gpt_defs.h"
+
+#define GPT_DESC_ATTRS(_type, _gpi)		\
+	((((_type) & PAS_REG_DESC_TYPE_MASK)	\
+	  << PAS_REG_DESC_TYPE_SHIFT) |		\
+	(((_gpi) & PAS_REG_GPI_MASK)		\
+	 << PAS_REG_GPI_SHIFT))
+
+/*
+ * Macro to create a GPT entry for this PAS range either as a L0 block
+ * descriptor or L1 table descriptor depending upon the size of the range.
+ */
+#define MAP_GPT_REGION(_pa, _sz, _gpi)					\
+	{								\
+		.base_pa = (_pa),					\
+		.size = (_sz),						\
+		.attrs = GPT_DESC_ATTRS(PAS_REG_DESC_TYPE_ANY, (_gpi)),	\
+	}
+
+/*
+ * Special macro to create a L1 table descriptor at L0 for a 1GB region as
+ * opposed to creating a block mapping by default.
+ */
+#define MAP_GPT_REGION_TBL(_pa, _sz, _gpi)				\
+	{								\
+		.base_pa = (_pa),					\
+		.size = (_sz),						\
+		.attrs = GPT_DESC_ATTRS(PAS_REG_DESC_TYPE_TBL, (_gpi)),	\
+	}
+
+/*
+ * Structure for specifying a Granule range and its properties
+ */
+typedef struct pas_region {
+	unsigned long long	base_pa;	/**< Base address for PAS. */
+	size_t			size;		/**< Size of the PAS. */
+	unsigned int		attrs;		/**< PAS GPI and entry type. */
+} pas_region_t;
+
+/*
+ * Structure to initialise the Granule Protection Tables.
+ */
+typedef struct gpt_init_params {
+	unsigned int pgs;	/**< Address Width of Phisical Granule Size. */
+	unsigned int pps;	/**< Protected Physical Address Size.	     */
+	unsigned int l0gptsz;	/**< Granule size on L0 table entry.	     */
+	pas_region_t *pas_regions; /**< PAS regions to protect.		     */
+	unsigned int pas_count;	/**< Number of PAS regions to initialise.    */
+	uintptr_t l0_mem_base;	/**< L0 Table base address.		     */
+	size_t l0_mem_size;	/**< Size of memory reserved for L0 tables.  */
+	uintptr_t l1_mem_base;	/**< L1 Table base address.		     */
+	size_t l1_mem_size;	/**< Size of memory reserved for L1 tables.  */
+} gpt_init_params_t;
+
+/** @brief Initialise the Granule Protection tables.
+ */
+int gpt_init(gpt_init_params_t *params);
+
+/** @brief Enable the Granule Protection Checks.
+ */
+void gpt_enable(void);
+
+/** @brief Disable the Granule Protection Checks.
+ */
+void gpt_disable(void);
+
+/** @brief Transition a granule between security states.
+ */
+int gpt_transition_pas(uint64_t pa,
+			unsigned int src_sec_state,
+			unsigned int target_pas);
+
+#endif /* GPT_H */
