diff --git a/plat/socionext/uniphier/uniphier.h b/plat/socionext/uniphier/uniphier.h index 7ff1464154883f6c4754e60a24a55d166437b4a8..89ed36287788242dcb5646b16d8eb48ef2c1b83a 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 f7ae4264641122988ac8cbb27060bc0e9eb44345..fb7997c891f2387531239b2c0aeeb114052674cc 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 1fd835b546fcb3aea295efcc76c1773f1112ca73..5d841ac00eeec406d6c6625383b9d2593b0b14ab 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 9a921c4a95d11ecfe9e2e589eb7c2774fc3c4073..58eb72eff0f94fdf4ea5fd7dcb46ddbea66c314a 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)