On Tue, May 29, 2018 at 02:49:05PM +0300, Oleksandr Shamray wrote: > +++ b/Documentation/ABI/testing/jtag-dev > @@ -0,0 +1,27 @@ > +What: /dev/jtag[0-9]+ > +Date: May 2018 > +KernelVersion: 4.18 > +Contact: oleksandrs@xxxxxxxxxxxx > +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/PAUSE Are you sure your enums are these values? You should explicitly set them in your .h file to be positive. thanks, greg k-h -- To unsubscribe from this list: send the line "unsubscribe linux-api" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html