You've already forked linux-apfs
mirror of
https://github.com/linux-apfs/linux-apfs.git
synced 2026-05-01 15:00:59 -07:00
intel_th: Add Global Trace Hub driver
Global Trace Hub (GTH) is the central component of Intel TH architecture; it carries out switching between the trace sources and trace outputs, can enable/disable tracing, perform STP encoding, internal buffering, control backpressure from outputs to sources and so on. This property is also reflected in the software model; GTH (switch) driver is required for the other subdevices to probe, because it matches trace output devices against its output ports and configures them accordingly. It also implements an interface for output ports to request trace enabling or disabling and a few other useful things. For userspace, it provides an attribute group "masters", which allows configuration of per-master trace output destinations for up to master 255 and "256+" meaning "masters 256 and above". It also provides an attribute group to discover and configure some of the parameters of its output ports, called "outputs". Via these the user can set up data retention policy for an individual output port or check if it is in reset state. Signed-off-by: Laurent Fert <laurent.fert@intel.com> Signed-off-by: Alexander Shishkin <alexander.shishkin@linux.intel.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
committed by
Greg Kroah-Hartman
parent
2b0b16d329
commit
b27a6a3f97
@@ -0,0 +1,49 @@
|
||||
What: /sys/bus/intel_th/devices/<intel_th_id>-gth/masters/*
|
||||
Date: June 2015
|
||||
KernelVersion: 4.3
|
||||
Contact: Alexander Shishkin <alexander.shishkin@linux.intel.com>
|
||||
Description: (RW) Configure output ports for STP masters. Writing -1
|
||||
disables a master; any
|
||||
|
||||
What: /sys/bus/intel_th/devices/<intel_th_id>-gth/outputs/[0-7]_port
|
||||
Date: June 2015
|
||||
KernelVersion: 4.3
|
||||
Contact: Alexander Shishkin <alexander.shishkin@linux.intel.com>
|
||||
Description: (RO) Output port type:
|
||||
0: not present,
|
||||
1: MSU (Memory Storage Unit)
|
||||
2: CTP (Common Trace Port)
|
||||
4: PTI (MIPI PTI).
|
||||
|
||||
What: /sys/bus/intel_th/devices/<intel_th_id>-gth/outputs/[0-7]_drop
|
||||
Date: June 2015
|
||||
KernelVersion: 4.3
|
||||
Contact: Alexander Shishkin <alexander.shishkin@linux.intel.com>
|
||||
Description: (RW) Data retention policy setting: keep (0) or drop (1)
|
||||
incoming data while output port is in reset.
|
||||
|
||||
What: /sys/bus/intel_th/devices/<intel_th_id>-gth/outputs/[0-7]_null
|
||||
Date: June 2015
|
||||
KernelVersion: 4.3
|
||||
Contact: Alexander Shishkin <alexander.shishkin@linux.intel.com>
|
||||
Description: (RW) STP NULL packet generation: enabled (1) or disabled (0).
|
||||
|
||||
What: /sys/bus/intel_th/devices/<intel_th_id>-gth/outputs/[0-7]_flush
|
||||
Date: June 2015
|
||||
KernelVersion: 4.3
|
||||
Contact: Alexander Shishkin <alexander.shishkin@linux.intel.com>
|
||||
Description: (RW) Force flush data from byte packing buffer for the output
|
||||
port.
|
||||
|
||||
What: /sys/bus/intel_th/devices/<intel_th_id>-gth/outputs/[0-7]_reset
|
||||
Date: June 2015
|
||||
KernelVersion: 4.3
|
||||
Contact: Alexander Shishkin <alexander.shishkin@linux.intel.com>
|
||||
Description: (RO) Output port is in reset (1).
|
||||
|
||||
What: /sys/bus/intel_th/devices/<intel_th_id>-gth/outputs/[0-7]_smcfreq
|
||||
Date: June 2015
|
||||
KernelVersion: 4.3
|
||||
Contact: Alexander Shishkin <alexander.shishkin@linux.intel.com>
|
||||
Description: (RW) STP sync packet frequency for the port. Specifies the
|
||||
number of clocks between mainenance packets.
|
||||
@@ -24,6 +24,16 @@ config INTEL_TH_PCI
|
||||
|
||||
Say Y here to enable PCI Intel TH support.
|
||||
|
||||
config INTEL_TH_GTH
|
||||
tristate "Intel(R) Trace Hub Global Trace Hub"
|
||||
help
|
||||
Global Trace Hub (GTH) is the central component of the
|
||||
Intel TH infrastructure and acts as a switch for source
|
||||
and output devices. This driver is required for other
|
||||
Intel TH subdevices to initialize.
|
||||
|
||||
Say Y here to enable GTH subdevice of Intel(R) Trace Hub.
|
||||
|
||||
config INTEL_TH_DEBUG
|
||||
bool "Intel(R) Trace Hub debugging"
|
||||
depends on DEBUG_FS
|
||||
|
||||
@@ -4,3 +4,6 @@ intel_th-$(CONFIG_INTEL_TH_DEBUG) += debug.o
|
||||
|
||||
obj-$(CONFIG_INTEL_TH_PCI) += intel_th_pci.o
|
||||
intel_th_pci-y := pci.o
|
||||
|
||||
obj-$(CONFIG_INTEL_TH_GTH) += intel_th_gth.o
|
||||
intel_th_gth-y := gth.o
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,66 @@
|
||||
/*
|
||||
* Intel(R) Trace Hub Global Trace Hub (GTH) data structures
|
||||
*
|
||||
* Copyright (C) 2014-2015 Intel Corporation.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify it
|
||||
* under the terms and conditions of the GNU General Public License,
|
||||
* version 2, as published by the Free Software Foundation.
|
||||
*
|
||||
* This program is distributed in the hope it will be useful, but WITHOUT
|
||||
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
|
||||
* more details.
|
||||
*/
|
||||
|
||||
#ifndef __INTEL_TH_GTH_H__
|
||||
#define __INTEL_TH_GTH_H__
|
||||
|
||||
/* Map output port parameter bits to symbolic names */
|
||||
#define TH_OUTPUT_PARM(name) \
|
||||
TH_OUTPUT_ ## name
|
||||
|
||||
enum intel_th_output_parm {
|
||||
/* output port type */
|
||||
TH_OUTPUT_PARM(port),
|
||||
/* generate NULL packet */
|
||||
TH_OUTPUT_PARM(null),
|
||||
/* packet drop */
|
||||
TH_OUTPUT_PARM(drop),
|
||||
/* port in reset state */
|
||||
TH_OUTPUT_PARM(reset),
|
||||
/* flush out data */
|
||||
TH_OUTPUT_PARM(flush),
|
||||
/* mainenance packet frequency */
|
||||
TH_OUTPUT_PARM(smcfreq),
|
||||
};
|
||||
|
||||
/*
|
||||
* Register offsets
|
||||
*/
|
||||
enum {
|
||||
REG_GTH_GTHOPT0 = 0x00, /* Output ports 0..3 config */
|
||||
REG_GTH_GTHOPT1 = 0x04, /* Output ports 4..7 config */
|
||||
REG_GTH_SWDEST0 = 0x08, /* Switching destination masters 0..7 */
|
||||
REG_GTH_GSWTDEST = 0x88, /* Global sw trace destination */
|
||||
REG_GTH_SMCR0 = 0x9c, /* STP mainenance for ports 0/1 */
|
||||
REG_GTH_SMCR1 = 0xa0, /* STP mainenance for ports 2/3 */
|
||||
REG_GTH_SMCR2 = 0xa4, /* STP mainenance for ports 4/5 */
|
||||
REG_GTH_SMCR3 = 0xa8, /* STP mainenance for ports 6/7 */
|
||||
REG_GTH_SCR = 0xc8, /* Source control (storeEn override) */
|
||||
REG_GTH_STAT = 0xd4, /* GTH status */
|
||||
REG_GTH_SCR2 = 0xd8, /* Source control (force storeEn off) */
|
||||
REG_GTH_DESTOVR = 0xdc, /* Destination override */
|
||||
REG_GTH_SCRPD0 = 0xe0, /* ScratchPad[0] */
|
||||
REG_GTH_SCRPD1 = 0xe4, /* ScratchPad[1] */
|
||||
REG_GTH_SCRPD2 = 0xe8, /* ScratchPad[2] */
|
||||
REG_GTH_SCRPD3 = 0xec, /* ScratchPad[3] */
|
||||
};
|
||||
|
||||
/* Externall debugger is using Intel TH */
|
||||
#define SCRPD_DEBUGGER_IN_USE BIT(24)
|
||||
|
||||
/* waiting for Pipeline Empty bit(s) to assert for GTH */
|
||||
#define GTH_PLE_WAITLOOP_DEPTH 10000
|
||||
|
||||
#endif /* __INTEL_TH_GTH_H__ */
|
||||
Reference in New Issue
Block a user