Orange Pi5 kernel

Deprecated Linux kernel 5.10.110 for OrangePi 5/5B/5+ boards

3 Commits   0 Branches   0 Tags   |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  1) /* SPDX-License-Identifier: GPL-2.0 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  2) #ifndef __CODA_PSDEV_H
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  3) #define __CODA_PSDEV_H
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  4) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  5) #include <linux/backing-dev.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  6) #include <linux/magic.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  7) #include <linux/mutex.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  8) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  9) #define CODA_PSDEV_MAJOR 67
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 10) #define MAX_CODADEVS  5	   /* how many do we allow */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 11) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 12) struct kstatfs;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 13) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 14) /* messages between coda filesystem in kernel and Venus */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 15) struct upc_req {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 16) 	struct list_head	uc_chain;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 17) 	caddr_t			uc_data;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 18) 	u_short			uc_flags;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 19) 	u_short			uc_inSize;  /* Size is at most 5000 bytes */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 20) 	u_short			uc_outSize;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 21) 	u_short			uc_opcode;  /* copied from data to save lookup */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 22) 	int			uc_unique;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 23) 	wait_queue_head_t	uc_sleep;   /* process' wait queue */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 24) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 25) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 26) #define CODA_REQ_ASYNC  0x1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 27) #define CODA_REQ_READ   0x2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 28) #define CODA_REQ_WRITE  0x4
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 29) #define CODA_REQ_ABORT  0x8
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 30) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 31) /* communication pending/processing queues */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 32) struct venus_comm {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 33) 	u_long		    vc_seq;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 34) 	wait_queue_head_t   vc_waitq; /* Venus wait queue */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 35) 	struct list_head    vc_pending;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 36) 	struct list_head    vc_processing;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 37) 	int                 vc_inuse;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 38) 	struct super_block *vc_sb;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 39) 	struct mutex	    vc_mutex;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 40) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 41) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 42) static inline struct venus_comm *coda_vcp(struct super_block *sb)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 43) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 44) 	return (struct venus_comm *)((sb)->s_fs_info);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 45) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 46) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 47) /* upcalls */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 48) int venus_rootfid(struct super_block *sb, struct CodaFid *fidp);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 49) int venus_getattr(struct super_block *sb, struct CodaFid *fid,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 50) 		  struct coda_vattr *attr);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 51) int venus_setattr(struct super_block *, struct CodaFid *, struct coda_vattr *);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 52) int venus_lookup(struct super_block *sb, struct CodaFid *fid,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 53) 		 const char *name, int length, int *type,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 54) 		 struct CodaFid *resfid);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 55) int venus_close(struct super_block *sb, struct CodaFid *fid, int flags,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 56) 		kuid_t uid);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 57) int venus_open(struct super_block *sb, struct CodaFid *fid, int flags,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 58) 	       struct file **f);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 59) int venus_mkdir(struct super_block *sb, struct CodaFid *dirfid,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 60) 		const char *name, int length,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 61) 		struct CodaFid *newfid, struct coda_vattr *attrs);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 62) int venus_create(struct super_block *sb, struct CodaFid *dirfid,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 63) 		 const char *name, int length, int excl, int mode,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 64) 		 struct CodaFid *newfid, struct coda_vattr *attrs);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 65) int venus_rmdir(struct super_block *sb, struct CodaFid *dirfid,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 66) 		const char *name, int length);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 67) int venus_remove(struct super_block *sb, struct CodaFid *dirfid,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 68) 		 const char *name, int length);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 69) int venus_readlink(struct super_block *sb, struct CodaFid *fid,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 70) 		   char *buffer, int *length);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 71) int venus_rename(struct super_block *sb, struct CodaFid *new_fid,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 72) 		 struct CodaFid *old_fid, size_t old_length,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 73) 		 size_t new_length, const char *old_name,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 74) 		 const char *new_name);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 75) int venus_link(struct super_block *sb, struct CodaFid *fid,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 76) 		  struct CodaFid *dirfid, const char *name, int len );
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 77) int venus_symlink(struct super_block *sb, struct CodaFid *fid,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 78) 		  const char *name, int len, const char *symname, int symlen);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 79) int venus_access(struct super_block *sb, struct CodaFid *fid, int mask);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 80) int venus_pioctl(struct super_block *sb, struct CodaFid *fid,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 81) 		 unsigned int cmd, struct PioctlData *data);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 82) int coda_downcall(struct venus_comm *vcp, int opcode, union outputArgs *out,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 83) 		  size_t nbytes);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 84) int venus_fsync(struct super_block *sb, struct CodaFid *fid);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 85) int venus_statfs(struct dentry *dentry, struct kstatfs *sfs);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 86) int venus_access_intent(struct super_block *sb, struct CodaFid *fid,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 87) 			bool *access_intent_supported,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 88) 			size_t count, loff_t ppos, int type);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 89) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 90) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 91)  * Statistics
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 92)  */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 93) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 94) extern struct venus_comm coda_comms[];
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 95) #endif