xref: /freebsd/sys/dev/firewire/fwohcivar.h (revision 77ee030b5fe6848e5c50ae2f0013bf43f6ad0c28)
13c60ba66SKatsushi Kobayashi /*
277ee030bSHidetoshi Shimokawa  * Copyright (c) 2003 Hidetoshi SHimokawa
33c60ba66SKatsushi Kobayashi  * Copyright (c) 1998-2002 Katsushi Kobayashi and Hidetoshi SHimokawa
43c60ba66SKatsushi Kobayashi  * All rights reserved.
53c60ba66SKatsushi Kobayashi  *
63c60ba66SKatsushi Kobayashi  * Redistribution and use in source and binary forms, with or without
73c60ba66SKatsushi Kobayashi  * modification, are permitted provided that the following conditions
83c60ba66SKatsushi Kobayashi  * are met:
93c60ba66SKatsushi Kobayashi  * 1. Redistributions of source code must retain the above copyright
103c60ba66SKatsushi Kobayashi  *    notice, this list of conditions and the following disclaimer.
113c60ba66SKatsushi Kobayashi  * 2. Redistributions in binary form must reproduce the above copyright
123c60ba66SKatsushi Kobayashi  *    notice, this list of conditions and the following disclaimer in the
133c60ba66SKatsushi Kobayashi  *    documentation and/or other materials provided with the distribution.
143c60ba66SKatsushi Kobayashi  * 3. All advertising materials mentioning features or use of this software
153c60ba66SKatsushi Kobayashi  *    must display the acknowledgement as bellow:
163c60ba66SKatsushi Kobayashi  *
173c60ba66SKatsushi Kobayashi  *    This product includes software developed by K. Kobayashi and H. Shimokawa
183c60ba66SKatsushi Kobayashi  *
193c60ba66SKatsushi Kobayashi  * 4. The name of the author may not be used to endorse or promote products
203c60ba66SKatsushi Kobayashi  *    derived from this software without specific prior written permission.
213c60ba66SKatsushi Kobayashi  *
223c60ba66SKatsushi Kobayashi  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
233c60ba66SKatsushi Kobayashi  * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
243c60ba66SKatsushi Kobayashi  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
253c60ba66SKatsushi Kobayashi  * DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT,
263c60ba66SKatsushi Kobayashi  * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
273c60ba66SKatsushi Kobayashi  * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
283c60ba66SKatsushi Kobayashi  * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
293c60ba66SKatsushi Kobayashi  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
303c60ba66SKatsushi Kobayashi  * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
313c60ba66SKatsushi Kobayashi  * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
323c60ba66SKatsushi Kobayashi  * POSSIBILITY OF SUCH DAMAGE.
333c60ba66SKatsushi Kobayashi  *
343c60ba66SKatsushi Kobayashi  * $FreeBSD$
353c60ba66SKatsushi Kobayashi  *
363c60ba66SKatsushi Kobayashi  */
3777ee030bSHidetoshi Shimokawa 
3877ee030bSHidetoshi Shimokawa #if __FreeBSD_version >= 500000
3977ee030bSHidetoshi Shimokawa #define FWOHCI_TASKQUEUE        1
4077ee030bSHidetoshi Shimokawa #else
4177ee030bSHidetoshi Shimokawa #define FWOHCI_TASKQUEUE        0
4277ee030bSHidetoshi Shimokawa #endif
4377ee030bSHidetoshi Shimokawa #if FWOHCI_TASKQUEUE
4477ee030bSHidetoshi Shimokawa #include <sys/taskqueue.h>
4577ee030bSHidetoshi Shimokawa #endif
4677ee030bSHidetoshi Shimokawa 
473c60ba66SKatsushi Kobayashi typedef struct fwohci_softc {
483c60ba66SKatsushi Kobayashi 	struct firewire_comm fc;
493c60ba66SKatsushi Kobayashi 	bus_space_tag_t bst;
503c60ba66SKatsushi Kobayashi 	bus_space_handle_t bsh;
513c60ba66SKatsushi Kobayashi 	void *ih;
523c60ba66SKatsushi Kobayashi #if __FreeBSD_version < 500000
533c60ba66SKatsushi Kobayashi 	void *ih_cam;
543c60ba66SKatsushi Kobayashi #endif
553c60ba66SKatsushi Kobayashi 	struct resource *bsr;
563c60ba66SKatsushi Kobayashi 	struct resource *irq_res;
573c60ba66SKatsushi Kobayashi 	struct fwohci_dbch{
583c60ba66SKatsushi Kobayashi 		u_int ndb;
593c60ba66SKatsushi Kobayashi 		u_int ndesc;
603c60ba66SKatsushi Kobayashi 		STAILQ_HEAD(, fwohcidb_tr) db_trq;
613c60ba66SKatsushi Kobayashi 		struct fwohcidb_tr *top, *bottom, *pdb_tr;
623c60ba66SKatsushi Kobayashi 		struct fw_xferq xferq;
633c60ba66SKatsushi Kobayashi 		int flags;
641f2361f8SHidetoshi Shimokawa #define	FWOHCI_DBCH_INIT	(1<<0)
653c60ba66SKatsushi Kobayashi #define	FWOHCI_DBCH_FULL	(1<<1)
6677ee030bSHidetoshi Shimokawa 		/* used only in receive context */
6777ee030bSHidetoshi Shimokawa 		int buf_offset;	/* signed */
68e2ad5d6eSHidetoshi Shimokawa #define FWOHCI_DBCH_MAX_PAGES	32
6977ee030bSHidetoshi Shimokawa 		/* Context programs buffer */
7077ee030bSHidetoshi Shimokawa 		struct fwdma_alloc_multi *am;
7177ee030bSHidetoshi Shimokawa 		bus_dma_tag_t dmat;
72ac9f6692SHidetoshi Shimokawa 	} arrq, arrs, atrq, atrs, it[OHCI_DMA_ITCH], ir[OHCI_DMA_IRCH];
733c60ba66SKatsushi Kobayashi 	u_int maxrec;
7477ee030bSHidetoshi Shimokawa 	u_int32_t *sid_buf;
7577ee030bSHidetoshi Shimokawa 	struct fwdma_alloc sid_dma;
7677ee030bSHidetoshi Shimokawa 	struct fwdma_alloc crom_dma;
7777ee030bSHidetoshi Shimokawa 	struct fwdma_alloc dummy_dma;
7877ee030bSHidetoshi Shimokawa 	u_int32_t intmask, irstat, itstat;
7977ee030bSHidetoshi Shimokawa #if FWOHCI_TASKQUEUE
8077ee030bSHidetoshi Shimokawa 	u_int32_t intstat;
8177ee030bSHidetoshi Shimokawa 	struct task fwohci_task_complete;
8277ee030bSHidetoshi Shimokawa #endif
833c60ba66SKatsushi Kobayashi } fwohci_softc_t;
8477ee030bSHidetoshi Shimokawa 
853c60ba66SKatsushi Kobayashi void fwohci_intr __P((void *arg));
863c60ba66SKatsushi Kobayashi int fwohci_init __P((struct fwohci_softc *, device_t));
87d0fd7bc6SHidetoshi Shimokawa void fwohci_reset __P((struct fwohci_softc *, device_t));
881f2361f8SHidetoshi Shimokawa int fwohci_detach __P((struct fwohci_softc *, device_t));
899339321dSHidetoshi Shimokawa int fwohci_resume __P((struct fwohci_softc *, device_t));
90ba3129cbSHidetoshi Shimokawa int fwohci_stop __P((struct fwohci_softc *, device_t dev));
91