Linux Audio

Check our new training course

Loading...
Note: File does not exist in v4.6.
 1/* SPDX-License-Identifier: GPL-2.0 */
 2#ifndef _INTEL_PMT_CLASS_H
 3#define _INTEL_PMT_CLASS_H
 4
 5#include <linux/platform_device.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/* PMT access types */
13#define ACCESS_BARID		2
14#define ACCESS_LOCAL		3
15
16/* PMT discovery base address/offset register layout */
17#define GET_BIR(v)		((v) & GENMASK(2, 0))
18#define GET_ADDRESS(v)		((v) & GENMASK(31, 3))
19
20struct intel_pmt_entry {
21	struct bin_attribute	pmt_bin_attr;
22	struct kobject		*kobj;
23	void __iomem		*disc_table;
24	void __iomem		*base;
25	unsigned long		base_addr;
26	size_t			size;
27	u32			guid;
28	int			devid;
29};
30
31struct intel_pmt_header {
32	u32	base_offset;
33	u32	size;
34	u32	guid;
35	u8	access_type;
36};
37
38struct intel_pmt_namespace {
39	const char *name;
40	struct xarray *xa;
41	const struct attribute_group *attr_grp;
42	int (*pmt_header_decode)(struct intel_pmt_entry *entry,
43				 struct intel_pmt_header *header,
44				 struct device *dev);
45};
46
47bool intel_pmt_is_early_client_hw(struct device *dev);
48int intel_pmt_dev_create(struct intel_pmt_entry *entry,
49			 struct intel_pmt_namespace *ns,
50			 struct platform_device *pdev, int idx);
51void intel_pmt_dev_destroy(struct intel_pmt_entry *entry,
52			   struct intel_pmt_namespace *ns);
53#endif