Lines Matching refs:trf

460 static int trf7970a_cmd(struct trf7970a *trf, u8 opcode)  in trf7970a_cmd()  argument
465 dev_dbg(trf->dev, "cmd: 0x%x\n", cmd); in trf7970a_cmd()
467 ret = spi_write(trf->spi, &cmd, 1); in trf7970a_cmd()
469 dev_err(trf->dev, "%s - cmd: 0x%x, ret: %d\n", __func__, cmd, in trf7970a_cmd()
474 static int trf7970a_read(struct trf7970a *trf, u8 reg, u8 *val) in trf7970a_read() argument
479 ret = spi_write_then_read(trf->spi, &addr, 1, val, 1); in trf7970a_read()
481 dev_err(trf->dev, "%s - addr: 0x%x, ret: %d\n", __func__, addr, in trf7970a_read()
484 dev_dbg(trf->dev, "read(0x%x): 0x%x\n", addr, *val); in trf7970a_read()
489 static int trf7970a_read_cont(struct trf7970a *trf, u8 reg, u8 *buf, size_t len) in trf7970a_read_cont() argument
496 dev_dbg(trf->dev, "read_cont(0x%x, %zd)\n", addr, len); in trf7970a_read_cont()
510 ret = spi_sync(trf->spi, &m); in trf7970a_read_cont()
512 dev_err(trf->dev, "%s - addr: 0x%x, ret: %d\n", __func__, addr, in trf7970a_read_cont()
517 static int trf7970a_write(struct trf7970a *trf, u8 reg, u8 val) in trf7970a_write() argument
522 dev_dbg(trf->dev, "write(0x%x): 0x%x\n", reg, val); in trf7970a_write()
524 ret = spi_write(trf->spi, buf, 2); in trf7970a_write()
526 dev_err(trf->dev, "%s - write: 0x%x 0x%x, ret: %d\n", __func__, in trf7970a_write()
532 static int trf7970a_read_irqstatus(struct trf7970a *trf, u8 *status) in trf7970a_read_irqstatus() argument
540 if (trf->quirks & TRF7970A_QUIRK_IRQ_STATUS_READ) { in trf7970a_read_irqstatus()
542 ret = spi_write_then_read(trf->spi, &addr, 1, buf, 2); in trf7970a_read_irqstatus()
544 ret = spi_write_then_read(trf->spi, &addr, 1, buf, 1); in trf7970a_read_irqstatus()
548 dev_err(trf->dev, "%s - irqstatus: Status read failed: %d\n", in trf7970a_read_irqstatus()
556 static int trf7970a_read_target_proto(struct trf7970a *trf, u8 *target_proto) in trf7970a_read_target_proto() argument
565 ret = spi_write_then_read(trf->spi, &addr, 1, buf, 2); in trf7970a_read_target_proto()
567 dev_err(trf->dev, "%s - target_proto: Read failed: %d\n", in trf7970a_read_target_proto()
575 static int trf7970a_mode_detect(struct trf7970a *trf, u8 *rf_tech) in trf7970a_mode_detect() argument
580 ret = trf7970a_read_target_proto(trf, &target_proto); in trf7970a_mode_detect()
598 dev_dbg(trf->dev, "%s - mode_detect: target_proto: 0x%x\n", in trf7970a_mode_detect()
608 static void trf7970a_send_upstream(struct trf7970a *trf) in trf7970a_send_upstream() argument
610 dev_kfree_skb_any(trf->tx_skb); in trf7970a_send_upstream()
611 trf->tx_skb = NULL; in trf7970a_send_upstream()
613 if (trf->rx_skb && !IS_ERR(trf->rx_skb) && !trf->aborting) in trf7970a_send_upstream()
615 16, 1, trf->rx_skb->data, trf->rx_skb->len, in trf7970a_send_upstream()
618 trf->state = TRF7970A_ST_IDLE; in trf7970a_send_upstream()
620 if (trf->aborting) { in trf7970a_send_upstream()
621 dev_dbg(trf->dev, "Abort process complete\n"); in trf7970a_send_upstream()
623 if (!IS_ERR(trf->rx_skb)) { in trf7970a_send_upstream()
624 kfree_skb(trf->rx_skb); in trf7970a_send_upstream()
625 trf->rx_skb = ERR_PTR(-ECANCELED); in trf7970a_send_upstream()
628 trf->aborting = false; in trf7970a_send_upstream()
631 if (trf->adjust_resp_len) { in trf7970a_send_upstream()
632 if (trf->rx_skb) in trf7970a_send_upstream()
633 skb_trim(trf->rx_skb, trf->rx_skb->len - 1); in trf7970a_send_upstream()
635 trf->adjust_resp_len = false; in trf7970a_send_upstream()
638 trf->cb(trf->ddev, trf->cb_arg, trf->rx_skb); in trf7970a_send_upstream()
640 trf->rx_skb = NULL; in trf7970a_send_upstream()
643 static void trf7970a_send_err_upstream(struct trf7970a *trf, int errno) in trf7970a_send_err_upstream() argument
645 dev_dbg(trf->dev, "Error - state: %d, errno: %d\n", trf->state, errno); in trf7970a_send_err_upstream()
647 cancel_delayed_work(&trf->timeout_work); in trf7970a_send_err_upstream()
649 kfree_skb(trf->rx_skb); in trf7970a_send_err_upstream()
650 trf->rx_skb = ERR_PTR(errno); in trf7970a_send_err_upstream()
652 trf7970a_send_upstream(trf); in trf7970a_send_err_upstream()
655 static int trf7970a_transmit(struct trf7970a *trf, struct sk_buff *skb, in trf7970a_transmit() argument
678 ret = spi_sync(trf->spi, &m); in trf7970a_transmit()
680 dev_err(trf->dev, "%s - Can't send tx data: %d\n", __func__, in trf7970a_transmit()
688 trf->state = TRF7970A_ST_WAIT_FOR_TX_FIFO; in trf7970a_transmit()
691 if (trf->issue_eof) { in trf7970a_transmit()
692 trf->state = TRF7970A_ST_WAIT_TO_ISSUE_EOF; in trf7970a_transmit()
695 trf->state = TRF7970A_ST_WAIT_FOR_RX_DATA; in trf7970a_transmit()
697 if (!trf->timeout) in trf7970a_transmit()
700 timeout = trf->timeout; in trf7970a_transmit()
704 dev_dbg(trf->dev, "Setting timeout for %d ms, state: %d\n", timeout, in trf7970a_transmit()
705 trf->state); in trf7970a_transmit()
707 schedule_delayed_work(&trf->timeout_work, msecs_to_jiffies(timeout)); in trf7970a_transmit()
712 static void trf7970a_fill_fifo(struct trf7970a *trf) in trf7970a_fill_fifo() argument
714 struct sk_buff *skb = trf->tx_skb; in trf7970a_fill_fifo()
720 ret = trf7970a_read(trf, TRF7970A_FIFO_STATUS, &fifo_bytes); in trf7970a_fill_fifo()
722 trf7970a_send_err_upstream(trf, ret); in trf7970a_fill_fifo()
726 dev_dbg(trf->dev, "Filling FIFO - fifo_bytes: 0x%x\n", fifo_bytes); in trf7970a_fill_fifo()
733 schedule_delayed_work(&trf->timeout_work, in trf7970a_fill_fifo()
742 ret = trf7970a_transmit(trf, skb, len, &prefix, sizeof(prefix)); in trf7970a_fill_fifo()
744 trf7970a_send_err_upstream(trf, ret); in trf7970a_fill_fifo()
747 static void trf7970a_drain_fifo(struct trf7970a *trf, u8 status) in trf7970a_drain_fifo() argument
749 struct sk_buff *skb = trf->rx_skb; in trf7970a_drain_fifo()
754 trf7970a_send_err_upstream(trf, -EIO); in trf7970a_drain_fifo()
758 ret = trf7970a_read(trf, TRF7970A_FIFO_STATUS, &fifo_bytes); in trf7970a_drain_fifo()
760 trf7970a_send_err_upstream(trf, ret); in trf7970a_drain_fifo()
764 dev_dbg(trf->dev, "Draining FIFO - fifo_bytes: 0x%x\n", fifo_bytes); in trf7970a_drain_fifo()
777 trf7970a_send_err_upstream(trf, -ENOMEM); in trf7970a_drain_fifo()
781 kfree_skb(trf->rx_skb); in trf7970a_drain_fifo()
782 trf->rx_skb = skb; in trf7970a_drain_fifo()
785 ret = trf7970a_read_cont(trf, TRF7970A_FIFO_IO_REGISTER, in trf7970a_drain_fifo()
788 trf7970a_send_err_upstream(trf, ret); in trf7970a_drain_fifo()
793 if ((trf->framing == NFC_DIGITAL_FRAMING_NFCA_T2T) && (skb->len == 1) && in trf7970a_drain_fifo()
794 (trf->special_fcn_reg1 == in trf7970a_drain_fifo()
799 trf->state = TRF7970A_ST_WAIT_FOR_RX_DATA_CONT; in trf7970a_drain_fifo()
801 ret = trf7970a_read(trf, TRF7970A_FIFO_STATUS, &fifo_bytes); in trf7970a_drain_fifo()
803 trf7970a_send_err_upstream(trf, ret); in trf7970a_drain_fifo()
819 trf7970a_send_upstream(trf); in trf7970a_drain_fifo()
823 dev_dbg(trf->dev, "Setting timeout for %d ms\n", in trf7970a_drain_fifo()
826 schedule_delayed_work(&trf->timeout_work, in trf7970a_drain_fifo()
832 struct trf7970a *trf = dev_id; in trf7970a_irq() local
836 mutex_lock(&trf->lock); in trf7970a_irq()
838 if (trf->state == TRF7970A_ST_RF_OFF) { in trf7970a_irq()
839 mutex_unlock(&trf->lock); in trf7970a_irq()
843 ret = trf7970a_read_irqstatus(trf, &status); in trf7970a_irq()
845 mutex_unlock(&trf->lock); in trf7970a_irq()
849 dev_dbg(trf->dev, "IRQ - state: %d, status: 0x%x\n", trf->state, in trf7970a_irq()
853 mutex_unlock(&trf->lock); in trf7970a_irq()
857 switch (trf->state) { in trf7970a_irq()
865 if (trf->is_initiator && (status & TRF7970A_IRQ_STATUS_ERROR)) { in trf7970a_irq()
866 trf7970a_cmd(trf, TRF7970A_CMD_BLOCK_RX); in trf7970a_irq()
867 trf->state = TRF7970A_ST_IDLE_RX_BLOCKED; in trf7970a_irq()
870 trf7970a_cmd(trf, TRF7970A_CMD_FIFO_RESET); in trf7970a_irq()
874 trf->ignore_timeout = in trf7970a_irq()
875 !cancel_delayed_work(&trf->timeout_work); in trf7970a_irq()
876 trf7970a_fill_fifo(trf); in trf7970a_irq()
878 trf7970a_send_err_upstream(trf, -EIO); in trf7970a_irq()
884 trf->ignore_timeout = in trf7970a_irq()
885 !cancel_delayed_work(&trf->timeout_work); in trf7970a_irq()
886 trf7970a_drain_fifo(trf, status); in trf7970a_irq()
888 ret = trf7970a_read(trf, TRF7970A_FIFO_STATUS, in trf7970a_irq()
894 trf7970a_send_err_upstream(trf, ret); in trf7970a_irq()
896 trf7970a_cmd(trf, TRF7970A_CMD_FIFO_RESET); in trf7970a_irq()
898 (!trf->is_initiator && in trf7970a_irq()
901 trf7970a_cmd(trf, TRF7970A_CMD_FIFO_RESET); in trf7970a_irq()
903 if (!trf->timeout) { in trf7970a_irq()
904 trf->ignore_timeout = !cancel_delayed_work( in trf7970a_irq()
905 &trf->timeout_work); in trf7970a_irq()
906 trf->rx_skb = ERR_PTR(0); in trf7970a_irq()
907 trf7970a_send_upstream(trf); in trf7970a_irq()
911 if (trf->is_initiator) in trf7970a_irq()
914 iso_ctrl = trf->iso_ctrl; in trf7970a_irq()
916 switch (trf->framing) { in trf7970a_irq()
918 trf->tx_cmd = TRF7970A_CMD_TRANSMIT_NO_CRC; in trf7970a_irq()
920 trf->iso_ctrl = 0xff; /* Force ISO_CTRL write */ in trf7970a_irq()
923 trf->tx_cmd = TRF7970A_CMD_TRANSMIT; in trf7970a_irq()
925 trf->iso_ctrl = 0xff; /* Force ISO_CTRL write */ in trf7970a_irq()
928 ret = trf7970a_write(trf, in trf7970a_irq()
934 trf->special_fcn_reg1 = in trf7970a_irq()
941 if (iso_ctrl != trf->iso_ctrl) { in trf7970a_irq()
942 ret = trf7970a_write(trf, TRF7970A_ISO_CTRL, in trf7970a_irq()
947 trf->iso_ctrl = iso_ctrl; in trf7970a_irq()
950 trf7970a_send_err_upstream(trf, -EIO); in trf7970a_irq()
955 trf7970a_send_err_upstream(trf, -EIO); in trf7970a_irq()
959 trf->ignore_timeout = in trf7970a_irq()
960 !cancel_delayed_work(&trf->timeout_work); in trf7970a_irq()
961 trf7970a_drain_fifo(trf, status); in trf7970a_irq()
963 trf7970a_send_err_upstream(trf, -EIO); in trf7970a_irq()
968 trf->ignore_timeout = in trf7970a_irq()
969 !cancel_delayed_work(&trf->timeout_work); in trf7970a_irq()
971 ret = trf7970a_mode_detect(trf, &trf->md_rf_tech); in trf7970a_irq()
973 trf7970a_send_err_upstream(trf, ret); in trf7970a_irq()
975 trf->state = TRF7970A_ST_LISTENING; in trf7970a_irq()
976 trf7970a_drain_fifo(trf, status); in trf7970a_irq()
979 trf7970a_send_err_upstream(trf, -EIO); in trf7970a_irq()
983 dev_err(trf->dev, "%s - Driver in invalid state: %d\n", in trf7970a_irq()
984 __func__, trf->state); in trf7970a_irq()
988 mutex_unlock(&trf->lock); in trf7970a_irq()
992 static void trf7970a_issue_eof(struct trf7970a *trf) in trf7970a_issue_eof() argument
996 dev_dbg(trf->dev, "Issuing EOF\n"); in trf7970a_issue_eof()
998 ret = trf7970a_cmd(trf, TRF7970A_CMD_FIFO_RESET); in trf7970a_issue_eof()
1000 trf7970a_send_err_upstream(trf, ret); in trf7970a_issue_eof()
1002 ret = trf7970a_cmd(trf, TRF7970A_CMD_EOF); in trf7970a_issue_eof()
1004 trf7970a_send_err_upstream(trf, ret); in trf7970a_issue_eof()
1006 trf->state = TRF7970A_ST_WAIT_FOR_RX_DATA; in trf7970a_issue_eof()
1008 dev_dbg(trf->dev, "Setting timeout for %d ms, state: %d\n", in trf7970a_issue_eof()
1009 trf->timeout, trf->state); in trf7970a_issue_eof()
1011 schedule_delayed_work(&trf->timeout_work, in trf7970a_issue_eof()
1012 msecs_to_jiffies(trf->timeout)); in trf7970a_issue_eof()
1017 struct trf7970a *trf = container_of(work, struct trf7970a, in trf7970a_timeout_work_handler() local
1020 dev_dbg(trf->dev, "Timeout - state: %d, ignore_timeout: %d\n", in trf7970a_timeout_work_handler()
1021 trf->state, trf->ignore_timeout); in trf7970a_timeout_work_handler()
1023 mutex_lock(&trf->lock); in trf7970a_timeout_work_handler()
1025 if (trf->ignore_timeout) in trf7970a_timeout_work_handler()
1026 trf->ignore_timeout = false; in trf7970a_timeout_work_handler()
1027 else if (trf->state == TRF7970A_ST_WAIT_FOR_RX_DATA_CONT) in trf7970a_timeout_work_handler()
1028 trf7970a_drain_fifo(trf, TRF7970A_IRQ_STATUS_SRX); in trf7970a_timeout_work_handler()
1029 else if (trf->state == TRF7970A_ST_WAIT_TO_ISSUE_EOF) in trf7970a_timeout_work_handler()
1030 trf7970a_issue_eof(trf); in trf7970a_timeout_work_handler()
1032 trf7970a_send_err_upstream(trf, -ETIMEDOUT); in trf7970a_timeout_work_handler()
1034 mutex_unlock(&trf->lock); in trf7970a_timeout_work_handler()
1037 static int trf7970a_init(struct trf7970a *trf) in trf7970a_init() argument
1041 dev_dbg(trf->dev, "Initializing device - state: %d\n", trf->state); in trf7970a_init()
1043 ret = trf7970a_cmd(trf, TRF7970A_CMD_SOFT_INIT); in trf7970a_init()
1047 ret = trf7970a_cmd(trf, TRF7970A_CMD_IDLE); in trf7970a_init()
1053 trf->chip_status_ctrl &= ~TRF7970A_CHIP_STATUS_RF_ON; in trf7970a_init()
1055 ret = trf7970a_write(trf, TRF7970A_MODULATOR_SYS_CLK_CTRL, 0); in trf7970a_init()
1059 trf->modulator_sys_clk_ctrl = 0; in trf7970a_init()
1061 ret = trf7970a_write(trf, TRF7970A_ADJUTABLE_FIFO_IRQ_LEVELS, in trf7970a_init()
1067 ret = trf7970a_write(trf, TRF7970A_SPECIAL_FCN_REG1, 0); in trf7970a_init()
1071 trf->special_fcn_reg1 = 0; in trf7970a_init()
1073 trf->iso_ctrl = 0xff; in trf7970a_init()
1077 dev_dbg(trf->dev, "Couldn't init device: %d\n", ret); in trf7970a_init()
1081 static void trf7970a_switch_rf_off(struct trf7970a *trf) in trf7970a_switch_rf_off() argument
1083 if ((trf->state == TRF7970A_ST_PWR_OFF) || in trf7970a_switch_rf_off()
1084 (trf->state == TRF7970A_ST_RF_OFF)) in trf7970a_switch_rf_off()
1087 dev_dbg(trf->dev, "Switching rf off\n"); in trf7970a_switch_rf_off()
1089 trf->chip_status_ctrl &= ~TRF7970A_CHIP_STATUS_RF_ON; in trf7970a_switch_rf_off()
1091 trf7970a_write(trf, TRF7970A_CHIP_STATUS_CTRL, trf->chip_status_ctrl); in trf7970a_switch_rf_off()
1093 trf->aborting = false; in trf7970a_switch_rf_off()
1094 trf->state = TRF7970A_ST_RF_OFF; in trf7970a_switch_rf_off()
1096 pm_runtime_mark_last_busy(trf->dev); in trf7970a_switch_rf_off()
1097 pm_runtime_put_autosuspend(trf->dev); in trf7970a_switch_rf_off()
1100 static int trf7970a_switch_rf_on(struct trf7970a *trf) in trf7970a_switch_rf_on() argument
1104 dev_dbg(trf->dev, "Switching rf on\n"); in trf7970a_switch_rf_on()
1106 pm_runtime_get_sync(trf->dev); in trf7970a_switch_rf_on()
1108 if (trf->state != TRF7970A_ST_RF_OFF) { /* Power on, RF off */ in trf7970a_switch_rf_on()
1109 dev_err(trf->dev, "%s - Incorrect state: %d\n", __func__, in trf7970a_switch_rf_on()
1110 trf->state); in trf7970a_switch_rf_on()
1114 ret = trf7970a_init(trf); in trf7970a_switch_rf_on()
1116 dev_err(trf->dev, "%s - Can't initialize: %d\n", __func__, ret); in trf7970a_switch_rf_on()
1120 trf->state = TRF7970A_ST_IDLE; in trf7970a_switch_rf_on()
1127 struct trf7970a *trf = nfc_digital_get_drvdata(ddev); in trf7970a_switch_rf() local
1130 dev_dbg(trf->dev, "Switching RF - state: %d, on: %d\n", trf->state, on); in trf7970a_switch_rf()
1132 mutex_lock(&trf->lock); in trf7970a_switch_rf()
1135 switch (trf->state) { in trf7970a_switch_rf()
1138 ret = trf7970a_switch_rf_on(trf); in trf7970a_switch_rf()
1144 dev_err(trf->dev, "%s - Invalid request: %d %d\n", in trf7970a_switch_rf()
1145 __func__, trf->state, on); in trf7970a_switch_rf()
1146 trf7970a_switch_rf_off(trf); in trf7970a_switch_rf()
1150 switch (trf->state) { in trf7970a_switch_rf()
1155 dev_err(trf->dev, "%s - Invalid request: %d %d\n", in trf7970a_switch_rf()
1156 __func__, trf->state, on); in trf7970a_switch_rf()
1163 trf7970a_switch_rf_off(trf); in trf7970a_switch_rf()
1167 mutex_unlock(&trf->lock); in trf7970a_switch_rf()
1171 static int trf7970a_in_config_rf_tech(struct trf7970a *trf, int tech) in trf7970a_in_config_rf_tech() argument
1175 dev_dbg(trf->dev, "rf technology: %d\n", tech); in trf7970a_in_config_rf_tech()
1179 trf->iso_ctrl_tech = TRF7970A_ISO_CTRL_14443A_106; in trf7970a_in_config_rf_tech()
1180 trf->modulator_sys_clk_ctrl = TRF7970A_MODULATOR_DEPTH_OOK; in trf7970a_in_config_rf_tech()
1181 trf->guard_time = TRF7970A_GUARD_TIME_NFCA; in trf7970a_in_config_rf_tech()
1184 trf->iso_ctrl_tech = TRF7970A_ISO_CTRL_14443B_106; in trf7970a_in_config_rf_tech()
1185 trf->modulator_sys_clk_ctrl = TRF7970A_MODULATOR_DEPTH_ASK10; in trf7970a_in_config_rf_tech()
1186 trf->guard_time = TRF7970A_GUARD_TIME_NFCB; in trf7970a_in_config_rf_tech()
1189 trf->iso_ctrl_tech = TRF7970A_ISO_CTRL_FELICA_212; in trf7970a_in_config_rf_tech()
1190 trf->modulator_sys_clk_ctrl = TRF7970A_MODULATOR_DEPTH_ASK10; in trf7970a_in_config_rf_tech()
1191 trf->guard_time = TRF7970A_GUARD_TIME_NFCF; in trf7970a_in_config_rf_tech()
1194 trf->iso_ctrl_tech = TRF7970A_ISO_CTRL_FELICA_424; in trf7970a_in_config_rf_tech()
1195 trf->modulator_sys_clk_ctrl = TRF7970A_MODULATOR_DEPTH_ASK10; in trf7970a_in_config_rf_tech()
1196 trf->guard_time = TRF7970A_GUARD_TIME_NFCF; in trf7970a_in_config_rf_tech()
1199 trf->iso_ctrl_tech = TRF7970A_ISO_CTRL_15693_SGL_1OF4_2648; in trf7970a_in_config_rf_tech()
1200 trf->modulator_sys_clk_ctrl = TRF7970A_MODULATOR_DEPTH_OOK; in trf7970a_in_config_rf_tech()
1201 trf->guard_time = TRF7970A_GUARD_TIME_15693; in trf7970a_in_config_rf_tech()
1204 dev_dbg(trf->dev, "Unsupported rf technology: %d\n", tech); in trf7970a_in_config_rf_tech()
1208 trf->technology = tech; in trf7970a_in_config_rf_tech()
1215 if (trf->iso_ctrl == 0xff) in trf7970a_in_config_rf_tech()
1216 ret = trf7970a_write(trf, TRF7970A_NFC_TARGET_LEVEL, 0); in trf7970a_in_config_rf_tech()
1221 static int trf7970a_is_rf_field(struct trf7970a *trf, bool *is_rf_field) in trf7970a_is_rf_field() argument
1226 ret = trf7970a_write(trf, TRF7970A_CHIP_STATUS_CTRL, in trf7970a_is_rf_field()
1227 trf->chip_status_ctrl | TRF7970A_CHIP_STATUS_REC_ON); in trf7970a_is_rf_field()
1231 ret = trf7970a_cmd(trf, TRF7970A_CMD_TEST_EXT_RF); in trf7970a_is_rf_field()
1237 ret = trf7970a_read(trf, TRF7970A_RSSI_OSC_STATUS, &rssi); in trf7970a_is_rf_field()
1241 ret = trf7970a_write(trf, TRF7970A_CHIP_STATUS_CTRL, in trf7970a_is_rf_field()
1242 trf->chip_status_ctrl); in trf7970a_is_rf_field()
1254 static int trf7970a_in_config_framing(struct trf7970a *trf, int framing) in trf7970a_in_config_framing() argument
1256 u8 iso_ctrl = trf->iso_ctrl_tech; in trf7970a_in_config_framing()
1260 dev_dbg(trf->dev, "framing: %d\n", framing); in trf7970a_in_config_framing()
1265 trf->tx_cmd = TRF7970A_CMD_TRANSMIT_NO_CRC; in trf7970a_in_config_framing()
1278 trf->tx_cmd = TRF7970A_CMD_TRANSMIT; in trf7970a_in_config_framing()
1282 trf->tx_cmd = TRF7970A_CMD_TRANSMIT; in trf7970a_in_config_framing()
1286 dev_dbg(trf->dev, "Unsupported Framing: %d\n", framing); in trf7970a_in_config_framing()
1290 trf->framing = framing; in trf7970a_in_config_framing()
1292 if (!(trf->chip_status_ctrl & TRF7970A_CHIP_STATUS_RF_ON)) { in trf7970a_in_config_framing()
1293 ret = trf7970a_is_rf_field(trf, &is_rf_field); in trf7970a_in_config_framing()
1301 if (iso_ctrl != trf->iso_ctrl) { in trf7970a_in_config_framing()
1302 ret = trf7970a_write(trf, TRF7970A_ISO_CTRL, iso_ctrl); in trf7970a_in_config_framing()
1306 trf->iso_ctrl = iso_ctrl; in trf7970a_in_config_framing()
1308 ret = trf7970a_write(trf, TRF7970A_MODULATOR_SYS_CLK_CTRL, in trf7970a_in_config_framing()
1309 trf->modulator_sys_clk_ctrl); in trf7970a_in_config_framing()
1314 if (!(trf->chip_status_ctrl & TRF7970A_CHIP_STATUS_RF_ON)) { in trf7970a_in_config_framing()
1315 ret = trf7970a_write(trf, TRF7970A_CHIP_STATUS_CTRL, in trf7970a_in_config_framing()
1316 trf->chip_status_ctrl | in trf7970a_in_config_framing()
1321 trf->chip_status_ctrl |= TRF7970A_CHIP_STATUS_RF_ON; in trf7970a_in_config_framing()
1323 usleep_range(trf->guard_time, trf->guard_time + 1000); in trf7970a_in_config_framing()
1332 struct trf7970a *trf = nfc_digital_get_drvdata(ddev); in trf7970a_in_configure_hw() local
1335 dev_dbg(trf->dev, "Configure hw - type: %d, param: %d\n", type, param); in trf7970a_in_configure_hw()
1337 mutex_lock(&trf->lock); in trf7970a_in_configure_hw()
1339 trf->is_initiator = true; in trf7970a_in_configure_hw()
1341 if ((trf->state == TRF7970A_ST_PWR_OFF) || in trf7970a_in_configure_hw()
1342 (trf->state == TRF7970A_ST_RF_OFF)) { in trf7970a_in_configure_hw()
1343 ret = trf7970a_switch_rf_on(trf); in trf7970a_in_configure_hw()
1350 ret = trf7970a_in_config_rf_tech(trf, param); in trf7970a_in_configure_hw()
1353 ret = trf7970a_in_config_framing(trf, param); in trf7970a_in_configure_hw()
1356 dev_dbg(trf->dev, "Unknown type: %d\n", type); in trf7970a_in_configure_hw()
1361 mutex_unlock(&trf->lock); in trf7970a_in_configure_hw()
1382 static int trf7970a_per_cmd_config(struct trf7970a *trf, struct sk_buff *skb) in trf7970a_per_cmd_config() argument
1388 trf->issue_eof = false; in trf7970a_per_cmd_config()
1399 if ((trf->technology == NFC_DIGITAL_RF_TECH_106A) && in trf7970a_per_cmd_config()
1400 (trf->framing == NFC_DIGITAL_FRAMING_NFCA_T2T)) { in trf7970a_per_cmd_config()
1406 if (special_fcn_reg1 != trf->special_fcn_reg1) { in trf7970a_per_cmd_config()
1407 ret = trf7970a_write(trf, TRF7970A_SPECIAL_FCN_REG1, in trf7970a_per_cmd_config()
1412 trf->special_fcn_reg1 = special_fcn_reg1; in trf7970a_per_cmd_config()
1414 } else if (trf->technology == NFC_DIGITAL_RF_TECH_ISO15693) { in trf7970a_per_cmd_config()
1415 iso_ctrl = trf->iso_ctrl & ~TRF7970A_ISO_CTRL_RFID_SPEED_MASK; in trf7970a_per_cmd_config()
1433 if (iso_ctrl != trf->iso_ctrl) { in trf7970a_per_cmd_config()
1434 ret = trf7970a_write(trf, TRF7970A_ISO_CTRL, iso_ctrl); in trf7970a_per_cmd_config()
1438 trf->iso_ctrl = iso_ctrl; in trf7970a_per_cmd_config()
1441 if (trf->framing == NFC_DIGITAL_FRAMING_ISO15693_T5T) { in trf7970a_per_cmd_config()
1444 trf->issue_eof = true; in trf7970a_per_cmd_config()
1445 else if ((trf->quirks & in trf7970a_per_cmd_config()
1448 trf->adjust_resp_len = true; in trf7970a_per_cmd_config()
1459 struct trf7970a *trf = nfc_digital_get_drvdata(ddev); in trf7970a_send_cmd() local
1465 dev_dbg(trf->dev, "New request - state: %d, timeout: %d ms, len: %d\n", in trf7970a_send_cmd()
1466 trf->state, timeout, skb->len); in trf7970a_send_cmd()
1471 mutex_lock(&trf->lock); in trf7970a_send_cmd()
1473 if ((trf->state != TRF7970A_ST_IDLE) && in trf7970a_send_cmd()
1474 (trf->state != TRF7970A_ST_IDLE_RX_BLOCKED)) { in trf7970a_send_cmd()
1475 dev_err(trf->dev, "%s - Bogus state: %d\n", __func__, in trf7970a_send_cmd()
1476 trf->state); in trf7970a_send_cmd()
1481 if (trf->aborting) { in trf7970a_send_cmd()
1482 dev_dbg(trf->dev, "Abort process complete\n"); in trf7970a_send_cmd()
1483 trf->aborting = false; in trf7970a_send_cmd()
1489 trf->rx_skb = nfc_alloc_recv_skb(TRF7970A_RX_SKB_ALLOC_SIZE, in trf7970a_send_cmd()
1491 if (!trf->rx_skb) { in trf7970a_send_cmd()
1492 dev_dbg(trf->dev, "Can't alloc rx_skb\n"); in trf7970a_send_cmd()
1498 if (trf->state == TRF7970A_ST_IDLE_RX_BLOCKED) { in trf7970a_send_cmd()
1499 ret = trf7970a_cmd(trf, TRF7970A_CMD_ENABLE_RX); in trf7970a_send_cmd()
1503 trf->state = TRF7970A_ST_IDLE; in trf7970a_send_cmd()
1506 if (trf->is_initiator) { in trf7970a_send_cmd()
1507 ret = trf7970a_per_cmd_config(trf, skb); in trf7970a_send_cmd()
1512 trf->ddev = ddev; in trf7970a_send_cmd()
1513 trf->tx_skb = skb; in trf7970a_send_cmd()
1514 trf->cb = cb; in trf7970a_send_cmd()
1515 trf->cb_arg = arg; in trf7970a_send_cmd()
1516 trf->timeout = timeout; in trf7970a_send_cmd()
1517 trf->ignore_timeout = false; in trf7970a_send_cmd()
1529 TRF7970A_CMD_BIT_OPCODE(trf->tx_cmd); in trf7970a_send_cmd()
1532 if (trf->framing == NFC_DIGITAL_FRAMING_NFCA_SHORT) { in trf7970a_send_cmd()
1544 ret = trf7970a_read_irqstatus(trf, &status); in trf7970a_send_cmd()
1548 ret = trf7970a_transmit(trf, skb, len, prefix, sizeof(prefix)); in trf7970a_send_cmd()
1550 kfree_skb(trf->rx_skb); in trf7970a_send_cmd()
1551 trf->rx_skb = NULL; in trf7970a_send_cmd()
1555 mutex_unlock(&trf->lock); in trf7970a_send_cmd()
1559 static int trf7970a_tg_config_rf_tech(struct trf7970a *trf, int tech) in trf7970a_tg_config_rf_tech() argument
1563 dev_dbg(trf->dev, "rf technology: %d\n", tech); in trf7970a_tg_config_rf_tech()
1567 trf->iso_ctrl_tech = TRF7970A_ISO_CTRL_NFC_NFC_CE_MODE | in trf7970a_tg_config_rf_tech()
1570 trf->modulator_sys_clk_ctrl = TRF7970A_MODULATOR_DEPTH_OOK; in trf7970a_tg_config_rf_tech()
1573 trf->iso_ctrl_tech = TRF7970A_ISO_CTRL_NFC_NFC_CE_MODE | in trf7970a_tg_config_rf_tech()
1575 trf->modulator_sys_clk_ctrl = TRF7970A_MODULATOR_DEPTH_ASK10; in trf7970a_tg_config_rf_tech()
1578 trf->iso_ctrl_tech = TRF7970A_ISO_CTRL_NFC_NFC_CE_MODE | in trf7970a_tg_config_rf_tech()
1580 trf->modulator_sys_clk_ctrl = TRF7970A_MODULATOR_DEPTH_ASK10; in trf7970a_tg_config_rf_tech()
1583 dev_dbg(trf->dev, "Unsupported rf technology: %d\n", tech); in trf7970a_tg_config_rf_tech()
1587 trf->technology = tech; in trf7970a_tg_config_rf_tech()
1596 if ((trf->framing == NFC_DIGITAL_FRAMING_NFC_DEP_ACTIVATED) && in trf7970a_tg_config_rf_tech()
1597 (trf->iso_ctrl_tech != trf->iso_ctrl)) { in trf7970a_tg_config_rf_tech()
1598 ret = trf7970a_write(trf, TRF7970A_ISO_CTRL, in trf7970a_tg_config_rf_tech()
1599 trf->iso_ctrl_tech); in trf7970a_tg_config_rf_tech()
1601 trf->iso_ctrl = trf->iso_ctrl_tech; in trf7970a_tg_config_rf_tech()
1613 static int trf7970a_tg_config_framing(struct trf7970a *trf, int framing) in trf7970a_tg_config_framing() argument
1615 u8 iso_ctrl = trf->iso_ctrl_tech; in trf7970a_tg_config_framing()
1618 dev_dbg(trf->dev, "framing: %d\n", framing); in trf7970a_tg_config_framing()
1622 trf->tx_cmd = TRF7970A_CMD_TRANSMIT_NO_CRC; in trf7970a_tg_config_framing()
1629 iso_ctrl = trf->iso_ctrl; /* Don't write to ISO_CTRL yet */ in trf7970a_tg_config_framing()
1632 trf->tx_cmd = TRF7970A_CMD_TRANSMIT; in trf7970a_tg_config_framing()
1636 trf->tx_cmd = TRF7970A_CMD_TRANSMIT; in trf7970a_tg_config_framing()
1640 dev_dbg(trf->dev, "Unsupported Framing: %d\n", framing); in trf7970a_tg_config_framing()
1644 trf->framing = framing; in trf7970a_tg_config_framing()
1646 if (iso_ctrl != trf->iso_ctrl) { in trf7970a_tg_config_framing()
1647 ret = trf7970a_write(trf, TRF7970A_ISO_CTRL, iso_ctrl); in trf7970a_tg_config_framing()
1651 trf->iso_ctrl = iso_ctrl; in trf7970a_tg_config_framing()
1653 ret = trf7970a_write(trf, TRF7970A_MODULATOR_SYS_CLK_CTRL, in trf7970a_tg_config_framing()
1654 trf->modulator_sys_clk_ctrl); in trf7970a_tg_config_framing()
1659 if (!(trf->chip_status_ctrl & TRF7970A_CHIP_STATUS_RF_ON)) { in trf7970a_tg_config_framing()
1660 ret = trf7970a_write(trf, TRF7970A_CHIP_STATUS_CTRL, in trf7970a_tg_config_framing()
1661 trf->chip_status_ctrl | in trf7970a_tg_config_framing()
1666 trf->chip_status_ctrl |= TRF7970A_CHIP_STATUS_RF_ON; in trf7970a_tg_config_framing()
1675 struct trf7970a *trf = nfc_digital_get_drvdata(ddev); in trf7970a_tg_configure_hw() local
1678 dev_dbg(trf->dev, "Configure hw - type: %d, param: %d\n", type, param); in trf7970a_tg_configure_hw()
1680 mutex_lock(&trf->lock); in trf7970a_tg_configure_hw()
1682 trf->is_initiator = false; in trf7970a_tg_configure_hw()
1684 if ((trf->state == TRF7970A_ST_PWR_OFF) || in trf7970a_tg_configure_hw()
1685 (trf->state == TRF7970A_ST_RF_OFF)) { in trf7970a_tg_configure_hw()
1686 ret = trf7970a_switch_rf_on(trf); in trf7970a_tg_configure_hw()
1693 ret = trf7970a_tg_config_rf_tech(trf, param); in trf7970a_tg_configure_hw()
1696 ret = trf7970a_tg_config_framing(trf, param); in trf7970a_tg_configure_hw()
1699 dev_dbg(trf->dev, "Unknown type: %d\n", type); in trf7970a_tg_configure_hw()
1704 mutex_unlock(&trf->lock); in trf7970a_tg_configure_hw()
1711 struct trf7970a *trf = nfc_digital_get_drvdata(ddev); in _trf7970a_tg_listen() local
1714 mutex_lock(&trf->lock); in _trf7970a_tg_listen()
1716 if ((trf->state != TRF7970A_ST_IDLE) && in _trf7970a_tg_listen()
1717 (trf->state != TRF7970A_ST_IDLE_RX_BLOCKED)) { in _trf7970a_tg_listen()
1718 dev_err(trf->dev, "%s - Bogus state: %d\n", __func__, in _trf7970a_tg_listen()
1719 trf->state); in _trf7970a_tg_listen()
1724 if (trf->aborting) { in _trf7970a_tg_listen()
1725 dev_dbg(trf->dev, "Abort process complete\n"); in _trf7970a_tg_listen()
1726 trf->aborting = false; in _trf7970a_tg_listen()
1731 trf->rx_skb = nfc_alloc_recv_skb(TRF7970A_RX_SKB_ALLOC_SIZE, in _trf7970a_tg_listen()
1733 if (!trf->rx_skb) { in _trf7970a_tg_listen()
1734 dev_dbg(trf->dev, "Can't alloc rx_skb\n"); in _trf7970a_tg_listen()
1739 ret = trf7970a_write(trf, TRF7970A_RX_SPECIAL_SETTINGS, in _trf7970a_tg_listen()
1747 ret = trf7970a_write(trf, TRF7970A_REG_IO_CTRL, in _trf7970a_tg_listen()
1752 ret = trf7970a_write(trf, TRF7970A_NFC_LOW_FIELD_LEVEL, in _trf7970a_tg_listen()
1757 ret = trf7970a_write(trf, TRF7970A_NFC_TARGET_LEVEL, in _trf7970a_tg_listen()
1762 trf->ddev = ddev; in _trf7970a_tg_listen()
1763 trf->cb = cb; in _trf7970a_tg_listen()
1764 trf->cb_arg = arg; in _trf7970a_tg_listen()
1765 trf->timeout = timeout; in _trf7970a_tg_listen()
1766 trf->ignore_timeout = false; in _trf7970a_tg_listen()
1768 ret = trf7970a_cmd(trf, TRF7970A_CMD_ENABLE_RX); in _trf7970a_tg_listen()
1772 trf->state = mode_detect ? TRF7970A_ST_LISTENING_MD : in _trf7970a_tg_listen()
1775 schedule_delayed_work(&trf->timeout_work, msecs_to_jiffies(timeout)); in _trf7970a_tg_listen()
1778 mutex_unlock(&trf->lock); in _trf7970a_tg_listen()
1785 struct trf7970a *trf = nfc_digital_get_drvdata(ddev); in trf7970a_tg_listen() local
1787 dev_dbg(trf->dev, "Listen - state: %d, timeout: %d ms\n", in trf7970a_tg_listen()
1788 trf->state, timeout); in trf7970a_tg_listen()
1796 struct trf7970a *trf = nfc_digital_get_drvdata(ddev); in trf7970a_tg_listen_md() local
1799 dev_dbg(trf->dev, "Listen MD - state: %d, timeout: %d ms\n", in trf7970a_tg_listen_md()
1800 trf->state, timeout); in trf7970a_tg_listen_md()
1817 struct trf7970a *trf = nfc_digital_get_drvdata(ddev); in trf7970a_tg_get_rf_tech() local
1819 dev_dbg(trf->dev, "Get RF Tech - state: %d, rf_tech: %d\n", in trf7970a_tg_get_rf_tech()
1820 trf->state, trf->md_rf_tech); in trf7970a_tg_get_rf_tech()
1822 *rf_tech = trf->md_rf_tech; in trf7970a_tg_get_rf_tech()
1829 struct trf7970a *trf = nfc_digital_get_drvdata(ddev); in trf7970a_abort_cmd() local
1831 dev_dbg(trf->dev, "Abort process initiated\n"); in trf7970a_abort_cmd()
1833 mutex_lock(&trf->lock); in trf7970a_abort_cmd()
1835 switch (trf->state) { in trf7970a_abort_cmd()
1840 trf->aborting = true; in trf7970a_abort_cmd()
1843 trf->ignore_timeout = !cancel_delayed_work(&trf->timeout_work); in trf7970a_abort_cmd()
1844 trf7970a_send_err_upstream(trf, -ECANCELED); in trf7970a_abort_cmd()
1845 dev_dbg(trf->dev, "Abort process complete\n"); in trf7970a_abort_cmd()
1851 mutex_unlock(&trf->lock); in trf7970a_abort_cmd()
1866 static int trf7970a_power_up(struct trf7970a *trf) in trf7970a_power_up() argument
1870 dev_dbg(trf->dev, "Powering up - state: %d\n", trf->state); in trf7970a_power_up()
1872 if (trf->state != TRF7970A_ST_PWR_OFF) in trf7970a_power_up()
1875 ret = regulator_enable(trf->regulator); in trf7970a_power_up()
1877 dev_err(trf->dev, "%s - Can't enable VIN: %d\n", __func__, ret); in trf7970a_power_up()
1883 if (!(trf->quirks & TRF7970A_QUIRK_EN2_MUST_STAY_LOW)) { in trf7970a_power_up()
1884 gpio_set_value(trf->en2_gpio, 1); in trf7970a_power_up()
1888 gpio_set_value(trf->en_gpio, 1); in trf7970a_power_up()
1892 trf->state = TRF7970A_ST_RF_OFF; in trf7970a_power_up()
1897 static int trf7970a_power_down(struct trf7970a *trf) in trf7970a_power_down() argument
1901 dev_dbg(trf->dev, "Powering down - state: %d\n", trf->state); in trf7970a_power_down()
1903 if (trf->state == TRF7970A_ST_PWR_OFF) in trf7970a_power_down()
1906 if (trf->state != TRF7970A_ST_RF_OFF) { in trf7970a_power_down()
1907 dev_dbg(trf->dev, "Can't power down - not RF_OFF state (%d)\n", in trf7970a_power_down()
1908 trf->state); in trf7970a_power_down()
1912 gpio_set_value(trf->en_gpio, 0); in trf7970a_power_down()
1913 gpio_set_value(trf->en2_gpio, 0); in trf7970a_power_down()
1915 ret = regulator_disable(trf->regulator); in trf7970a_power_down()
1917 dev_err(trf->dev, "%s - Can't disable VIN: %d\n", __func__, in trf7970a_power_down()
1920 trf->state = TRF7970A_ST_PWR_OFF; in trf7970a_power_down()
1925 static int trf7970a_startup(struct trf7970a *trf) in trf7970a_startup() argument
1929 ret = trf7970a_power_up(trf); in trf7970a_startup()
1933 pm_runtime_set_active(trf->dev); in trf7970a_startup()
1934 pm_runtime_enable(trf->dev); in trf7970a_startup()
1935 pm_runtime_mark_last_busy(trf->dev); in trf7970a_startup()
1940 static void trf7970a_shutdown(struct trf7970a *trf) in trf7970a_shutdown() argument
1942 switch (trf->state) { in trf7970a_shutdown()
1948 trf7970a_send_err_upstream(trf, -ECANCELED); in trf7970a_shutdown()
1952 trf7970a_switch_rf_off(trf); in trf7970a_shutdown()
1958 pm_runtime_disable(trf->dev); in trf7970a_shutdown()
1959 pm_runtime_set_suspended(trf->dev); in trf7970a_shutdown()
1961 trf7970a_power_down(trf); in trf7970a_shutdown()
1984 struct trf7970a *trf; in trf7970a_probe() local
1992 trf = devm_kzalloc(&spi->dev, sizeof(*trf), GFP_KERNEL); in trf7970a_probe()
1993 if (!trf) in trf7970a_probe()
1996 trf->state = TRF7970A_ST_PWR_OFF; in trf7970a_probe()
1997 trf->dev = &spi->dev; in trf7970a_probe()
1998 trf->spi = spi; in trf7970a_probe()
2005 dev_err(trf->dev, "Can't set up SPI Communication\n"); in trf7970a_probe()
2010 trf->quirks |= TRF7970A_QUIRK_T5T_RMB_EXTRA_BYTE; in trf7970a_probe()
2013 trf->quirks |= TRF7970A_QUIRK_IRQ_STATUS_READ; in trf7970a_probe()
2016 trf->en_gpio = of_get_named_gpio(np, "ti,enable-gpios", 0); in trf7970a_probe()
2017 if (!gpio_is_valid(trf->en_gpio)) { in trf7970a_probe()
2018 dev_err(trf->dev, "No EN GPIO property\n"); in trf7970a_probe()
2019 return trf->en_gpio; in trf7970a_probe()
2022 ret = devm_gpio_request_one(trf->dev, trf->en_gpio, in trf7970a_probe()
2025 dev_err(trf->dev, "Can't request EN GPIO: %d\n", ret); in trf7970a_probe()
2029 trf->en2_gpio = of_get_named_gpio(np, "ti,enable-gpios", 1); in trf7970a_probe()
2030 if (!gpio_is_valid(trf->en2_gpio)) { in trf7970a_probe()
2031 dev_err(trf->dev, "No EN2 GPIO property\n"); in trf7970a_probe()
2032 return trf->en2_gpio; in trf7970a_probe()
2035 ret = devm_gpio_request_one(trf->dev, trf->en2_gpio, in trf7970a_probe()
2038 dev_err(trf->dev, "Can't request EN2 GPIO: %d\n", ret); in trf7970a_probe()
2043 trf->quirks |= TRF7970A_QUIRK_EN2_MUST_STAY_LOW; in trf7970a_probe()
2045 ret = devm_request_threaded_irq(trf->dev, spi->irq, NULL, in trf7970a_probe()
2047 "trf7970a", trf); in trf7970a_probe()
2049 dev_err(trf->dev, "Can't request IRQ#%d: %d\n", spi->irq, ret); in trf7970a_probe()
2053 mutex_init(&trf->lock); in trf7970a_probe()
2054 INIT_DELAYED_WORK(&trf->timeout_work, trf7970a_timeout_work_handler); in trf7970a_probe()
2056 trf->regulator = devm_regulator_get(&spi->dev, "vin"); in trf7970a_probe()
2057 if (IS_ERR(trf->regulator)) { in trf7970a_probe()
2058 ret = PTR_ERR(trf->regulator); in trf7970a_probe()
2059 dev_err(trf->dev, "Can't get VIN regulator: %d\n", ret); in trf7970a_probe()
2063 ret = regulator_enable(trf->regulator); in trf7970a_probe()
2065 dev_err(trf->dev, "Can't enable VIN: %d\n", ret); in trf7970a_probe()
2071 uvolts = regulator_get_voltage(trf->regulator); in trf7970a_probe()
2074 trf->chip_status_ctrl = TRF7970A_CHIP_STATUS_VRS5_3; in trf7970a_probe()
2076 trf->ddev = nfc_digital_allocate_device(&trf7970a_nfc_ops, in trf7970a_probe()
2080 if (!trf->ddev) { in trf7970a_probe()
2081 dev_err(trf->dev, "Can't allocate NFC digital device\n"); in trf7970a_probe()
2086 nfc_digital_set_parent_dev(trf->ddev, trf->dev); in trf7970a_probe()
2087 nfc_digital_set_drvdata(trf->ddev, trf); in trf7970a_probe()
2088 spi_set_drvdata(spi, trf); in trf7970a_probe()
2092 pm_runtime_set_autosuspend_delay(trf->dev, autosuspend_delay); in trf7970a_probe()
2093 pm_runtime_use_autosuspend(trf->dev); in trf7970a_probe()
2095 ret = trf7970a_startup(trf); in trf7970a_probe()
2099 ret = nfc_digital_register_device(trf->ddev); in trf7970a_probe()
2101 dev_err(trf->dev, "Can't register NFC digital device: %d\n", in trf7970a_probe()
2109 trf7970a_shutdown(trf); in trf7970a_probe()
2111 nfc_digital_free_device(trf->ddev); in trf7970a_probe()
2113 regulator_disable(trf->regulator); in trf7970a_probe()
2115 mutex_destroy(&trf->lock); in trf7970a_probe()
2121 struct trf7970a *trf = spi_get_drvdata(spi); in trf7970a_remove() local
2123 mutex_lock(&trf->lock); in trf7970a_remove()
2125 trf7970a_shutdown(trf); in trf7970a_remove()
2127 mutex_unlock(&trf->lock); in trf7970a_remove()
2129 nfc_digital_unregister_device(trf->ddev); in trf7970a_remove()
2130 nfc_digital_free_device(trf->ddev); in trf7970a_remove()
2132 regulator_disable(trf->regulator); in trf7970a_remove()
2134 mutex_destroy(&trf->lock); in trf7970a_remove()
2143 struct trf7970a *trf = spi_get_drvdata(spi); in trf7970a_suspend() local
2147 mutex_lock(&trf->lock); in trf7970a_suspend()
2149 trf7970a_shutdown(trf); in trf7970a_suspend()
2151 mutex_unlock(&trf->lock); in trf7970a_suspend()
2159 struct trf7970a *trf = spi_get_drvdata(spi); in trf7970a_resume() local
2164 mutex_lock(&trf->lock); in trf7970a_resume()
2166 ret = trf7970a_startup(trf); in trf7970a_resume()
2168 mutex_unlock(&trf->lock); in trf7970a_resume()
2178 struct trf7970a *trf = spi_get_drvdata(spi); in trf7970a_pm_runtime_suspend() local
2183 mutex_lock(&trf->lock); in trf7970a_pm_runtime_suspend()
2185 ret = trf7970a_power_down(trf); in trf7970a_pm_runtime_suspend()
2187 mutex_unlock(&trf->lock); in trf7970a_pm_runtime_suspend()
2195 struct trf7970a *trf = spi_get_drvdata(spi); in trf7970a_pm_runtime_resume() local
2200 ret = trf7970a_power_up(trf); in trf7970a_pm_runtime_resume()