Pull sn-features into release branch
[sfrench/cifs-2.6.git] / include / asm-ia64 / sn / tioce_provider.h
1 /**************************************************************************
2  *             Copyright (C) 2005, Silicon Graphics, Inc.                 *
3  *                                                                        *
4  *  These coded instructions, statements, and computer programs  contain  *
5  *  unpublished  proprietary  information of Silicon Graphics, Inc., and  *
6  *  are protected by Federal copyright law.  They  may  not be disclosed  *
7  *  to  third  parties  or copied or duplicated in any form, in whole or  *
8  *  in part, without the prior written consent of Silicon Graphics, Inc.  *
9  *                                                                        *
10  **************************************************************************/
11
12 #ifndef _ASM_IA64_SN_CE_PROVIDER_H
13 #define _ASM_IA64_SN_CE_PROVIDER_H
14
15 #include <asm/sn/pcibus_provider_defs.h>
16 #include <asm/sn/tioce.h>
17
18 /*
19  * Common TIOCE structure shared between the prom and kernel
20  *
21  * DO NOT CHANGE THIS STRUCT WITHOUT MAKING CORRESPONDING CHANGES TO THE
22  * PROM VERSION.
23  */
24 struct tioce_common {
25         struct pcibus_bussoft   ce_pcibus;      /* common pciio header */
26
27         uint32_t                ce_rev;
28         uint64_t                ce_kernel_private;
29         uint64_t                ce_prom_private;
30 };
31
32 struct tioce_kernel {
33         struct tioce_common     *ce_common;
34         spinlock_t              ce_lock;
35         struct list_head        ce_dmamap_list;
36
37         uint64_t                ce_ate40_shadow[TIOCE_NUM_M40_ATES];
38         uint64_t                ce_ate3240_shadow[TIOCE_NUM_M3240_ATES];
39         uint32_t                ce_ate3240_pagesize;
40
41         uint8_t                 ce_port1_secondary;
42
43         /* per-port resources */
44         struct {
45                 int             dirmap_refcnt;
46                 uint64_t        dirmap_shadow;
47         } ce_port[TIOCE_NUM_PORTS];
48 };
49
50 struct tioce_dmamap {
51         struct list_head        ce_dmamap_list; /* headed by tioce_kernel */
52         uint32_t                refcnt;
53
54         uint64_t                nbytes;         /* # bytes mapped */
55
56         uint64_t                ct_start;       /* coretalk start address */
57         uint64_t                pci_start;      /* bus start address */
58
59         uint64_t                *ate_hw;        /* hw ptr of first ate in map */
60         uint64_t                *ate_shadow;    /* shadow ptr of firat ate */
61         uint16_t                ate_count;      /* # ate's in the map */
62 };
63
64 extern int tioce_init_provider(void);
65
66 #endif  /* __ASM_IA64_SN_CE_PROVIDER_H */