Re: [patch v23 4/4] Documentation: jtag: Add ABI documentation
From: Greg KH <gregkh@linuxfoundation.org>
Date: 2018-05-29 13:09:11
Also in:
linux-arm-kernel, linux-devicetree, linux-serial, lkml, openbmc
On Tue, May 29, 2018 at 02:49:05PM +0300, Oleksandr Shamray wrote:
quoted hunk ↗ jump to hunk
+++ b/Documentation/ABI/testing/jtag-dev@@ -0,0 +1,27 @@ +What: /dev/jtag[0-9]+ +Date: May 2018 +KernelVersion: 4.18 +Contact: oleksandrs@mellanox.com +Description: + The misc device files /dev/jtag* are the interface + between JTAG master interface and userspace. + + The ioctl(2)-based ABI is defined and documented in + [include/uapi]<linux/jtag.h>. + + The following file operations are supported: + + open(2) + The argument flag currently support only one access + mode O_RDWR.
Your open call tests for nothing, don't worry about it here at all :)
+ + ioctl(2) + Initiate various actions. + See the inline documentation in [include/uapi]<linux/jtag.h> + for descriptions of all ioctls. + + close(2) + Stops and free up the I/O contexts that was associated + with the file descriptor.
No, your close() does not do any of that.
+ +Users: TBD
No users? They why do we have this api at all?
+open(), close() +------- +open() opens JTAG device. Only one open operation per JTAG device +can be performed. Two or more open for one device will return error.
Not true :)
+
+Open/Close device:
+- jtag_fd = open("/dev/jtag0", O_RDWR);
+- close(jtag_fd);
+
+ioctl()
+-------
+All access operations to JTAG devices are erformed through ioctl interface.
+The IOCTL interface supports these requests:
+ JTAG_IOCRUNTEST - Force JTAG state machine to RUN_TEST/IDLE state
+ JTAG_SIOCFREQ - Set JTAG TCK frequency
+ JTAG_GIOCFREQ - Get JTAG TCK frequency
+ JTAG_IOCXFER - send JTAG data Xfer
+ JTAG_GIOCSTATUS - get current JTAG TAP status
+ JTAG_SIOCMODE - set JTAG mode flags.
+
+JTAG_SIOCFREQ, JTAG_GIOCFREQ
+------
+Set/Get JTAG clock speed:
+
+ unsigned int jtag_fd;
+ ioctl(jtag_fd, JTAG_SIOCFREQ, &frq);
+ ioctl(jtag_fd, JTAG_GIOCFREQ, &frq);
+
+JTAG_IOCRUNTEST
+------
+Force JTAG state machine to RUN_TEST/IDLE state
+
+struct jtag_run_test_idle {
+ __u8 reset;
+ __u8 endstate;
+ __u8 tck;
+};
+
+reset: 0 - run IDLE/PAUSE from current state
+ 1 - go through TEST_LOGIC/RESET state before IDLE/PAUSEAre you sure your enums are these values? You should explicitly set them in your .h file to be positive. thanks, greg k-h