PageRenderTime 32ms CodeModel.GetById 24ms app.highlight 6ms RepoModel.GetById 1ms app.codeStats 0ms

/drivers/scsi/bfa/bfa_port.h

https://bitbucket.org/cyanogenmod/android_kernel_asus_tf300t
C Header | 123 lines | 91 code | 13 blank | 19 comment | 0 complexity | a1e42401991ecf47cf0c7985f58a4511 MD5 | raw file
Possible License(s): LGPL-2.0, AGPL-1.0, GPL-2.0
  1/*
  2 * Copyright (c) 2005-2010 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_PORT_H__
 19#define __BFA_PORT_H__
 20
 21#include "bfa_defs_svc.h"
 22#include "bfa_ioc.h"
 23#include "bfa_cs.h"
 24
 25typedef void (*bfa_port_stats_cbfn_t) (void *dev, bfa_status_t status);
 26typedef void (*bfa_port_endis_cbfn_t) (void *dev, bfa_status_t status);
 27
 28struct bfa_port_s {
 29	void				*dev;
 30	struct bfa_ioc_s		*ioc;
 31	struct bfa_trc_mod_s		*trcmod;
 32	u32			msgtag;
 33	bfa_boolean_t			stats_busy;
 34	struct bfa_mbox_cmd_s		stats_mb;
 35	bfa_port_stats_cbfn_t		stats_cbfn;
 36	void				*stats_cbarg;
 37	bfa_status_t			stats_status;
 38	u32			stats_reset_time;
 39	union bfa_port_stats_u		*stats;
 40	struct bfa_dma_s		stats_dma;
 41	bfa_boolean_t			endis_pending;
 42	struct bfa_mbox_cmd_s		endis_mb;
 43	bfa_port_endis_cbfn_t		endis_cbfn;
 44	void				*endis_cbarg;
 45	bfa_status_t			endis_status;
 46	struct bfa_ioc_notify_s		ioc_notify;
 47	bfa_boolean_t			pbc_disabled;
 48	struct bfa_mem_dma_s		port_dma;
 49};
 50
 51#define BFA_MEM_PORT_DMA(__bfa)		(&((__bfa)->modules.port.port_dma))
 52
 53void	     bfa_port_attach(struct bfa_port_s *port, struct bfa_ioc_s *ioc,
 54				void *dev, struct bfa_trc_mod_s *trcmod);
 55void	bfa_port_notify(void *arg, enum bfa_ioc_event_e event);
 56
 57bfa_status_t bfa_port_get_stats(struct bfa_port_s *port,
 58				 union bfa_port_stats_u *stats,
 59				 bfa_port_stats_cbfn_t cbfn, void *cbarg);
 60bfa_status_t bfa_port_clear_stats(struct bfa_port_s *port,
 61				   bfa_port_stats_cbfn_t cbfn, void *cbarg);
 62bfa_status_t bfa_port_enable(struct bfa_port_s *port,
 63			      bfa_port_endis_cbfn_t cbfn, void *cbarg);
 64bfa_status_t bfa_port_disable(struct bfa_port_s *port,
 65			       bfa_port_endis_cbfn_t cbfn, void *cbarg);
 66u32     bfa_port_meminfo(void);
 67void	     bfa_port_mem_claim(struct bfa_port_s *port,
 68				 u8 *dma_kva, u64 dma_pa);
 69
 70/*
 71 * CEE declaration
 72 */
 73typedef void (*bfa_cee_get_attr_cbfn_t) (void *dev, bfa_status_t status);
 74typedef void (*bfa_cee_get_stats_cbfn_t) (void *dev, bfa_status_t status);
 75typedef void (*bfa_cee_reset_stats_cbfn_t) (void *dev, bfa_status_t status);
 76
 77struct bfa_cee_cbfn_s {
 78	bfa_cee_get_attr_cbfn_t		get_attr_cbfn;
 79	void				*get_attr_cbarg;
 80	bfa_cee_get_stats_cbfn_t	get_stats_cbfn;
 81	void				*get_stats_cbarg;
 82	bfa_cee_reset_stats_cbfn_t	reset_stats_cbfn;
 83	void				*reset_stats_cbarg;
 84};
 85
 86struct bfa_cee_s {
 87	void *dev;
 88	bfa_boolean_t		get_attr_pending;
 89	bfa_boolean_t		get_stats_pending;
 90	bfa_boolean_t		reset_stats_pending;
 91	bfa_status_t		get_attr_status;
 92	bfa_status_t		get_stats_status;
 93	bfa_status_t		reset_stats_status;
 94	struct bfa_cee_cbfn_s	cbfn;
 95	struct bfa_ioc_notify_s	ioc_notify;
 96	struct bfa_trc_mod_s	*trcmod;
 97	struct bfa_cee_attr_s	*attr;
 98	struct bfa_cee_stats_s	*stats;
 99	struct bfa_dma_s	attr_dma;
100	struct bfa_dma_s	stats_dma;
101	struct bfa_ioc_s	*ioc;
102	struct bfa_mbox_cmd_s	get_cfg_mb;
103	struct bfa_mbox_cmd_s	get_stats_mb;
104	struct bfa_mbox_cmd_s	reset_stats_mb;
105	struct bfa_mem_dma_s	cee_dma;
106};
107
108#define BFA_MEM_CEE_DMA(__bfa)	(&((__bfa)->modules.cee.cee_dma))
109
110u32	bfa_cee_meminfo(void);
111void	bfa_cee_mem_claim(struct bfa_cee_s *cee, u8 *dma_kva, u64 dma_pa);
112void	bfa_cee_attach(struct bfa_cee_s *cee,
113			struct bfa_ioc_s *ioc, void *dev);
114bfa_status_t	bfa_cee_get_attr(struct bfa_cee_s *cee,
115				struct bfa_cee_attr_s *attr,
116				bfa_cee_get_attr_cbfn_t cbfn, void *cbarg);
117bfa_status_t	bfa_cee_get_stats(struct bfa_cee_s *cee,
118				struct bfa_cee_stats_s *stats,
119				bfa_cee_get_stats_cbfn_t cbfn, void *cbarg);
120bfa_status_t	bfa_cee_reset_stats(struct bfa_cee_s *cee,
121				bfa_cee_reset_stats_cbfn_t cbfn, void *cbarg);
122
123#endif	/* __BFA_PORT_H__ */