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

Commit f03ce74a authored by Linux Build Service Account's avatar Linux Build Service Account Committed by Gerrit - the friendly Code Review server
Browse files

Merge "soundwire: Add support for soundwire bulk write"

parents 5ad4e6cf d8e38046
Loading
Loading
Loading
Loading
+27 −0
Original line number Diff line number Diff line
@@ -456,6 +456,33 @@ int swr_read(struct swr_device *dev, u8 dev_num, u16 reg_addr,
}
EXPORT_SYMBOL(swr_read);

/**
 * swr_bulk_write - write soundwire slave device registers
 * @dev: pointer to soundwire slave device
 * @dev_num: logical device num of soundwire slave device
 * @reg_addr: register address of soundwire slave device
 * @buf: contains value of register address
 * @len: indicates number of registers
 *
 * This API will write the value of the register address to
 * soundwire slave device
 */
int swr_bulk_write(struct swr_device *dev, u8 dev_num, void *reg,
		   const void *buf, size_t len)
{
	struct swr_master *master;

	if (!dev || !dev->master)
		return -EINVAL;

	master = dev->master;
	if (master->bulk_write)
		return master->bulk_write(master, dev_num, reg, buf, len);

	return -ENOSYS;
}
EXPORT_SYMBOL(swr_bulk_write);

/**
 * swr_write - write soundwire slave device registers
 * @dev: pointer to soundwire slave device
+5 −0
Original line number Diff line number Diff line
@@ -137,6 +137,8 @@ struct swr_master {
			void *buf, u32 len);
	int (*write)(struct swr_master *mstr, u8 dev_num, u16 reg_addr,
			const void *buf);
	int (*bulk_write)(struct swr_master *master, u8 dev_num, void *reg,
			  const void *buf, size_t len);
	int (*get_logical_dev_num)(struct swr_master *mstr, u64 dev_id,
				u8 *dev_num);
};
@@ -259,6 +261,9 @@ extern int swr_read(struct swr_device *dev, u8 dev_num, u16 reg_addr,
extern int swr_write(struct swr_device *dev, u8 dev_num, u16 reg_addr,
			const void *buf);

extern int swr_bulk_write(struct swr_device *dev, u8 dev_num, void *reg_addr,
			  const void *buf, size_t len);

extern int swr_connect_port(struct swr_device *dev, u8 *port_id, u8 num_port,
				u8 *ch_mask, u32 *ch_rate, u8 *num_ch);