From 2945cd92f7c6dbe4999ee72cd5cf1e2615eedba7 Mon Sep 17 00:00:00 2001 From: Emekcan Date: Thu, 22 Sep 2022 17:04:11 +0100 Subject: Aligning es_mhu_test with new kernel driver Aligns es_mhu_test interface with new MHU kernel driver, where now there are different rx and tx dev paths. Signed-off-by: Emekcan Aras Signed-off-by: Rui Miguel Silva --- test-app.c | 63 ++++++++++++++++++++++++++++++++++++++------------------------ 1 file changed, 39 insertions(+), 24 deletions(-) diff --git a/test-app.c b/test-app.c index 2484f8d..cf006f8 100644 --- a/test-app.c +++ b/test-app.c @@ -140,26 +140,40 @@ static int es_mhu_test(void) { int status; int message; - int epts[2]; + int epts_tx[2]; + int epts_rx[2]; const int value = 0xABCDEF; - struct rpmsg_endpoint_info es0mhu0_eptinfo = {"es0mhu0", 0XFFFFFFFF, - 0xFFFFFFFF}; - struct rpmsg_endpoint_info es0mhu1_eptinfo = {"es0mhu1", 0XFFFFFFFF, - 0xFFFFFFFF}; + struct rpmsg_endpoint_info es0mhu0_tx_eptinfo = {"es0mhu0_tx", + 0XFFFFFFFF, 0xFFFFFFFF}; + struct rpmsg_endpoint_info es0mhu1_tx_eptinfo = {"es0mhu1_tx", + 0XFFFFFFFF, 0xFFFFFFFF}; + struct rpmsg_endpoint_info es0mhu0_rx_eptinfo = {"es0mhu0_rx", + 0XFFFFFFFF, 0xFFFFFFFF}; + struct rpmsg_endpoint_info es0mhu1_rx_eptinfo = {"es0mhu1_rx", + 0XFFFFFFFF, 0xFFFFFFFF}; TRY_OPEN(fd, "/dev/rpmsg_ctrl0", O_RDWR); /* Create endpoint interfaces for each MHU */ /* /dev/rpmsg0 is created */ - TRY_IOCTL(status, fd, RPMSG_CREATE_EPT_IOCTL, &es0mhu0_eptinfo); + TRY_IOCTL(status, fd, RPMSG_CREATE_EPT_IOCTL, &es0mhu0_tx_eptinfo); /* /dev/rpmsg1 is created */ - TRY_IOCTL(status, fd, RPMSG_CREATE_EPT_IOCTL, &es0mhu1_eptinfo); + TRY_IOCTL(status, fd, RPMSG_CREATE_EPT_IOCTL, &es0mhu1_tx_eptinfo); + /* /dev/rpmsg2 is created */ + TRY_IOCTL(status, fd, RPMSG_CREATE_EPT_IOCTL, &es0mhu0_rx_eptinfo); + /* /dev/rpmsg3 is created */ + TRY_IOCTL(status, fd, RPMSG_CREATE_EPT_IOCTL, &es0mhu1_rx_eptinfo); /* create endpoints for each mhu */ - TRY_OPEN(fd_es0mhu0_ept, "/dev/rpmsg0", O_RDWR); - TRY_OPEN(fd_es0mhu1_ept, "/dev/rpmsg1", O_RDWR); - epts[0] = fd_es0mhu0_ept; - epts[1] = fd_es0mhu1_ept; + TRY_OPEN(fd_es0mhu0_tx_ept, "/dev/rpmsg0", O_RDWR); + TRY_OPEN(fd_es0mhu1_tx_ept, "/dev/rpmsg1", O_RDWR); + TRY_OPEN(fd_es0mhu0_rx_ept, "/dev/rpmsg2", O_RDWR); + TRY_OPEN(fd_es0mhu1_rx_ept, "/dev/rpmsg3", O_RDWR); + + epts_tx[0] = fd_es0mhu0_tx_ept; + epts_tx[1] = fd_es0mhu1_tx_ept; + epts_rx[0] = fd_es0mhu0_rx_ept; + epts_rx[1] = fd_es0mhu1_rx_ept; /* Bring external system out of reset */ es_release_cpuwait_test(); @@ -172,12 +186,13 @@ static int es_mhu_test(void) /* External system test */ for (int i = 0; i < 2; i++) { - int ept = epts[i]; - char *name; + int ept_tx = epts_tx[i]; + int ept_rx = epts_rx[i]; + /* ========== ES < = > HOST TESTS ========== */ /* Make ES echo the value back to host with incremented value */ message = ENCODE(ES_INC_RETURN, value); - write(ept, &message, sizeof(message)); + write(ept_tx, &message, sizeof(message)); /* * External system cannot execute the test command within an * interrupt handler. Since no command buffering has been @@ -186,21 +201,21 @@ static int es_mhu_test(void) */ sleep(1); /* Read the data transmitted by the previous command */ - read(ept, &message, sizeof(message)); + read(ept_rx, &message, sizeof(message)); printf("Received %x from %s\n", message, - ept == fd_es0mhu0_ept ? "es0mhu0" : "es0mhu1"); - /* ================== ES < = > SE ================== */ - /* Make ES send a message to the SE with incremented value */ - message = ENCODE(ES_INC_SEND_TO_SE, value); - write(ept, &message, sizeof(message)); + ept_tx == fd_es0mhu0_tx_ept ? "es0mhu0" : "es0mhu1"); sleep(1); } /* destroy endpoints */ - TRY_IOCTL(status, fd_es0mhu0_ept, RPMSG_DESTROY_EPT_IOCTL); - TRY_IOCTL(status, fd_es0mhu1_ept, RPMSG_DESTROY_EPT_IOCTL); - TRY_CLOSE(fd_es0mhu0_ept); - TRY_CLOSE(fd_es0mhu1_ept); + TRY_IOCTL(status, fd_es0mhu0_tx_ept, RPMSG_DESTROY_EPT_IOCTL); + TRY_IOCTL(status, fd_es0mhu1_tx_ept, RPMSG_DESTROY_EPT_IOCTL); + TRY_IOCTL(status, fd_es0mhu0_rx_ept, RPMSG_DESTROY_EPT_IOCTL); + TRY_IOCTL(status, fd_es0mhu1_rx_ept, RPMSG_DESTROY_EPT_IOCTL); + TRY_CLOSE(fd_es0mhu0_tx_ept); + TRY_CLOSE(fd_es0mhu1_tx_ept); + TRY_CLOSE(fd_es0mhu0_rx_ept); + TRY_CLOSE(fd_es0mhu1_rx_ept); TRY_CLOSE(fd); return 0; } -- cgit v1.2.3