• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /freebsd-13-stable/usr.sbin/i2c/

Lines Matching refs:i2c_opt

298 i2c_write(char *dev, struct options i2c_opt, char *i2c_buf)
310 cmd.slave = i2c_opt.addr;
317 if (i2c_opt.width) {
318 bufsize = i2c_opt.width / 8;
319 buf = prepare_buf(bufsize, i2c_opt.off);
329 switch(i2c_opt.mode) {
334 if (i2c_opt.width) {
350 cmd.slave = i2c_opt.addr;
360 cmd.count = i2c_opt.count;
374 if (i2c_opt.width) {
385 cmd.slave = i2c_opt.addr;
396 cmd.count = i2c_opt.count;
408 buf = realloc(buf, bufsize + i2c_opt.count);
414 memcpy(buf + bufsize, i2c_buf, i2c_opt.count);
418 cmd.count = bufsize + i2c_opt.count;
451 i2c_read(char *dev, struct options i2c_opt, char *i2c_buf)
463 if (i2c_opt.width) {
464 cmd.slave = i2c_opt.addr;
473 bufsize = i2c_opt.width / 8;
474 buf = prepare_buf(bufsize, i2c_opt.off);
490 if (i2c_opt.mode == I2C_MODE_STOP_START) {
498 cmd.slave = i2c_opt.addr | 1;
502 if (i2c_opt.mode == I2C_MODE_STOP_START || i2c_opt.width == 0) {
508 } else if (i2c_opt.mode == I2C_MODE_REPEATED_START) {
517 cmd.count = i2c_opt.count;
559 i2c_rdwr_transfer(char *dev, struct options i2c_opt, char *i2c_buf)
571 if (i2c_opt.width > 0) {
573 msgs[i].slave = i2c_opt.addr;
575 if (i2c_opt.width == 8) {
576 off.off8 = (uint8_t)i2c_opt.off;
579 off.off16 = (uint16_t)i2c_opt.off;
592 if (i2c_opt.dir == 'w')
596 msgs[i].slave = i2c_opt.addr;
597 msgs[i].len = i2c_opt.count;
617 struct options i2c_opt;
630 i2c_opt.addr_set = 0;
631 i2c_opt.off = 0;
632 i2c_opt.verbose = 0;
633 i2c_opt.dir = 'r'; /* direction = read */
634 i2c_opt.width = 8;
635 i2c_opt.count = 1;
636 i2c_opt.binary = 0; /* ASCII text output */
637 i2c_opt.scan = 0; /* no bus scan */
638 i2c_opt.skip = 0; /* scan all addresses */
639 i2c_opt.reset = 0; /* no bus reset */
640 i2c_opt.mode = I2C_MODE_NOTSET;
645 i2c_opt.addr = (strtoul(optarg, 0, 16) << 1);
646 if (i2c_opt.addr == 0 && errno == EINVAL)
647 i2c_opt.addr_set = 0;
649 i2c_opt.addr_set = 1;
655 i2c_opt.dir = optarg[0];
658 i2c_opt.off = strtoul(optarg, 0, 16);
659 if (i2c_opt.off == 0 && errno == EINVAL)
663 i2c_opt.width = atoi(optarg);
666 i2c_opt.count = atoi(optarg);
670 i2c_opt.mode = I2C_MODE_NONE;
672 i2c_opt.mode = I2C_MODE_STOP_START;
674 i2c_opt.mode = I2C_MODE_REPEATED_START;
676 i2c_opt.mode = I2C_MODE_TRANSFER;
681 i2c_opt.skip = 1;
685 i2c_opt.scan = 1;
688 i2c_opt.binary = 1;
691 i2c_opt.verbose = 1;
694 i2c_opt.reset = 1;
705 if (i2c_opt.mode == I2C_MODE_NOTSET) {
706 if (i2c_opt.dir == 'r')
707 i2c_opt.mode = I2C_MODE_STOP_START;
708 else if (i2c_opt.dir == 'w')
709 i2c_opt.mode = I2C_MODE_NONE;
713 if (i2c_opt.scan) {
714 if (i2c_opt.addr_set)
716 } else if (i2c_opt.reset) {
717 if (i2c_opt.addr_set)
721 } else if ((i2c_opt.dir == 'r' || i2c_opt.dir == 'w')) {
722 if ((i2c_opt.addr_set == 0) ||
723 !(i2c_opt.width == 0 || i2c_opt.width == 8 ||
724 i2c_opt.width == 16))
728 if (i2c_opt.verbose)
731 i2c_opt.addr >> 1, i2c_opt.dir, i2c_opt.off,
732 i2c_opt.width, i2c_opt.count);
734 if (i2c_opt.scan)
735 exit(scan_bus(cmd, dev, i2c_opt.skip, skip_addr));
737 if (i2c_opt.reset)
740 i2c_buf = malloc(i2c_opt.count);
747 if (i2c_opt.dir == 'w') {
748 if (i2c_opt.verbose && !i2c_opt.binary)
750 i2c_opt.count);
751 for (i = 0; i < i2c_opt.count; i++) {
761 if (i2c_opt.mode == I2C_MODE_TRANSFER)
762 error = i2c_rdwr_transfer(dev, i2c_opt, i2c_buf);
763 else if (i2c_opt.dir == 'w')
764 error = i2c_write(dev, i2c_opt, i2c_buf);
766 error = i2c_read(dev, i2c_opt, i2c_buf);
773 if (i2c_opt.verbose)
774 fprintf(stderr, "\nData %s (hex):\n", i2c_opt.dir == 'r' ?
779 while (i < i2c_opt.count) {
780 if (i2c_opt.verbose || (i2c_opt.dir == 'r' &&
781 !i2c_opt.binary))
784 if (i2c_opt.dir == 'r' && i2c_opt.binary) {
786 if(!i2c_opt.verbose)
789 if (!i2c_opt.verbose && (i2c_opt.dir == 'w'))