Char/Misc and other driver updates for 5.18-rc1
Here is the big set of char/misc and other small driver subsystem updates for 5.18-rc1. Included in here are merges from driver subsystems which contain: - iio driver updates and new drivers - fsi driver updates - fpga driver updates - habanalabs driver updates and support for new hardware - soundwire driver updates and new drivers - phy driver updates and new drivers - coresight driver updates - icc driver updates Individual changes include: - mei driver updates - interconnect driver updates - new PECI driver subsystem added - vmci driver updates - lots of tiny misc/char driver updates There will be two merge conflicts with your tree, one in MAINTAINERS which is obvious to fix up, and one in drivers/phy/freescale/Kconfig which also should be easy to resolve. All of these have been in linux-next for a while with no reported problems. Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> -----BEGIN PGP SIGNATURE----- iG0EABECAC0WIQT0tgzFv3jCIUoxPcsxR9QN2y37KQUCYkG3fQ8cZ3JlZ0Brcm9h aC5jb20ACgkQMUfUDdst+ykNEgCfaRG8CRxewDXOO4+GSeA3NGK+AIoAnR89donC R4bgCjfg8BWIBcVVXg3/ =WWXC -----END PGP SIGNATURE----- Merge tag 'char-misc-5.18-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/char-misc Pull char/misc and other driver updates from Greg KH: "Here is the big set of char/misc and other small driver subsystem updates for 5.18-rc1. Included in here are merges from driver subsystems which contain: - iio driver updates and new drivers - fsi driver updates - fpga driver updates - habanalabs driver updates and support for new hardware - soundwire driver updates and new drivers - phy driver updates and new drivers - coresight driver updates - icc driver updates Individual changes include: - mei driver updates - interconnect driver updates - new PECI driver subsystem added - vmci driver updates - lots of tiny misc/char driver updates All of these have been in linux-next for a while with no reported problems" * tag 'char-misc-5.18-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/char-misc: (556 commits) firmware: google: Properly state IOMEM dependency kgdbts: fix return value of __setup handler firmware: sysfb: fix platform-device leak in error path firmware: stratix10-svc: add missing callback parameter on RSU arm64: dts: qcom: add non-secure domain property to fastrpc nodes misc: fastrpc: Add dma handle implementation misc: fastrpc: Add fdlist implementation misc: fastrpc: Add helper function to get list and page misc: fastrpc: Add support to secure memory map dt-bindings: misc: add fastrpc domain vmid property misc: fastrpc: check before loading process to the DSP misc: fastrpc: add secure domain support dt-bindings: misc: add property to support non-secure DSP misc: fastrpc: Add support to get DSP capabilities misc: fastrpc: add support for FASTRPC_IOCTL_MEM_MAP/UNMAP misc: fastrpc: separate fastrpc device from channel context dt-bindings: nvmem: brcm,nvram: add basic NVMEM cells dt-bindings: nvmem: make "reg" property optional nvmem: brcm_nvram: parse NVRAM content into NVMEM cells nvmem: dt-bindings: Fix the error of dt-bindings check ...
This commit is contained in:
commit
02e2af20f4
567 changed files with 27052 additions and 6728 deletions
|
|
@ -61,6 +61,8 @@ enum counter_event_type {
|
|||
COUNTER_EVENT_THRESHOLD,
|
||||
/* Index signal detected */
|
||||
COUNTER_EVENT_INDEX,
|
||||
/* State of counter is changed */
|
||||
COUNTER_EVENT_CHANGE_OF_STATE,
|
||||
};
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -55,4 +55,18 @@ struct scom_access {
|
|||
#define FSI_SCOM_WRITE _IOWR('s', 0x02, struct scom_access)
|
||||
#define FSI_SCOM_RESET _IOW('s', 0x03, __u32)
|
||||
|
||||
/*
|
||||
* /dev/sbefifo* ioctl interface
|
||||
*/
|
||||
|
||||
/**
|
||||
* FSI_SBEFIFO_READ_TIMEOUT sets the read timeout for response from SBE.
|
||||
*
|
||||
* The read timeout is specified in seconds. The minimum value of read
|
||||
* timeout is 10 seconds (default) and the maximum value of read timeout is
|
||||
* 120 seconds. A read timeout of 0 will reset the value to the default of
|
||||
* (10 seconds).
|
||||
*/
|
||||
#define FSI_SBEFIFO_READ_TIMEOUT_SECONDS _IOW('s', 0x00, __u32)
|
||||
|
||||
#endif /* _UAPI_LINUX_FSI_H */
|
||||
|
|
|
|||
|
|
@ -104,6 +104,7 @@ enum iio_event_type {
|
|||
IIO_EV_TYPE_THRESH_ADAPTIVE,
|
||||
IIO_EV_TYPE_MAG_ADAPTIVE,
|
||||
IIO_EV_TYPE_CHANGE,
|
||||
IIO_EV_TYPE_MAG_REFERENCED,
|
||||
};
|
||||
|
||||
enum iio_event_direction {
|
||||
|
|
|
|||
|
|
@ -13,12 +13,64 @@
|
|||
#define FASTRPC_IOCTL_MMAP _IOWR('R', 6, struct fastrpc_req_mmap)
|
||||
#define FASTRPC_IOCTL_MUNMAP _IOWR('R', 7, struct fastrpc_req_munmap)
|
||||
#define FASTRPC_IOCTL_INIT_ATTACH_SNS _IO('R', 8)
|
||||
#define FASTRPC_IOCTL_MEM_MAP _IOWR('R', 10, struct fastrpc_mem_map)
|
||||
#define FASTRPC_IOCTL_MEM_UNMAP _IOWR('R', 11, struct fastrpc_mem_unmap)
|
||||
#define FASTRPC_IOCTL_GET_DSP_INFO _IOWR('R', 13, struct fastrpc_ioctl_capability)
|
||||
|
||||
/**
|
||||
* enum fastrpc_map_flags - control flags for mapping memory on DSP user process
|
||||
* @FASTRPC_MAP_STATIC: Map memory pages with RW- permission and CACHE WRITEBACK.
|
||||
* The driver is responsible for cache maintenance when passed
|
||||
* the buffer to FastRPC calls. Same virtual address will be
|
||||
* assigned for subsequent FastRPC calls.
|
||||
* @FASTRPC_MAP_RESERVED: Reserved
|
||||
* @FASTRPC_MAP_FD: Map memory pages with RW- permission and CACHE WRITEBACK.
|
||||
* Mapping tagged with a file descriptor. User is responsible for
|
||||
* CPU and DSP cache maintenance for the buffer. Get virtual address
|
||||
* of buffer on DSP using HAP_mmap_get() and HAP_mmap_put() APIs.
|
||||
* @FASTRPC_MAP_FD_DELAYED: Mapping delayed until user call HAP_mmap() and HAP_munmap()
|
||||
* functions on DSP. It is useful to map a buffer with cache modes
|
||||
* other than default modes. User is responsible for CPU and DSP
|
||||
* cache maintenance for the buffer.
|
||||
* @FASTRPC_MAP_FD_NOMAP: This flag is used to skip CPU mapping,
|
||||
* otherwise behaves similar to FASTRPC_MAP_FD_DELAYED flag.
|
||||
* @FASTRPC_MAP_MAX: max count for flags
|
||||
*
|
||||
*/
|
||||
enum fastrpc_map_flags {
|
||||
FASTRPC_MAP_STATIC = 0,
|
||||
FASTRPC_MAP_RESERVED,
|
||||
FASTRPC_MAP_FD = 2,
|
||||
FASTRPC_MAP_FD_DELAYED,
|
||||
FASTRPC_MAP_FD_NOMAP = 16,
|
||||
FASTRPC_MAP_MAX,
|
||||
};
|
||||
|
||||
enum fastrpc_proc_attr {
|
||||
/* Macro for Debug attr */
|
||||
FASTRPC_MODE_DEBUG = (1 << 0),
|
||||
/* Macro for Ptrace */
|
||||
FASTRPC_MODE_PTRACE = (1 << 1),
|
||||
/* Macro for CRC Check */
|
||||
FASTRPC_MODE_CRC = (1 << 2),
|
||||
/* Macro for Unsigned PD */
|
||||
FASTRPC_MODE_UNSIGNED_MODULE = (1 << 3),
|
||||
/* Macro for Adaptive QoS */
|
||||
FASTRPC_MODE_ADAPTIVE_QOS = (1 << 4),
|
||||
/* Macro for System Process */
|
||||
FASTRPC_MODE_SYSTEM_PROCESS = (1 << 5),
|
||||
/* Macro for Prvileged Process */
|
||||
FASTRPC_MODE_PRIVILEGED = (1 << 6),
|
||||
};
|
||||
|
||||
/* Fastrpc attribute for memory protection of buffers */
|
||||
#define FASTRPC_ATTR_SECUREMAP (1)
|
||||
|
||||
struct fastrpc_invoke_args {
|
||||
__u64 ptr;
|
||||
__u64 length;
|
||||
__s32 fd;
|
||||
__u32 reserved;
|
||||
__u32 attr;
|
||||
};
|
||||
|
||||
struct fastrpc_invoke {
|
||||
|
|
@ -49,9 +101,36 @@ struct fastrpc_req_mmap {
|
|||
__u64 vaddrout; /* dsp virtual address */
|
||||
};
|
||||
|
||||
struct fastrpc_mem_map {
|
||||
__s32 version;
|
||||
__s32 fd; /* fd */
|
||||
__s32 offset; /* buffer offset */
|
||||
__u32 flags; /* flags defined in enum fastrpc_map_flags */
|
||||
__u64 vaddrin; /* buffer virtual address */
|
||||
__u64 length; /* buffer length */
|
||||
__u64 vaddrout; /* [out] remote virtual address */
|
||||
__s32 attrs; /* buffer attributes used for SMMU mapping */
|
||||
__s32 reserved[4];
|
||||
};
|
||||
|
||||
struct fastrpc_req_munmap {
|
||||
__u64 vaddrout; /* address to unmap */
|
||||
__u64 size; /* size */
|
||||
};
|
||||
|
||||
struct fastrpc_mem_unmap {
|
||||
__s32 vesion;
|
||||
__s32 fd; /* fd */
|
||||
__u64 vaddr; /* remote process (dsp) virtual address */
|
||||
__u64 length; /* buffer size */
|
||||
__s32 reserved[5];
|
||||
};
|
||||
|
||||
struct fastrpc_ioctl_capability {
|
||||
__u32 domain;
|
||||
__u32 attribute_id;
|
||||
__u32 capability; /* dsp capability */
|
||||
__u32 reserved[4];
|
||||
};
|
||||
|
||||
#endif /* __QCOM_FASTRPC_H__ */
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note
|
||||
*
|
||||
* Copyright 2016-2020 HabanaLabs, Ltd.
|
||||
* Copyright 2016-2022 HabanaLabs, Ltd.
|
||||
* All Rights Reserved.
|
||||
*
|
||||
*/
|
||||
|
|
@ -30,6 +30,9 @@
|
|||
*/
|
||||
#define GAUDI_FIRST_AVAILABLE_W_S_MONITOR 72
|
||||
|
||||
/* Max number of elements in timestamps registration buffers */
|
||||
#define TS_MAX_ELEMENTS_NUM (1 << 20) /* 1MB */
|
||||
|
||||
/*
|
||||
* Goya queue Numbering
|
||||
*
|
||||
|
|
@ -404,6 +407,8 @@ enum hl_server_type {
|
|||
* @cpucp_version: The CPUCP f/w version.
|
||||
* @card_name: The card name as passed by the f/w.
|
||||
* @dram_page_size: The DRAM physical page size.
|
||||
* @number_of_user_interrupts: The number of interrupts that are available to the userspace
|
||||
* application to use. Relevant for Gaudi2 and later.
|
||||
*/
|
||||
struct hl_info_hw_ip_info {
|
||||
__u64 sram_base_address;
|
||||
|
|
@ -428,6 +433,9 @@ struct hl_info_hw_ip_info {
|
|||
__u8 card_name[HL_INFO_CARD_NAME_MAX_LEN];
|
||||
__u64 reserved2;
|
||||
__u64 dram_page_size;
|
||||
__u32 reserved3;
|
||||
__u16 number_of_user_interrupts;
|
||||
__u16 pad2;
|
||||
};
|
||||
|
||||
struct hl_info_dram_usage {
|
||||
|
|
@ -690,10 +698,12 @@ struct hl_cb_in {
|
|||
__u64 cb_handle;
|
||||
/* HL_CB_OP_* */
|
||||
__u32 op;
|
||||
|
||||
/* Size of CB. Maximum size is HL_MAX_CB_SIZE. The minimum size that
|
||||
* will be allocated, regardless of this parameter's value, is PAGE_SIZE
|
||||
*/
|
||||
__u32 cb_size;
|
||||
|
||||
/* Context ID - Currently not in use */
|
||||
__u32 ctx_id;
|
||||
/* HL_CB_FLAGS_* */
|
||||
|
|
@ -959,6 +969,7 @@ union hl_cs_args {
|
|||
#define HL_WAIT_CS_FLAGS_INTERRUPT_MASK 0xFFF00000
|
||||
#define HL_WAIT_CS_FLAGS_MULTI_CS 0x4
|
||||
#define HL_WAIT_CS_FLAGS_INTERRUPT_KERNEL_CQ 0x10
|
||||
#define HL_WAIT_CS_FLAGS_REGISTER_INTERRUPT 0x20
|
||||
|
||||
#define HL_WAIT_MULTI_CS_LIST_MAX_LEN 32
|
||||
|
||||
|
|
@ -1031,6 +1042,20 @@ struct hl_wait_cs_in {
|
|||
* relevant only when HL_WAIT_CS_FLAGS_INTERRUPT_KERNEL_CQ is set
|
||||
*/
|
||||
__u64 cq_counters_offset;
|
||||
|
||||
/*
|
||||
* Timestamp_handle timestamps buffer handle.
|
||||
* relevant only when HL_WAIT_CS_FLAGS_REGISTER_INTERRUPT is set
|
||||
*/
|
||||
__u64 timestamp_handle;
|
||||
|
||||
/*
|
||||
* Timestamp_offset is offset inside the timestamp buffer pointed by timestamp_handle above.
|
||||
* upon interrupt, if the cq reached the target value then driver will write
|
||||
* timestamp to this offset.
|
||||
* relevant only when HL_WAIT_CS_FLAGS_REGISTER_INTERRUPT is set
|
||||
*/
|
||||
__u64 timestamp_offset;
|
||||
};
|
||||
|
||||
#define HL_WAIT_CS_STATUS_COMPLETED 0
|
||||
|
|
@ -1077,100 +1102,119 @@ union hl_wait_cs_args {
|
|||
*/
|
||||
#define HL_MEM_OP_EXPORT_DMABUF_FD 5
|
||||
|
||||
/* Opcode to create timestamps pool for user interrupts registration support
|
||||
* The memory will be allocated by the kernel driver, A timestamp buffer which the user
|
||||
* will get handle to it for mmap, and another internal buffer used by the
|
||||
* driver for registration management
|
||||
* The memory will be freed when the user closes the file descriptor(ctx close)
|
||||
*/
|
||||
#define HL_MEM_OP_TS_ALLOC 6
|
||||
|
||||
/* Memory flags */
|
||||
#define HL_MEM_CONTIGUOUS 0x1
|
||||
#define HL_MEM_SHARED 0x2
|
||||
#define HL_MEM_USERPTR 0x4
|
||||
#define HL_MEM_FORCE_HINT 0x8
|
||||
|
||||
/**
|
||||
* structure hl_mem_in - structure that handle input args for memory IOCTL
|
||||
* @union arg: union of structures to be used based on the input operation
|
||||
* @op: specify the requested memory operation (one of the HL_MEM_OP_* definitions).
|
||||
* @flags: flags for the memory operation (one of the HL_MEM_* definitions).
|
||||
* For the HL_MEM_OP_EXPORT_DMABUF_FD opcode, this field holds the DMA-BUF file/FD flags.
|
||||
* @ctx_id: context ID - currently not in use.
|
||||
* @num_of_elements: number of timestamp elements used only with HL_MEM_OP_TS_ALLOC opcode.
|
||||
*/
|
||||
struct hl_mem_in {
|
||||
union {
|
||||
/* HL_MEM_OP_ALLOC- allocate device memory */
|
||||
/**
|
||||
* structure for device memory allocation (used with the HL_MEM_OP_ALLOC op)
|
||||
* @mem_size: memory size to allocate
|
||||
* @page_size: page size to use on allocation. when the value is 0 the default page
|
||||
* size will be taken.
|
||||
*/
|
||||
struct {
|
||||
/* Size to alloc */
|
||||
__u64 mem_size;
|
||||
__u64 page_size;
|
||||
} alloc;
|
||||
|
||||
/* HL_MEM_OP_FREE - free device memory */
|
||||
/**
|
||||
* structure for free-ing device memory (used with the HL_MEM_OP_FREE op)
|
||||
* @handle: handle returned from HL_MEM_OP_ALLOC
|
||||
*/
|
||||
struct {
|
||||
/* Handle returned from HL_MEM_OP_ALLOC */
|
||||
__u64 handle;
|
||||
} free;
|
||||
|
||||
/* HL_MEM_OP_MAP - map device memory */
|
||||
/**
|
||||
* structure for mapping device memory (used with the HL_MEM_OP_MAP op)
|
||||
* @hint_addr: requested virtual address of mapped memory.
|
||||
* the driver will try to map the requested region to this hint
|
||||
* address, as long as the address is valid and not already mapped.
|
||||
* the user should check the returned address of the IOCTL to make
|
||||
* sure he got the hint address.
|
||||
* passing 0 here means that the driver will choose the address itself.
|
||||
* @handle: handle returned from HL_MEM_OP_ALLOC.
|
||||
*/
|
||||
struct {
|
||||
/*
|
||||
* Requested virtual address of mapped memory.
|
||||
* The driver will try to map the requested region to
|
||||
* this hint address, as long as the address is valid
|
||||
* and not already mapped. The user should check the
|
||||
* returned address of the IOCTL to make sure he got
|
||||
* the hint address. Passing 0 here means that the
|
||||
* driver will choose the address itself.
|
||||
*/
|
||||
__u64 hint_addr;
|
||||
/* Handle returned from HL_MEM_OP_ALLOC */
|
||||
__u64 handle;
|
||||
} map_device;
|
||||
|
||||
/* HL_MEM_OP_MAP - map host memory */
|
||||
/**
|
||||
* structure for mapping host memory (used with the HL_MEM_OP_MAP op)
|
||||
* @host_virt_addr: address of allocated host memory.
|
||||
* @hint_addr: requested virtual address of mapped memory.
|
||||
* the driver will try to map the requested region to this hint
|
||||
* address, as long as the address is valid and not already mapped.
|
||||
* the user should check the returned address of the IOCTL to make
|
||||
* sure he got the hint address.
|
||||
* passing 0 here means that the driver will choose the address itself.
|
||||
* @size: size of allocated host memory.
|
||||
*/
|
||||
struct {
|
||||
/* Address of allocated host memory */
|
||||
__u64 host_virt_addr;
|
||||
/*
|
||||
* Requested virtual address of mapped memory.
|
||||
* The driver will try to map the requested region to
|
||||
* this hint address, as long as the address is valid
|
||||
* and not already mapped. The user should check the
|
||||
* returned address of the IOCTL to make sure he got
|
||||
* the hint address. Passing 0 here means that the
|
||||
* driver will choose the address itself.
|
||||
*/
|
||||
__u64 hint_addr;
|
||||
/* Size of allocated host memory */
|
||||
__u64 mem_size;
|
||||
} map_host;
|
||||
|
||||
/* HL_MEM_OP_MAP_BLOCK - map a hw block */
|
||||
/**
|
||||
* structure for mapping hw block (used with the HL_MEM_OP_MAP_BLOCK op)
|
||||
* @block_addr:HW block address to map, a handle and size will be returned
|
||||
* to the user and will be used to mmap the relevant block.
|
||||
* only addresses from configuration space are allowed.
|
||||
*/
|
||||
struct {
|
||||
/*
|
||||
* HW block address to map, a handle and size will be
|
||||
* returned to the user and will be used to mmap the
|
||||
* relevant block. Only addresses from configuration
|
||||
* space are allowed.
|
||||
*/
|
||||
__u64 block_addr;
|
||||
} map_block;
|
||||
|
||||
/* HL_MEM_OP_UNMAP - unmap host memory */
|
||||
/**
|
||||
* structure for unmapping host memory (used with the HL_MEM_OP_UNMAP op)
|
||||
* @device_virt_addr: virtual address returned from HL_MEM_OP_MAP
|
||||
*/
|
||||
struct {
|
||||
/* Virtual address returned from HL_MEM_OP_MAP */
|
||||
__u64 device_virt_addr;
|
||||
} unmap;
|
||||
|
||||
/* HL_MEM_OP_EXPORT_DMABUF_FD */
|
||||
/**
|
||||
* structure for exporting DMABUF object (used with
|
||||
* the HL_MEM_OP_EXPORT_DMABUF_FD op)
|
||||
* @handle: handle returned from HL_MEM_OP_ALLOC.
|
||||
* in Gaudi, where we don't have MMU for the device memory, the
|
||||
* driver expects a physical address (instead of a handle) in the
|
||||
* device memory space.
|
||||
* @mem_size: size of memory allocation. Relevant only for GAUDI
|
||||
*/
|
||||
struct {
|
||||
/* Handle returned from HL_MEM_OP_ALLOC. In Gaudi,
|
||||
* where we don't have MMU for the device memory, the
|
||||
* driver expects a physical address (instead of
|
||||
* a handle) in the device memory space.
|
||||
*/
|
||||
__u64 handle;
|
||||
/* Size of memory allocation. Relevant only for GAUDI */
|
||||
__u64 mem_size;
|
||||
} export_dmabuf_fd;
|
||||
};
|
||||
|
||||
/* HL_MEM_OP_* */
|
||||
__u32 op;
|
||||
/* HL_MEM_* flags.
|
||||
* For the HL_MEM_OP_EXPORT_DMABUF_FD opcode, this field holds the
|
||||
* DMA-BUF file/FD flags.
|
||||
*/
|
||||
__u32 flags;
|
||||
/* Context ID - Currently not in use */
|
||||
__u32 ctx_id;
|
||||
__u32 pad;
|
||||
__u32 num_of_elements;
|
||||
};
|
||||
|
||||
struct hl_mem_out {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue