brintos

brintos / linux-shallow public Read only

0
0
Text · 1.7 KiB · a267ac9 Raw
73 lines · c
1/* SPDX-License-Identifier: GPL-2.0 */2#ifndef _INTEL_PMT_CLASS_H3#define _INTEL_PMT_CLASS_H4 5#include <linux/intel_vsec.h>6#include <linux/xarray.h>7#include <linux/types.h>8#include <linux/bits.h>9#include <linux/err.h>10#include <linux/io.h>11 12#include "telemetry.h"13 14/* PMT access types */15#define ACCESS_BARID		216#define ACCESS_LOCAL		317 18/* PMT discovery base address/offset register layout */19#define GET_BIR(v)		((v) & GENMASK(2, 0))20#define GET_ADDRESS(v)		((v) & GENMASK(31, 3))21 22struct pci_dev;23 24struct telem_endpoint {25	struct pci_dev		*pcidev;26	struct telem_header	header;27	struct pmt_callbacks	*cb;28	void __iomem		*base;29	bool			present;30	struct kref		kref;31};32 33struct intel_pmt_header {34	u32	base_offset;35	u32	size;36	u32	guid;37	u8	access_type;38};39 40struct intel_pmt_entry {41	struct telem_endpoint	*ep;42	struct intel_pmt_header	header;43	struct bin_attribute	pmt_bin_attr;44	struct kobject		*kobj;45	void __iomem		*disc_table;46	void __iomem		*base;47	struct pmt_callbacks	*cb;48	unsigned long		base_addr;49	size_t			size;50	u32			guid;51	int			devid;52};53 54struct intel_pmt_namespace {55	const char *name;56	struct xarray *xa;57	const struct attribute_group *attr_grp;58	int (*pmt_header_decode)(struct intel_pmt_entry *entry,59				 struct device *dev);60	int (*pmt_add_endpoint)(struct intel_vsec_device *ivdev,61				struct intel_pmt_entry *entry);62};63 64int pmt_telem_read_mmio(struct pci_dev *pdev, struct pmt_callbacks *cb, u32 guid, void *buf,65			void __iomem *addr, u32 count);66bool intel_pmt_is_early_client_hw(struct device *dev);67int intel_pmt_dev_create(struct intel_pmt_entry *entry,68			 struct intel_pmt_namespace *ns,69			 struct intel_vsec_device *dev, int idx);70void intel_pmt_dev_destroy(struct intel_pmt_entry *entry,71			   struct intel_pmt_namespace *ns);72#endif73