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

Commit 82f85cf9 authored by Mark Brown's avatar Mark Brown
Browse files

Merge remote-tracking branch 'spi/topic/wr' into spi-next

parents 344a8511 23590742
Loading
Loading
Loading
Loading
+1 −6
Original line number Diff line number Diff line
@@ -42,13 +42,8 @@ static const u8 adt7310_reg_table[] = {
static int adt7310_spi_read_word(struct device *dev, u8 reg)
{
	struct spi_device *spi = to_spi_device(dev);
	int ret;

	ret = spi_w8r16(spi, AD7310_COMMAND(reg) | ADT7310_CMD_READ);
	if (ret < 0)
		return ret;

	return be16_to_cpu((__force __be16)ret);
	return spi_w8r16be(spi, AD7310_COMMAND(reg) | ADT7310_CMD_READ);
}

static int adt7310_spi_write_word(struct device *dev, u8 reg, u16 data)
+1 −2
Original line number Diff line number Diff line
@@ -86,7 +86,7 @@ static int ade7753_spi_read_reg_16(struct device *dev,
	struct ade7753_state *st = iio_priv(indio_dev);
	ssize_t ret;

	ret = spi_w8r16(st->us, ADE7753_READ_REG(reg_address));
	ret = spi_w8r16be(st->us, ADE7753_READ_REG(reg_address));
	if (ret < 0) {
		dev_err(&st->us->dev, "problem when reading 16 bit register 0x%02X",
			reg_address);
@@ -94,7 +94,6 @@ static int ade7753_spi_read_reg_16(struct device *dev,
	}

	*val = ret;
	*val = be16_to_cpup(val);

	return 0;
}
+1 −2
Original line number Diff line number Diff line
@@ -86,7 +86,7 @@ static int ade7754_spi_read_reg_16(struct device *dev,
	struct ade7754_state *st = iio_priv(indio_dev);
	int ret;

	ret = spi_w8r16(st->us, ADE7754_READ_REG(reg_address));
	ret = spi_w8r16be(st->us, ADE7754_READ_REG(reg_address));
	if (ret < 0) {
		dev_err(&st->us->dev, "problem when reading 16 bit register 0x%02X",
			reg_address);
@@ -94,7 +94,6 @@ static int ade7754_spi_read_reg_16(struct device *dev,
	}

	*val = ret;
	*val = be16_to_cpup(val);

	return 0;
}
+1 −2
Original line number Diff line number Diff line
@@ -86,7 +86,7 @@ static int ade7759_spi_read_reg_16(struct device *dev,
	struct ade7759_state *st = iio_priv(indio_dev);
	int ret;

	ret = spi_w8r16(st->us, ADE7759_READ_REG(reg_address));
	ret = spi_w8r16be(st->us, ADE7759_READ_REG(reg_address));
	if (ret < 0) {
		dev_err(&st->us->dev, "problem when reading 16 bit register 0x%02X",
			reg_address);
@@ -94,7 +94,6 @@ static int ade7759_spi_read_reg_16(struct device *dev,
	}

	*val = ret;
	*val = be16_to_cpup(val);

	return 0;
}
+27 −0
Original line number Diff line number Diff line
@@ -853,6 +853,33 @@ static inline ssize_t spi_w8r16(struct spi_device *spi, u8 cmd)
	return (status < 0) ? status : result;
}

/**
 * spi_w8r16be - SPI synchronous 8 bit write followed by 16 bit big-endian read
 * @spi: device with which data will be exchanged
 * @cmd: command to be written before data is read back
 * Context: can sleep
 *
 * This returns the (unsigned) sixteen bit number returned by the device in cpu
 * endianness, or else a negative error code. Callable only from contexts that
 * can sleep.
 *
 * This function is similar to spi_w8r16, with the exception that it will
 * convert the read 16 bit data word from big-endian to native endianness.
 *
 */
static inline ssize_t spi_w8r16be(struct spi_device *spi, u8 cmd)

{
	ssize_t status;
	__be16 result;

	status = spi_write_then_read(spi, &cmd, 1, &result, 2);
	if (status < 0)
		return status;

	return be16_to_cpu(result);
}

/*---------------------------------------------------------------------------*/

/*