aboutsummaryrefslogtreecommitdiffstats
path: root/plat
diff options
context:
space:
mode:
authorAntonio Niño Díaz <antonio.ninodiaz@arm.com>2018-11-01 12:45:22 +0100
committerGitHub <noreply@github.com>2018-11-01 12:45:22 +0100
commit6f2ad3a9fc7333347da2526d9c1807a372228355 (patch)
tree3016495686e131873d02d42fca67c2386b8d3f3d /plat
parenteb47f14d73b58c4959205c6b4afcbbd1834ccc66 (diff)
parente6a90288c39a5d3f145bc0b04cfd7b80a7305fe1 (diff)
downloadplatform_external_arm-trusted-firmware-6f2ad3a9fc7333347da2526d9c1807a372228355.tar.gz
platform_external_arm-trusted-firmware-6f2ad3a9fc7333347da2526d9c1807a372228355.tar.bz2
platform_external_arm-trusted-firmware-6f2ad3a9fc7333347da2526d9c1807a372228355.zip
Merge pull request #1656 from masahir0y/uniphier
uniphier: clean-up and improve SCP handling code
Diffstat (limited to 'plat')
-rw-r--r--plat/socionext/uniphier/uniphier.h1
-rw-r--r--plat/socionext/uniphier/uniphier_bl2_setup.c10
-rw-r--r--plat/socionext/uniphier/uniphier_io_storage.c18
-rw-r--r--plat/socionext/uniphier/uniphier_scp.c6
4 files changed, 6 insertions, 29 deletions
diff --git a/plat/socionext/uniphier/uniphier.h b/plat/socionext/uniphier/uniphier.h
index 7ff146415..89ed36287 100644
--- a/plat/socionext/uniphier/uniphier.h
+++ b/plat/socionext/uniphier/uniphier.h
@@ -41,7 +41,6 @@ int uniphier_nand_init(uintptr_t *block_dev_spec);
int uniphier_usb_init(unsigned int soc, uintptr_t *block_dev_spec);
int uniphier_io_setup(unsigned int soc);
-int uniphier_check_image(unsigned int image_id);
struct image_info;
struct image_info *uniphier_get_image_info(unsigned int image_id);
diff --git a/plat/socionext/uniphier/uniphier_bl2_setup.c b/plat/socionext/uniphier/uniphier_bl2_setup.c
index f7ae42646..fb7997c89 100644
--- a/plat/socionext/uniphier/uniphier_bl2_setup.c
+++ b/plat/socionext/uniphier/uniphier_bl2_setup.c
@@ -88,16 +88,6 @@ void bl2_el3_plat_arch_setup(void)
break;
}
- if (!skip_scp) {
- ret = uniphier_check_image(SCP_BL2_IMAGE_ID);
- if (ret) {
- WARN("SCP_BL2 image not found. SCP_BL2 load will be skipped.\n");
- WARN("You must setup SCP by other means.\n");
- skip_scp = 1;
- uniphier_bl2_kick_scp = 0;
- }
- }
-
if (skip_scp) {
struct image_info *image_info;
diff --git a/plat/socionext/uniphier/uniphier_io_storage.c b/plat/socionext/uniphier/uniphier_io_storage.c
index 1fd835b54..5d841ac00 100644
--- a/plat/socionext/uniphier/uniphier_io_storage.c
+++ b/plat/socionext/uniphier/uniphier_io_storage.c
@@ -335,21 +335,3 @@ int plat_get_image_source(unsigned int image_id, uintptr_t *dev_handle,
return io_dev_init(*dev_handle, init_params);
}
-
-int uniphier_check_image(unsigned int image_id)
-{
- uintptr_t dev_handle, image_spec, image_handle;
- int ret;
-
- ret = plat_get_image_source(image_id, &dev_handle, &image_spec);
- if (ret)
- return ret;
-
- ret = io_open(dev_handle, image_spec, &image_handle);
- if (ret)
- return ret;
-
- io_close(image_handle);
-
- return 0;
-}
diff --git a/plat/socionext/uniphier/uniphier_scp.c b/plat/socionext/uniphier/uniphier_scp.c
index 9a921c4a9..58eb72eff 100644
--- a/plat/socionext/uniphier/uniphier_scp.c
+++ b/plat/socionext/uniphier/uniphier_scp.c
@@ -12,7 +12,9 @@
#define UNIPHIER_ROM_RSV3 0x5980120c
#define UNIPHIER_STMBE2COM 0x5f800030
+#define UNIPHIER_STMTOBEIRQ 0x5f800060
#define UNIPHIER_BETOSTMIRQ0PT 0x5f800070
+#define UNIPHIER_BEIRQCLRPT 0x5f800072
#define UNIPHIER_SCP_READY_MAGIC 0x0000b6a5
@@ -59,6 +61,10 @@ static void uniphier_scp_send_packet(const uint8_t *packet, int packet_len)
}
mmio_write_8(UNIPHIER_BETOSTMIRQ0PT, 0x55);
+
+ while (!(mmio_read_32(UNIPHIER_STMTOBEIRQ) & BIT(1)))
+ ;
+ mmio_write_8(UNIPHIER_BEIRQCLRPT, BIT(1) | BIT(0));
}
static void uniphier_scp_send_cmd(const uint8_t *cmd, int cmd_len)