mirror of
				git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
				synced 2025-09-04 20:19:47 +08:00 
			
		
		
		
	 c414943119
			
		
	
	
		c414943119
		
	
	
	
	
		
			
			This patch fixes all the sparse warnings in the octeontx driver. Some of these are just trivial type changes. However, some of the changes are non-trivial on little-endian hosts. Obviously the driver appears to be broken on either LE or BE as it was doing different things. I've taken the BE behaviour as the correct one. Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
		
			
				
	
	
		
			147 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			147 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| /* SPDX-License-Identifier: GPL-2.0-only */
 | |
| /*
 | |
|  * Copyright (C) 2016 Cavium, Inc.
 | |
|  */
 | |
| 
 | |
| #ifndef __REQUEST_MANAGER_H
 | |
| #define __REQUEST_MANAGER_H
 | |
| 
 | |
| #include "cpt_common.h"
 | |
| 
 | |
| #define TIME_IN_RESET_COUNT  5
 | |
| #define COMPLETION_CODE_SIZE 8
 | |
| #define COMPLETION_CODE_INIT 0
 | |
| #define PENDING_THOLD  100
 | |
| #define MAX_SG_IN_CNT 12
 | |
| #define MAX_SG_OUT_CNT 13
 | |
| #define SG_LIST_HDR_SIZE  8
 | |
| #define MAX_BUF_CNT	16
 | |
| 
 | |
| union ctrl_info {
 | |
| 	u32 flags;
 | |
| 	struct {
 | |
| #if defined(__BIG_ENDIAN_BITFIELD)
 | |
| 		u32 reserved0:26;
 | |
| 		u32 grp:3; /* Group bits */
 | |
| 		u32 dma_mode:2; /* DMA mode */
 | |
| 		u32 se_req:1;/* To SE core */
 | |
| #else
 | |
| 		u32 se_req:1; /* To SE core */
 | |
| 		u32 dma_mode:2; /* DMA mode */
 | |
| 		u32 grp:3; /* Group bits */
 | |
| 		u32 reserved0:26;
 | |
| #endif
 | |
| 	} s;
 | |
| };
 | |
| 
 | |
| union opcode_info {
 | |
| 	u16 flags;
 | |
| 	struct {
 | |
| 		u8 major;
 | |
| 		u8 minor;
 | |
| 	} s;
 | |
| };
 | |
| 
 | |
| struct cptvf_request {
 | |
| 	union opcode_info opcode;
 | |
| 	u16 param1;
 | |
| 	u16 param2;
 | |
| 	u16 dlen;
 | |
| };
 | |
| 
 | |
| struct buf_ptr {
 | |
| 	u8 *vptr;
 | |
| 	dma_addr_t dma_addr;
 | |
| 	u16 size;
 | |
| };
 | |
| 
 | |
| struct cpt_request_info {
 | |
| 	u8 incnt; /* Number of input buffers */
 | |
| 	u8 outcnt; /* Number of output buffers */
 | |
| 	u16 rlen; /* Output length */
 | |
| 	union ctrl_info ctrl; /* User control information */
 | |
| 	struct cptvf_request req; /* Request Information (Core specific) */
 | |
| 
 | |
| 	bool may_sleep;
 | |
| 
 | |
| 	struct buf_ptr in[MAX_BUF_CNT];
 | |
| 	struct buf_ptr out[MAX_BUF_CNT];
 | |
| 
 | |
| 	void (*callback)(int, void *); /* Kernel ASYNC request callabck */
 | |
| 	void *callback_arg; /* Kernel ASYNC request callabck arg */
 | |
| };
 | |
| 
 | |
| struct sglist_component {
 | |
| 	union {
 | |
| 		u64 len;
 | |
| 		struct {
 | |
| 			__be16 len0;
 | |
| 			__be16 len1;
 | |
| 			__be16 len2;
 | |
| 			__be16 len3;
 | |
| 		} s;
 | |
| 	} u;
 | |
| 	__be64 ptr0;
 | |
| 	__be64 ptr1;
 | |
| 	__be64 ptr2;
 | |
| 	__be64 ptr3;
 | |
| };
 | |
| 
 | |
| struct cpt_info_buffer {
 | |
| 	struct cpt_vf *cptvf;
 | |
| 	unsigned long time_in;
 | |
| 	u8 extra_time;
 | |
| 
 | |
| 	struct cpt_request_info *req;
 | |
| 	dma_addr_t dptr_baddr;
 | |
| 	u32 dlen;
 | |
| 	dma_addr_t rptr_baddr;
 | |
| 	dma_addr_t comp_baddr;
 | |
| 	u8 *in_buffer;
 | |
| 	u8 *out_buffer;
 | |
| 	u8 *gather_components;
 | |
| 	u8 *scatter_components;
 | |
| 
 | |
| 	struct pending_entry *pentry;
 | |
| 	volatile u64 *completion_addr;
 | |
| 	volatile u64 *alternate_caddr;
 | |
| };
 | |
| 
 | |
| /*
 | |
|  * CPT_INST_S software command definitions
 | |
|  * Words EI (0-3)
 | |
|  */
 | |
| union vq_cmd_word0 {
 | |
| 	u64 u64;
 | |
| 	struct {
 | |
| 		__be16 opcode;
 | |
| 		__be16 param1;
 | |
| 		__be16 param2;
 | |
| 		__be16 dlen;
 | |
| 	} s;
 | |
| };
 | |
| 
 | |
| union vq_cmd_word3 {
 | |
| 	u64 u64;
 | |
| 	struct {
 | |
| #if defined(__BIG_ENDIAN_BITFIELD)
 | |
| 		u64 grp:3;
 | |
| 		u64 cptr:61;
 | |
| #else
 | |
| 		u64 cptr:61;
 | |
| 		u64 grp:3;
 | |
| #endif
 | |
| 	} s;
 | |
| };
 | |
| 
 | |
| struct cpt_vq_command {
 | |
| 	union vq_cmd_word0 cmd;
 | |
| 	u64 dptr;
 | |
| 	u64 rptr;
 | |
| 	union vq_cmd_word3 cptr;
 | |
| };
 | |
| 
 | |
| void vq_post_process(struct cpt_vf *cptvf, u32 qno);
 | |
| int process_request(struct cpt_vf *cptvf, struct cpt_request_info *req);
 | |
| #endif /* __REQUEST_MANAGER_H */
 |