1 | /********************************************************************** |
2 | * Author: Cavium, Inc. |
3 | * |
4 | * Contact: support@cavium.com |
5 | * Please include "LiquidIO" in the subject. |
6 | * |
7 | * Copyright (c) 2003-2016 Cavium, Inc. |
8 | * |
9 | * This file is free software; you can redistribute it and/or modify |
10 | * it under the terms of the GNU General Public License, Version 2, as |
11 | * published by the Free Software Foundation. |
12 | * |
13 | * This file is distributed in the hope that it will be useful, but |
14 | * AS-IS and WITHOUT ANY WARRANTY; without even the implied warranty |
15 | * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE, TITLE, or |
16 | * NONINFRINGEMENT. See the GNU General Public License for more details. |
17 | ***********************************************************************/ |
18 | /*! \file cn23xx_device.h |
19 | * \brief Host Driver: Routines that perform CN23XX specific operations. |
20 | */ |
21 | |
22 | #ifndef __CN23XX_PF_DEVICE_H__ |
23 | #define __CN23XX_PF_DEVICE_H__ |
24 | |
25 | #include "cn23xx_pf_regs.h" |
26 | |
27 | /* Register address and configuration for a CN23XX devices. |
28 | * If device specific changes need to be made then add a struct to include |
29 | * device specific fields as shown in the commented section |
30 | */ |
31 | struct octeon_cn23xx_pf { |
32 | /** PCI interrupt summary register */ |
33 | u8 __iomem *intr_sum_reg64; |
34 | |
35 | /** PCI interrupt enable register */ |
36 | u8 __iomem *intr_enb_reg64; |
37 | |
38 | /** The PCI interrupt mask used by interrupt handler */ |
39 | u64 intr_mask64; |
40 | |
41 | struct octeon_config *conf; |
42 | }; |
43 | |
44 | #define CN23XX_SLI_DEF_BP 0x40 |
45 | |
46 | struct oct_vf_stats { |
47 | u64 rx_packets; |
48 | u64 tx_packets; |
49 | u64 rx_bytes; |
50 | u64 tx_bytes; |
51 | u64 broadcast; |
52 | u64 multicast; |
53 | }; |
54 | |
55 | int setup_cn23xx_octeon_pf_device(struct octeon_device *oct); |
56 | |
57 | int validate_cn23xx_pf_config_info(struct octeon_device *oct, |
58 | struct octeon_config *conf23xx); |
59 | |
60 | u32 cn23xx_pf_get_oq_ticks(struct octeon_device *oct, u32 time_intr_in_us); |
61 | |
62 | void cn23xx_dump_pf_initialized_regs(struct octeon_device *oct); |
63 | |
64 | int cn23xx_sriov_config(struct octeon_device *oct); |
65 | |
66 | int cn23xx_fw_loaded(struct octeon_device *oct); |
67 | |
68 | void cn23xx_tell_vf_its_macaddr_changed(struct octeon_device *oct, int vfidx, |
69 | u8 *mac); |
70 | |
71 | int cn23xx_get_vf_stats(struct octeon_device *oct, int ifidx, |
72 | struct oct_vf_stats *stats); |
73 | #endif |
74 | |