xref: /linux/include/uapi/linux/stm.h (revision 4f2c0a4acffbec01079c28f839422e64ddeff004)
1e2be04c7SGreg Kroah-Hartman /* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
27bd1d409SAlexander Shishkin /*
37bd1d409SAlexander Shishkin  * System Trace Module (STM) userspace interfaces
47bd1d409SAlexander Shishkin  * Copyright (c) 2014, Intel Corporation.
57bd1d409SAlexander Shishkin  *
67bd1d409SAlexander Shishkin  * STM class implements generic infrastructure for  System Trace Module devices
77bd1d409SAlexander Shishkin  * as defined in MIPI STPv2 specification.
87bd1d409SAlexander Shishkin  */
97bd1d409SAlexander Shishkin 
107bd1d409SAlexander Shishkin #ifndef _UAPI_LINUX_STM_H
117bd1d409SAlexander Shishkin #define _UAPI_LINUX_STM_H
127bd1d409SAlexander Shishkin 
137bd1d409SAlexander Shishkin #include <linux/types.h>
147bd1d409SAlexander Shishkin 
154f0c7c6aSAlexander Shishkin /* Maximum allowed master and channel values */
164f0c7c6aSAlexander Shishkin #define STP_MASTER_MAX	0xffff
174f0c7c6aSAlexander Shishkin #define STP_CHANNEL_MAX	0xffff
184f0c7c6aSAlexander Shishkin 
197bd1d409SAlexander Shishkin /**
207bd1d409SAlexander Shishkin  * struct stp_policy_id - identification for the STP policy
217bd1d409SAlexander Shishkin  * @size:	size of the structure including real id[] length
227bd1d409SAlexander Shishkin  * @master:	assigned master
237bd1d409SAlexander Shishkin  * @channel:	first assigned channel
247bd1d409SAlexander Shishkin  * @width:	number of requested channels
257bd1d409SAlexander Shishkin  * @id:		identification string
267bd1d409SAlexander Shishkin  *
277bd1d409SAlexander Shishkin  * User must calculate the total size of the structure and put it into
287bd1d409SAlexander Shishkin  * @size field, fill out the @id and desired @width. In return, kernel
297bd1d409SAlexander Shishkin  * fills out @master, @channel and @width.
307bd1d409SAlexander Shishkin  */
317bd1d409SAlexander Shishkin struct stp_policy_id {
327bd1d409SAlexander Shishkin 	__u32		size;
337bd1d409SAlexander Shishkin 	__u16		master;
347bd1d409SAlexander Shishkin 	__u16		channel;
357bd1d409SAlexander Shishkin 	__u16		width;
367bd1d409SAlexander Shishkin 	/* padding */
377bd1d409SAlexander Shishkin 	__u16		__reserved_0;
387bd1d409SAlexander Shishkin 	__u32		__reserved_1;
39*94dfc73eSGustavo A. R. Silva 	char		id[];
407bd1d409SAlexander Shishkin };
417bd1d409SAlexander Shishkin 
427bd1d409SAlexander Shishkin #define STP_POLICY_ID_SET	_IOWR('%', 0, struct stp_policy_id)
437bd1d409SAlexander Shishkin #define STP_POLICY_ID_GET	_IOR('%', 1, struct stp_policy_id)
447bd1d409SAlexander Shishkin #define STP_SET_OPTIONS		_IOW('%', 2, __u64)
457bd1d409SAlexander Shishkin 
467bd1d409SAlexander Shishkin #endif /* _UAPI_LINUX_STM_H */
47