upload tizen1.0 source
[kernel/linux-2.6.36.git] / drivers / scsi / bfa / include / cna / cee / bfa_cee.h
1 /*
2  * Copyright (c) 2005-2009 Brocade Communications Systems, Inc.
3  * All rights reserved
4  * www.brocade.com
5  *
6  * Linux driver for Brocade Fibre Channel Host Bus Adapter.
7  *
8  * This program is free software; you can redistribute it and/or modify it
9  * under the terms of the GNU General Public License (GPL) Version 2 as
10  * published by the Free Software Foundation
11  *
12  * This program is distributed in the hope that it will be useful, but
13  * WITHOUT ANY WARRANTY; without even the implied warranty of
14  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
15  * General Public License for more details.
16  */
17
18 #ifndef __BFA_CEE_H__
19 #define __BFA_CEE_H__
20
21 #include <defs/bfa_defs_cee.h>
22 #include <bfa_ioc.h>
23 #include <cs/bfa_trc.h>
24 #include <cs/bfa_log.h>
25
26 typedef void (*bfa_cee_get_attr_cbfn_t) (void *dev, bfa_status_t status);
27 typedef void (*bfa_cee_get_stats_cbfn_t) (void *dev, bfa_status_t status);
28 typedef void (*bfa_cee_reset_stats_cbfn_t) (void *dev, bfa_status_t status);
29 typedef void (*bfa_cee_hbfail_cbfn_t) (void *dev, bfa_status_t status);
30
31 struct bfa_cee_cbfn_s {
32         bfa_cee_get_attr_cbfn_t    get_attr_cbfn;
33         void *get_attr_cbarg;
34         bfa_cee_get_stats_cbfn_t   get_stats_cbfn;
35         void *get_stats_cbarg;
36         bfa_cee_reset_stats_cbfn_t reset_stats_cbfn;
37         void *reset_stats_cbarg;
38 };
39
40 struct bfa_cee_s {
41         void *dev;
42         bfa_boolean_t get_attr_pending;
43         bfa_boolean_t get_stats_pending;
44         bfa_boolean_t reset_stats_pending;
45         bfa_status_t get_attr_status;
46         bfa_status_t get_stats_status;
47         bfa_status_t reset_stats_status;
48         struct bfa_cee_cbfn_s cbfn;
49         struct bfa_ioc_hbfail_notify_s hbfail;
50         struct bfa_trc_mod_s *trcmod;
51         struct bfa_log_mod_s *logmod;
52         struct bfa_cee_attr_s *attr;
53         struct bfa_cee_stats_s *stats;
54         struct bfa_dma_s attr_dma;
55         struct bfa_dma_s stats_dma;
56         struct bfa_ioc_s *ioc;
57         struct bfa_mbox_cmd_s get_cfg_mb;
58         struct bfa_mbox_cmd_s get_stats_mb;
59         struct bfa_mbox_cmd_s reset_stats_mb;
60 };
61
62 u32 bfa_cee_meminfo(void);
63 void bfa_cee_mem_claim(struct bfa_cee_s *cee, u8 *dma_kva,
64                          u64 dma_pa);
65 void bfa_cee_attach(struct bfa_cee_s *cee, struct bfa_ioc_s *ioc, void *dev,
66                         struct bfa_trc_mod_s *trcmod,
67                         struct bfa_log_mod_s *logmod);
68 void bfa_cee_detach(struct bfa_cee_s *cee);
69 bfa_status_t bfa_cee_get_attr(struct bfa_cee_s *cee,
70                          struct bfa_cee_attr_s *attr,
71                         bfa_cee_get_attr_cbfn_t cbfn, void *cbarg);
72 bfa_status_t bfa_cee_get_stats(struct bfa_cee_s *cee,
73                         struct bfa_cee_stats_s *stats,
74                         bfa_cee_get_stats_cbfn_t cbfn, void *cbarg);
75 bfa_status_t bfa_cee_reset_stats(struct bfa_cee_s *cee,
76                         bfa_cee_reset_stats_cbfn_t cbfn, void *cbarg);
77 #endif /* __BFA_CEE_H__ */