Merge tag 'trace-tools-v6.9' of git://git.kernel.org/pub/scm/linux/kernel/git/trace...
[linux-2.6-microblaze.git] / drivers / net / ethernet / qualcomm / qca_spi.h
1 /* SPDX-License-Identifier: GPL-2.0 OR BSD-2-Clause */
2 /*
3  *   Copyright (c) 2011, 2012, Qualcomm Atheros Communications Inc.
4  *   Copyright (c) 2014, I2SE GmbH
5  */
6
7 /*   Qualcomm Atheros SPI register definition.
8  *
9  *   This module is designed to define the Qualcomm Atheros SPI register
10  *   placeholders;
11  */
12
13 #ifndef _QCA_SPI_H
14 #define _QCA_SPI_H
15
16 #include <linux/netdevice.h>
17 #include <linux/sched.h>
18 #include <linux/skbuff.h>
19 #include <linux/spi/spi.h>
20 #include <linux/types.h>
21
22 #include "qca_7k_common.h"
23
24 #define QCASPI_DRV_VERSION "0.2.7-i"
25 #define QCASPI_DRV_NAME    "qcaspi"
26
27 #define QCASPI_GOOD_SIGNATURE 0xAA55
28
29 #define QCASPI_TX_RING_MAX_LEN 10
30 #define QCASPI_TX_RING_MIN_LEN 2
31 #define QCASPI_RX_MAX_FRAMES 4
32
33 /* sync related constants */
34 #define QCASPI_SYNC_UNKNOWN 0
35 #define QCASPI_SYNC_RESET   1
36 #define QCASPI_SYNC_READY   2
37
38 #define QCASPI_RESET_TIMEOUT 10
39
40 /* sync events */
41 #define QCASPI_EVENT_UPDATE 0
42 #define QCASPI_EVENT_CPUON  1
43
44 struct tx_ring {
45         struct sk_buff *skb[QCASPI_TX_RING_MAX_LEN];
46         u16 head;
47         u16 tail;
48         u16 size;
49         u16 count;
50 };
51
52 struct qcaspi_stats {
53         u64 trig_reset;
54         u64 device_reset;
55         u64 reset_timeout;
56         u64 read_err;
57         u64 write_err;
58         u64 read_buf_err;
59         u64 write_buf_err;
60         u64 out_of_mem;
61         u64 write_buf_miss;
62         u64 ring_full;
63         u64 spi_err;
64         u64 write_verify_failed;
65         u64 buf_avail_err;
66         u64 bad_signature;
67 };
68
69 struct qcaspi {
70         struct net_device *net_dev;
71         struct spi_device *spi_dev;
72         struct task_struct *spi_thread;
73
74         struct tx_ring txr;
75         struct qcaspi_stats stats;
76
77         u8 *rx_buffer;
78         u32 buffer_size;
79         u8 sync;
80
81         struct qcafrm_handle frm_handle;
82         struct sk_buff *rx_skb;
83
84         unsigned int intr_req;
85         unsigned int intr_svc;
86         u16 reset_count;
87
88 #ifdef CONFIG_DEBUG_FS
89         struct dentry *device_root;
90 #endif
91
92         /* user configurable options */
93         u32 clkspeed;
94         u8 legacy_mode;
95         u16 burst_len;
96 };
97
98 #endif /* _QCA_SPI_H */