Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit b637a366 authored by Christophe Ricard's avatar Christophe Ricard Committed by Jarkko Sakkinen
Browse files

tpm/st33zp24/spi: Remove field spi_xfer from st33zp24_spi_phy structure



Remove spi_xfer from st33zp24_spi_phy structure and declare local spi_xfer
when needed instead.

Signed-off-by: default avatarChristophe Ricard <christophe-h.ricard@st.com>
Reviewed-by: default avatarJarkko Sakkinen <jarkko.sakkinen@linux.intel.com>
Signed-off-by: default avatarJarkko Sakkinen <jarkko.sakkinen@linux.intel.com>
parent 6e0219c7
Loading
Loading
Loading
Loading
+25 −24
Original line number Original line Diff line number Diff line
@@ -66,7 +66,7 @@


struct st33zp24_spi_phy {
struct st33zp24_spi_phy {
	struct spi_device *spi_device;
	struct spi_device *spi_device;
	struct spi_transfer spi_xfer;

	u8 tx_buf[ST33ZP24_SPI_BUFFER_SIZE];
	u8 tx_buf[ST33ZP24_SPI_BUFFER_SIZE];
	u8 rx_buf[ST33ZP24_SPI_BUFFER_SIZE];
	u8 rx_buf[ST33ZP24_SPI_BUFFER_SIZE];


@@ -113,28 +113,30 @@ static int st33zp24_spi_send(void *phy_id, u8 tpm_register, u8 *tpm_data,
	int total_length = 0, ret = 0;
	int total_length = 0, ret = 0;
	struct st33zp24_spi_phy *phy = phy_id;
	struct st33zp24_spi_phy *phy = phy_id;
	struct spi_device *dev = phy->spi_device;
	struct spi_device *dev = phy->spi_device;
	u8 *tx_buf = (u8 *)phy->spi_xfer.tx_buf;
	struct spi_transfer spi_xfer = {
	u8 *rx_buf = phy->spi_xfer.rx_buf;
		.tx_buf = phy->tx_buf,
		.rx_buf = phy->rx_buf,
	};


	/* Pre-Header */
	/* Pre-Header */
	tx_buf[total_length++] = TPM_WRITE_DIRECTION | LOCALITY0;
	phy->tx_buf[total_length++] = TPM_WRITE_DIRECTION | LOCALITY0;
	tx_buf[total_length++] = tpm_register;
	phy->tx_buf[total_length++] = tpm_register;


	if (tpm_size > 0 && tpm_register == TPM_DATA_FIFO) {
	if (tpm_size > 0 && tpm_register == TPM_DATA_FIFO) {
		tx_buf[total_length++] = tpm_size >> 8;
		phy->tx_buf[total_length++] = tpm_size >> 8;
		tx_buf[total_length++] = tpm_size;
		phy->tx_buf[total_length++] = tpm_size;
	}
	}


	memcpy(&tx_buf[total_length], tpm_data, tpm_size);
	memcpy(&phy->tx_buf[total_length], tpm_data, tpm_size);
	total_length += tpm_size;
	total_length += tpm_size;


	memset(&tx_buf[total_length], TPM_DUMMY_BYTE, phy->latency);
	memset(&phy->tx_buf[total_length], TPM_DUMMY_BYTE, phy->latency);


	phy->spi_xfer.len = total_length + phy->latency;
	spi_xfer.len = total_length + phy->latency;


	ret = spi_sync_transfer(dev, &phy->spi_xfer, 1);
	ret = spi_sync_transfer(dev, &spi_xfer, 1);
	if (ret == 0)
	if (ret == 0)
		ret = rx_buf[total_length + phy->latency - 1];
		ret = phy->rx_buf[total_length + phy->latency - 1];


	return st33zp24_status_to_errno(ret);
	return st33zp24_status_to_errno(ret);
} /* st33zp24_spi_send() */
} /* st33zp24_spi_send() */
@@ -154,24 +156,26 @@ static int st33zp24_spi_read8_reg(void *phy_id, u8 tpm_register, u8 *tpm_data,
	int total_length = 0, ret;
	int total_length = 0, ret;
	struct st33zp24_spi_phy *phy = phy_id;
	struct st33zp24_spi_phy *phy = phy_id;
	struct spi_device *dev = phy->spi_device;
	struct spi_device *dev = phy->spi_device;
	u8 *tx_buf = (u8 *)phy->spi_xfer.tx_buf;
	struct spi_transfer spi_xfer = {
	u8 *rx_buf = phy->spi_xfer.rx_buf;
		.tx_buf = phy->tx_buf,
		.rx_buf = phy->rx_buf,
	};


	/* Pre-Header */
	/* Pre-Header */
	tx_buf[total_length++] = LOCALITY0;
	phy->tx_buf[total_length++] = LOCALITY0;
	tx_buf[total_length++] = tpm_register;
	phy->tx_buf[total_length++] = tpm_register;


	memset(&tx_buf[total_length], TPM_DUMMY_BYTE,
	memset(&phy->tx_buf[total_length], TPM_DUMMY_BYTE,
	       phy->latency + tpm_size);
	       phy->latency + tpm_size);


	phy->spi_xfer.len = total_length + phy->latency + tpm_size;
	spi_xfer.len = total_length + phy->latency + tpm_size;


	/* header + status byte + size of the data + status byte */
	/* header + status byte + size of the data + status byte */
	ret = spi_sync_transfer(dev, &phy->spi_xfer, 1);
	ret = spi_sync_transfer(dev, &spi_xfer, 1);
	if (tpm_size > 0 && ret == 0) {
	if (tpm_size > 0 && ret == 0) {
		ret = rx_buf[total_length + phy->latency - 1];
		ret = phy->rx_buf[total_length + phy->latency - 1];


		memcpy(tpm_data, rx_buf + total_length + phy->latency,
		memcpy(tpm_data, phy->rx_buf + total_length + phy->latency,
		       tpm_size);
		       tpm_size);
	}
	}


@@ -328,9 +332,6 @@ static int st33zp24_spi_probe(struct spi_device *dev)
			return ret;
			return ret;
	}
	}


	phy->spi_xfer.tx_buf = phy->tx_buf;
	phy->spi_xfer.rx_buf = phy->rx_buf;

	phy->latency = st33zp24_spi_evaluate_latency(phy);
	phy->latency = st33zp24_spi_evaluate_latency(phy);
	if (phy->latency <= 0)
	if (phy->latency <= 0)
		return -ENODEV;
		return -ENODEV;