summaryrefslogtreecommitdiffstats
path: root/drivers/nfc/trf7970a.c
diff options
context:
space:
mode:
authorMark Greer <mgreer@animalcreek.com>2017-04-25 18:43:56 -0400
committerSamuel Ortiz <sameo@linux.intel.com>2017-06-18 17:57:58 -0400
commite2f0f67108a8f8ec23e2e530a1a52c97595a6f96 (patch)
tree8f78cbdd23911d1605d21afa91cdf4dd134b6c29 /drivers/nfc/trf7970a.c
parentd34e48d6a62a06eb7f72c7dc534c4c318a163dad (diff)
NFC: trf7970a: Clean up coding style issues
Clean up coding style issues according to scripts/Lindent. Some scripts/Lindent changes were reverted when it appeared to make the code less readable or when it made the line run over 80 characters. Signed-off-by: Mark Greer <mgreer@animalcreek.com> Signed-off-by: Samuel Ortiz <sameo@linux.intel.com>
Diffstat (limited to 'drivers/nfc/trf7970a.c')
-rw-r--r--drivers/nfc/trf7970a.c291
1 files changed, 147 insertions, 144 deletions
diff --git a/drivers/nfc/trf7970a.c b/drivers/nfc/trf7970a.c
index bb777f50b4fb..28b942ea15fb 100644
--- a/drivers/nfc/trf7970a.c
+++ b/drivers/nfc/trf7970a.c
@@ -122,11 +122,10 @@
122 NFC_PROTO_ISO14443_B_MASK | NFC_PROTO_FELICA_MASK | \ 122 NFC_PROTO_ISO14443_B_MASK | NFC_PROTO_FELICA_MASK | \
123 NFC_PROTO_ISO15693_MASK | NFC_PROTO_NFC_DEP_MASK) 123 NFC_PROTO_ISO15693_MASK | NFC_PROTO_NFC_DEP_MASK)
124 124
125#define TRF7970A_AUTOSUSPEND_DELAY 30000 /* 30 seconds */ 125#define TRF7970A_AUTOSUSPEND_DELAY 30000 /* 30 seconds */
126#define TRF7970A_13MHZ_CLOCK_FREQUENCY 13560000 126#define TRF7970A_13MHZ_CLOCK_FREQUENCY 13560000
127#define TRF7970A_27MHZ_CLOCK_FREQUENCY 27120000 127#define TRF7970A_27MHZ_CLOCK_FREQUENCY 27120000
128 128
129
130#define TRF7970A_RX_SKB_ALLOC_SIZE 256 129#define TRF7970A_RX_SKB_ALLOC_SIZE 256
131 130
132#define TRF7970A_FIFO_SIZE 127 131#define TRF7970A_FIFO_SIZE 127
@@ -294,7 +293,7 @@
294#define TRF7970A_REG_IO_CTRL_AUTO_REG BIT(7) 293#define TRF7970A_REG_IO_CTRL_AUTO_REG BIT(7)
295 294
296/* IRQ Status Register Bits */ 295/* IRQ Status Register Bits */
297#define TRF7970A_IRQ_STATUS_NORESP BIT(0) /* ISO15693 only */ 296#define TRF7970A_IRQ_STATUS_NORESP BIT(0) /* ISO15693 only */
298#define TRF7970A_IRQ_STATUS_NFC_COL_ERROR BIT(0) 297#define TRF7970A_IRQ_STATUS_NFC_COL_ERROR BIT(0)
299#define TRF7970A_IRQ_STATUS_COL BIT(1) 298#define TRF7970A_IRQ_STATUS_COL BIT(1)
300#define TRF7970A_IRQ_STATUS_FRAMING_EOF_ERROR BIT(2) 299#define TRF7970A_IRQ_STATUS_FRAMING_EOF_ERROR BIT(2)
@@ -459,7 +458,6 @@ struct trf7970a {
459 struct delayed_work timeout_work; 458 struct delayed_work timeout_work;
460}; 459};
461 460
462
463static int trf7970a_cmd(struct trf7970a *trf, u8 opcode) 461static int trf7970a_cmd(struct trf7970a *trf, u8 opcode)
464{ 462{
465 u8 cmd = TRF7970A_CMD_BIT_CTRL | TRF7970A_CMD_BIT_OPCODE(opcode); 463 u8 cmd = TRF7970A_CMD_BIT_CTRL | TRF7970A_CMD_BIT_OPCODE(opcode);
@@ -470,7 +468,7 @@ static int trf7970a_cmd(struct trf7970a *trf, u8 opcode)
470 ret = spi_write(trf->spi, &cmd, 1); 468 ret = spi_write(trf->spi, &cmd, 1);
471 if (ret) 469 if (ret)
472 dev_err(trf->dev, "%s - cmd: 0x%x, ret: %d\n", __func__, cmd, 470 dev_err(trf->dev, "%s - cmd: 0x%x, ret: %d\n", __func__, cmd,
473 ret); 471 ret);
474 return ret; 472 return ret;
475} 473}
476 474
@@ -482,14 +480,15 @@ static int trf7970a_read(struct trf7970a *trf, u8 reg, u8 *val)
482 ret = spi_write_then_read(trf->spi, &addr, 1, val, 1); 480 ret = spi_write_then_read(trf->spi, &addr, 1, val, 1);
483 if (ret) 481 if (ret)
484 dev_err(trf->dev, "%s - addr: 0x%x, ret: %d\n", __func__, addr, 482 dev_err(trf->dev, "%s - addr: 0x%x, ret: %d\n", __func__, addr,
485 ret); 483 ret);
486 484
487 dev_dbg(trf->dev, "read(0x%x): 0x%x\n", addr, *val); 485 dev_dbg(trf->dev, "read(0x%x): 0x%x\n", addr, *val);
488 486
489 return ret; 487 return ret;
490} 488}
491 489
492static int trf7970a_read_cont(struct trf7970a *trf, u8 reg, u8 *buf, size_t len) 490static int trf7970a_read_cont(struct trf7970a *trf, u8 reg, u8 *buf,
491 size_t len)
493{ 492{
494 u8 addr = reg | TRF7970A_CMD_BIT_RW | TRF7970A_CMD_BIT_CONTINUOUS; 493 u8 addr = reg | TRF7970A_CMD_BIT_RW | TRF7970A_CMD_BIT_CONTINUOUS;
495 struct spi_transfer t[2]; 494 struct spi_transfer t[2];
@@ -513,7 +512,7 @@ static int trf7970a_read_cont(struct trf7970a *trf, u8 reg, u8 *buf, size_t len)
513 ret = spi_sync(trf->spi, &m); 512 ret = spi_sync(trf->spi, &m);
514 if (ret) 513 if (ret)
515 dev_err(trf->dev, "%s - addr: 0x%x, ret: %d\n", __func__, addr, 514 dev_err(trf->dev, "%s - addr: 0x%x, ret: %d\n", __func__, addr,
516 ret); 515 ret);
517 return ret; 516 return ret;
518} 517}
519 518
@@ -527,7 +526,7 @@ static int trf7970a_write(struct trf7970a *trf, u8 reg, u8 val)
527 ret = spi_write(trf->spi, buf, 2); 526 ret = spi_write(trf->spi, buf, 2);
528 if (ret) 527 if (ret)
529 dev_err(trf->dev, "%s - write: 0x%x 0x%x, ret: %d\n", __func__, 528 dev_err(trf->dev, "%s - write: 0x%x 0x%x, ret: %d\n", __func__,
530 buf[0], buf[1], ret); 529 buf[0], buf[1], ret);
531 530
532 return ret; 531 return ret;
533} 532}
@@ -549,7 +548,7 @@ static int trf7970a_read_irqstatus(struct trf7970a *trf, u8 *status)
549 548
550 if (ret) 549 if (ret)
551 dev_err(trf->dev, "%s - irqstatus: Status read failed: %d\n", 550 dev_err(trf->dev, "%s - irqstatus: Status read failed: %d\n",
552 __func__, ret); 551 __func__, ret);
553 else 552 else
554 *status = buf[0]; 553 *status = buf[0];
555 554
@@ -563,12 +562,12 @@ static int trf7970a_read_target_proto(struct trf7970a *trf, u8 *target_proto)
563 u8 addr; 562 u8 addr;
564 563
565 addr = TRF79070A_NFC_TARGET_PROTOCOL | TRF7970A_CMD_BIT_RW | 564 addr = TRF79070A_NFC_TARGET_PROTOCOL | TRF7970A_CMD_BIT_RW |
566 TRF7970A_CMD_BIT_CONTINUOUS; 565 TRF7970A_CMD_BIT_CONTINUOUS;
567 566
568 ret = spi_write_then_read(trf->spi, &addr, 1, buf, 2); 567 ret = spi_write_then_read(trf->spi, &addr, 1, buf, 2);
569 if (ret) 568 if (ret)
570 dev_err(trf->dev, "%s - target_proto: Read failed: %d\n", 569 dev_err(trf->dev, "%s - target_proto: Read failed: %d\n",
571 __func__, ret); 570 __func__, ret);
572 else 571 else
573 *target_proto = buf[0]; 572 *target_proto = buf[0];
574 573
@@ -599,7 +598,7 @@ static int trf7970a_mode_detect(struct trf7970a *trf, u8 *rf_tech)
599 break; 598 break;
600 default: 599 default:
601 dev_dbg(trf->dev, "%s - mode_detect: target_proto: 0x%x\n", 600 dev_dbg(trf->dev, "%s - mode_detect: target_proto: 0x%x\n",
602 __func__, target_proto); 601 __func__, target_proto);
603 return -EIO; 602 return -EIO;
604 } 603 }
605 604
@@ -615,8 +614,8 @@ static void trf7970a_send_upstream(struct trf7970a *trf)
615 614
616 if (trf->rx_skb && !IS_ERR(trf->rx_skb) && !trf->aborting) 615 if (trf->rx_skb && !IS_ERR(trf->rx_skb) && !trf->aborting)
617 print_hex_dump_debug("trf7970a rx data: ", DUMP_PREFIX_NONE, 616 print_hex_dump_debug("trf7970a rx data: ", DUMP_PREFIX_NONE,
618 16, 1, trf->rx_skb->data, trf->rx_skb->len, 617 16, 1, trf->rx_skb->data, trf->rx_skb->len,
619 false); 618 false);
620 619
621 trf->state = TRF7970A_ST_IDLE; 620 trf->state = TRF7970A_ST_IDLE;
622 621
@@ -656,7 +655,8 @@ static void trf7970a_send_err_upstream(struct trf7970a *trf, int errno)
656} 655}
657 656
658static int trf7970a_transmit(struct trf7970a *trf, struct sk_buff *skb, 657static int trf7970a_transmit(struct trf7970a *trf, struct sk_buff *skb,
659 unsigned int len, u8 *prefix, unsigned int prefix_len) 658 unsigned int len, u8 *prefix,
659 unsigned int prefix_len)
660{ 660{
661 struct spi_transfer t[2]; 661 struct spi_transfer t[2];
662 struct spi_message m; 662 struct spi_message m;
@@ -664,7 +664,7 @@ static int trf7970a_transmit(struct trf7970a *trf, struct sk_buff *skb,
664 int ret; 664 int ret;
665 665
666 print_hex_dump_debug("trf7970a tx data: ", DUMP_PREFIX_NONE, 666 print_hex_dump_debug("trf7970a tx data: ", DUMP_PREFIX_NONE,
667 16, 1, skb->data, len, false); 667 16, 1, skb->data, len, false);
668 668
669 spi_message_init(&m); 669 spi_message_init(&m);
670 670
@@ -681,7 +681,7 @@ static int trf7970a_transmit(struct trf7970a *trf, struct sk_buff *skb,
681 ret = spi_sync(trf->spi, &m); 681 ret = spi_sync(trf->spi, &m);
682 if (ret) { 682 if (ret) {
683 dev_err(trf->dev, "%s - Can't send tx data: %d\n", __func__, 683 dev_err(trf->dev, "%s - Can't send tx data: %d\n", __func__,
684 ret); 684 ret);
685 return ret; 685 return ret;
686 } 686 }
687 687
@@ -705,7 +705,7 @@ static int trf7970a_transmit(struct trf7970a *trf, struct sk_buff *skb,
705 } 705 }
706 706
707 dev_dbg(trf->dev, "Setting timeout for %d ms, state: %d\n", timeout, 707 dev_dbg(trf->dev, "Setting timeout for %d ms, state: %d\n", timeout,
708 trf->state); 708 trf->state);
709 709
710 schedule_delayed_work(&trf->timeout_work, msecs_to_jiffies(timeout)); 710 schedule_delayed_work(&trf->timeout_work, msecs_to_jiffies(timeout));
711 711
@@ -773,9 +773,9 @@ static void trf7970a_drain_fifo(struct trf7970a *trf, u8 status)
773 773
774 if (fifo_bytes > skb_tailroom(skb)) { 774 if (fifo_bytes > skb_tailroom(skb)) {
775 skb = skb_copy_expand(skb, skb_headroom(skb), 775 skb = skb_copy_expand(skb, skb_headroom(skb),
776 max_t(int, fifo_bytes, 776 max_t(int, fifo_bytes,
777 TRF7970A_RX_SKB_ALLOC_SIZE), 777 TRF7970A_RX_SKB_ALLOC_SIZE),
778 GFP_KERNEL); 778 GFP_KERNEL);
779 if (!skb) { 779 if (!skb) {
780 trf7970a_send_err_upstream(trf, -ENOMEM); 780 trf7970a_send_err_upstream(trf, -ENOMEM);
781 return; 781 return;
@@ -786,7 +786,7 @@ static void trf7970a_drain_fifo(struct trf7970a *trf, u8 status)
786 } 786 }
787 787
788 ret = trf7970a_read_cont(trf, TRF7970A_FIFO_IO_REGISTER, 788 ret = trf7970a_read_cont(trf, TRF7970A_FIFO_IO_REGISTER,
789 skb_put(skb, fifo_bytes), fifo_bytes); 789 skb_put(skb, fifo_bytes), fifo_bytes);
790 if (ret) { 790 if (ret) {
791 trf7970a_send_err_upstream(trf, ret); 791 trf7970a_send_err_upstream(trf, ret);
792 return; 792 return;
@@ -794,8 +794,7 @@ static void trf7970a_drain_fifo(struct trf7970a *trf, u8 status)
794 794
795 /* If received Type 2 ACK/NACK, shift right 4 bits and pass up */ 795 /* If received Type 2 ACK/NACK, shift right 4 bits and pass up */
796 if ((trf->framing == NFC_DIGITAL_FRAMING_NFCA_T2T) && (skb->len == 1) && 796 if ((trf->framing == NFC_DIGITAL_FRAMING_NFCA_T2T) && (skb->len == 1) &&
797 (trf->special_fcn_reg1 == 797 (trf->special_fcn_reg1 == TRF7970A_SPECIAL_FCN_REG1_4_BIT_RX)) {
798 TRF7970A_SPECIAL_FCN_REG1_4_BIT_RX)) {
799 skb->data[0] >>= 4; 798 skb->data[0] >>= 4;
800 status = TRF7970A_IRQ_STATUS_SRX; 799 status = TRF7970A_IRQ_STATUS_SRX;
801 } else { 800 } else {
@@ -818,16 +817,16 @@ static void trf7970a_drain_fifo(struct trf7970a *trf, u8 status)
818 } 817 }
819 818
820no_rx_data: 819no_rx_data:
821 if (status == TRF7970A_IRQ_STATUS_SRX) { /* Receive complete */ 820 if (status == TRF7970A_IRQ_STATUS_SRX) { /* Receive complete */
822 trf7970a_send_upstream(trf); 821 trf7970a_send_upstream(trf);
823 return; 822 return;
824 } 823 }
825 824
826 dev_dbg(trf->dev, "Setting timeout for %d ms\n", 825 dev_dbg(trf->dev, "Setting timeout for %d ms\n",
827 TRF7970A_WAIT_FOR_RX_DATA_TIMEOUT); 826 TRF7970A_WAIT_FOR_RX_DATA_TIMEOUT);
828 827
829 schedule_delayed_work(&trf->timeout_work, 828 schedule_delayed_work(&trf->timeout_work,
830 msecs_to_jiffies(TRF7970A_WAIT_FOR_RX_DATA_TIMEOUT)); 829 msecs_to_jiffies(TRF7970A_WAIT_FOR_RX_DATA_TIMEOUT));
831} 830}
832 831
833static irqreturn_t trf7970a_irq(int irq, void *dev_id) 832static irqreturn_t trf7970a_irq(int irq, void *dev_id)
@@ -850,7 +849,7 @@ static irqreturn_t trf7970a_irq(int irq, void *dev_id)
850 } 849 }
851 850
852 dev_dbg(trf->dev, "IRQ - state: %d, status: 0x%x\n", trf->state, 851 dev_dbg(trf->dev, "IRQ - state: %d, status: 0x%x\n", trf->state,
853 status); 852 status);
854 853
855 if (!status) { 854 if (!status) {
856 mutex_unlock(&trf->lock); 855 mutex_unlock(&trf->lock);
@@ -875,7 +874,7 @@ static irqreturn_t trf7970a_irq(int irq, void *dev_id)
875 case TRF7970A_ST_WAIT_FOR_TX_FIFO: 874 case TRF7970A_ST_WAIT_FOR_TX_FIFO:
876 if (status & TRF7970A_IRQ_STATUS_TX) { 875 if (status & TRF7970A_IRQ_STATUS_TX) {
877 trf->ignore_timeout = 876 trf->ignore_timeout =
878 !cancel_delayed_work(&trf->timeout_work); 877 !cancel_delayed_work(&trf->timeout_work);
879 trf7970a_fill_fifo(trf); 878 trf7970a_fill_fifo(trf);
880 } else { 879 } else {
881 trf7970a_send_err_upstream(trf, -EIO); 880 trf7970a_send_err_upstream(trf, -EIO);
@@ -885,11 +884,11 @@ static irqreturn_t trf7970a_irq(int irq, void *dev_id)
885 case TRF7970A_ST_WAIT_FOR_RX_DATA_CONT: 884 case TRF7970A_ST_WAIT_FOR_RX_DATA_CONT:
886 if (status & TRF7970A_IRQ_STATUS_SRX) { 885 if (status & TRF7970A_IRQ_STATUS_SRX) {
887 trf->ignore_timeout = 886 trf->ignore_timeout =
888 !cancel_delayed_work(&trf->timeout_work); 887 !cancel_delayed_work(&trf->timeout_work);
889 trf7970a_drain_fifo(trf, status); 888 trf7970a_drain_fifo(trf, status);
890 } else if (status & TRF7970A_IRQ_STATUS_FIFO) { 889 } else if (status & TRF7970A_IRQ_STATUS_FIFO) {
891 ret = trf7970a_read(trf, TRF7970A_FIFO_STATUS, 890 ret = trf7970a_read(trf, TRF7970A_FIFO_STATUS,
892 &fifo_bytes); 891 &fifo_bytes);
893 892
894 fifo_bytes &= ~TRF7970A_FIFO_STATUS_OVERFLOW; 893 fifo_bytes &= ~TRF7970A_FIFO_STATUS_OVERFLOW;
895 894
@@ -898,14 +897,14 @@ static irqreturn_t trf7970a_irq(int irq, void *dev_id)
898 else if (!fifo_bytes) 897 else if (!fifo_bytes)
899 trf7970a_cmd(trf, TRF7970A_CMD_FIFO_RESET); 898 trf7970a_cmd(trf, TRF7970A_CMD_FIFO_RESET);
900 } else if ((status == TRF7970A_IRQ_STATUS_TX) || 899 } else if ((status == TRF7970A_IRQ_STATUS_TX) ||
901 (!trf->is_initiator && 900 (!trf->is_initiator &&
902 (status == (TRF7970A_IRQ_STATUS_TX | 901 (status == (TRF7970A_IRQ_STATUS_TX |
903 TRF7970A_IRQ_STATUS_NFC_RF)))) { 902 TRF7970A_IRQ_STATUS_NFC_RF)))) {
904 trf7970a_cmd(trf, TRF7970A_CMD_FIFO_RESET); 903 trf7970a_cmd(trf, TRF7970A_CMD_FIFO_RESET);
905 904
906 if (!trf->timeout) { 905 if (!trf->timeout) {
907 trf->ignore_timeout = !cancel_delayed_work( 906 trf->ignore_timeout =
908 &trf->timeout_work); 907 !cancel_delayed_work(&trf->timeout_work);
909 trf->rx_skb = ERR_PTR(0); 908 trf->rx_skb = ERR_PTR(0);
910 trf7970a_send_upstream(trf); 909 trf7970a_send_upstream(trf);
911 break; 910 break;
@@ -929,13 +928,13 @@ static irqreturn_t trf7970a_irq(int irq, void *dev_id)
929 break; 928 break;
930 case NFC_DIGITAL_FRAMING_NFCA_ANTICOL_COMPLETE: 929 case NFC_DIGITAL_FRAMING_NFCA_ANTICOL_COMPLETE:
931 ret = trf7970a_write(trf, 930 ret = trf7970a_write(trf,
932 TRF7970A_SPECIAL_FCN_REG1, 931 TRF7970A_SPECIAL_FCN_REG1,
933 TRF7970A_SPECIAL_FCN_REG1_14_ANTICOLL); 932 TRF7970A_SPECIAL_FCN_REG1_14_ANTICOLL);
934 if (ret) 933 if (ret)
935 goto err_unlock_exit; 934 goto err_unlock_exit;
936 935
937 trf->special_fcn_reg1 = 936 trf->special_fcn_reg1 =
938 TRF7970A_SPECIAL_FCN_REG1_14_ANTICOLL; 937 TRF7970A_SPECIAL_FCN_REG1_14_ANTICOLL;
939 break; 938 break;
940 default: 939 default:
941 break; 940 break;
@@ -943,7 +942,7 @@ static irqreturn_t trf7970a_irq(int irq, void *dev_id)
943 942
944 if (iso_ctrl != trf->iso_ctrl) { 943 if (iso_ctrl != trf->iso_ctrl) {
945 ret = trf7970a_write(trf, TRF7970A_ISO_CTRL, 944 ret = trf7970a_write(trf, TRF7970A_ISO_CTRL,
946 iso_ctrl); 945 iso_ctrl);
947 if (ret) 946 if (ret)
948 goto err_unlock_exit; 947 goto err_unlock_exit;
949 948
@@ -960,7 +959,7 @@ static irqreturn_t trf7970a_irq(int irq, void *dev_id)
960 case TRF7970A_ST_LISTENING: 959 case TRF7970A_ST_LISTENING:
961 if (status & TRF7970A_IRQ_STATUS_SRX) { 960 if (status & TRF7970A_IRQ_STATUS_SRX) {
962 trf->ignore_timeout = 961 trf->ignore_timeout =
963 !cancel_delayed_work(&trf->timeout_work); 962 !cancel_delayed_work(&trf->timeout_work);
964 trf7970a_drain_fifo(trf, status); 963 trf7970a_drain_fifo(trf, status);
965 } else if (!(status & TRF7970A_IRQ_STATUS_NFC_RF)) { 964 } else if (!(status & TRF7970A_IRQ_STATUS_NFC_RF)) {
966 trf7970a_send_err_upstream(trf, -EIO); 965 trf7970a_send_err_upstream(trf, -EIO);
@@ -969,7 +968,7 @@ static irqreturn_t trf7970a_irq(int irq, void *dev_id)
969 case TRF7970A_ST_LISTENING_MD: 968 case TRF7970A_ST_LISTENING_MD:
970 if (status & TRF7970A_IRQ_STATUS_SRX) { 969 if (status & TRF7970A_IRQ_STATUS_SRX) {
971 trf->ignore_timeout = 970 trf->ignore_timeout =
972 !cancel_delayed_work(&trf->timeout_work); 971 !cancel_delayed_work(&trf->timeout_work);
973 972
974 ret = trf7970a_mode_detect(trf, &trf->md_rf_tech); 973 ret = trf7970a_mode_detect(trf, &trf->md_rf_tech);
975 if (ret) { 974 if (ret) {
@@ -984,7 +983,7 @@ static irqreturn_t trf7970a_irq(int irq, void *dev_id)
984 break; 983 break;
985 default: 984 default:
986 dev_err(trf->dev, "%s - Driver in invalid state: %d\n", 985 dev_err(trf->dev, "%s - Driver in invalid state: %d\n",
987 __func__, trf->state); 986 __func__, trf->state);
988 } 987 }
989 988
990err_unlock_exit: 989err_unlock_exit:
@@ -1009,19 +1008,19 @@ static void trf7970a_issue_eof(struct trf7970a *trf)
1009 trf->state = TRF7970A_ST_WAIT_FOR_RX_DATA; 1008 trf->state = TRF7970A_ST_WAIT_FOR_RX_DATA;
1010 1009
1011 dev_dbg(trf->dev, "Setting timeout for %d ms, state: %d\n", 1010 dev_dbg(trf->dev, "Setting timeout for %d ms, state: %d\n",
1012 trf->timeout, trf->state); 1011 trf->timeout, trf->state);
1013 1012
1014 schedule_delayed_work(&trf->timeout_work, 1013 schedule_delayed_work(&trf->timeout_work,
1015 msecs_to_jiffies(trf->timeout)); 1014 msecs_to_jiffies(trf->timeout));
1016} 1015}
1017 1016
1018static void trf7970a_timeout_work_handler(struct work_struct *work) 1017static void trf7970a_timeout_work_handler(struct work_struct *work)
1019{ 1018{
1020 struct trf7970a *trf = container_of(work, struct trf7970a, 1019 struct trf7970a *trf = container_of(work, struct trf7970a,
1021 timeout_work.work); 1020 timeout_work.work);
1022 1021
1023 dev_dbg(trf->dev, "Timeout - state: %d, ignore_timeout: %d\n", 1022 dev_dbg(trf->dev, "Timeout - state: %d, ignore_timeout: %d\n",
1024 trf->state, trf->ignore_timeout); 1023 trf->state, trf->ignore_timeout);
1025 1024
1026 mutex_lock(&trf->lock); 1025 mutex_lock(&trf->lock);
1027 1026
@@ -1052,7 +1051,7 @@ static int trf7970a_init(struct trf7970a *trf)
1052 goto err_out; 1051 goto err_out;
1053 1052
1054 ret = trf7970a_write(trf, TRF7970A_REG_IO_CTRL, 1053 ret = trf7970a_write(trf, TRF7970A_REG_IO_CTRL,
1055 trf->io_ctrl | TRF7970A_REG_IO_CTRL_VRS(0x1)); 1054 trf->io_ctrl | TRF7970A_REG_IO_CTRL_VRS(0x1));
1056 if (ret) 1055 if (ret)
1057 goto err_out; 1056 goto err_out;
1058 1057
@@ -1065,13 +1064,13 @@ static int trf7970a_init(struct trf7970a *trf)
1065 trf->chip_status_ctrl &= ~TRF7970A_CHIP_STATUS_RF_ON; 1064 trf->chip_status_ctrl &= ~TRF7970A_CHIP_STATUS_RF_ON;
1066 1065
1067 ret = trf7970a_write(trf, TRF7970A_MODULATOR_SYS_CLK_CTRL, 1066 ret = trf7970a_write(trf, TRF7970A_MODULATOR_SYS_CLK_CTRL,
1068 trf->modulator_sys_clk_ctrl); 1067 trf->modulator_sys_clk_ctrl);
1069 if (ret) 1068 if (ret)
1070 goto err_out; 1069 goto err_out;
1071 1070
1072 ret = trf7970a_write(trf, TRF7970A_ADJUTABLE_FIFO_IRQ_LEVELS, 1071 ret = trf7970a_write(trf, TRF7970A_ADJUTABLE_FIFO_IRQ_LEVELS,
1073 TRF7970A_ADJUTABLE_FIFO_IRQ_LEVELS_WLH_96 | 1072 TRF7970A_ADJUTABLE_FIFO_IRQ_LEVELS_WLH_96 |
1074 TRF7970A_ADJUTABLE_FIFO_IRQ_LEVELS_WLL_32); 1073 TRF7970A_ADJUTABLE_FIFO_IRQ_LEVELS_WLL_32);
1075 if (ret) 1074 if (ret)
1076 goto err_out; 1075 goto err_out;
1077 1076
@@ -1092,7 +1091,7 @@ err_out:
1092static void trf7970a_switch_rf_off(struct trf7970a *trf) 1091static void trf7970a_switch_rf_off(struct trf7970a *trf)
1093{ 1092{
1094 if ((trf->state == TRF7970A_ST_PWR_OFF) || 1093 if ((trf->state == TRF7970A_ST_PWR_OFF) ||
1095 (trf->state == TRF7970A_ST_RF_OFF)) 1094 (trf->state == TRF7970A_ST_RF_OFF))
1096 return; 1095 return;
1097 1096
1098 dev_dbg(trf->dev, "Switching rf off\n"); 1097 dev_dbg(trf->dev, "Switching rf off\n");
@@ -1116,9 +1115,9 @@ static int trf7970a_switch_rf_on(struct trf7970a *trf)
1116 1115
1117 pm_runtime_get_sync(trf->dev); 1116 pm_runtime_get_sync(trf->dev);
1118 1117
1119 if (trf->state != TRF7970A_ST_RF_OFF) { /* Power on, RF off */ 1118 if (trf->state != TRF7970A_ST_RF_OFF) { /* Power on, RF off */
1120 dev_err(trf->dev, "%s - Incorrect state: %d\n", __func__, 1119 dev_err(trf->dev, "%s - Incorrect state: %d\n", __func__,
1121 trf->state); 1120 trf->state);
1122 return -EINVAL; 1121 return -EINVAL;
1123 } 1122 }
1124 1123
@@ -1153,7 +1152,7 @@ static int trf7970a_switch_rf(struct nfc_digital_dev *ddev, bool on)
1153 break; 1152 break;
1154 default: 1153 default:
1155 dev_err(trf->dev, "%s - Invalid request: %d %d\n", 1154 dev_err(trf->dev, "%s - Invalid request: %d %d\n",
1156 __func__, trf->state, on); 1155 __func__, trf->state, on);
1157 trf7970a_switch_rf_off(trf); 1156 trf7970a_switch_rf_off(trf);
1158 ret = -EINVAL; 1157 ret = -EINVAL;
1159 } 1158 }
@@ -1164,7 +1163,7 @@ static int trf7970a_switch_rf(struct nfc_digital_dev *ddev, bool on)
1164 break; 1163 break;
1165 default: 1164 default:
1166 dev_err(trf->dev, "%s - Invalid request: %d %d\n", 1165 dev_err(trf->dev, "%s - Invalid request: %d %d\n",
1167 __func__, trf->state, on); 1166 __func__, trf->state, on);
1168 ret = -EINVAL; 1167 ret = -EINVAL;
1169 /* FALLTHROUGH */ 1168 /* FALLTHROUGH */
1170 case TRF7970A_ST_IDLE: 1169 case TRF7970A_ST_IDLE:
@@ -1189,36 +1188,36 @@ static int trf7970a_in_config_rf_tech(struct trf7970a *trf, int tech)
1189 case NFC_DIGITAL_RF_TECH_106A: 1188 case NFC_DIGITAL_RF_TECH_106A:
1190 trf->iso_ctrl_tech = TRF7970A_ISO_CTRL_14443A_106; 1189 trf->iso_ctrl_tech = TRF7970A_ISO_CTRL_14443A_106;
1191 trf->modulator_sys_clk_ctrl = 1190 trf->modulator_sys_clk_ctrl =
1192 (trf->modulator_sys_clk_ctrl & 0xf8) | 1191 (trf->modulator_sys_clk_ctrl & 0xf8) |
1193 TRF7970A_MODULATOR_DEPTH_OOK; 1192 TRF7970A_MODULATOR_DEPTH_OOK;
1194 trf->guard_time = TRF7970A_GUARD_TIME_NFCA; 1193 trf->guard_time = TRF7970A_GUARD_TIME_NFCA;
1195 break; 1194 break;
1196 case NFC_DIGITAL_RF_TECH_106B: 1195 case NFC_DIGITAL_RF_TECH_106B:
1197 trf->iso_ctrl_tech = TRF7970A_ISO_CTRL_14443B_106; 1196 trf->iso_ctrl_tech = TRF7970A_ISO_CTRL_14443B_106;
1198 trf->modulator_sys_clk_ctrl = 1197 trf->modulator_sys_clk_ctrl =
1199 (trf->modulator_sys_clk_ctrl & 0xf8) | 1198 (trf->modulator_sys_clk_ctrl & 0xf8) |
1200 TRF7970A_MODULATOR_DEPTH_ASK10; 1199 TRF7970A_MODULATOR_DEPTH_ASK10;
1201 trf->guard_time = TRF7970A_GUARD_TIME_NFCB; 1200 trf->guard_time = TRF7970A_GUARD_TIME_NFCB;
1202 break; 1201 break;
1203 case NFC_DIGITAL_RF_TECH_212F: 1202 case NFC_DIGITAL_RF_TECH_212F:
1204 trf->iso_ctrl_tech = TRF7970A_ISO_CTRL_FELICA_212; 1203 trf->iso_ctrl_tech = TRF7970A_ISO_CTRL_FELICA_212;
1205 trf->modulator_sys_clk_ctrl = 1204 trf->modulator_sys_clk_ctrl =
1206 (trf->modulator_sys_clk_ctrl & 0xf8) | 1205 (trf->modulator_sys_clk_ctrl & 0xf8) |
1207 TRF7970A_MODULATOR_DEPTH_ASK10; 1206 TRF7970A_MODULATOR_DEPTH_ASK10;
1208 trf->guard_time = TRF7970A_GUARD_TIME_NFCF; 1207 trf->guard_time = TRF7970A_GUARD_TIME_NFCF;
1209 break; 1208 break;
1210 case NFC_DIGITAL_RF_TECH_424F: 1209 case NFC_DIGITAL_RF_TECH_424F:
1211 trf->iso_ctrl_tech = TRF7970A_ISO_CTRL_FELICA_424; 1210 trf->iso_ctrl_tech = TRF7970A_ISO_CTRL_FELICA_424;
1212 trf->modulator_sys_clk_ctrl = 1211 trf->modulator_sys_clk_ctrl =
1213 (trf->modulator_sys_clk_ctrl & 0xf8) | 1212 (trf->modulator_sys_clk_ctrl & 0xf8) |
1214 TRF7970A_MODULATOR_DEPTH_ASK10; 1213 TRF7970A_MODULATOR_DEPTH_ASK10;
1215 trf->guard_time = TRF7970A_GUARD_TIME_NFCF; 1214 trf->guard_time = TRF7970A_GUARD_TIME_NFCF;
1216 break; 1215 break;
1217 case NFC_DIGITAL_RF_TECH_ISO15693: 1216 case NFC_DIGITAL_RF_TECH_ISO15693:
1218 trf->iso_ctrl_tech = TRF7970A_ISO_CTRL_15693_SGL_1OF4_2648; 1217 trf->iso_ctrl_tech = TRF7970A_ISO_CTRL_15693_SGL_1OF4_2648;
1219 trf->modulator_sys_clk_ctrl = 1218 trf->modulator_sys_clk_ctrl =
1220 (trf->modulator_sys_clk_ctrl & 0xf8) | 1219 (trf->modulator_sys_clk_ctrl & 0xf8) |
1221 TRF7970A_MODULATOR_DEPTH_OOK; 1220 TRF7970A_MODULATOR_DEPTH_OOK;
1222 trf->guard_time = TRF7970A_GUARD_TIME_15693; 1221 trf->guard_time = TRF7970A_GUARD_TIME_15693;
1223 break; 1222 break;
1224 default: 1223 default:
@@ -1245,7 +1244,8 @@ static int trf7970a_is_rf_field(struct trf7970a *trf, bool *is_rf_field)
1245 u8 rssi; 1244 u8 rssi;
1246 1245
1247 ret = trf7970a_write(trf, TRF7970A_CHIP_STATUS_CTRL, 1246 ret = trf7970a_write(trf, TRF7970A_CHIP_STATUS_CTRL,
1248 trf->chip_status_ctrl | TRF7970A_CHIP_STATUS_REC_ON); 1247 trf->chip_status_ctrl |
1248 TRF7970A_CHIP_STATUS_REC_ON);
1249 if (ret) 1249 if (ret)
1250 return ret; 1250 return ret;
1251 1251
@@ -1260,7 +1260,7 @@ static int trf7970a_is_rf_field(struct trf7970a *trf, bool *is_rf_field)
1260 return ret; 1260 return ret;
1261 1261
1262 ret = trf7970a_write(trf, TRF7970A_CHIP_STATUS_CTRL, 1262 ret = trf7970a_write(trf, TRF7970A_CHIP_STATUS_CTRL,
1263 trf->chip_status_ctrl); 1263 trf->chip_status_ctrl);
1264 if (ret) 1264 if (ret)
1265 return ret; 1265 return ret;
1266 1266
@@ -1327,15 +1327,15 @@ static int trf7970a_in_config_framing(struct trf7970a *trf, int framing)
1327 trf->iso_ctrl = iso_ctrl; 1327 trf->iso_ctrl = iso_ctrl;
1328 1328
1329 ret = trf7970a_write(trf, TRF7970A_MODULATOR_SYS_CLK_CTRL, 1329 ret = trf7970a_write(trf, TRF7970A_MODULATOR_SYS_CLK_CTRL,
1330 trf->modulator_sys_clk_ctrl); 1330 trf->modulator_sys_clk_ctrl);
1331 if (ret) 1331 if (ret)
1332 return ret; 1332 return ret;
1333 } 1333 }
1334 1334
1335 if (!(trf->chip_status_ctrl & TRF7970A_CHIP_STATUS_RF_ON)) { 1335 if (!(trf->chip_status_ctrl & TRF7970A_CHIP_STATUS_RF_ON)) {
1336 ret = trf7970a_write(trf, TRF7970A_CHIP_STATUS_CTRL, 1336 ret = trf7970a_write(trf, TRF7970A_CHIP_STATUS_CTRL,
1337 trf->chip_status_ctrl | 1337 trf->chip_status_ctrl |
1338 TRF7970A_CHIP_STATUS_RF_ON); 1338 TRF7970A_CHIP_STATUS_RF_ON);
1339 if (ret) 1339 if (ret)
1340 return ret; 1340 return ret;
1341 1341
@@ -1348,7 +1348,7 @@ static int trf7970a_in_config_framing(struct trf7970a *trf, int framing)
1348} 1348}
1349 1349
1350static int trf7970a_in_configure_hw(struct nfc_digital_dev *ddev, int type, 1350static int trf7970a_in_configure_hw(struct nfc_digital_dev *ddev, int type,
1351 int param) 1351 int param)
1352{ 1352{
1353 struct trf7970a *trf = nfc_digital_get_drvdata(ddev); 1353 struct trf7970a *trf = nfc_digital_get_drvdata(ddev);
1354 int ret; 1354 int ret;
@@ -1360,7 +1360,7 @@ static int trf7970a_in_configure_hw(struct nfc_digital_dev *ddev, int type,
1360 trf->is_initiator = true; 1360 trf->is_initiator = true;
1361 1361
1362 if ((trf->state == TRF7970A_ST_PWR_OFF) || 1362 if ((trf->state == TRF7970A_ST_PWR_OFF) ||
1363 (trf->state == TRF7970A_ST_RF_OFF)) { 1363 (trf->state == TRF7970A_ST_RF_OFF)) {
1364 ret = trf7970a_switch_rf_on(trf); 1364 ret = trf7970a_switch_rf_on(trf);
1365 if (ret) 1365 if (ret)
1366 goto err_unlock; 1366 goto err_unlock;
@@ -1418,7 +1418,7 @@ static int trf7970a_per_cmd_config(struct trf7970a *trf, struct sk_buff *skb)
1418 * has to send an EOF in order to get a response. 1418 * has to send an EOF in order to get a response.
1419 */ 1419 */
1420 if ((trf->technology == NFC_DIGITAL_RF_TECH_106A) && 1420 if ((trf->technology == NFC_DIGITAL_RF_TECH_106A) &&
1421 (trf->framing == NFC_DIGITAL_FRAMING_NFCA_T2T)) { 1421 (trf->framing == NFC_DIGITAL_FRAMING_NFCA_T2T)) {
1422 if (req[0] == NFC_T2T_CMD_READ) 1422 if (req[0] == NFC_T2T_CMD_READ)
1423 special_fcn_reg1 = 0; 1423 special_fcn_reg1 = 0;
1424 else 1424 else
@@ -1426,7 +1426,7 @@ static int trf7970a_per_cmd_config(struct trf7970a *trf, struct sk_buff *skb)
1426 1426
1427 if (special_fcn_reg1 != trf->special_fcn_reg1) { 1427 if (special_fcn_reg1 != trf->special_fcn_reg1) {
1428 ret = trf7970a_write(trf, TRF7970A_SPECIAL_FCN_REG1, 1428 ret = trf7970a_write(trf, TRF7970A_SPECIAL_FCN_REG1,
1429 special_fcn_reg1); 1429 special_fcn_reg1);
1430 if (ret) 1430 if (ret)
1431 return ret; 1431 return ret;
1432 1432
@@ -1446,7 +1446,7 @@ static int trf7970a_per_cmd_config(struct trf7970a *trf, struct sk_buff *skb)
1446 iso_ctrl |= TRF7970A_ISO_CTRL_15693_SGL_1OF4_2648; 1446 iso_ctrl |= TRF7970A_ISO_CTRL_15693_SGL_1OF4_2648;
1447 break; 1447 break;
1448 case (ISO15693_REQ_FLAG_SUB_CARRIER | 1448 case (ISO15693_REQ_FLAG_SUB_CARRIER |
1449 ISO15693_REQ_FLAG_DATA_RATE): 1449 ISO15693_REQ_FLAG_DATA_RATE):
1450 iso_ctrl |= TRF7970A_ISO_CTRL_15693_DBL_1OF4_2669; 1450 iso_ctrl |= TRF7970A_ISO_CTRL_15693_DBL_1OF4_2669;
1451 break; 1451 break;
1452 } 1452 }
@@ -1461,10 +1461,10 @@ static int trf7970a_per_cmd_config(struct trf7970a *trf, struct sk_buff *skb)
1461 1461
1462 if (trf->framing == NFC_DIGITAL_FRAMING_ISO15693_T5T) { 1462 if (trf->framing == NFC_DIGITAL_FRAMING_ISO15693_T5T) {
1463 if (trf7970a_is_iso15693_write_or_lock(req[1]) && 1463 if (trf7970a_is_iso15693_write_or_lock(req[1]) &&
1464 (req[0] & ISO15693_REQ_FLAG_OPTION)) 1464 (req[0] & ISO15693_REQ_FLAG_OPTION))
1465 trf->issue_eof = true; 1465 trf->issue_eof = true;
1466 else if ((trf->quirks & 1466 else if ((trf->quirks &
1467 TRF7970A_QUIRK_T5T_RMB_EXTRA_BYTE) && 1467 TRF7970A_QUIRK_T5T_RMB_EXTRA_BYTE) &&
1468 (req[1] == ISO15693_CMD_READ_MULTIPLE_BLOCK)) 1468 (req[1] == ISO15693_CMD_READ_MULTIPLE_BLOCK))
1469 trf->adjust_resp_len = true; 1469 trf->adjust_resp_len = true;
1470 } 1470 }
@@ -1474,8 +1474,8 @@ static int trf7970a_per_cmd_config(struct trf7970a *trf, struct sk_buff *skb)
1474} 1474}
1475 1475
1476static int trf7970a_send_cmd(struct nfc_digital_dev *ddev, 1476static int trf7970a_send_cmd(struct nfc_digital_dev *ddev,
1477 struct sk_buff *skb, u16 timeout, 1477 struct sk_buff *skb, u16 timeout,
1478 nfc_digital_cmd_complete_t cb, void *arg) 1478 nfc_digital_cmd_complete_t cb, void *arg)
1479{ 1479{
1480 struct trf7970a *trf = nfc_digital_get_drvdata(ddev); 1480 struct trf7970a *trf = nfc_digital_get_drvdata(ddev);
1481 u8 prefix[5]; 1481 u8 prefix[5];
@@ -1484,7 +1484,7 @@ static int trf7970a_send_cmd(struct nfc_digital_dev *ddev,
1484 u8 status; 1484 u8 status;
1485 1485
1486 dev_dbg(trf->dev, "New request - state: %d, timeout: %d ms, len: %d\n", 1486 dev_dbg(trf->dev, "New request - state: %d, timeout: %d ms, len: %d\n",
1487 trf->state, timeout, skb->len); 1487 trf->state, timeout, skb->len);
1488 1488
1489 if (skb->len > TRF7970A_TX_MAX) 1489 if (skb->len > TRF7970A_TX_MAX)
1490 return -EINVAL; 1490 return -EINVAL;
@@ -1492,9 +1492,9 @@ static int trf7970a_send_cmd(struct nfc_digital_dev *ddev,
1492 mutex_lock(&trf->lock); 1492 mutex_lock(&trf->lock);
1493 1493
1494 if ((trf->state != TRF7970A_ST_IDLE) && 1494 if ((trf->state != TRF7970A_ST_IDLE) &&
1495 (trf->state != TRF7970A_ST_IDLE_RX_BLOCKED)) { 1495 (trf->state != TRF7970A_ST_IDLE_RX_BLOCKED)) {
1496 dev_err(trf->dev, "%s - Bogus state: %d\n", __func__, 1496 dev_err(trf->dev, "%s - Bogus state: %d\n", __func__,
1497 trf->state); 1497 trf->state);
1498 ret = -EIO; 1498 ret = -EIO;
1499 goto out_err; 1499 goto out_err;
1500 } 1500 }
@@ -1508,7 +1508,7 @@ static int trf7970a_send_cmd(struct nfc_digital_dev *ddev,
1508 1508
1509 if (timeout) { 1509 if (timeout) {
1510 trf->rx_skb = nfc_alloc_recv_skb(TRF7970A_RX_SKB_ALLOC_SIZE, 1510 trf->rx_skb = nfc_alloc_recv_skb(TRF7970A_RX_SKB_ALLOC_SIZE,
1511 GFP_KERNEL); 1511 GFP_KERNEL);
1512 if (!trf->rx_skb) { 1512 if (!trf->rx_skb) {
1513 dev_dbg(trf->dev, "Can't alloc rx_skb\n"); 1513 dev_dbg(trf->dev, "Can't alloc rx_skb\n");
1514 ret = -ENOMEM; 1514 ret = -ENOMEM;
@@ -1545,14 +1545,14 @@ static int trf7970a_send_cmd(struct nfc_digital_dev *ddev,
1545 * That totals 5 bytes. 1545 * That totals 5 bytes.
1546 */ 1546 */
1547 prefix[0] = TRF7970A_CMD_BIT_CTRL | 1547 prefix[0] = TRF7970A_CMD_BIT_CTRL |
1548 TRF7970A_CMD_BIT_OPCODE(TRF7970A_CMD_FIFO_RESET); 1548 TRF7970A_CMD_BIT_OPCODE(TRF7970A_CMD_FIFO_RESET);
1549 prefix[1] = TRF7970A_CMD_BIT_CTRL | 1549 prefix[1] = TRF7970A_CMD_BIT_CTRL |
1550 TRF7970A_CMD_BIT_OPCODE(trf->tx_cmd); 1550 TRF7970A_CMD_BIT_OPCODE(trf->tx_cmd);
1551 prefix[2] = TRF7970A_CMD_BIT_CONTINUOUS | TRF7970A_TX_LENGTH_BYTE1; 1551 prefix[2] = TRF7970A_CMD_BIT_CONTINUOUS | TRF7970A_TX_LENGTH_BYTE1;
1552 1552
1553 if (trf->framing == NFC_DIGITAL_FRAMING_NFCA_SHORT) { 1553 if (trf->framing == NFC_DIGITAL_FRAMING_NFCA_SHORT) {
1554 prefix[3] = 0x00; 1554 prefix[3] = 0x00;
1555 prefix[4] = 0x0f; /* 7 bits */ 1555 prefix[4] = 0x0f; /* 7 bits */
1556 } else { 1556 } else {
1557 prefix[3] = (len & 0xf00) >> 4; 1557 prefix[3] = (len & 0xf00) >> 4;
1558 prefix[3] |= ((len & 0xf0) >> 4); 1558 prefix[3] |= ((len & 0xf0) >> 4);
@@ -1586,25 +1586,24 @@ static int trf7970a_tg_config_rf_tech(struct trf7970a *trf, int tech)
1586 switch (tech) { 1586 switch (tech) {
1587 case NFC_DIGITAL_RF_TECH_106A: 1587 case NFC_DIGITAL_RF_TECH_106A:
1588 trf->iso_ctrl_tech = TRF7970A_ISO_CTRL_NFC_NFC_CE_MODE | 1588 trf->iso_ctrl_tech = TRF7970A_ISO_CTRL_NFC_NFC_CE_MODE |
1589 TRF7970A_ISO_CTRL_NFC_CE | 1589 TRF7970A_ISO_CTRL_NFC_CE | TRF7970A_ISO_CTRL_NFC_CE_14443A;
1590 TRF7970A_ISO_CTRL_NFC_CE_14443A;
1591 trf->modulator_sys_clk_ctrl = 1590 trf->modulator_sys_clk_ctrl =
1592 (trf->modulator_sys_clk_ctrl & 0xf8) | 1591 (trf->modulator_sys_clk_ctrl & 0xf8) |
1593 TRF7970A_MODULATOR_DEPTH_OOK; 1592 TRF7970A_MODULATOR_DEPTH_OOK;
1594 break; 1593 break;
1595 case NFC_DIGITAL_RF_TECH_212F: 1594 case NFC_DIGITAL_RF_TECH_212F:
1596 trf->iso_ctrl_tech = TRF7970A_ISO_CTRL_NFC_NFC_CE_MODE | 1595 trf->iso_ctrl_tech = TRF7970A_ISO_CTRL_NFC_NFC_CE_MODE |
1597 TRF7970A_ISO_CTRL_NFC_NFCF_212; 1596 TRF7970A_ISO_CTRL_NFC_NFCF_212;
1598 trf->modulator_sys_clk_ctrl = 1597 trf->modulator_sys_clk_ctrl =
1599 (trf->modulator_sys_clk_ctrl & 0xf8) | 1598 (trf->modulator_sys_clk_ctrl & 0xf8) |
1600 TRF7970A_MODULATOR_DEPTH_ASK10; 1599 TRF7970A_MODULATOR_DEPTH_ASK10;
1601 break; 1600 break;
1602 case NFC_DIGITAL_RF_TECH_424F: 1601 case NFC_DIGITAL_RF_TECH_424F:
1603 trf->iso_ctrl_tech = TRF7970A_ISO_CTRL_NFC_NFC_CE_MODE | 1602 trf->iso_ctrl_tech = TRF7970A_ISO_CTRL_NFC_NFC_CE_MODE |
1604 TRF7970A_ISO_CTRL_NFC_NFCF_424; 1603 TRF7970A_ISO_CTRL_NFC_NFCF_424;
1605 trf->modulator_sys_clk_ctrl = 1604 trf->modulator_sys_clk_ctrl =
1606 (trf->modulator_sys_clk_ctrl & 0xf8) | 1605 (trf->modulator_sys_clk_ctrl & 0xf8) |
1607 TRF7970A_MODULATOR_DEPTH_ASK10; 1606 TRF7970A_MODULATOR_DEPTH_ASK10;
1608 break; 1607 break;
1609 default: 1608 default:
1610 dev_dbg(trf->dev, "Unsupported rf technology: %d\n", tech); 1609 dev_dbg(trf->dev, "Unsupported rf technology: %d\n", tech);
@@ -1621,9 +1620,9 @@ static int trf7970a_tg_config_rf_tech(struct trf7970a *trf, int tech)
1621 * here. 1620 * here.
1622 */ 1621 */
1623 if ((trf->framing == NFC_DIGITAL_FRAMING_NFC_DEP_ACTIVATED) && 1622 if ((trf->framing == NFC_DIGITAL_FRAMING_NFC_DEP_ACTIVATED) &&
1624 (trf->iso_ctrl_tech != trf->iso_ctrl)) { 1623 (trf->iso_ctrl_tech != trf->iso_ctrl)) {
1625 ret = trf7970a_write(trf, TRF7970A_ISO_CTRL, 1624 ret = trf7970a_write(trf, TRF7970A_ISO_CTRL,
1626 trf->iso_ctrl_tech); 1625 trf->iso_ctrl_tech);
1627 1626
1628 trf->iso_ctrl = trf->iso_ctrl_tech; 1627 trf->iso_ctrl = trf->iso_ctrl_tech;
1629 } 1628 }
@@ -1678,15 +1677,15 @@ static int trf7970a_tg_config_framing(struct trf7970a *trf, int framing)
1678 trf->iso_ctrl = iso_ctrl; 1677 trf->iso_ctrl = iso_ctrl;
1679 1678
1680 ret = trf7970a_write(trf, TRF7970A_MODULATOR_SYS_CLK_CTRL, 1679 ret = trf7970a_write(trf, TRF7970A_MODULATOR_SYS_CLK_CTRL,
1681 trf->modulator_sys_clk_ctrl); 1680 trf->modulator_sys_clk_ctrl);
1682 if (ret) 1681 if (ret)
1683 return ret; 1682 return ret;
1684 } 1683 }
1685 1684
1686 if (!(trf->chip_status_ctrl & TRF7970A_CHIP_STATUS_RF_ON)) { 1685 if (!(trf->chip_status_ctrl & TRF7970A_CHIP_STATUS_RF_ON)) {
1687 ret = trf7970a_write(trf, TRF7970A_CHIP_STATUS_CTRL, 1686 ret = trf7970a_write(trf, TRF7970A_CHIP_STATUS_CTRL,
1688 trf->chip_status_ctrl | 1687 trf->chip_status_ctrl |
1689 TRF7970A_CHIP_STATUS_RF_ON); 1688 TRF7970A_CHIP_STATUS_RF_ON);
1690 if (ret) 1689 if (ret)
1691 return ret; 1690 return ret;
1692 1691
@@ -1697,7 +1696,7 @@ static int trf7970a_tg_config_framing(struct trf7970a *trf, int framing)
1697} 1696}
1698 1697
1699static int trf7970a_tg_configure_hw(struct nfc_digital_dev *ddev, int type, 1698static int trf7970a_tg_configure_hw(struct nfc_digital_dev *ddev, int type,
1700 int param) 1699 int param)
1701{ 1700{
1702 struct trf7970a *trf = nfc_digital_get_drvdata(ddev); 1701 struct trf7970a *trf = nfc_digital_get_drvdata(ddev);
1703 int ret; 1702 int ret;
@@ -1709,7 +1708,7 @@ static int trf7970a_tg_configure_hw(struct nfc_digital_dev *ddev, int type,
1709 trf->is_initiator = false; 1708 trf->is_initiator = false;
1710 1709
1711 if ((trf->state == TRF7970A_ST_PWR_OFF) || 1710 if ((trf->state == TRF7970A_ST_PWR_OFF) ||
1712 (trf->state == TRF7970A_ST_RF_OFF)) { 1711 (trf->state == TRF7970A_ST_RF_OFF)) {
1713 ret = trf7970a_switch_rf_on(trf); 1712 ret = trf7970a_switch_rf_on(trf);
1714 if (ret) 1713 if (ret)
1715 goto err_unlock; 1714 goto err_unlock;
@@ -1733,7 +1732,8 @@ err_unlock:
1733} 1732}
1734 1733
1735static int _trf7970a_tg_listen(struct nfc_digital_dev *ddev, u16 timeout, 1734static int _trf7970a_tg_listen(struct nfc_digital_dev *ddev, u16 timeout,
1736 nfc_digital_cmd_complete_t cb, void *arg, bool mode_detect) 1735 nfc_digital_cmd_complete_t cb, void *arg,
1736 bool mode_detect)
1737{ 1737{
1738 struct trf7970a *trf = nfc_digital_get_drvdata(ddev); 1738 struct trf7970a *trf = nfc_digital_get_drvdata(ddev);
1739 int ret; 1739 int ret;
@@ -1741,9 +1741,9 @@ static int _trf7970a_tg_listen(struct nfc_digital_dev *ddev, u16 timeout,
1741 mutex_lock(&trf->lock); 1741 mutex_lock(&trf->lock);
1742 1742
1743 if ((trf->state != TRF7970A_ST_IDLE) && 1743 if ((trf->state != TRF7970A_ST_IDLE) &&
1744 (trf->state != TRF7970A_ST_IDLE_RX_BLOCKED)) { 1744 (trf->state != TRF7970A_ST_IDLE_RX_BLOCKED)) {
1745 dev_err(trf->dev, "%s - Bogus state: %d\n", __func__, 1745 dev_err(trf->dev, "%s - Bogus state: %d\n", __func__,
1746 trf->state); 1746 trf->state);
1747 ret = -EIO; 1747 ret = -EIO;
1748 goto out_err; 1748 goto out_err;
1749 } 1749 }
@@ -1756,7 +1756,7 @@ static int _trf7970a_tg_listen(struct nfc_digital_dev *ddev, u16 timeout,
1756 } 1756 }
1757 1757
1758 trf->rx_skb = nfc_alloc_recv_skb(TRF7970A_RX_SKB_ALLOC_SIZE, 1758 trf->rx_skb = nfc_alloc_recv_skb(TRF7970A_RX_SKB_ALLOC_SIZE,
1759 GFP_KERNEL); 1759 GFP_KERNEL);
1760 if (!trf->rx_skb) { 1760 if (!trf->rx_skb) {
1761 dev_dbg(trf->dev, "Can't alloc rx_skb\n"); 1761 dev_dbg(trf->dev, "Can't alloc rx_skb\n");
1762 ret = -ENOMEM; 1762 ret = -ENOMEM;
@@ -1764,25 +1764,25 @@ static int _trf7970a_tg_listen(struct nfc_digital_dev *ddev, u16 timeout,
1764 } 1764 }
1765 1765
1766 ret = trf7970a_write(trf, TRF7970A_RX_SPECIAL_SETTINGS, 1766 ret = trf7970a_write(trf, TRF7970A_RX_SPECIAL_SETTINGS,
1767 TRF7970A_RX_SPECIAL_SETTINGS_HBT | 1767 TRF7970A_RX_SPECIAL_SETTINGS_HBT |
1768 TRF7970A_RX_SPECIAL_SETTINGS_M848 | 1768 TRF7970A_RX_SPECIAL_SETTINGS_M848 |
1769 TRF7970A_RX_SPECIAL_SETTINGS_C424 | 1769 TRF7970A_RX_SPECIAL_SETTINGS_C424 |
1770 TRF7970A_RX_SPECIAL_SETTINGS_C212); 1770 TRF7970A_RX_SPECIAL_SETTINGS_C212);
1771 if (ret) 1771 if (ret)
1772 goto out_err; 1772 goto out_err;
1773 1773
1774 ret = trf7970a_write(trf, TRF7970A_REG_IO_CTRL, 1774 ret = trf7970a_write(trf, TRF7970A_REG_IO_CTRL,
1775 trf->io_ctrl | TRF7970A_REG_IO_CTRL_VRS(0x1)); 1775 trf->io_ctrl | TRF7970A_REG_IO_CTRL_VRS(0x1));
1776 if (ret) 1776 if (ret)
1777 goto out_err; 1777 goto out_err;
1778 1778
1779 ret = trf7970a_write(trf, TRF7970A_NFC_LOW_FIELD_LEVEL, 1779 ret = trf7970a_write(trf, TRF7970A_NFC_LOW_FIELD_LEVEL,
1780 TRF7970A_NFC_LOW_FIELD_LEVEL_RFDET(0x3)); 1780 TRF7970A_NFC_LOW_FIELD_LEVEL_RFDET(0x3));
1781 if (ret) 1781 if (ret)
1782 goto out_err; 1782 goto out_err;
1783 1783
1784 ret = trf7970a_write(trf, TRF7970A_NFC_TARGET_LEVEL, 1784 ret = trf7970a_write(trf, TRF7970A_NFC_TARGET_LEVEL,
1785 TRF7970A_NFC_TARGET_LEVEL_RFDET(0x7)); 1785 TRF7970A_NFC_TARGET_LEVEL_RFDET(0x7));
1786 if (ret) 1786 if (ret)
1787 goto out_err; 1787 goto out_err;
1788 1788
@@ -1807,32 +1807,33 @@ out_err:
1807} 1807}
1808 1808
1809static int trf7970a_tg_listen(struct nfc_digital_dev *ddev, u16 timeout, 1809static int trf7970a_tg_listen(struct nfc_digital_dev *ddev, u16 timeout,
1810 nfc_digital_cmd_complete_t cb, void *arg) 1810 nfc_digital_cmd_complete_t cb, void *arg)
1811{ 1811{
1812 struct trf7970a *trf = nfc_digital_get_drvdata(ddev); 1812 struct trf7970a *trf = nfc_digital_get_drvdata(ddev);
1813 1813
1814 dev_dbg(trf->dev, "Listen - state: %d, timeout: %d ms\n", 1814 dev_dbg(trf->dev, "Listen - state: %d, timeout: %d ms\n",
1815 trf->state, timeout); 1815 trf->state, timeout);
1816 1816
1817 return _trf7970a_tg_listen(ddev, timeout, cb, arg, false); 1817 return _trf7970a_tg_listen(ddev, timeout, cb, arg, false);
1818} 1818}
1819 1819
1820static int trf7970a_tg_listen_md(struct nfc_digital_dev *ddev, 1820static int trf7970a_tg_listen_md(struct nfc_digital_dev *ddev,
1821 u16 timeout, nfc_digital_cmd_complete_t cb, void *arg) 1821 u16 timeout, nfc_digital_cmd_complete_t cb,
1822 void *arg)
1822{ 1823{
1823 struct trf7970a *trf = nfc_digital_get_drvdata(ddev); 1824 struct trf7970a *trf = nfc_digital_get_drvdata(ddev);
1824 int ret; 1825 int ret;
1825 1826
1826 dev_dbg(trf->dev, "Listen MD - state: %d, timeout: %d ms\n", 1827 dev_dbg(trf->dev, "Listen MD - state: %d, timeout: %d ms\n",
1827 trf->state, timeout); 1828 trf->state, timeout);
1828 1829
1829 ret = trf7970a_tg_configure_hw(ddev, NFC_DIGITAL_CONFIG_RF_TECH, 1830 ret = trf7970a_tg_configure_hw(ddev, NFC_DIGITAL_CONFIG_RF_TECH,
1830 NFC_DIGITAL_RF_TECH_106A); 1831 NFC_DIGITAL_RF_TECH_106A);
1831 if (ret) 1832 if (ret)
1832 return ret; 1833 return ret;
1833 1834
1834 ret = trf7970a_tg_configure_hw(ddev, NFC_DIGITAL_CONFIG_FRAMING, 1835 ret = trf7970a_tg_configure_hw(ddev, NFC_DIGITAL_CONFIG_FRAMING,
1835 NFC_DIGITAL_FRAMING_NFCA_NFC_DEP); 1836 NFC_DIGITAL_FRAMING_NFCA_NFC_DEP);
1836 if (ret) 1837 if (ret)
1837 return ret; 1838 return ret;
1838 1839
@@ -1844,7 +1845,7 @@ static int trf7970a_tg_get_rf_tech(struct nfc_digital_dev *ddev, u8 *rf_tech)
1844 struct trf7970a *trf = nfc_digital_get_drvdata(ddev); 1845 struct trf7970a *trf = nfc_digital_get_drvdata(ddev);
1845 1846
1846 dev_dbg(trf->dev, "Get RF Tech - state: %d, rf_tech: %d\n", 1847 dev_dbg(trf->dev, "Get RF Tech - state: %d, rf_tech: %d\n",
1847 trf->state, trf->md_rf_tech); 1848 trf->state, trf->md_rf_tech);
1848 1849
1849 *rf_tech = trf->md_rf_tech; 1850 *rf_tech = trf->md_rf_tech;
1850 1851
@@ -1933,20 +1934,19 @@ static int trf7970a_power_down(struct trf7970a *trf)
1933 1934
1934 if (trf->state != TRF7970A_ST_RF_OFF) { 1935 if (trf->state != TRF7970A_ST_RF_OFF) {
1935 dev_dbg(trf->dev, "Can't power down - not RF_OFF state (%d)\n", 1936 dev_dbg(trf->dev, "Can't power down - not RF_OFF state (%d)\n",
1936 trf->state); 1937 trf->state);
1937 return -EBUSY; 1938 return -EBUSY;
1938 } 1939 }
1939 1940
1940 gpiod_set_value_cansleep(trf->en_gpiod, 0); 1941 gpiod_set_value_cansleep(trf->en_gpiod, 0);
1941 1942
1942 if (trf->en2_gpiod && 1943 if (trf->en2_gpiod && !(trf->quirks & TRF7970A_QUIRK_EN2_MUST_STAY_LOW))
1943 !(trf->quirks & TRF7970A_QUIRK_EN2_MUST_STAY_LOW))
1944 gpiod_set_value_cansleep(trf->en2_gpiod, 0); 1944 gpiod_set_value_cansleep(trf->en2_gpiod, 0);
1945 1945
1946 ret = regulator_disable(trf->regulator); 1946 ret = regulator_disable(trf->regulator);
1947 if (ret) 1947 if (ret)
1948 dev_err(trf->dev, "%s - Can't disable VIN: %d\n", __func__, 1948 dev_err(trf->dev, "%s - Can't disable VIN: %d\n", __func__,
1949 ret); 1949 ret);
1950 1950
1951 trf->state = TRF7970A_ST_PWR_OFF; 1951 trf->state = TRF7970A_ST_PWR_OFF;
1952 1952
@@ -2060,16 +2060,16 @@ static int trf7970a_probe(struct spi_device *spi)
2060 2060
2061 of_property_read_u32(np, "clock-frequency", &clk_freq); 2061 of_property_read_u32(np, "clock-frequency", &clk_freq);
2062 if ((clk_freq != TRF7970A_27MHZ_CLOCK_FREQUENCY) || 2062 if ((clk_freq != TRF7970A_27MHZ_CLOCK_FREQUENCY) ||
2063 (clk_freq != TRF7970A_13MHZ_CLOCK_FREQUENCY)) { 2063 (clk_freq != TRF7970A_13MHZ_CLOCK_FREQUENCY)) {
2064 dev_err(trf->dev, 2064 dev_err(trf->dev,
2065 "clock-frequency (%u Hz) unsupported\n", 2065 "clock-frequency (%u Hz) unsupported\n", clk_freq);
2066 clk_freq);
2067 return -EINVAL; 2066 return -EINVAL;
2068 } 2067 }
2069 2068
2070 ret = devm_request_threaded_irq(trf->dev, spi->irq, NULL, 2069 ret = devm_request_threaded_irq(trf->dev, spi->irq, NULL,
2071 trf7970a_irq, IRQF_TRIGGER_RISING | IRQF_ONESHOT, 2070 trf7970a_irq,
2072 "trf7970a", trf); 2071 IRQF_TRIGGER_RISING | IRQF_ONESHOT,
2072 "trf7970a", trf);
2073 if (ret) { 2073 if (ret) {
2074 dev_err(trf->dev, "Can't request IRQ#%d: %d\n", spi->irq, ret); 2074 dev_err(trf->dev, "Can't request IRQ#%d: %d\n", spi->irq, ret);
2075 return ret; 2075 return ret;
@@ -2114,9 +2114,10 @@ static int trf7970a_probe(struct spi_device *spi)
2114 } 2114 }
2115 2115
2116 trf->ddev = nfc_digital_allocate_device(&trf7970a_nfc_ops, 2116 trf->ddev = nfc_digital_allocate_device(&trf7970a_nfc_ops,
2117 TRF7970A_SUPPORTED_PROTOCOLS, 2117 TRF7970A_SUPPORTED_PROTOCOLS,
2118 NFC_DIGITAL_DRV_CAPS_IN_CRC | 2118 NFC_DIGITAL_DRV_CAPS_IN_CRC |
2119 NFC_DIGITAL_DRV_CAPS_TG_CRC, 0, 0); 2119 NFC_DIGITAL_DRV_CAPS_TG_CRC, 0,
2120 0);
2120 if (!trf->ddev) { 2121 if (!trf->ddev) {
2121 dev_err(trf->dev, "Can't allocate NFC digital device\n"); 2122 dev_err(trf->dev, "Can't allocate NFC digital device\n");
2122 ret = -ENOMEM; 2123 ret = -ENOMEM;
@@ -2139,7 +2140,7 @@ static int trf7970a_probe(struct spi_device *spi)
2139 ret = nfc_digital_register_device(trf->ddev); 2140 ret = nfc_digital_register_device(trf->ddev);
2140 if (ret) { 2141 if (ret) {
2141 dev_err(trf->dev, "Can't register NFC digital device: %d\n", 2142 dev_err(trf->dev, "Can't register NFC digital device: %d\n",
2142 ret); 2143 ret);
2143 goto err_shutdown; 2144 goto err_shutdown;
2144 } 2145 }
2145 2146
@@ -2248,29 +2249,31 @@ static int trf7970a_pm_runtime_resume(struct device *dev)
2248static const struct dev_pm_ops trf7970a_pm_ops = { 2249static const struct dev_pm_ops trf7970a_pm_ops = {
2249 SET_SYSTEM_SLEEP_PM_OPS(trf7970a_suspend, trf7970a_resume) 2250 SET_SYSTEM_SLEEP_PM_OPS(trf7970a_suspend, trf7970a_resume)
2250 SET_RUNTIME_PM_OPS(trf7970a_pm_runtime_suspend, 2251 SET_RUNTIME_PM_OPS(trf7970a_pm_runtime_suspend,
2251 trf7970a_pm_runtime_resume, NULL) 2252 trf7970a_pm_runtime_resume, NULL)
2252}; 2253};
2253 2254
2254static const struct of_device_id trf7970a_of_match[] = { 2255static const struct of_device_id trf7970a_of_match[] = {
2255 { .compatible = "ti,trf7970a", }, 2256 {.compatible = "ti,trf7970a",},
2256 {}, 2257 {},
2257}; 2258};
2259
2258MODULE_DEVICE_TABLE(of, trf7970a_of_match); 2260MODULE_DEVICE_TABLE(of, trf7970a_of_match);
2259 2261
2260static const struct spi_device_id trf7970a_id_table[] = { 2262static const struct spi_device_id trf7970a_id_table[] = {
2261 { "trf7970a", 0 }, 2263 {"trf7970a", 0},
2262 { } 2264 {}
2263}; 2265};
2266
2264MODULE_DEVICE_TABLE(spi, trf7970a_id_table); 2267MODULE_DEVICE_TABLE(spi, trf7970a_id_table);
2265 2268
2266static struct spi_driver trf7970a_spi_driver = { 2269static struct spi_driver trf7970a_spi_driver = {
2267 .probe = trf7970a_probe, 2270 .probe = trf7970a_probe,
2268 .remove = trf7970a_remove, 2271 .remove = trf7970a_remove,
2269 .id_table = trf7970a_id_table, 2272 .id_table = trf7970a_id_table,
2270 .driver = { 2273 .driver = {
2271 .name = "trf7970a", 2274 .name = "trf7970a",
2272 .of_match_table = of_match_ptr(trf7970a_of_match), 2275 .of_match_table = of_match_ptr(trf7970a_of_match),
2273 .pm = &trf7970a_pm_ops, 2276 .pm = &trf7970a_pm_ops,
2274 }, 2277 },
2275}; 2278};
2276 2279