xref: /freebsd/sys/dev/proto/proto_dev.h (revision 95ee2897e98f5d444f26ed2334cc7c439f9c16c6)
167fb10f3SMarcel Moolenaar /*-
24f027abdSMarcel Moolenaar  * Copyright (c) 2014, 2015 Marcel Moolenaar
367fb10f3SMarcel Moolenaar  * All rights reserved.
467fb10f3SMarcel Moolenaar  *
567fb10f3SMarcel Moolenaar  * Redistribution and use in source and binary forms, with or without
667fb10f3SMarcel Moolenaar  * modification, are permitted provided that the following conditions
767fb10f3SMarcel Moolenaar  * are met:
867fb10f3SMarcel Moolenaar  *
967fb10f3SMarcel Moolenaar  * 1. Redistributions of source code must retain the above copyright
1067fb10f3SMarcel Moolenaar  *    notice, this list of conditions and the following disclaimer.
1167fb10f3SMarcel Moolenaar  * 2. Redistributions in binary form must reproduce the above copyright
1267fb10f3SMarcel Moolenaar  *    notice, this list of conditions and the following disclaimer in the
1367fb10f3SMarcel Moolenaar  *    documentation and/or other materials provided with the distribution.
1467fb10f3SMarcel Moolenaar  *
1567fb10f3SMarcel Moolenaar  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
1667fb10f3SMarcel Moolenaar  * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
1767fb10f3SMarcel Moolenaar  * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
1867fb10f3SMarcel Moolenaar  * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
1967fb10f3SMarcel Moolenaar  * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
2067fb10f3SMarcel Moolenaar  * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
2167fb10f3SMarcel Moolenaar  * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
2267fb10f3SMarcel Moolenaar  * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
2367fb10f3SMarcel Moolenaar  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
2467fb10f3SMarcel Moolenaar  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
2567fb10f3SMarcel Moolenaar  */
2667fb10f3SMarcel Moolenaar 
2767fb10f3SMarcel Moolenaar #ifndef _DEV_PROTO_DEV_H_
2867fb10f3SMarcel Moolenaar #define _DEV_PROTO_DEV_H_
2967fb10f3SMarcel Moolenaar 
3067fb10f3SMarcel Moolenaar #include <sys/ioccom.h>
3167fb10f3SMarcel Moolenaar 
3267fb10f3SMarcel Moolenaar #define	PROTO_IOC_CLASS	'h'
3367fb10f3SMarcel Moolenaar 
3467fb10f3SMarcel Moolenaar struct proto_ioc_region {
3567fb10f3SMarcel Moolenaar 	unsigned long	address;
3667fb10f3SMarcel Moolenaar 	unsigned long	size;
3767fb10f3SMarcel Moolenaar };
3867fb10f3SMarcel Moolenaar 
3967fb10f3SMarcel Moolenaar #define PROTO_IOC_REGION _IOWR(PROTO_IOC_CLASS, 1, struct proto_ioc_region)
4067fb10f3SMarcel Moolenaar 
414f027abdSMarcel Moolenaar struct proto_ioc_busdma {
424f027abdSMarcel Moolenaar 	unsigned int	request;
434f027abdSMarcel Moolenaar #define	PROTO_IOC_BUSDMA_TAG_CREATE	1
444f027abdSMarcel Moolenaar #define	PROTO_IOC_BUSDMA_TAG_DERIVE	2
454f027abdSMarcel Moolenaar #define	PROTO_IOC_BUSDMA_TAG_DESTROY	3
465dcca8e8SMarcel Moolenaar #define	PROTO_IOC_BUSDMA_MEM_ALLOC	10
475dcca8e8SMarcel Moolenaar #define	PROTO_IOC_BUSDMA_MEM_FREE	11
4889abdea8SMarcel Moolenaar #define	PROTO_IOC_BUSDMA_MD_CREATE	20
4989abdea8SMarcel Moolenaar #define	PROTO_IOC_BUSDMA_MD_DESTROY	21
5089abdea8SMarcel Moolenaar #define	PROTO_IOC_BUSDMA_MD_LOAD	22
51*42d3ab5dSMarcel Moolenaar #define	PROTO_IOC_BUSDMA_MD_UNLOAD	29
52*42d3ab5dSMarcel Moolenaar #define	PROTO_IOC_BUSDMA_SYNC		30
534f027abdSMarcel Moolenaar 	unsigned long	key;
544f027abdSMarcel Moolenaar 	union {
554f027abdSMarcel Moolenaar 		struct {
564f027abdSMarcel Moolenaar 			unsigned long	align;
574f027abdSMarcel Moolenaar 			unsigned long	bndry;
584f027abdSMarcel Moolenaar 			unsigned long	maxaddr;
594f027abdSMarcel Moolenaar 			unsigned long	maxsz;
604f027abdSMarcel Moolenaar 			unsigned long	maxsegsz;
614f027abdSMarcel Moolenaar 			unsigned int	nsegs;
624f027abdSMarcel Moolenaar 			unsigned int	datarate;
634f027abdSMarcel Moolenaar 			unsigned int	flags;
644f027abdSMarcel Moolenaar 		} tag;
655dcca8e8SMarcel Moolenaar 		struct {
665dcca8e8SMarcel Moolenaar 			unsigned long	tag;
675dcca8e8SMarcel Moolenaar 			unsigned int	flags;
6889abdea8SMarcel Moolenaar 			unsigned long	virt_addr;
6989abdea8SMarcel Moolenaar 			unsigned long	virt_size;
7090a1793cSMarcel Moolenaar 			unsigned int	phys_nsegs;
7190a1793cSMarcel Moolenaar 			unsigned long	phys_addr;
7290a1793cSMarcel Moolenaar 			unsigned long	bus_addr;
7390a1793cSMarcel Moolenaar 			unsigned int	bus_nsegs;
7489abdea8SMarcel Moolenaar 		} md;
75*42d3ab5dSMarcel Moolenaar 		struct {
76*42d3ab5dSMarcel Moolenaar 			unsigned int	op;
77*42d3ab5dSMarcel Moolenaar 			unsigned long	base;
78*42d3ab5dSMarcel Moolenaar 			unsigned long	size;
79*42d3ab5dSMarcel Moolenaar 		} sync;
804f027abdSMarcel Moolenaar 	} u;
814f027abdSMarcel Moolenaar 	unsigned long	result;
824f027abdSMarcel Moolenaar };
834f027abdSMarcel Moolenaar 
844f027abdSMarcel Moolenaar #define PROTO_IOC_BUSDMA _IOWR(PROTO_IOC_CLASS, 2, struct proto_ioc_busdma)
854f027abdSMarcel Moolenaar 
8667fb10f3SMarcel Moolenaar #endif /* _DEV_PROTO_H_ */
87