trf 456 drivers/nfc/trf7970a.c static int trf7970a_cmd(struct trf7970a *trf, u8 opcode) trf 461 drivers/nfc/trf7970a.c dev_dbg(trf->dev, "cmd: 0x%x\n", cmd); trf 463 drivers/nfc/trf7970a.c ret = spi_write(trf->spi, &cmd, 1); trf 465 drivers/nfc/trf7970a.c dev_err(trf->dev, "%s - cmd: 0x%x, ret: %d\n", __func__, cmd, trf 470 drivers/nfc/trf7970a.c static int trf7970a_read(struct trf7970a *trf, u8 reg, u8 *val) trf 475 drivers/nfc/trf7970a.c ret = spi_write_then_read(trf->spi, &addr, 1, val, 1); trf 477 drivers/nfc/trf7970a.c dev_err(trf->dev, "%s - addr: 0x%x, ret: %d\n", __func__, addr, trf 480 drivers/nfc/trf7970a.c dev_dbg(trf->dev, "read(0x%x): 0x%x\n", addr, *val); trf 485 drivers/nfc/trf7970a.c static int trf7970a_read_cont(struct trf7970a *trf, u8 reg, u8 *buf, trf 493 drivers/nfc/trf7970a.c dev_dbg(trf->dev, "read_cont(0x%x, %zd)\n", addr, len); trf 507 drivers/nfc/trf7970a.c ret = spi_sync(trf->spi, &m); trf 509 drivers/nfc/trf7970a.c dev_err(trf->dev, "%s - addr: 0x%x, ret: %d\n", __func__, addr, trf 514 drivers/nfc/trf7970a.c static int trf7970a_write(struct trf7970a *trf, u8 reg, u8 val) trf 519 drivers/nfc/trf7970a.c dev_dbg(trf->dev, "write(0x%x): 0x%x\n", reg, val); trf 521 drivers/nfc/trf7970a.c ret = spi_write(trf->spi, buf, 2); trf 523 drivers/nfc/trf7970a.c dev_err(trf->dev, "%s - write: 0x%x 0x%x, ret: %d\n", __func__, trf 529 drivers/nfc/trf7970a.c static int trf7970a_read_irqstatus(struct trf7970a *trf, u8 *status) trf 537 drivers/nfc/trf7970a.c if (trf->quirks & TRF7970A_QUIRK_IRQ_STATUS_READ) { trf 539 drivers/nfc/trf7970a.c ret = spi_write_then_read(trf->spi, &addr, 1, buf, 2); trf 541 drivers/nfc/trf7970a.c ret = spi_write_then_read(trf->spi, &addr, 1, buf, 1); trf 545 drivers/nfc/trf7970a.c dev_err(trf->dev, "%s - irqstatus: Status read failed: %d\n", trf 553 drivers/nfc/trf7970a.c static int trf7970a_read_target_proto(struct trf7970a *trf, u8 *target_proto) trf 562 drivers/nfc/trf7970a.c ret = spi_write_then_read(trf->spi, &addr, 1, buf, 2); trf 564 drivers/nfc/trf7970a.c dev_err(trf->dev, "%s - target_proto: Read failed: %d\n", trf 572 drivers/nfc/trf7970a.c static int trf7970a_mode_detect(struct trf7970a *trf, u8 *rf_tech) trf 577 drivers/nfc/trf7970a.c ret = trf7970a_read_target_proto(trf, &target_proto); trf 595 drivers/nfc/trf7970a.c dev_dbg(trf->dev, "%s - mode_detect: target_proto: 0x%x\n", trf 605 drivers/nfc/trf7970a.c static void trf7970a_send_upstream(struct trf7970a *trf) trf 607 drivers/nfc/trf7970a.c dev_kfree_skb_any(trf->tx_skb); trf 608 drivers/nfc/trf7970a.c trf->tx_skb = NULL; trf 610 drivers/nfc/trf7970a.c if (trf->rx_skb && !IS_ERR(trf->rx_skb) && !trf->aborting) trf 612 drivers/nfc/trf7970a.c 16, 1, trf->rx_skb->data, trf->rx_skb->len, trf 615 drivers/nfc/trf7970a.c trf->state = TRF7970A_ST_IDLE; trf 617 drivers/nfc/trf7970a.c if (trf->aborting) { trf 618 drivers/nfc/trf7970a.c dev_dbg(trf->dev, "Abort process complete\n"); trf 620 drivers/nfc/trf7970a.c if (!IS_ERR(trf->rx_skb)) { trf 621 drivers/nfc/trf7970a.c kfree_skb(trf->rx_skb); trf 622 drivers/nfc/trf7970a.c trf->rx_skb = ERR_PTR(-ECANCELED); trf 625 drivers/nfc/trf7970a.c trf->aborting = false; trf 628 drivers/nfc/trf7970a.c trf->cb(trf->ddev, trf->cb_arg, trf->rx_skb); trf 630 drivers/nfc/trf7970a.c trf->rx_skb = NULL; trf 633 drivers/nfc/trf7970a.c static void trf7970a_send_err_upstream(struct trf7970a *trf, int errno) trf 635 drivers/nfc/trf7970a.c dev_dbg(trf->dev, "Error - state: %d, errno: %d\n", trf->state, errno); trf 637 drivers/nfc/trf7970a.c cancel_delayed_work(&trf->timeout_work); trf 639 drivers/nfc/trf7970a.c kfree_skb(trf->rx_skb); trf 640 drivers/nfc/trf7970a.c trf->rx_skb = ERR_PTR(errno); trf 642 drivers/nfc/trf7970a.c trf7970a_send_upstream(trf); trf 645 drivers/nfc/trf7970a.c static int trf7970a_transmit(struct trf7970a *trf, struct sk_buff *skb, trf 669 drivers/nfc/trf7970a.c ret = spi_sync(trf->spi, &m); trf 671 drivers/nfc/trf7970a.c dev_err(trf->dev, "%s - Can't send tx data: %d\n", __func__, trf 679 drivers/nfc/trf7970a.c trf->state = TRF7970A_ST_WAIT_FOR_TX_FIFO; trf 682 drivers/nfc/trf7970a.c if (trf->issue_eof) { trf 683 drivers/nfc/trf7970a.c trf->state = TRF7970A_ST_WAIT_TO_ISSUE_EOF; trf 686 drivers/nfc/trf7970a.c trf->state = TRF7970A_ST_WAIT_FOR_RX_DATA; trf 688 drivers/nfc/trf7970a.c if (!trf->timeout) trf 691 drivers/nfc/trf7970a.c timeout = trf->timeout; trf 695 drivers/nfc/trf7970a.c dev_dbg(trf->dev, "Setting timeout for %d ms, state: %d\n", timeout, trf 696 drivers/nfc/trf7970a.c trf->state); trf 698 drivers/nfc/trf7970a.c schedule_delayed_work(&trf->timeout_work, msecs_to_jiffies(timeout)); trf 703 drivers/nfc/trf7970a.c static void trf7970a_fill_fifo(struct trf7970a *trf) trf 705 drivers/nfc/trf7970a.c struct sk_buff *skb = trf->tx_skb; trf 711 drivers/nfc/trf7970a.c ret = trf7970a_read(trf, TRF7970A_FIFO_STATUS, &fifo_bytes); trf 713 drivers/nfc/trf7970a.c trf7970a_send_err_upstream(trf, ret); trf 717 drivers/nfc/trf7970a.c dev_dbg(trf->dev, "Filling FIFO - fifo_bytes: 0x%x\n", fifo_bytes); trf 724 drivers/nfc/trf7970a.c schedule_delayed_work(&trf->timeout_work, trf 733 drivers/nfc/trf7970a.c ret = trf7970a_transmit(trf, skb, len, &prefix, sizeof(prefix)); trf 735 drivers/nfc/trf7970a.c trf7970a_send_err_upstream(trf, ret); trf 738 drivers/nfc/trf7970a.c static void trf7970a_drain_fifo(struct trf7970a *trf, u8 status) trf 740 drivers/nfc/trf7970a.c struct sk_buff *skb = trf->rx_skb; trf 745 drivers/nfc/trf7970a.c trf7970a_send_err_upstream(trf, -EIO); trf 749 drivers/nfc/trf7970a.c ret = trf7970a_read(trf, TRF7970A_FIFO_STATUS, &fifo_bytes); trf 751 drivers/nfc/trf7970a.c trf7970a_send_err_upstream(trf, ret); trf 755 drivers/nfc/trf7970a.c dev_dbg(trf->dev, "Draining FIFO - fifo_bytes: 0x%x\n", fifo_bytes); trf 768 drivers/nfc/trf7970a.c trf7970a_send_err_upstream(trf, -ENOMEM); trf 772 drivers/nfc/trf7970a.c kfree_skb(trf->rx_skb); trf 773 drivers/nfc/trf7970a.c trf->rx_skb = skb; trf 776 drivers/nfc/trf7970a.c ret = trf7970a_read_cont(trf, TRF7970A_FIFO_IO_REGISTER, trf 779 drivers/nfc/trf7970a.c trf7970a_send_err_upstream(trf, ret); trf 784 drivers/nfc/trf7970a.c if ((trf->framing == NFC_DIGITAL_FRAMING_NFCA_T2T) && (skb->len == 1) && trf 785 drivers/nfc/trf7970a.c (trf->special_fcn_reg1 == TRF7970A_SPECIAL_FCN_REG1_4_BIT_RX)) { trf 789 drivers/nfc/trf7970a.c trf->state = TRF7970A_ST_WAIT_FOR_RX_DATA_CONT; trf 791 drivers/nfc/trf7970a.c ret = trf7970a_read(trf, TRF7970A_FIFO_STATUS, &fifo_bytes); trf 793 drivers/nfc/trf7970a.c trf7970a_send_err_upstream(trf, ret); trf 809 drivers/nfc/trf7970a.c trf7970a_send_upstream(trf); trf 813 drivers/nfc/trf7970a.c dev_dbg(trf->dev, "Setting timeout for %d ms\n", trf 816 drivers/nfc/trf7970a.c schedule_delayed_work(&trf->timeout_work, trf 822 drivers/nfc/trf7970a.c struct trf7970a *trf = dev_id; trf 826 drivers/nfc/trf7970a.c mutex_lock(&trf->lock); trf 828 drivers/nfc/trf7970a.c if (trf->state == TRF7970A_ST_RF_OFF) { trf 829 drivers/nfc/trf7970a.c mutex_unlock(&trf->lock); trf 833 drivers/nfc/trf7970a.c ret = trf7970a_read_irqstatus(trf, &status); trf 835 drivers/nfc/trf7970a.c mutex_unlock(&trf->lock); trf 839 drivers/nfc/trf7970a.c dev_dbg(trf->dev, "IRQ - state: %d, status: 0x%x\n", trf->state, trf 843 drivers/nfc/trf7970a.c mutex_unlock(&trf->lock); trf 847 drivers/nfc/trf7970a.c switch (trf->state) { trf 855 drivers/nfc/trf7970a.c if (trf->is_initiator && (status & TRF7970A_IRQ_STATUS_ERROR)) { trf 856 drivers/nfc/trf7970a.c trf7970a_cmd(trf, TRF7970A_CMD_BLOCK_RX); trf 857 drivers/nfc/trf7970a.c trf->state = TRF7970A_ST_IDLE_RX_BLOCKED; trf 860 drivers/nfc/trf7970a.c trf7970a_cmd(trf, TRF7970A_CMD_FIFO_RESET); trf 864 drivers/nfc/trf7970a.c trf->ignore_timeout = trf 865 drivers/nfc/trf7970a.c !cancel_delayed_work(&trf->timeout_work); trf 866 drivers/nfc/trf7970a.c trf7970a_fill_fifo(trf); trf 868 drivers/nfc/trf7970a.c trf7970a_send_err_upstream(trf, -EIO); trf 874 drivers/nfc/trf7970a.c trf->ignore_timeout = trf 875 drivers/nfc/trf7970a.c !cancel_delayed_work(&trf->timeout_work); trf 876 drivers/nfc/trf7970a.c trf7970a_drain_fifo(trf, status); trf 878 drivers/nfc/trf7970a.c ret = trf7970a_read(trf, TRF7970A_FIFO_STATUS, trf 884 drivers/nfc/trf7970a.c trf7970a_send_err_upstream(trf, ret); trf 886 drivers/nfc/trf7970a.c trf7970a_cmd(trf, TRF7970A_CMD_FIFO_RESET); trf 888 drivers/nfc/trf7970a.c (!trf->is_initiator && trf 891 drivers/nfc/trf7970a.c trf7970a_cmd(trf, TRF7970A_CMD_FIFO_RESET); trf 893 drivers/nfc/trf7970a.c if (!trf->timeout) { trf 894 drivers/nfc/trf7970a.c trf->ignore_timeout = trf 895 drivers/nfc/trf7970a.c !cancel_delayed_work(&trf->timeout_work); trf 896 drivers/nfc/trf7970a.c trf->rx_skb = ERR_PTR(0); trf 897 drivers/nfc/trf7970a.c trf7970a_send_upstream(trf); trf 901 drivers/nfc/trf7970a.c if (trf->is_initiator) trf 904 drivers/nfc/trf7970a.c iso_ctrl = trf->iso_ctrl; trf 906 drivers/nfc/trf7970a.c switch (trf->framing) { trf 908 drivers/nfc/trf7970a.c trf->tx_cmd = TRF7970A_CMD_TRANSMIT_NO_CRC; trf 910 drivers/nfc/trf7970a.c trf->iso_ctrl = 0xff; /* Force ISO_CTRL write */ trf 913 drivers/nfc/trf7970a.c trf->tx_cmd = TRF7970A_CMD_TRANSMIT; trf 915 drivers/nfc/trf7970a.c trf->iso_ctrl = 0xff; /* Force ISO_CTRL write */ trf 918 drivers/nfc/trf7970a.c ret = trf7970a_write(trf, trf 924 drivers/nfc/trf7970a.c trf->special_fcn_reg1 = trf 931 drivers/nfc/trf7970a.c if (iso_ctrl != trf->iso_ctrl) { trf 932 drivers/nfc/trf7970a.c ret = trf7970a_write(trf, TRF7970A_ISO_CTRL, trf 937 drivers/nfc/trf7970a.c trf->iso_ctrl = iso_ctrl; trf 940 drivers/nfc/trf7970a.c trf7970a_send_err_upstream(trf, -EIO); trf 945 drivers/nfc/trf7970a.c trf7970a_send_err_upstream(trf, -EIO); trf 949 drivers/nfc/trf7970a.c trf->ignore_timeout = trf 950 drivers/nfc/trf7970a.c !cancel_delayed_work(&trf->timeout_work); trf 951 drivers/nfc/trf7970a.c trf7970a_drain_fifo(trf, status); trf 953 drivers/nfc/trf7970a.c trf7970a_send_err_upstream(trf, -EIO); trf 958 drivers/nfc/trf7970a.c trf->ignore_timeout = trf 959 drivers/nfc/trf7970a.c !cancel_delayed_work(&trf->timeout_work); trf 961 drivers/nfc/trf7970a.c ret = trf7970a_mode_detect(trf, &trf->md_rf_tech); trf 963 drivers/nfc/trf7970a.c trf7970a_send_err_upstream(trf, ret); trf 965 drivers/nfc/trf7970a.c trf->state = TRF7970A_ST_LISTENING; trf 966 drivers/nfc/trf7970a.c trf7970a_drain_fifo(trf, status); trf 969 drivers/nfc/trf7970a.c trf7970a_send_err_upstream(trf, -EIO); trf 973 drivers/nfc/trf7970a.c dev_err(trf->dev, "%s - Driver in invalid state: %d\n", trf 974 drivers/nfc/trf7970a.c __func__, trf->state); trf 978 drivers/nfc/trf7970a.c mutex_unlock(&trf->lock); trf 982 drivers/nfc/trf7970a.c static void trf7970a_issue_eof(struct trf7970a *trf) trf 986 drivers/nfc/trf7970a.c dev_dbg(trf->dev, "Issuing EOF\n"); trf 988 drivers/nfc/trf7970a.c ret = trf7970a_cmd(trf, TRF7970A_CMD_FIFO_RESET); trf 990 drivers/nfc/trf7970a.c trf7970a_send_err_upstream(trf, ret); trf 992 drivers/nfc/trf7970a.c ret = trf7970a_cmd(trf, TRF7970A_CMD_EOF); trf 994 drivers/nfc/trf7970a.c trf7970a_send_err_upstream(trf, ret); trf 996 drivers/nfc/trf7970a.c trf->state = TRF7970A_ST_WAIT_FOR_RX_DATA; trf 998 drivers/nfc/trf7970a.c dev_dbg(trf->dev, "Setting timeout for %d ms, state: %d\n", trf 999 drivers/nfc/trf7970a.c trf->timeout, trf->state); trf 1001 drivers/nfc/trf7970a.c schedule_delayed_work(&trf->timeout_work, trf 1002 drivers/nfc/trf7970a.c msecs_to_jiffies(trf->timeout)); trf 1007 drivers/nfc/trf7970a.c struct trf7970a *trf = container_of(work, struct trf7970a, trf 1010 drivers/nfc/trf7970a.c dev_dbg(trf->dev, "Timeout - state: %d, ignore_timeout: %d\n", trf 1011 drivers/nfc/trf7970a.c trf->state, trf->ignore_timeout); trf 1013 drivers/nfc/trf7970a.c mutex_lock(&trf->lock); trf 1015 drivers/nfc/trf7970a.c if (trf->ignore_timeout) trf 1016 drivers/nfc/trf7970a.c trf->ignore_timeout = false; trf 1017 drivers/nfc/trf7970a.c else if (trf->state == TRF7970A_ST_WAIT_FOR_RX_DATA_CONT) trf 1018 drivers/nfc/trf7970a.c trf7970a_drain_fifo(trf, TRF7970A_IRQ_STATUS_SRX); trf 1019 drivers/nfc/trf7970a.c else if (trf->state == TRF7970A_ST_WAIT_TO_ISSUE_EOF) trf 1020 drivers/nfc/trf7970a.c trf7970a_issue_eof(trf); trf 1022 drivers/nfc/trf7970a.c trf7970a_send_err_upstream(trf, -ETIMEDOUT); trf 1024 drivers/nfc/trf7970a.c mutex_unlock(&trf->lock); trf 1027 drivers/nfc/trf7970a.c static int trf7970a_init(struct trf7970a *trf) trf 1031 drivers/nfc/trf7970a.c dev_dbg(trf->dev, "Initializing device - state: %d\n", trf->state); trf 1033 drivers/nfc/trf7970a.c ret = trf7970a_cmd(trf, TRF7970A_CMD_SOFT_INIT); trf 1037 drivers/nfc/trf7970a.c ret = trf7970a_cmd(trf, TRF7970A_CMD_IDLE); trf 1041 drivers/nfc/trf7970a.c ret = trf7970a_write(trf, TRF7970A_REG_IO_CTRL, trf 1042 drivers/nfc/trf7970a.c trf->io_ctrl | TRF7970A_REG_IO_CTRL_VRS(0x1)); trf 1046 drivers/nfc/trf7970a.c ret = trf7970a_write(trf, TRF7970A_NFC_TARGET_LEVEL, 0); trf 1052 drivers/nfc/trf7970a.c trf->chip_status_ctrl &= ~TRF7970A_CHIP_STATUS_RF_ON; trf 1054 drivers/nfc/trf7970a.c ret = trf7970a_write(trf, TRF7970A_MODULATOR_SYS_CLK_CTRL, trf 1055 drivers/nfc/trf7970a.c trf->modulator_sys_clk_ctrl); trf 1059 drivers/nfc/trf7970a.c ret = trf7970a_write(trf, TRF7970A_ADJUTABLE_FIFO_IRQ_LEVELS, trf 1065 drivers/nfc/trf7970a.c ret = trf7970a_write(trf, TRF7970A_SPECIAL_FCN_REG1, 0); trf 1069 drivers/nfc/trf7970a.c trf->special_fcn_reg1 = 0; trf 1071 drivers/nfc/trf7970a.c trf->iso_ctrl = 0xff; trf 1075 drivers/nfc/trf7970a.c dev_dbg(trf->dev, "Couldn't init device: %d\n", ret); trf 1079 drivers/nfc/trf7970a.c static void trf7970a_switch_rf_off(struct trf7970a *trf) trf 1081 drivers/nfc/trf7970a.c if ((trf->state == TRF7970A_ST_PWR_OFF) || trf 1082 drivers/nfc/trf7970a.c (trf->state == TRF7970A_ST_RF_OFF)) trf 1085 drivers/nfc/trf7970a.c dev_dbg(trf->dev, "Switching rf off\n"); trf 1087 drivers/nfc/trf7970a.c trf->chip_status_ctrl &= ~TRF7970A_CHIP_STATUS_RF_ON; trf 1089 drivers/nfc/trf7970a.c trf7970a_write(trf, TRF7970A_CHIP_STATUS_CTRL, trf->chip_status_ctrl); trf 1091 drivers/nfc/trf7970a.c trf->aborting = false; trf 1092 drivers/nfc/trf7970a.c trf->state = TRF7970A_ST_RF_OFF; trf 1094 drivers/nfc/trf7970a.c pm_runtime_mark_last_busy(trf->dev); trf 1095 drivers/nfc/trf7970a.c pm_runtime_put_autosuspend(trf->dev); trf 1098 drivers/nfc/trf7970a.c static int trf7970a_switch_rf_on(struct trf7970a *trf) trf 1102 drivers/nfc/trf7970a.c dev_dbg(trf->dev, "Switching rf on\n"); trf 1104 drivers/nfc/trf7970a.c pm_runtime_get_sync(trf->dev); trf 1106 drivers/nfc/trf7970a.c if (trf->state != TRF7970A_ST_RF_OFF) { /* Power on, RF off */ trf 1107 drivers/nfc/trf7970a.c dev_err(trf->dev, "%s - Incorrect state: %d\n", __func__, trf 1108 drivers/nfc/trf7970a.c trf->state); trf 1112 drivers/nfc/trf7970a.c ret = trf7970a_init(trf); trf 1114 drivers/nfc/trf7970a.c dev_err(trf->dev, "%s - Can't initialize: %d\n", __func__, ret); trf 1118 drivers/nfc/trf7970a.c trf->state = TRF7970A_ST_IDLE; trf 1125 drivers/nfc/trf7970a.c struct trf7970a *trf = nfc_digital_get_drvdata(ddev); trf 1128 drivers/nfc/trf7970a.c dev_dbg(trf->dev, "Switching RF - state: %d, on: %d\n", trf->state, on); trf 1130 drivers/nfc/trf7970a.c mutex_lock(&trf->lock); trf 1133 drivers/nfc/trf7970a.c switch (trf->state) { trf 1136 drivers/nfc/trf7970a.c ret = trf7970a_switch_rf_on(trf); trf 1142 drivers/nfc/trf7970a.c dev_err(trf->dev, "%s - Invalid request: %d %d\n", trf 1143 drivers/nfc/trf7970a.c __func__, trf->state, on); trf 1144 drivers/nfc/trf7970a.c trf7970a_switch_rf_off(trf); trf 1148 drivers/nfc/trf7970a.c switch (trf->state) { trf 1153 drivers/nfc/trf7970a.c dev_err(trf->dev, "%s - Invalid request: %d %d\n", trf 1154 drivers/nfc/trf7970a.c __func__, trf->state, on); trf 1161 drivers/nfc/trf7970a.c trf7970a_switch_rf_off(trf); trf 1165 drivers/nfc/trf7970a.c mutex_unlock(&trf->lock); trf 1169 drivers/nfc/trf7970a.c static int trf7970a_in_config_rf_tech(struct trf7970a *trf, int tech) trf 1173 drivers/nfc/trf7970a.c dev_dbg(trf->dev, "rf technology: %d\n", tech); trf 1177 drivers/nfc/trf7970a.c trf->iso_ctrl_tech = TRF7970A_ISO_CTRL_14443A_106; trf 1178 drivers/nfc/trf7970a.c trf->modulator_sys_clk_ctrl = trf 1179 drivers/nfc/trf7970a.c (trf->modulator_sys_clk_ctrl & 0xf8) | trf 1181 drivers/nfc/trf7970a.c trf->guard_time = TRF7970A_GUARD_TIME_NFCA; trf 1184 drivers/nfc/trf7970a.c trf->iso_ctrl_tech = TRF7970A_ISO_CTRL_14443B_106; trf 1185 drivers/nfc/trf7970a.c trf->modulator_sys_clk_ctrl = trf 1186 drivers/nfc/trf7970a.c (trf->modulator_sys_clk_ctrl & 0xf8) | trf 1188 drivers/nfc/trf7970a.c trf->guard_time = TRF7970A_GUARD_TIME_NFCB; trf 1191 drivers/nfc/trf7970a.c trf->iso_ctrl_tech = TRF7970A_ISO_CTRL_FELICA_212; trf 1192 drivers/nfc/trf7970a.c trf->modulator_sys_clk_ctrl = trf 1193 drivers/nfc/trf7970a.c (trf->modulator_sys_clk_ctrl & 0xf8) | trf 1195 drivers/nfc/trf7970a.c trf->guard_time = TRF7970A_GUARD_TIME_NFCF; trf 1198 drivers/nfc/trf7970a.c trf->iso_ctrl_tech = TRF7970A_ISO_CTRL_FELICA_424; trf 1199 drivers/nfc/trf7970a.c trf->modulator_sys_clk_ctrl = trf 1200 drivers/nfc/trf7970a.c (trf->modulator_sys_clk_ctrl & 0xf8) | trf 1202 drivers/nfc/trf7970a.c trf->guard_time = TRF7970A_GUARD_TIME_NFCF; trf 1205 drivers/nfc/trf7970a.c trf->iso_ctrl_tech = TRF7970A_ISO_CTRL_15693_SGL_1OF4_2648; trf 1206 drivers/nfc/trf7970a.c trf->modulator_sys_clk_ctrl = trf 1207 drivers/nfc/trf7970a.c (trf->modulator_sys_clk_ctrl & 0xf8) | trf 1209 drivers/nfc/trf7970a.c trf->guard_time = TRF7970A_GUARD_TIME_15693; trf 1212 drivers/nfc/trf7970a.c dev_dbg(trf->dev, "Unsupported rf technology: %d\n", tech); trf 1216 drivers/nfc/trf7970a.c trf->technology = tech; trf 1223 drivers/nfc/trf7970a.c if (trf->iso_ctrl == 0xff) trf 1224 drivers/nfc/trf7970a.c ret = trf7970a_write(trf, TRF7970A_NFC_TARGET_LEVEL, 0); trf 1229 drivers/nfc/trf7970a.c static int trf7970a_is_rf_field(struct trf7970a *trf, bool *is_rf_field) trf 1234 drivers/nfc/trf7970a.c ret = trf7970a_write(trf, TRF7970A_CHIP_STATUS_CTRL, trf 1235 drivers/nfc/trf7970a.c trf->chip_status_ctrl | trf 1240 drivers/nfc/trf7970a.c ret = trf7970a_cmd(trf, TRF7970A_CMD_TEST_EXT_RF); trf 1246 drivers/nfc/trf7970a.c ret = trf7970a_read(trf, TRF7970A_RSSI_OSC_STATUS, &rssi); trf 1250 drivers/nfc/trf7970a.c ret = trf7970a_write(trf, TRF7970A_CHIP_STATUS_CTRL, trf 1251 drivers/nfc/trf7970a.c trf->chip_status_ctrl); trf 1263 drivers/nfc/trf7970a.c static int trf7970a_in_config_framing(struct trf7970a *trf, int framing) trf 1265 drivers/nfc/trf7970a.c u8 iso_ctrl = trf->iso_ctrl_tech; trf 1269 drivers/nfc/trf7970a.c dev_dbg(trf->dev, "framing: %d\n", framing); trf 1274 drivers/nfc/trf7970a.c trf->tx_cmd = TRF7970A_CMD_TRANSMIT_NO_CRC; trf 1287 drivers/nfc/trf7970a.c trf->tx_cmd = TRF7970A_CMD_TRANSMIT; trf 1291 drivers/nfc/trf7970a.c trf->tx_cmd = TRF7970A_CMD_TRANSMIT; trf 1295 drivers/nfc/trf7970a.c dev_dbg(trf->dev, "Unsupported Framing: %d\n", framing); trf 1299 drivers/nfc/trf7970a.c trf->framing = framing; trf 1301 drivers/nfc/trf7970a.c if (!(trf->chip_status_ctrl & TRF7970A_CHIP_STATUS_RF_ON)) { trf 1302 drivers/nfc/trf7970a.c ret = trf7970a_is_rf_field(trf, &is_rf_field); trf 1310 drivers/nfc/trf7970a.c if (iso_ctrl != trf->iso_ctrl) { trf 1311 drivers/nfc/trf7970a.c ret = trf7970a_write(trf, TRF7970A_ISO_CTRL, iso_ctrl); trf 1315 drivers/nfc/trf7970a.c trf->iso_ctrl = iso_ctrl; trf 1317 drivers/nfc/trf7970a.c ret = trf7970a_write(trf, TRF7970A_MODULATOR_SYS_CLK_CTRL, trf 1318 drivers/nfc/trf7970a.c trf->modulator_sys_clk_ctrl); trf 1323 drivers/nfc/trf7970a.c if (!(trf->chip_status_ctrl & TRF7970A_CHIP_STATUS_RF_ON)) { trf 1324 drivers/nfc/trf7970a.c ret = trf7970a_write(trf, TRF7970A_CHIP_STATUS_CTRL, trf 1325 drivers/nfc/trf7970a.c trf->chip_status_ctrl | trf 1330 drivers/nfc/trf7970a.c trf->chip_status_ctrl |= TRF7970A_CHIP_STATUS_RF_ON; trf 1332 drivers/nfc/trf7970a.c usleep_range(trf->guard_time, trf->guard_time + 1000); trf 1341 drivers/nfc/trf7970a.c struct trf7970a *trf = nfc_digital_get_drvdata(ddev); trf 1344 drivers/nfc/trf7970a.c dev_dbg(trf->dev, "Configure hw - type: %d, param: %d\n", type, param); trf 1346 drivers/nfc/trf7970a.c mutex_lock(&trf->lock); trf 1348 drivers/nfc/trf7970a.c trf->is_initiator = true; trf 1350 drivers/nfc/trf7970a.c if ((trf->state == TRF7970A_ST_PWR_OFF) || trf 1351 drivers/nfc/trf7970a.c (trf->state == TRF7970A_ST_RF_OFF)) { trf 1352 drivers/nfc/trf7970a.c ret = trf7970a_switch_rf_on(trf); trf 1359 drivers/nfc/trf7970a.c ret = trf7970a_in_config_rf_tech(trf, param); trf 1362 drivers/nfc/trf7970a.c ret = trf7970a_in_config_framing(trf, param); trf 1365 drivers/nfc/trf7970a.c dev_dbg(trf->dev, "Unknown type: %d\n", type); trf 1370 drivers/nfc/trf7970a.c mutex_unlock(&trf->lock); trf 1391 drivers/nfc/trf7970a.c static int trf7970a_per_cmd_config(struct trf7970a *trf, struct sk_buff *skb) trf 1397 drivers/nfc/trf7970a.c trf->issue_eof = false; trf 1408 drivers/nfc/trf7970a.c if ((trf->technology == NFC_DIGITAL_RF_TECH_106A) && trf 1409 drivers/nfc/trf7970a.c (trf->framing == NFC_DIGITAL_FRAMING_NFCA_T2T)) { trf 1415 drivers/nfc/trf7970a.c if (special_fcn_reg1 != trf->special_fcn_reg1) { trf 1416 drivers/nfc/trf7970a.c ret = trf7970a_write(trf, TRF7970A_SPECIAL_FCN_REG1, trf 1421 drivers/nfc/trf7970a.c trf->special_fcn_reg1 = special_fcn_reg1; trf 1423 drivers/nfc/trf7970a.c } else if (trf->technology == NFC_DIGITAL_RF_TECH_ISO15693) { trf 1424 drivers/nfc/trf7970a.c iso_ctrl = trf->iso_ctrl & ~TRF7970A_ISO_CTRL_RFID_SPEED_MASK; trf 1442 drivers/nfc/trf7970a.c if (iso_ctrl != trf->iso_ctrl) { trf 1443 drivers/nfc/trf7970a.c ret = trf7970a_write(trf, TRF7970A_ISO_CTRL, iso_ctrl); trf 1447 drivers/nfc/trf7970a.c trf->iso_ctrl = iso_ctrl; trf 1450 drivers/nfc/trf7970a.c if ((trf->framing == NFC_DIGITAL_FRAMING_ISO15693_T5T) && trf 1453 drivers/nfc/trf7970a.c trf->issue_eof = true; trf 1463 drivers/nfc/trf7970a.c struct trf7970a *trf = nfc_digital_get_drvdata(ddev); trf 1469 drivers/nfc/trf7970a.c dev_dbg(trf->dev, "New request - state: %d, timeout: %d ms, len: %d\n", trf 1470 drivers/nfc/trf7970a.c trf->state, timeout, skb->len); trf 1475 drivers/nfc/trf7970a.c mutex_lock(&trf->lock); trf 1477 drivers/nfc/trf7970a.c if ((trf->state != TRF7970A_ST_IDLE) && trf 1478 drivers/nfc/trf7970a.c (trf->state != TRF7970A_ST_IDLE_RX_BLOCKED)) { trf 1479 drivers/nfc/trf7970a.c dev_err(trf->dev, "%s - Bogus state: %d\n", __func__, trf 1480 drivers/nfc/trf7970a.c trf->state); trf 1485 drivers/nfc/trf7970a.c if (trf->aborting) { trf 1486 drivers/nfc/trf7970a.c dev_dbg(trf->dev, "Abort process complete\n"); trf 1487 drivers/nfc/trf7970a.c trf->aborting = false; trf 1493 drivers/nfc/trf7970a.c trf->rx_skb = nfc_alloc_recv_skb(TRF7970A_RX_SKB_ALLOC_SIZE, trf 1495 drivers/nfc/trf7970a.c if (!trf->rx_skb) { trf 1496 drivers/nfc/trf7970a.c dev_dbg(trf->dev, "Can't alloc rx_skb\n"); trf 1502 drivers/nfc/trf7970a.c if (trf->state == TRF7970A_ST_IDLE_RX_BLOCKED) { trf 1503 drivers/nfc/trf7970a.c ret = trf7970a_cmd(trf, TRF7970A_CMD_ENABLE_RX); trf 1507 drivers/nfc/trf7970a.c trf->state = TRF7970A_ST_IDLE; trf 1510 drivers/nfc/trf7970a.c if (trf->is_initiator) { trf 1511 drivers/nfc/trf7970a.c ret = trf7970a_per_cmd_config(trf, skb); trf 1516 drivers/nfc/trf7970a.c trf->ddev = ddev; trf 1517 drivers/nfc/trf7970a.c trf->tx_skb = skb; trf 1518 drivers/nfc/trf7970a.c trf->cb = cb; trf 1519 drivers/nfc/trf7970a.c trf->cb_arg = arg; trf 1520 drivers/nfc/trf7970a.c trf->timeout = timeout; trf 1521 drivers/nfc/trf7970a.c trf->ignore_timeout = false; trf 1533 drivers/nfc/trf7970a.c TRF7970A_CMD_BIT_OPCODE(trf->tx_cmd); trf 1536 drivers/nfc/trf7970a.c if (trf->framing == NFC_DIGITAL_FRAMING_NFCA_SHORT) { trf 1548 drivers/nfc/trf7970a.c ret = trf7970a_read_irqstatus(trf, &status); trf 1552 drivers/nfc/trf7970a.c ret = trf7970a_transmit(trf, skb, len, prefix, sizeof(prefix)); trf 1554 drivers/nfc/trf7970a.c kfree_skb(trf->rx_skb); trf 1555 drivers/nfc/trf7970a.c trf->rx_skb = NULL; trf 1559 drivers/nfc/trf7970a.c mutex_unlock(&trf->lock); trf 1563 drivers/nfc/trf7970a.c static int trf7970a_tg_config_rf_tech(struct trf7970a *trf, int tech) trf 1567 drivers/nfc/trf7970a.c dev_dbg(trf->dev, "rf technology: %d\n", tech); trf 1571 drivers/nfc/trf7970a.c trf->iso_ctrl_tech = TRF7970A_ISO_CTRL_NFC_NFC_CE_MODE | trf 1573 drivers/nfc/trf7970a.c trf->modulator_sys_clk_ctrl = trf 1574 drivers/nfc/trf7970a.c (trf->modulator_sys_clk_ctrl & 0xf8) | trf 1578 drivers/nfc/trf7970a.c trf->iso_ctrl_tech = TRF7970A_ISO_CTRL_NFC_NFC_CE_MODE | trf 1580 drivers/nfc/trf7970a.c trf->modulator_sys_clk_ctrl = trf 1581 drivers/nfc/trf7970a.c (trf->modulator_sys_clk_ctrl & 0xf8) | trf 1585 drivers/nfc/trf7970a.c trf->iso_ctrl_tech = TRF7970A_ISO_CTRL_NFC_NFC_CE_MODE | trf 1587 drivers/nfc/trf7970a.c trf->modulator_sys_clk_ctrl = trf 1588 drivers/nfc/trf7970a.c (trf->modulator_sys_clk_ctrl & 0xf8) | trf 1592 drivers/nfc/trf7970a.c dev_dbg(trf->dev, "Unsupported rf technology: %d\n", tech); trf 1596 drivers/nfc/trf7970a.c trf->technology = tech; trf 1605 drivers/nfc/trf7970a.c if ((trf->framing == NFC_DIGITAL_FRAMING_NFC_DEP_ACTIVATED) && trf 1606 drivers/nfc/trf7970a.c (trf->iso_ctrl_tech != trf->iso_ctrl)) { trf 1607 drivers/nfc/trf7970a.c ret = trf7970a_write(trf, TRF7970A_ISO_CTRL, trf 1608 drivers/nfc/trf7970a.c trf->iso_ctrl_tech); trf 1610 drivers/nfc/trf7970a.c trf->iso_ctrl = trf->iso_ctrl_tech; trf 1622 drivers/nfc/trf7970a.c static int trf7970a_tg_config_framing(struct trf7970a *trf, int framing) trf 1624 drivers/nfc/trf7970a.c u8 iso_ctrl = trf->iso_ctrl_tech; trf 1627 drivers/nfc/trf7970a.c dev_dbg(trf->dev, "framing: %d\n", framing); trf 1631 drivers/nfc/trf7970a.c trf->tx_cmd = TRF7970A_CMD_TRANSMIT_NO_CRC; trf 1638 drivers/nfc/trf7970a.c iso_ctrl = trf->iso_ctrl; /* Don't write to ISO_CTRL yet */ trf 1641 drivers/nfc/trf7970a.c trf->tx_cmd = TRF7970A_CMD_TRANSMIT; trf 1645 drivers/nfc/trf7970a.c trf->tx_cmd = TRF7970A_CMD_TRANSMIT; trf 1649 drivers/nfc/trf7970a.c dev_dbg(trf->dev, "Unsupported Framing: %d\n", framing); trf 1653 drivers/nfc/trf7970a.c trf->framing = framing; trf 1655 drivers/nfc/trf7970a.c if (iso_ctrl != trf->iso_ctrl) { trf 1656 drivers/nfc/trf7970a.c ret = trf7970a_write(trf, TRF7970A_ISO_CTRL, iso_ctrl); trf 1660 drivers/nfc/trf7970a.c trf->iso_ctrl = iso_ctrl; trf 1662 drivers/nfc/trf7970a.c ret = trf7970a_write(trf, TRF7970A_MODULATOR_SYS_CLK_CTRL, trf 1663 drivers/nfc/trf7970a.c trf->modulator_sys_clk_ctrl); trf 1668 drivers/nfc/trf7970a.c if (!(trf->chip_status_ctrl & TRF7970A_CHIP_STATUS_RF_ON)) { trf 1669 drivers/nfc/trf7970a.c ret = trf7970a_write(trf, TRF7970A_CHIP_STATUS_CTRL, trf 1670 drivers/nfc/trf7970a.c trf->chip_status_ctrl | trf 1675 drivers/nfc/trf7970a.c trf->chip_status_ctrl |= TRF7970A_CHIP_STATUS_RF_ON; trf 1684 drivers/nfc/trf7970a.c struct trf7970a *trf = nfc_digital_get_drvdata(ddev); trf 1687 drivers/nfc/trf7970a.c dev_dbg(trf->dev, "Configure hw - type: %d, param: %d\n", type, param); trf 1689 drivers/nfc/trf7970a.c mutex_lock(&trf->lock); trf 1691 drivers/nfc/trf7970a.c trf->is_initiator = false; trf 1693 drivers/nfc/trf7970a.c if ((trf->state == TRF7970A_ST_PWR_OFF) || trf 1694 drivers/nfc/trf7970a.c (trf->state == TRF7970A_ST_RF_OFF)) { trf 1695 drivers/nfc/trf7970a.c ret = trf7970a_switch_rf_on(trf); trf 1702 drivers/nfc/trf7970a.c ret = trf7970a_tg_config_rf_tech(trf, param); trf 1705 drivers/nfc/trf7970a.c ret = trf7970a_tg_config_framing(trf, param); trf 1708 drivers/nfc/trf7970a.c dev_dbg(trf->dev, "Unknown type: %d\n", type); trf 1713 drivers/nfc/trf7970a.c mutex_unlock(&trf->lock); trf 1721 drivers/nfc/trf7970a.c struct trf7970a *trf = nfc_digital_get_drvdata(ddev); trf 1724 drivers/nfc/trf7970a.c mutex_lock(&trf->lock); trf 1726 drivers/nfc/trf7970a.c if ((trf->state != TRF7970A_ST_IDLE) && trf 1727 drivers/nfc/trf7970a.c (trf->state != TRF7970A_ST_IDLE_RX_BLOCKED)) { trf 1728 drivers/nfc/trf7970a.c dev_err(trf->dev, "%s - Bogus state: %d\n", __func__, trf 1729 drivers/nfc/trf7970a.c trf->state); trf 1734 drivers/nfc/trf7970a.c if (trf->aborting) { trf 1735 drivers/nfc/trf7970a.c dev_dbg(trf->dev, "Abort process complete\n"); trf 1736 drivers/nfc/trf7970a.c trf->aborting = false; trf 1741 drivers/nfc/trf7970a.c trf->rx_skb = nfc_alloc_recv_skb(TRF7970A_RX_SKB_ALLOC_SIZE, trf 1743 drivers/nfc/trf7970a.c if (!trf->rx_skb) { trf 1744 drivers/nfc/trf7970a.c dev_dbg(trf->dev, "Can't alloc rx_skb\n"); trf 1749 drivers/nfc/trf7970a.c ret = trf7970a_write(trf, TRF7970A_RX_SPECIAL_SETTINGS, trf 1757 drivers/nfc/trf7970a.c ret = trf7970a_write(trf, TRF7970A_REG_IO_CTRL, trf 1758 drivers/nfc/trf7970a.c trf->io_ctrl | TRF7970A_REG_IO_CTRL_VRS(0x1)); trf 1762 drivers/nfc/trf7970a.c ret = trf7970a_write(trf, TRF7970A_NFC_LOW_FIELD_LEVEL, trf 1767 drivers/nfc/trf7970a.c ret = trf7970a_write(trf, TRF7970A_NFC_TARGET_LEVEL, trf 1772 drivers/nfc/trf7970a.c trf->ddev = ddev; trf 1773 drivers/nfc/trf7970a.c trf->cb = cb; trf 1774 drivers/nfc/trf7970a.c trf->cb_arg = arg; trf 1775 drivers/nfc/trf7970a.c trf->timeout = timeout; trf 1776 drivers/nfc/trf7970a.c trf->ignore_timeout = false; trf 1778 drivers/nfc/trf7970a.c ret = trf7970a_cmd(trf, TRF7970A_CMD_ENABLE_RX); trf 1782 drivers/nfc/trf7970a.c trf->state = mode_detect ? TRF7970A_ST_LISTENING_MD : trf 1785 drivers/nfc/trf7970a.c schedule_delayed_work(&trf->timeout_work, msecs_to_jiffies(timeout)); trf 1788 drivers/nfc/trf7970a.c mutex_unlock(&trf->lock); trf 1795 drivers/nfc/trf7970a.c struct trf7970a *trf = nfc_digital_get_drvdata(ddev); trf 1797 drivers/nfc/trf7970a.c dev_dbg(trf->dev, "Listen - state: %d, timeout: %d ms\n", trf 1798 drivers/nfc/trf7970a.c trf->state, timeout); trf 1807 drivers/nfc/trf7970a.c struct trf7970a *trf = nfc_digital_get_drvdata(ddev); trf 1810 drivers/nfc/trf7970a.c dev_dbg(trf->dev, "Listen MD - state: %d, timeout: %d ms\n", trf 1811 drivers/nfc/trf7970a.c trf->state, timeout); trf 1828 drivers/nfc/trf7970a.c struct trf7970a *trf = nfc_digital_get_drvdata(ddev); trf 1830 drivers/nfc/trf7970a.c dev_dbg(trf->dev, "Get RF Tech - state: %d, rf_tech: %d\n", trf 1831 drivers/nfc/trf7970a.c trf->state, trf->md_rf_tech); trf 1833 drivers/nfc/trf7970a.c *rf_tech = trf->md_rf_tech; trf 1840 drivers/nfc/trf7970a.c struct trf7970a *trf = nfc_digital_get_drvdata(ddev); trf 1842 drivers/nfc/trf7970a.c dev_dbg(trf->dev, "Abort process initiated\n"); trf 1844 drivers/nfc/trf7970a.c mutex_lock(&trf->lock); trf 1846 drivers/nfc/trf7970a.c switch (trf->state) { trf 1851 drivers/nfc/trf7970a.c trf->aborting = true; trf 1854 drivers/nfc/trf7970a.c trf->ignore_timeout = !cancel_delayed_work(&trf->timeout_work); trf 1855 drivers/nfc/trf7970a.c trf7970a_send_err_upstream(trf, -ECANCELED); trf 1856 drivers/nfc/trf7970a.c dev_dbg(trf->dev, "Abort process complete\n"); trf 1862 drivers/nfc/trf7970a.c mutex_unlock(&trf->lock); trf 1877 drivers/nfc/trf7970a.c static int trf7970a_power_up(struct trf7970a *trf) trf 1881 drivers/nfc/trf7970a.c dev_dbg(trf->dev, "Powering up - state: %d\n", trf->state); trf 1883 drivers/nfc/trf7970a.c if (trf->state != TRF7970A_ST_PWR_OFF) trf 1886 drivers/nfc/trf7970a.c ret = regulator_enable(trf->regulator); trf 1888 drivers/nfc/trf7970a.c dev_err(trf->dev, "%s - Can't enable VIN: %d\n", __func__, ret); trf 1894 drivers/nfc/trf7970a.c if (trf->en2_gpiod && trf 1895 drivers/nfc/trf7970a.c !(trf->quirks & TRF7970A_QUIRK_EN2_MUST_STAY_LOW)) { trf 1896 drivers/nfc/trf7970a.c gpiod_set_value_cansleep(trf->en2_gpiod, 1); trf 1900 drivers/nfc/trf7970a.c gpiod_set_value_cansleep(trf->en_gpiod, 1); trf 1904 drivers/nfc/trf7970a.c trf->state = TRF7970A_ST_RF_OFF; trf 1909 drivers/nfc/trf7970a.c static int trf7970a_power_down(struct trf7970a *trf) trf 1913 drivers/nfc/trf7970a.c dev_dbg(trf->dev, "Powering down - state: %d\n", trf->state); trf 1915 drivers/nfc/trf7970a.c if (trf->state == TRF7970A_ST_PWR_OFF) trf 1918 drivers/nfc/trf7970a.c if (trf->state != TRF7970A_ST_RF_OFF) { trf 1919 drivers/nfc/trf7970a.c dev_dbg(trf->dev, "Can't power down - not RF_OFF state (%d)\n", trf 1920 drivers/nfc/trf7970a.c trf->state); trf 1924 drivers/nfc/trf7970a.c gpiod_set_value_cansleep(trf->en_gpiod, 0); trf 1926 drivers/nfc/trf7970a.c if (trf->en2_gpiod && !(trf->quirks & TRF7970A_QUIRK_EN2_MUST_STAY_LOW)) trf 1927 drivers/nfc/trf7970a.c gpiod_set_value_cansleep(trf->en2_gpiod, 0); trf 1929 drivers/nfc/trf7970a.c ret = regulator_disable(trf->regulator); trf 1931 drivers/nfc/trf7970a.c dev_err(trf->dev, "%s - Can't disable VIN: %d\n", __func__, trf 1934 drivers/nfc/trf7970a.c trf->state = TRF7970A_ST_PWR_OFF; trf 1939 drivers/nfc/trf7970a.c static int trf7970a_startup(struct trf7970a *trf) trf 1943 drivers/nfc/trf7970a.c ret = trf7970a_power_up(trf); trf 1947 drivers/nfc/trf7970a.c pm_runtime_set_active(trf->dev); trf 1948 drivers/nfc/trf7970a.c pm_runtime_enable(trf->dev); trf 1949 drivers/nfc/trf7970a.c pm_runtime_mark_last_busy(trf->dev); trf 1954 drivers/nfc/trf7970a.c static void trf7970a_shutdown(struct trf7970a *trf) trf 1956 drivers/nfc/trf7970a.c switch (trf->state) { trf 1962 drivers/nfc/trf7970a.c trf7970a_send_err_upstream(trf, -ECANCELED); trf 1966 drivers/nfc/trf7970a.c trf7970a_switch_rf_off(trf); trf 1972 drivers/nfc/trf7970a.c pm_runtime_disable(trf->dev); trf 1973 drivers/nfc/trf7970a.c pm_runtime_set_suspended(trf->dev); trf 1975 drivers/nfc/trf7970a.c trf7970a_power_down(trf); trf 1992 drivers/nfc/trf7970a.c struct trf7970a *trf; trf 2001 drivers/nfc/trf7970a.c trf = devm_kzalloc(&spi->dev, sizeof(*trf), GFP_KERNEL); trf 2002 drivers/nfc/trf7970a.c if (!trf) trf 2005 drivers/nfc/trf7970a.c trf->state = TRF7970A_ST_PWR_OFF; trf 2006 drivers/nfc/trf7970a.c trf->dev = &spi->dev; trf 2007 drivers/nfc/trf7970a.c trf->spi = spi; trf 2014 drivers/nfc/trf7970a.c dev_err(trf->dev, "Can't set up SPI Communication\n"); trf 2019 drivers/nfc/trf7970a.c trf->quirks |= TRF7970A_QUIRK_IRQ_STATUS_READ; trf 2022 drivers/nfc/trf7970a.c trf->en_gpiod = devm_gpiod_get_index(trf->dev, "ti,enable", 0, trf 2024 drivers/nfc/trf7970a.c if (IS_ERR(trf->en_gpiod)) { trf 2025 drivers/nfc/trf7970a.c dev_err(trf->dev, "No EN GPIO property\n"); trf 2026 drivers/nfc/trf7970a.c return PTR_ERR(trf->en_gpiod); trf 2029 drivers/nfc/trf7970a.c trf->en2_gpiod = devm_gpiod_get_index_optional(trf->dev, "ti,enable", 1, trf 2031 drivers/nfc/trf7970a.c if (!trf->en2_gpiod) { trf 2032 drivers/nfc/trf7970a.c dev_info(trf->dev, "No EN2 GPIO property\n"); trf 2033 drivers/nfc/trf7970a.c } else if (IS_ERR(trf->en2_gpiod)) { trf 2034 drivers/nfc/trf7970a.c dev_err(trf->dev, "Error getting EN2 GPIO property: %ld\n", trf 2035 drivers/nfc/trf7970a.c PTR_ERR(trf->en2_gpiod)); trf 2036 drivers/nfc/trf7970a.c return PTR_ERR(trf->en2_gpiod); trf 2038 drivers/nfc/trf7970a.c trf->quirks |= TRF7970A_QUIRK_EN2_MUST_STAY_LOW; trf 2044 drivers/nfc/trf7970a.c dev_err(trf->dev, trf 2050 drivers/nfc/trf7970a.c trf->modulator_sys_clk_ctrl = TRF7970A_MODULATOR_27MHZ; trf 2051 drivers/nfc/trf7970a.c dev_dbg(trf->dev, "trf7970a configured for 27MHz crystal\n"); trf 2053 drivers/nfc/trf7970a.c trf->modulator_sys_clk_ctrl = 0; trf 2056 drivers/nfc/trf7970a.c ret = devm_request_threaded_irq(trf->dev, spi->irq, NULL, trf 2059 drivers/nfc/trf7970a.c "trf7970a", trf); trf 2061 drivers/nfc/trf7970a.c dev_err(trf->dev, "Can't request IRQ#%d: %d\n", spi->irq, ret); trf 2065 drivers/nfc/trf7970a.c mutex_init(&trf->lock); trf 2066 drivers/nfc/trf7970a.c INIT_DELAYED_WORK(&trf->timeout_work, trf7970a_timeout_work_handler); trf 2068 drivers/nfc/trf7970a.c trf->regulator = devm_regulator_get(&spi->dev, "vin"); trf 2069 drivers/nfc/trf7970a.c if (IS_ERR(trf->regulator)) { trf 2070 drivers/nfc/trf7970a.c ret = PTR_ERR(trf->regulator); trf 2071 drivers/nfc/trf7970a.c dev_err(trf->dev, "Can't get VIN regulator: %d\n", ret); trf 2075 drivers/nfc/trf7970a.c ret = regulator_enable(trf->regulator); trf 2077 drivers/nfc/trf7970a.c dev_err(trf->dev, "Can't enable VIN: %d\n", ret); trf 2081 drivers/nfc/trf7970a.c uvolts = regulator_get_voltage(trf->regulator); trf 2083 drivers/nfc/trf7970a.c trf->chip_status_ctrl = TRF7970A_CHIP_STATUS_VRS5_3; trf 2085 drivers/nfc/trf7970a.c trf->regulator = devm_regulator_get(&spi->dev, "vdd-io"); trf 2086 drivers/nfc/trf7970a.c if (IS_ERR(trf->regulator)) { trf 2087 drivers/nfc/trf7970a.c ret = PTR_ERR(trf->regulator); trf 2088 drivers/nfc/trf7970a.c dev_err(trf->dev, "Can't get VDD_IO regulator: %d\n", ret); trf 2092 drivers/nfc/trf7970a.c ret = regulator_enable(trf->regulator); trf 2094 drivers/nfc/trf7970a.c dev_err(trf->dev, "Can't enable VDD_IO: %d\n", ret); trf 2098 drivers/nfc/trf7970a.c if (regulator_get_voltage(trf->regulator) == 1800000) { trf 2099 drivers/nfc/trf7970a.c trf->io_ctrl = TRF7970A_REG_IO_CTRL_IO_LOW; trf 2100 drivers/nfc/trf7970a.c dev_dbg(trf->dev, "trf7970a config vdd_io to 1.8V\n"); trf 2103 drivers/nfc/trf7970a.c trf->ddev = nfc_digital_allocate_device(&trf7970a_nfc_ops, trf 2108 drivers/nfc/trf7970a.c if (!trf->ddev) { trf 2109 drivers/nfc/trf7970a.c dev_err(trf->dev, "Can't allocate NFC digital device\n"); trf 2114 drivers/nfc/trf7970a.c nfc_digital_set_parent_dev(trf->ddev, trf->dev); trf 2115 drivers/nfc/trf7970a.c nfc_digital_set_drvdata(trf->ddev, trf); trf 2116 drivers/nfc/trf7970a.c spi_set_drvdata(spi, trf); trf 2120 drivers/nfc/trf7970a.c pm_runtime_set_autosuspend_delay(trf->dev, autosuspend_delay); trf 2121 drivers/nfc/trf7970a.c pm_runtime_use_autosuspend(trf->dev); trf 2123 drivers/nfc/trf7970a.c ret = trf7970a_startup(trf); trf 2127 drivers/nfc/trf7970a.c ret = nfc_digital_register_device(trf->ddev); trf 2129 drivers/nfc/trf7970a.c dev_err(trf->dev, "Can't register NFC digital device: %d\n", trf 2137 drivers/nfc/trf7970a.c trf7970a_shutdown(trf); trf 2139 drivers/nfc/trf7970a.c nfc_digital_free_device(trf->ddev); trf 2141 drivers/nfc/trf7970a.c regulator_disable(trf->regulator); trf 2143 drivers/nfc/trf7970a.c mutex_destroy(&trf->lock); trf 2149 drivers/nfc/trf7970a.c struct trf7970a *trf = spi_get_drvdata(spi); trf 2151 drivers/nfc/trf7970a.c mutex_lock(&trf->lock); trf 2153 drivers/nfc/trf7970a.c trf7970a_shutdown(trf); trf 2155 drivers/nfc/trf7970a.c mutex_unlock(&trf->lock); trf 2157 drivers/nfc/trf7970a.c nfc_digital_unregister_device(trf->ddev); trf 2158 drivers/nfc/trf7970a.c nfc_digital_free_device(trf->ddev); trf 2160 drivers/nfc/trf7970a.c regulator_disable(trf->regulator); trf 2162 drivers/nfc/trf7970a.c mutex_destroy(&trf->lock); trf 2171 drivers/nfc/trf7970a.c struct trf7970a *trf = spi_get_drvdata(spi); trf 2175 drivers/nfc/trf7970a.c mutex_lock(&trf->lock); trf 2177 drivers/nfc/trf7970a.c trf7970a_shutdown(trf); trf 2179 drivers/nfc/trf7970a.c mutex_unlock(&trf->lock); trf 2187 drivers/nfc/trf7970a.c struct trf7970a *trf = spi_get_drvdata(spi); trf 2192 drivers/nfc/trf7970a.c mutex_lock(&trf->lock); trf 2194 drivers/nfc/trf7970a.c ret = trf7970a_startup(trf); trf 2196 drivers/nfc/trf7970a.c mutex_unlock(&trf->lock); trf 2206 drivers/nfc/trf7970a.c struct trf7970a *trf = spi_get_drvdata(spi); trf 2211 drivers/nfc/trf7970a.c mutex_lock(&trf->lock); trf 2213 drivers/nfc/trf7970a.c ret = trf7970a_power_down(trf); trf 2215 drivers/nfc/trf7970a.c mutex_unlock(&trf->lock); trf 2223 drivers/nfc/trf7970a.c struct trf7970a *trf = spi_get_drvdata(spi); trf 2228 drivers/nfc/trf7970a.c ret = trf7970a_power_up(trf);