mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2025-01-17 02:15:57 +00:00
stm class: Propagate source type to protocols
Pass stm source type via stm_write() to allow different handling on protocol level. The measure above should allow protocol level encoder to differentiate and accordingly pack the messages. As an example SyS-T might get use of ftrace message ID's and instead of applying regular header, pack them as SyS-T catalog or SyS-T Structured Binary Data message to allow proper decoding on the other side. Signed-off-by: Mikhail Lappo <miklelappo@gmail.com> Signed-off-by: Alexander Shishkin <alexander.shishkin@linux.intel.com> Reviewed-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com> Link: https://lore.kernel.org/r/20240429130119.1518073-4-alexander.shishkin@linux.intel.com Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
07cf835689
commit
ee27f44e15
@ -600,7 +600,7 @@ EXPORT_SYMBOL_GPL(stm_data_write);
|
||||
|
||||
static ssize_t notrace
|
||||
stm_write(struct stm_device *stm, struct stm_output *output,
|
||||
unsigned int chan, const char *buf, size_t count)
|
||||
unsigned int chan, const char *buf, size_t count, struct stm_source_data *source)
|
||||
{
|
||||
int err;
|
||||
|
||||
@ -608,7 +608,7 @@ stm_write(struct stm_device *stm, struct stm_output *output,
|
||||
if (!stm->pdrv)
|
||||
return -ENODEV;
|
||||
|
||||
err = stm->pdrv->write(stm->data, output, chan, buf, count);
|
||||
err = stm->pdrv->write(stm->data, output, chan, buf, count, source);
|
||||
if (err < 0)
|
||||
return err;
|
||||
|
||||
@ -657,7 +657,7 @@ static ssize_t stm_char_write(struct file *file, const char __user *buf,
|
||||
|
||||
pm_runtime_get_sync(&stm->dev);
|
||||
|
||||
count = stm_write(stm, &stmf->output, 0, kbuf, count);
|
||||
count = stm_write(stm, &stmf->output, 0, kbuf, count, NULL);
|
||||
|
||||
pm_runtime_mark_last_busy(&stm->dev);
|
||||
pm_runtime_put_autosuspend(&stm->dev);
|
||||
@ -1299,7 +1299,7 @@ int notrace stm_source_write(struct stm_source_data *data,
|
||||
|
||||
stm = srcu_dereference(src->link, &stm_source_srcu);
|
||||
if (stm)
|
||||
count = stm_write(stm, &src->output, chan, buf, count);
|
||||
count = stm_write(stm, &src->output, chan, buf, count, data);
|
||||
else
|
||||
count = -ENODEV;
|
||||
|
||||
|
@ -10,7 +10,8 @@
|
||||
#include "stm.h"
|
||||
|
||||
static ssize_t basic_write(struct stm_data *data, struct stm_output *output,
|
||||
unsigned int chan, const char *buf, size_t count)
|
||||
unsigned int chan, const char *buf, size_t count,
|
||||
struct stm_source_data *source)
|
||||
{
|
||||
unsigned int c = output->channel + chan;
|
||||
unsigned int m = output->master;
|
||||
|
@ -285,7 +285,8 @@ sys_t_clock_sync(struct stm_data *data, unsigned int m, unsigned int c)
|
||||
}
|
||||
|
||||
static ssize_t sys_t_write(struct stm_data *data, struct stm_output *output,
|
||||
unsigned int chan, const char *buf, size_t count)
|
||||
unsigned int chan, const char *buf, size_t count,
|
||||
struct stm_source_data *source)
|
||||
{
|
||||
struct sys_t_output *op = output->pdrv_private;
|
||||
unsigned int c = output->channel + chan;
|
||||
|
@ -96,7 +96,7 @@ struct stm_protocol_driver {
|
||||
const char *name;
|
||||
ssize_t (*write)(struct stm_data *data,
|
||||
struct stm_output *output, unsigned int chan,
|
||||
const char *buf, size_t count);
|
||||
const char *buf, size_t count, struct stm_source_data *source);
|
||||
void (*policy_node_init)(void *arg);
|
||||
int (*output_open)(void *priv, struct stm_output *output);
|
||||
void (*output_close)(struct stm_output *output);
|
||||
|
Loading…
x
Reference in New Issue
Block a user