Beispiel #1
0
int ade7758_spi_write_reg_8(struct device *dev, u8 reg_address, u8 val)
{
	int ret;
	struct iio_dev *indio_dev = dev_to_iio_dev(dev);
	struct ade7758_state *st = iio_priv(indio_dev);

	mutex_lock(&st->buf_lock);
	st->tx[0] = ADE7758_WRITE_REG(reg_address);
	st->tx[1] = val;

	ret = spi_write(st->us, st->tx, 2);
	mutex_unlock(&st->buf_lock);

	return ret;
}
                                    u16 value)
{
    int ret;
    struct spi_message msg;
    struct iio_dev *indio_dev = dev_get_drvdata(dev);
    struct ade7758_state *st = iio_priv(indio_dev);
    struct spi_transfer xfers[] = {
        {
            .tx_buf = st->tx,
            .bits_per_word = 8,
            .len = 3,
        }
    };

    mutex_lock(&st->buf_lock);
    st->tx[0] = ADE7758_WRITE_REG(reg_address);
    st->tx[1] = (value >> 8) & 0xFF;
    st->tx[2] = value & 0xFF;

    spi_message_init(&msg);
    spi_message_add_tail(xfers, &msg);
    ret = spi_sync(st->us, &msg);
    mutex_unlock(&st->buf_lock);

    return ret;
}

static int ade7758_spi_write_reg_24(struct device *dev,
                                    u8 reg_address,
                                    u32 value)
{