diff options
author | Antonio Niño Díaz <antonio.ninodiaz@arm.com> | 2018-11-01 12:45:22 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-11-01 12:45:22 +0100 |
commit | 6f2ad3a9fc7333347da2526d9c1807a372228355 (patch) | |
tree | 3016495686e131873d02d42fca67c2386b8d3f3d /plat | |
parent | eb47f14d73b58c4959205c6b4afcbbd1834ccc66 (diff) | |
parent | e6a90288c39a5d3f145bc0b04cfd7b80a7305fe1 (diff) | |
download | platform_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.h | 1 | ||||
-rw-r--r-- | plat/socionext/uniphier/uniphier_bl2_setup.c | 10 | ||||
-rw-r--r-- | plat/socionext/uniphier/uniphier_io_storage.c | 18 | ||||
-rw-r--r-- | plat/socionext/uniphier/uniphier_scp.c | 6 |
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) |