stm class: Support devices that override software assigned masters
Some STM devices adjust software assigned master numbers depending on the trace source and its runtime state and whatnot. This patch adds a sysfs attribute to inform the trace-side software that master numbers assigned to software sources will not match those in the STP stream, so that, for example, master/channel allocation policy can be adjusted accordingly. Signed-off-by: Alexander Shishkin <alexander.shishkin@linux.intel.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
6327a454a8
commit
8e996a2874
|
@ -12,3 +12,13 @@ KernelVersion: 4.3
|
||||||
Contact: Alexander Shishkin <alexander.shishkin@linux.intel.com>
|
Contact: Alexander Shishkin <alexander.shishkin@linux.intel.com>
|
||||||
Description:
|
Description:
|
||||||
Shows the number of channels per master on this STM device.
|
Shows the number of channels per master on this STM device.
|
||||||
|
|
||||||
|
What: /sys/class/stm/<stm>/hw_override
|
||||||
|
Date: March 2016
|
||||||
|
KernelVersion: 4.7
|
||||||
|
Contact: Alexander Shishkin <alexander.shishkin@linux.intel.com>
|
||||||
|
Description:
|
||||||
|
Reads as 0 if master numbers in the STP stream produced by
|
||||||
|
this stm device will match the master numbers assigned by
|
||||||
|
the software or 1 if the stm hardware overrides software
|
||||||
|
assigned masters.
|
||||||
|
|
|
@ -67,9 +67,24 @@ static ssize_t channels_show(struct device *dev,
|
||||||
|
|
||||||
static DEVICE_ATTR_RO(channels);
|
static DEVICE_ATTR_RO(channels);
|
||||||
|
|
||||||
|
static ssize_t hw_override_show(struct device *dev,
|
||||||
|
struct device_attribute *attr,
|
||||||
|
char *buf)
|
||||||
|
{
|
||||||
|
struct stm_device *stm = to_stm_device(dev);
|
||||||
|
int ret;
|
||||||
|
|
||||||
|
ret = sprintf(buf, "%u\n", stm->data->hw_override);
|
||||||
|
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
static DEVICE_ATTR_RO(hw_override);
|
||||||
|
|
||||||
static struct attribute *stm_attrs[] = {
|
static struct attribute *stm_attrs[] = {
|
||||||
&dev_attr_masters.attr,
|
&dev_attr_masters.attr,
|
||||||
&dev_attr_channels.attr,
|
&dev_attr_channels.attr,
|
||||||
|
&dev_attr_hw_override.attr,
|
||||||
NULL,
|
NULL,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -50,6 +50,8 @@ struct stm_device;
|
||||||
* @sw_end: last STP master available to software
|
* @sw_end: last STP master available to software
|
||||||
* @sw_nchannels: number of STP channels per master
|
* @sw_nchannels: number of STP channels per master
|
||||||
* @sw_mmiosz: size of one channel's IO space, for mmap, optional
|
* @sw_mmiosz: size of one channel's IO space, for mmap, optional
|
||||||
|
* @hw_override: masters in the STP stream will not match the ones
|
||||||
|
* assigned by software, but are up to the STM hardware
|
||||||
* @packet: callback that sends an STP packet
|
* @packet: callback that sends an STP packet
|
||||||
* @mmio_addr: mmap callback, optional
|
* @mmio_addr: mmap callback, optional
|
||||||
* @link: called when a new stm_source gets linked to us, optional
|
* @link: called when a new stm_source gets linked to us, optional
|
||||||
|
@ -85,6 +87,7 @@ struct stm_data {
|
||||||
unsigned int sw_end;
|
unsigned int sw_end;
|
||||||
unsigned int sw_nchannels;
|
unsigned int sw_nchannels;
|
||||||
unsigned int sw_mmiosz;
|
unsigned int sw_mmiosz;
|
||||||
|
unsigned int hw_override;
|
||||||
ssize_t (*packet)(struct stm_data *, unsigned int,
|
ssize_t (*packet)(struct stm_data *, unsigned int,
|
||||||
unsigned int, unsigned int,
|
unsigned int, unsigned int,
|
||||||
unsigned int, unsigned int,
|
unsigned int, unsigned int,
|
||||||
|
|
Loading…
Reference in New Issue