diff options
3 files changed, 153 insertions, 0 deletions
diff --git a/meta-oe/recipes-devtools/serialcheck/serialcheck/0001-Add-option-to-enable-internal-loopback.patch b/meta-oe/recipes-devtools/serialcheck/serialcheck/0001-Add-option-to-enable-internal-loopback.patch new file mode 100644 index 0000000000..f69254a292 --- /dev/null +++ b/meta-oe/recipes-devtools/serialcheck/serialcheck/0001-Add-option-to-enable-internal-loopback.patch @@ -0,0 +1,81 @@ +From 059d5512e840fe68e2bb37add6c9208fa9c34d15 Mon Sep 17 00:00:00 2001 +From: Sekhar Nori <nsekhar@ti.com> +Date: Tue, 24 Feb 2015 22:16:37 +0530 +Subject: [PATCH 1/2] Add option to enable internal loopback + +Upstream-status: Pending +--- + serialcheck.c | 23 +++++++++++++++++++++++ + 1 file changed, 23 insertions(+) + +diff --git a/serialcheck.c b/serialcheck.c +index 4f5b747..4100c37 100644 +--- a/serialcheck.c ++++ b/serialcheck.c +@@ -12,6 +12,8 @@ + #include <sys/ioctl.h> + #include <linux/serial.h> + ++#define TIOCM_LOOP 0x8000 ++ + #define __same_type(a, b) __builtin_types_compatible_p(typeof(a), typeof(b)) + #define BUILD_BUG_ON_ZERO(e) (sizeof(struct { int:-!!(e); })) + #define __must_be_array(a) BUILD_BUG_ON_ZERO(__same_type((a), &(a)[0])) +@@ -40,6 +42,7 @@ struct g_opt { + unsigned char hflow; + unsigned char do_termios; + unsigned char *cmp_buff; ++ unsigned char loopback; + }; + + /* name, key, arg, flags, doc, group */ +@@ -51,6 +54,7 @@ static struct argp_option options[] = { + {"mode", 'm', "M", 0, "transfer mode (d = duplex, t = send r = receive)", 0}, + {"loops", 'l', "NUM", 0, "loops to perform (0 => wait fot CTRL-C", 0}, + {"no-termios", 'n', NULL, 0, "No termios change (baud rate etc. remains unchanged)", 0}, ++ {"loopback", 'k', NULL, 0, "loopback mode", 0}, + {NULL, 0, NULL, 0, NULL, 0} + }; + +@@ -67,6 +71,7 @@ static error_t parse_opt(int key, char *arg, struct argp_state *state) + go->baudrate = 115200; + go->loops = UINT_MAX; + go->do_termios = 1; ++ go->loopback = 0; + break; + case ARGP_KEY_ARG: + ret = ARGP_ERR_UNKNOWN; +@@ -113,6 +118,9 @@ static error_t parse_opt(int key, char *arg, struct argp_state *state) + } else + go->loops = num; + break; ++ case 'k': ++ go->loopback = 1; ++ break; + default: + ret = ARGP_ERR_UNKNOWN; + } +@@ -487,6 +495,21 @@ int main(int argc, char *argv[]) + die("tcflush failed: %m\n"); + } + ++ if (opts.loopback) { ++ unsigned int mcr; ++ ++ ret = ioctl(fd, TIOCMGET, &mcr); ++ if (ret < 0) ++ die("mcr get failed: %m\n"); ++ ++ mcr |= TIOCM_LOOP; ++ ++ ret = ioctl(fd, TIOCMSET, &mcr); ++ if (ret < 0) ++ die ("mcr set failed: %m\n"); ++ ++ } ++ + ret = fcntl(fd, F_SETFL, 0); + if (ret) + printf("Failed to remove nonblock mode\n"); +-- +1.9.1 diff --git a/meta-oe/recipes-devtools/serialcheck/serialcheck/0002-Restore-original-loopback-config.patch b/meta-oe/recipes-devtools/serialcheck/serialcheck/0002-Restore-original-loopback-config.patch new file mode 100644 index 0000000000..1b8c95b10c --- /dev/null +++ b/meta-oe/recipes-devtools/serialcheck/serialcheck/0002-Restore-original-loopback-config.patch @@ -0,0 +1,49 @@ +From a6e5813d2f8402bf3a311c8bcda02623bfb76882 Mon Sep 17 00:00:00 2001 +From: Carlos Hernandez <ceh@ti.com> +Date: Tue, 24 Feb 2015 16:00:34 -0500 +Subject: [PATCH 2/2] Restore original loopback config + +If loopback option is enabled, disable it at the end of the test. + +Signed-off-by: Carlos Hernandez <ceh@ti.com> +Upstream-status: Pending +--- + serialcheck.c | 9 +++++++-- + 1 file changed, 7 insertions(+), 2 deletions(-) + +diff --git a/serialcheck.c b/serialcheck.c +index 4100c37..06470f7 100644 +--- a/serialcheck.c ++++ b/serialcheck.c +@@ -427,6 +427,7 @@ int main(int argc, char *argv[]) + unsigned char *data; + unsigned int open_mode; + off_t data_len; ++ unsigned int mcr; + + argp_parse(&argp, argc, argv, 0, NULL, &opts); + if (!opts.file_trans) +@@ -496,8 +497,6 @@ int main(int argc, char *argv[]) + } + + if (opts.loopback) { +- unsigned int mcr; +- + ret = ioctl(fd, TIOCMGET, &mcr); + if (ret < 0) + die("mcr get failed: %m\n"); +@@ -535,6 +534,12 @@ int main(int argc, char *argv[]) + ret = tcsetattr(fd, TCSAFLUSH, &old_term); + if (ret) + printf("tcsetattr() of old ones failed: %m\n"); ++ if (opts.loopback) { ++ mcr &= ~(TIOCM_LOOP); ++ ret = ioctl(fd, TIOCMSET, &mcr); ++ } ++ if (ret) ++ printf("disabling loopback failed: %m\n"); + + close(fd); + return status; +-- +1.9.1 diff --git a/meta-oe/recipes-devtools/serialcheck/serialcheck_1.0.0.bb b/meta-oe/recipes-devtools/serialcheck/serialcheck_1.0.0.bb new file mode 100644 index 0000000000..98324e816a --- /dev/null +++ b/meta-oe/recipes-devtools/serialcheck/serialcheck_1.0.0.bb @@ -0,0 +1,23 @@ +SUMMARY = "Application to verify operation of serial ports" +HOMEPAGE = "http://git.breakpoint.cc/cgit/bigeasy/serialcheck.git/" +LICENSE = "GPLv2" +LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263" + +SRC_URI = "git://git.breakpoint.cc/bigeasy/serialcheck.git \ + file://0001-Add-option-to-enable-internal-loopback.patch \ + file://0002-Restore-original-loopback-config.patch" + +SRCREV = "63854a2d0c0129efab132ec328a75279e013fb84" + +S = "${WORKDIR}/git" + +CFLAGS_prepend = "-Wall -Wextra -Wno-sign-compare -Wno-pointer-sign " + +do_install() { + install -d ${D}${bindir} + install ${S}/serialcheck ${D}${bindir} + install -d ${D}${docdir}/${BP} + install ${S}/Readme.txt ${D}${docdir}/${BP} +} + +BBCLASSEXTEND = "nativesdk" |