mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-09-15 23:25:07 +00:00
stm class/intel_th: Updates for 4.17
These are: * Mass conversion to GPL-2 SPDX header * Moved "hwtracing" to now its own submenu, to uncrowd the parent menu a bit * Added MAINTAINERS entry for drivers/hwtracing * Somewhat small Trace Hub fixes * Added ACPI glue layer for the Trace Hub * Added more module parameters to dummy_stm for better test coverage -----BEGIN PGP SIGNATURE----- iJkEABEIAEEWIQQSviFCoXpKPDNATbnrxfYkYwVX/wUCWrzG7yMcYWxleGFuZGVy LnNoaXNoa2luQGxpbnV4LmludGVsLmNvbQAKCRDrxfYkYwVX/0jcAQCE/maw6L5P NdT3Ck3EuDWzij9uimq3Y0UyI9F4Cd+vYgD+N8Skyiua+NqfBGB0oXNsJt2acirg O3G990RK9dX4H2c= =CuGw -----END PGP SIGNATURE----- Merge tag 'stm-intel_th-for-greg-20180329' of git://git.kernel.org/pub/scm/linux/kernel/git/ash/stm into char-misc-next Alexander writes: stm class/intel_th: Updates for 4.17 These are: * Mass conversion to GPL-2 SPDX header * Moved "hwtracing" to now its own submenu, to uncrowd the parent menu a bit * Added MAINTAINERS entry for drivers/hwtracing * Somewhat small Trace Hub fixes * Added ACPI glue layer for the Trace Hub * Added more module parameters to dummy_stm for better test coverage
This commit is contained in:
commit
86f690e8bf
27 changed files with 172 additions and 200 deletions
|
@ -6244,6 +6244,11 @@ F: Documentation/hw_random.txt
|
||||||
F: drivers/char/hw_random/
|
F: drivers/char/hw_random/
|
||||||
F: include/linux/hw_random.h
|
F: include/linux/hw_random.h
|
||||||
|
|
||||||
|
HARDWARE TRACING FACILITIES
|
||||||
|
M: Alexander Shishkin <alexander.shishkin@linux.intel.com>
|
||||||
|
S: Maintained
|
||||||
|
F: drivers/hwtracing/
|
||||||
|
|
||||||
HARDWARE SPINLOCK CORE
|
HARDWARE SPINLOCK CORE
|
||||||
M: Ohad Ben-Cohen <ohad@wizery.com>
|
M: Ohad Ben-Cohen <ohad@wizery.com>
|
||||||
M: Bjorn Andersson <bjorn.andersson@linaro.org>
|
M: Bjorn Andersson <bjorn.andersson@linaro.org>
|
||||||
|
|
|
@ -199,9 +199,7 @@ source "drivers/dax/Kconfig"
|
||||||
|
|
||||||
source "drivers/nvmem/Kconfig"
|
source "drivers/nvmem/Kconfig"
|
||||||
|
|
||||||
source "drivers/hwtracing/stm/Kconfig"
|
source "drivers/hwtracing/Kconfig"
|
||||||
|
|
||||||
source "drivers/hwtracing/intel_th/Kconfig"
|
|
||||||
|
|
||||||
source "drivers/fpga/Kconfig"
|
source "drivers/fpga/Kconfig"
|
||||||
|
|
||||||
|
|
7
drivers/hwtracing/Kconfig
Normal file
7
drivers/hwtracing/Kconfig
Normal file
|
@ -0,0 +1,7 @@
|
||||||
|
menu "HW tracing support"
|
||||||
|
|
||||||
|
source "drivers/hwtracing/stm/Kconfig"
|
||||||
|
|
||||||
|
source "drivers/hwtracing/intel_th/Kconfig"
|
||||||
|
|
||||||
|
endmenu
|
|
@ -25,6 +25,18 @@ config INTEL_TH_PCI
|
||||||
|
|
||||||
Say Y here to enable PCI Intel TH support.
|
Say Y here to enable PCI Intel TH support.
|
||||||
|
|
||||||
|
config INTEL_TH_ACPI
|
||||||
|
tristate "Intel(R) Trace Hub ACPI controller"
|
||||||
|
depends on ACPI
|
||||||
|
help
|
||||||
|
Intel(R) Trace Hub may exist as an ACPI device. This option enables
|
||||||
|
support glue layer for ACPI-based Intel TH. This typically implies
|
||||||
|
'host debugger' mode, that is, the trace configuration and capture
|
||||||
|
is handled by an external debug host and corresponding controls will
|
||||||
|
not be available on the target.
|
||||||
|
|
||||||
|
Say Y here to enable ACPI Intel TH support.
|
||||||
|
|
||||||
config INTEL_TH_GTH
|
config INTEL_TH_GTH
|
||||||
tristate "Intel(R) Trace Hub Global Trace Hub"
|
tristate "Intel(R) Trace Hub Global Trace Hub"
|
||||||
help
|
help
|
||||||
|
|
|
@ -6,6 +6,9 @@ intel_th-$(CONFIG_INTEL_TH_DEBUG) += debug.o
|
||||||
obj-$(CONFIG_INTEL_TH_PCI) += intel_th_pci.o
|
obj-$(CONFIG_INTEL_TH_PCI) += intel_th_pci.o
|
||||||
intel_th_pci-y := pci.o
|
intel_th_pci-y := pci.o
|
||||||
|
|
||||||
|
obj-$(CONFIG_INTEL_TH_ACPI) += intel_th_acpi.o
|
||||||
|
intel_th_acpi-y := acpi.o
|
||||||
|
|
||||||
obj-$(CONFIG_INTEL_TH_GTH) += intel_th_gth.o
|
obj-$(CONFIG_INTEL_TH_GTH) += intel_th_gth.o
|
||||||
intel_th_gth-y := gth.o
|
intel_th_gth-y := gth.o
|
||||||
|
|
||||||
|
|
79
drivers/hwtracing/intel_th/acpi.c
Normal file
79
drivers/hwtracing/intel_th/acpi.c
Normal file
|
@ -0,0 +1,79 @@
|
||||||
|
// SPDX-License-Identifier: GPL-2.0
|
||||||
|
/*
|
||||||
|
* Intel(R) Trace Hub ACPI driver
|
||||||
|
*
|
||||||
|
* Copyright (C) 2017 Intel Corporation.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
|
||||||
|
|
||||||
|
#include <linux/types.h>
|
||||||
|
#include <linux/module.h>
|
||||||
|
#include <linux/device.h>
|
||||||
|
#include <linux/sysfs.h>
|
||||||
|
#include <linux/platform_device.h>
|
||||||
|
#include <linux/acpi.h>
|
||||||
|
|
||||||
|
#include "intel_th.h"
|
||||||
|
|
||||||
|
#define DRIVER_NAME "intel_th_acpi"
|
||||||
|
|
||||||
|
static const struct intel_th_drvdata intel_th_acpi_pch = {
|
||||||
|
.host_mode_only = 1,
|
||||||
|
};
|
||||||
|
|
||||||
|
static const struct intel_th_drvdata intel_th_acpi_uncore = {
|
||||||
|
.host_mode_only = 1,
|
||||||
|
};
|
||||||
|
|
||||||
|
static const struct acpi_device_id intel_th_acpi_ids[] = {
|
||||||
|
{ "INTC1000", (kernel_ulong_t)&intel_th_acpi_uncore },
|
||||||
|
{ "INTC1001", (kernel_ulong_t)&intel_th_acpi_pch },
|
||||||
|
{ "", 0 },
|
||||||
|
};
|
||||||
|
|
||||||
|
MODULE_DEVICE_TABLE(acpi, intel_th_acpi_ids);
|
||||||
|
|
||||||
|
static int intel_th_acpi_probe(struct platform_device *pdev)
|
||||||
|
{
|
||||||
|
struct acpi_device *adev = ACPI_COMPANION(&pdev->dev);
|
||||||
|
const struct acpi_device_id *id;
|
||||||
|
struct intel_th *th;
|
||||||
|
|
||||||
|
id = acpi_match_device(intel_th_acpi_ids, &pdev->dev);
|
||||||
|
if (!id)
|
||||||
|
return -ENODEV;
|
||||||
|
|
||||||
|
th = intel_th_alloc(&pdev->dev, (void *)id->driver_data,
|
||||||
|
pdev->resource, pdev->num_resources, -1);
|
||||||
|
if (IS_ERR(th))
|
||||||
|
return PTR_ERR(th);
|
||||||
|
|
||||||
|
adev->driver_data = th;
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
static int intel_th_acpi_remove(struct platform_device *pdev)
|
||||||
|
{
|
||||||
|
struct intel_th *th = platform_get_drvdata(pdev);
|
||||||
|
|
||||||
|
intel_th_free(th);
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
static struct platform_driver intel_th_acpi_driver = {
|
||||||
|
.probe = intel_th_acpi_probe,
|
||||||
|
.remove = intel_th_acpi_remove,
|
||||||
|
.driver = {
|
||||||
|
.name = DRIVER_NAME,
|
||||||
|
.acpi_match_table = intel_th_acpi_ids,
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
|
module_platform_driver(intel_th_acpi_driver);
|
||||||
|
|
||||||
|
MODULE_LICENSE("GPL v2");
|
||||||
|
MODULE_DESCRIPTION("Intel(R) Trace Hub ACPI controller driver");
|
||||||
|
MODULE_AUTHOR("Alexander Shishkin <alexander.shishkin@intel.com>");
|
|
@ -1,16 +1,8 @@
|
||||||
|
// SPDX-License-Identifier: GPL-2.0
|
||||||
/*
|
/*
|
||||||
* Intel(R) Trace Hub driver core
|
* Intel(R) Trace Hub driver core
|
||||||
*
|
*
|
||||||
* Copyright (C) 2014-2015 Intel Corporation.
|
* 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.
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
|
#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
|
||||||
|
@ -638,7 +630,8 @@ intel_th_subdevice_alloc(struct intel_th *th,
|
||||||
thdev->output.port = -1;
|
thdev->output.port = -1;
|
||||||
thdev->output.scratchpad = subdev->scrpd;
|
thdev->output.scratchpad = subdev->scrpd;
|
||||||
} else if (subdev->type == INTEL_TH_SWITCH) {
|
} else if (subdev->type == INTEL_TH_SWITCH) {
|
||||||
thdev->host_mode = host_mode;
|
thdev->host_mode =
|
||||||
|
INTEL_TH_CAP(th, host_mode_only) ? true : host_mode;
|
||||||
th->hub = thdev;
|
th->hub = thdev;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -737,7 +730,8 @@ static int intel_th_populate(struct intel_th *th)
|
||||||
struct intel_th_device *thdev;
|
struct intel_th_device *thdev;
|
||||||
|
|
||||||
/* only allow SOURCE and SWITCH devices in host mode */
|
/* only allow SOURCE and SWITCH devices in host mode */
|
||||||
if (host_mode && subdev->type == INTEL_TH_OUTPUT)
|
if ((INTEL_TH_CAP(th, host_mode_only) || host_mode) &&
|
||||||
|
subdev->type == INTEL_TH_OUTPUT)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -813,7 +807,14 @@ intel_th_alloc(struct device *dev, struct intel_th_drvdata *drvdata,
|
||||||
struct resource *devres, unsigned int ndevres, int irq)
|
struct resource *devres, unsigned int ndevres, int irq)
|
||||||
{
|
{
|
||||||
struct intel_th *th;
|
struct intel_th *th;
|
||||||
int err;
|
int err, r;
|
||||||
|
|
||||||
|
if (irq == -1)
|
||||||
|
for (r = 0; r < ndevres; r++)
|
||||||
|
if (devres[r].flags & IORESOURCE_IRQ) {
|
||||||
|
irq = devres[r].start;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
th = kzalloc(sizeof(*th), GFP_KERNEL);
|
th = kzalloc(sizeof(*th), GFP_KERNEL);
|
||||||
if (!th)
|
if (!th)
|
||||||
|
@ -935,9 +936,13 @@ EXPORT_SYMBOL_GPL(intel_th_trace_disable);
|
||||||
int intel_th_set_output(struct intel_th_device *thdev,
|
int intel_th_set_output(struct intel_th_device *thdev,
|
||||||
unsigned int master)
|
unsigned int master)
|
||||||
{
|
{
|
||||||
struct intel_th_device *hub = to_intel_th_device(thdev->dev.parent);
|
struct intel_th_device *hub = to_intel_th_hub(thdev);
|
||||||
struct intel_th_driver *hubdrv = to_intel_th_driver(hub->dev.driver);
|
struct intel_th_driver *hubdrv = to_intel_th_driver(hub->dev.driver);
|
||||||
|
|
||||||
|
/* In host mode, this is up to the external debugger, do nothing. */
|
||||||
|
if (hub->host_mode)
|
||||||
|
return 0;
|
||||||
|
|
||||||
if (!hubdrv->set_output)
|
if (!hubdrv->set_output)
|
||||||
return -ENOTSUPP;
|
return -ENOTSUPP;
|
||||||
|
|
||||||
|
|
|
@ -1,16 +1,8 @@
|
||||||
|
// SPDX-License-Identifier: GPL-2.0
|
||||||
/*
|
/*
|
||||||
* Intel(R) Trace Hub driver debugging
|
* Intel(R) Trace Hub driver debugging
|
||||||
*
|
*
|
||||||
* Copyright (C) 2014-2015 Intel Corporation.
|
* 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.
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <linux/types.h>
|
#include <linux/types.h>
|
||||||
|
|
|
@ -1,16 +1,8 @@
|
||||||
|
/* SPDX-License-Identifier: GPL-2.0 */
|
||||||
/*
|
/*
|
||||||
* Intel(R) Trace Hub driver debugging
|
* Intel(R) Trace Hub driver debugging
|
||||||
*
|
*
|
||||||
* Copyright (C) 2014-2015 Intel Corporation.
|
* 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_DEBUG_H__
|
#ifndef __INTEL_TH_DEBUG_H__
|
||||||
|
|
|
@ -1,16 +1,8 @@
|
||||||
|
// SPDX-License-Identifier: GPL-2.0
|
||||||
/*
|
/*
|
||||||
* Intel(R) Trace Hub Global Trace Hub
|
* Intel(R) Trace Hub Global Trace Hub
|
||||||
*
|
*
|
||||||
* Copyright (C) 2014-2015 Intel Corporation.
|
* 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.
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
|
#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
|
||||||
|
|
|
@ -1,16 +1,8 @@
|
||||||
|
/* SPDX-License-Identifier: GPL-2.0 */
|
||||||
/*
|
/*
|
||||||
* Intel(R) Trace Hub Global Trace Hub (GTH) data structures
|
* Intel(R) Trace Hub Global Trace Hub (GTH) data structures
|
||||||
*
|
*
|
||||||
* Copyright (C) 2014-2015 Intel Corporation.
|
* 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__
|
#ifndef __INTEL_TH_GTH_H__
|
||||||
|
|
|
@ -1,16 +1,8 @@
|
||||||
|
/* SPDX-License-Identifier: GPL-2.0 */
|
||||||
/*
|
/*
|
||||||
* Intel(R) Trace Hub data structures
|
* Intel(R) Trace Hub data structures
|
||||||
*
|
*
|
||||||
* Copyright (C) 2014-2015 Intel Corporation.
|
* 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_H__
|
#ifndef __INTEL_TH_H__
|
||||||
|
@ -50,9 +42,11 @@ struct intel_th_output {
|
||||||
/**
|
/**
|
||||||
* struct intel_th_drvdata - describes hardware capabilities and quirks
|
* struct intel_th_drvdata - describes hardware capabilities and quirks
|
||||||
* @tscu_enable: device needs SW to enable time stamping unit
|
* @tscu_enable: device needs SW to enable time stamping unit
|
||||||
|
* @host_mode_only: device can only operate in 'host debugger' mode
|
||||||
*/
|
*/
|
||||||
struct intel_th_drvdata {
|
struct intel_th_drvdata {
|
||||||
unsigned int tscu_enable : 1;
|
unsigned int tscu_enable : 1,
|
||||||
|
host_mode_only : 1;
|
||||||
};
|
};
|
||||||
|
|
||||||
#define INTEL_TH_CAP(_th, _cap) ((_th)->drvdata ? (_th)->drvdata->_cap : 0)
|
#define INTEL_TH_CAP(_th, _cap) ((_th)->drvdata ? (_th)->drvdata->_cap : 0)
|
||||||
|
|
|
@ -1,16 +1,8 @@
|
||||||
|
// SPDX-License-Identifier: GPL-2.0
|
||||||
/*
|
/*
|
||||||
* Intel(R) Trace Hub Memory Storage Unit
|
* Intel(R) Trace Hub Memory Storage Unit
|
||||||
*
|
*
|
||||||
* Copyright (C) 2014-2015 Intel Corporation.
|
* 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.
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
|
#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
|
||||||
|
|
|
@ -1,16 +1,8 @@
|
||||||
|
// SPDX-License-Identifier: GPL-2.0
|
||||||
/*
|
/*
|
||||||
* Intel(R) Trace Hub Memory Storage Unit (MSU) data structures
|
* Intel(R) Trace Hub Memory Storage Unit (MSU) data structures
|
||||||
*
|
*
|
||||||
* Copyright (C) 2014-2015 Intel Corporation.
|
* 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_MSU_H__
|
#ifndef __INTEL_TH_MSU_H__
|
||||||
|
|
|
@ -1,16 +1,8 @@
|
||||||
|
// SPDX-License-Identifier: GPL-2.0
|
||||||
/*
|
/*
|
||||||
* Intel(R) Trace Hub pci driver
|
* Intel(R) Trace Hub pci driver
|
||||||
*
|
*
|
||||||
* Copyright (C) 2014-2015 Intel Corporation.
|
* 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.
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
|
#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
|
||||||
|
|
|
@ -1,16 +1,8 @@
|
||||||
|
// SPDX-License-Identifier: GPL-2.0
|
||||||
/*
|
/*
|
||||||
* Intel(R) Trace Hub PTI output driver
|
* Intel(R) Trace Hub PTI output driver
|
||||||
*
|
*
|
||||||
* Copyright (C) 2014-2016 Intel Corporation.
|
* Copyright (C) 2014-2016 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.
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
|
#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
|
||||||
|
|
|
@ -1,16 +1,8 @@
|
||||||
|
// SPDX-License-Identifier: GPL-2.0
|
||||||
/*
|
/*
|
||||||
* Intel(R) Trace Hub PTI output data structures
|
* Intel(R) Trace Hub PTI output data structures
|
||||||
*
|
*
|
||||||
* Copyright (C) 2014-2015 Intel Corporation.
|
* 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_STH_H__
|
#ifndef __INTEL_TH_STH_H__
|
||||||
|
|
|
@ -1,16 +1,8 @@
|
||||||
|
// SPDX-License-Identifier: GPL-2.0
|
||||||
/*
|
/*
|
||||||
* Intel(R) Trace Hub Software Trace Hub support
|
* Intel(R) Trace Hub Software Trace Hub support
|
||||||
*
|
*
|
||||||
* Copyright (C) 2014-2015 Intel Corporation.
|
* 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.
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
|
#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
|
||||||
|
|
|
@ -1,16 +1,8 @@
|
||||||
|
/* SPDX-License-Identifier: GPL-2.0 */
|
||||||
/*
|
/*
|
||||||
* Intel(R) Trace Hub Software Trace Hub (STH) data structures
|
* Intel(R) Trace Hub Software Trace Hub (STH) data structures
|
||||||
*
|
*
|
||||||
* Copyright (C) 2014-2015 Intel Corporation.
|
* 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_STH_H__
|
#ifndef __INTEL_TH_STH_H__
|
||||||
|
|
|
@ -1,16 +1,8 @@
|
||||||
|
// SPDX-License-Identifier: GPL-2.0
|
||||||
/*
|
/*
|
||||||
* Simple kernel console driver for STM devices
|
* Simple kernel console driver for STM devices
|
||||||
* Copyright (c) 2014, Intel Corporation.
|
* Copyright (c) 2014, 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.
|
|
||||||
*
|
|
||||||
* STM console will send kernel messages over STM devices to a trace host.
|
* STM console will send kernel messages over STM devices to a trace host.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
|
@ -1,16 +1,8 @@
|
||||||
|
// SPDX-License-Identifier: GPL-2.0
|
||||||
/*
|
/*
|
||||||
* System Trace Module (STM) infrastructure
|
* System Trace Module (STM) infrastructure
|
||||||
* Copyright (c) 2014, Intel Corporation.
|
* Copyright (c) 2014, 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.
|
|
||||||
*
|
|
||||||
* STM class implements generic infrastructure for System Trace Module devices
|
* STM class implements generic infrastructure for System Trace Module devices
|
||||||
* as defined in MIPI STPv2 specification.
|
* as defined in MIPI STPv2 specification.
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -1,16 +1,8 @@
|
||||||
|
// SPDX-License-Identifier: GPL-2.0
|
||||||
/*
|
/*
|
||||||
* A dummy STM device for stm/stm_source class testing.
|
* A dummy STM device for stm/stm_source class testing.
|
||||||
* Copyright (c) 2014, Intel Corporation.
|
* Copyright (c) 2014, 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.
|
|
||||||
*
|
|
||||||
* STM class implements generic infrastructure for System Trace Module devices
|
* STM class implements generic infrastructure for System Trace Module devices
|
||||||
* as defined in MIPI STPv2 specification.
|
* as defined in MIPI STPv2 specification.
|
||||||
*/
|
*/
|
||||||
|
@ -20,6 +12,7 @@
|
||||||
#include <linux/module.h>
|
#include <linux/module.h>
|
||||||
#include <linux/slab.h>
|
#include <linux/slab.h>
|
||||||
#include <linux/stm.h>
|
#include <linux/stm.h>
|
||||||
|
#include <uapi/linux/stm.h>
|
||||||
|
|
||||||
static ssize_t notrace
|
static ssize_t notrace
|
||||||
dummy_stm_packet(struct stm_data *stm_data, unsigned int master,
|
dummy_stm_packet(struct stm_data *stm_data, unsigned int master,
|
||||||
|
@ -52,6 +45,18 @@ static unsigned int fail_mode;
|
||||||
|
|
||||||
module_param(fail_mode, int, 0600);
|
module_param(fail_mode, int, 0600);
|
||||||
|
|
||||||
|
static unsigned int master_min;
|
||||||
|
|
||||||
|
module_param(master_min, int, 0400);
|
||||||
|
|
||||||
|
static unsigned int master_max = STP_MASTER_MAX;
|
||||||
|
|
||||||
|
module_param(master_max, int, 0400);
|
||||||
|
|
||||||
|
static unsigned int nr_channels = STP_CHANNEL_MAX;
|
||||||
|
|
||||||
|
module_param(nr_channels, int, 0400);
|
||||||
|
|
||||||
static int dummy_stm_link(struct stm_data *data, unsigned int master,
|
static int dummy_stm_link(struct stm_data *data, unsigned int master,
|
||||||
unsigned int channel)
|
unsigned int channel)
|
||||||
{
|
{
|
||||||
|
@ -68,14 +73,19 @@ static int dummy_stm_init(void)
|
||||||
if (nr_dummies < 0 || nr_dummies > DUMMY_STM_MAX)
|
if (nr_dummies < 0 || nr_dummies > DUMMY_STM_MAX)
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
|
|
||||||
|
if (master_min > master_max ||
|
||||||
|
master_max > STP_MASTER_MAX ||
|
||||||
|
nr_channels > STP_CHANNEL_MAX)
|
||||||
|
return -EINVAL;
|
||||||
|
|
||||||
for (i = 0; i < nr_dummies; i++) {
|
for (i = 0; i < nr_dummies; i++) {
|
||||||
dummy_stm[i].name = kasprintf(GFP_KERNEL, "dummy_stm.%d", i);
|
dummy_stm[i].name = kasprintf(GFP_KERNEL, "dummy_stm.%d", i);
|
||||||
if (!dummy_stm[i].name)
|
if (!dummy_stm[i].name)
|
||||||
goto fail_unregister;
|
goto fail_unregister;
|
||||||
|
|
||||||
dummy_stm[i].sw_start = 0x0000;
|
dummy_stm[i].sw_start = master_min;
|
||||||
dummy_stm[i].sw_end = 0xffff;
|
dummy_stm[i].sw_end = master_max;
|
||||||
dummy_stm[i].sw_nchannels = 0xffff;
|
dummy_stm[i].sw_nchannels = nr_channels;
|
||||||
dummy_stm[i].packet = dummy_stm_packet;
|
dummy_stm[i].packet = dummy_stm_packet;
|
||||||
dummy_stm[i].link = dummy_stm_link;
|
dummy_stm[i].link = dummy_stm_link;
|
||||||
|
|
||||||
|
|
|
@ -1,16 +1,8 @@
|
||||||
|
// SPDX-License-Identifier: GPL-2.0
|
||||||
/*
|
/*
|
||||||
* Simple heartbeat STM source driver
|
* Simple heartbeat STM source driver
|
||||||
* Copyright (c) 2016, Intel Corporation.
|
* Copyright (c) 2016, 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.
|
|
||||||
*
|
|
||||||
* Heartbeat STM source will send repetitive messages over STM devices to a
|
* Heartbeat STM source will send repetitive messages over STM devices to a
|
||||||
* trace host.
|
* trace host.
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -1,16 +1,8 @@
|
||||||
|
// SPDX-License-Identifier: GPL-2.0
|
||||||
/*
|
/*
|
||||||
* System Trace Module (STM) master/channel allocation policy management
|
* System Trace Module (STM) master/channel allocation policy management
|
||||||
* Copyright (c) 2014, Intel Corporation.
|
* Copyright (c) 2014, 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.
|
|
||||||
*
|
|
||||||
* A master/channel allocation policy allows mapping string identifiers to
|
* A master/channel allocation policy allows mapping string identifiers to
|
||||||
* master and channel ranges, where allocation can be done.
|
* master and channel ranges, where allocation can be done.
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -1,16 +1,8 @@
|
||||||
|
/* SPDX-License-Identifier: GPL-2.0 */
|
||||||
/*
|
/*
|
||||||
* System Trace Module (STM) infrastructure
|
* System Trace Module (STM) infrastructure
|
||||||
* Copyright (c) 2014, Intel Corporation.
|
* Copyright (c) 2014, 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.
|
|
||||||
*
|
|
||||||
* STM class implements generic infrastructure for System Trace Module devices
|
* STM class implements generic infrastructure for System Trace Module devices
|
||||||
* as defined in MIPI STPv2 specification.
|
* as defined in MIPI STPv2 specification.
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -1,15 +1,7 @@
|
||||||
|
// SPDX-License-Identifier: GPL-2.0
|
||||||
/*
|
/*
|
||||||
* System Trace Module (STM) infrastructure apis
|
* System Trace Module (STM) infrastructure apis
|
||||||
* Copyright (C) 2014 Intel Corporation.
|
* Copyright (C) 2014 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 _STM_H_
|
#ifndef _STM_H_
|
||||||
|
|
|
@ -3,15 +3,6 @@
|
||||||
* System Trace Module (STM) userspace interfaces
|
* System Trace Module (STM) userspace interfaces
|
||||||
* Copyright (c) 2014, Intel Corporation.
|
* Copyright (c) 2014, 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.
|
|
||||||
*
|
|
||||||
* STM class implements generic infrastructure for System Trace Module devices
|
* STM class implements generic infrastructure for System Trace Module devices
|
||||||
* as defined in MIPI STPv2 specification.
|
* as defined in MIPI STPv2 specification.
|
||||||
*/
|
*/
|
||||||
|
@ -21,6 +12,10 @@
|
||||||
|
|
||||||
#include <linux/types.h>
|
#include <linux/types.h>
|
||||||
|
|
||||||
|
/* Maximum allowed master and channel values */
|
||||||
|
#define STP_MASTER_MAX 0xffff
|
||||||
|
#define STP_CHANNEL_MAX 0xffff
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* struct stp_policy_id - identification for the STP policy
|
* struct stp_policy_id - identification for the STP policy
|
||||||
* @size: size of the structure including real id[] length
|
* @size: size of the structure including real id[] length
|
||||||
|
|
Loading…
Reference in a new issue