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);