msm: pil-8960: Add support for loading tzapps images

Signed-off-by: Matt Wagantall <mattw@codeaurora.org>
Signed-off-by: Stephen Boyd <sboyd@codeaurora.org>
diff --git a/arch/arm/mach-msm/peripheral-reset-8960.c b/arch/arm/mach-msm/peripheral-reset-8960.c
index 51cd204..2c47ee0 100644
--- a/arch/arm/mach-msm/peripheral-reset-8960.c
+++ b/arch/arm/mach-msm/peripheral-reset-8960.c
@@ -618,6 +618,22 @@
 	return pas_shutdown(PAS_DSPS);
 }
 
+static int init_image_tzapps(struct pil_device *pil, const u8 *metadata,
+			     size_t size)
+{
+	return pas_init_image(PAS_TZAPPS, metadata, size);
+}
+
+static int reset_tzapps(struct pil_device *pil)
+{
+	return pas_auth_and_reset(PAS_TZAPPS);
+}
+
+static int shutdown_tzapps(struct pil_device *pil)
+{
+	return pas_shutdown(PAS_TZAPPS);
+}
+
 static struct pil_reset_ops pil_modem_fw_q6_ops = {
 	.init_image = init_image_modem_fw_q6_untrusted,
 	.verify_blob = verify_blob,
@@ -653,6 +669,13 @@
 	.shutdown = shutdown_dsps_untrusted,
 };
 
+struct pil_reset_ops pil_tzapps_ops = {
+	.init_image = init_image_tzapps,
+	.verify_blob = verify_blob,
+	.auth_and_reset = reset_tzapps,
+	.shutdown = shutdown_tzapps,
+};
+
 static struct pil_device pil_lpass_q6 = {
 	.name = "q6",
 	.pdev = {
@@ -700,6 +723,15 @@
 	.ops = &pil_dsps_ops,
 };
 
+static struct pil_device pil_tzapps = {
+	.name = "tzapps",
+	.pdev = {
+		.name = "pil_tzapps",
+		.id = -1,
+	},
+	.ops = &pil_tzapps_ops,
+};
+
 static int __init q6_reset_init(struct q6_data *q6)
 {
 	int err;
@@ -794,6 +826,7 @@
 	msm_pil_add_device(&pil_modem_sw_q6);
 
 	msm_pil_add_device(&pil_dsps);
+	msm_pil_add_device(&pil_tzapps);
 
 	msm_riva_base = ioremap(MSM_RIVA_PHYS, SZ_256);
 	if (!msm_riva_base)