source: rtems/bsps/include/grlib/grspw.h @ 828276b

5
Last change on this file since 828276b was 828276b, checked in by Sebastian Huber <sebastian.huber@…>, on 03/05/19 at 06:58:18

bsps: Adjust shared Doxygen groups

Update #3706.

  • Property mode set to 100644
File size: 5.4 KB
Line 
1/**
2 * @file
3 * @ingroup spw
4 */
5
6/*
7 *  COPYRIGHT (c) 2007.
8 *  Cobham Gaisler AB.
9 *
10 *  The license and distribution terms for this file may be
11 *  found in the file LICENSE in this distribution or at
12 *  http://www.rtems.org/license/LICENSE.
13 */
14
15#ifndef __GRSPW_H__
16#define __GRSPW_H__
17
18/**
19 * @defgroup spw SpaceWire
20 *
21 * @ingroup RTEMSBSPsSharedGRLIB
22 *
23 * @brief GRSPW Device Driver
24 *
25 * @{
26 */
27
28#include <grlib/ambapp.h>
29
30#ifdef __cplusplus
31extern "C" {
32#endif
33
34#define SPW_LINKERR_EVENT RTEMS_EVENT_0
35
36typedef struct {
37   unsigned int rxsize;
38   unsigned int txdsize;
39   unsigned int txhsize;
40} spw_ioctl_packetsize;
41
42#define GRSPW_PKTSEND_OPTION_HDR_CRC  0x1
43#define GRSPW_PKTSEND_OPTION_DATA_CRC 0x2
44#define GRSPW_PKTSEND_OPTION_NOCRCLEN(len) ((len & 0xf) << 8)
45#define GRSPW_PKTSEND_OPTION_NOCRCLEN_MASK 0xf00
46
47typedef struct {
48   unsigned int hlen;
49   char *hdr;
50   unsigned int dlen;
51   char *data;
52   unsigned int sent;
53         unsigned int options;
54} spw_ioctl_pkt_send;
55
56typedef struct {
57   unsigned int tx_link_err;
58   unsigned int rx_rmap_header_crc_err;
59   unsigned int rx_rmap_data_crc_err;
60   unsigned int rx_eep_err;
61   unsigned int rx_truncated;
62   unsigned int parity_err;
63   unsigned int escape_err;
64   unsigned int credit_err;
65   unsigned int write_sync_err;
66   unsigned int disconnect_err;
67   unsigned int early_ep;
68   unsigned int invalid_address;
69   unsigned int packets_sent;
70   unsigned int packets_received;
71} spw_stats;
72
73typedef struct {
74   unsigned int nodeaddr;
75   unsigned int destkey;
76   unsigned int clkdiv; /* Note: contain both CLKDIVSTART and CLKDIVRUN, but IOCTL_SET_CLKDIV* commands are split into two */
77   unsigned int rxmaxlen;
78   unsigned int timer;
79   unsigned int disconnect;
80   unsigned int promiscuous;
81   unsigned int rmapen;
82   unsigned int rmapbufdis;
83   unsigned int linkdisabled;
84   unsigned int linkstart;
85
86   unsigned int check_rmap_err; /* check incoming packets for rmap errors */
87   unsigned int rm_prot_id; /* remove protocol id from incoming packets */
88   unsigned int tx_blocking; /* use blocking tx */
89   unsigned int tx_block_on_full; /* block when all tx_buffers are used */
90   unsigned int rx_blocking; /* block when no data is available */
91   unsigned int disable_err; /* disable link automatically when link error is detected */
92   unsigned int link_err_irq; /* generate an interrupt when link error occurs */
93   rtems_id event_id; /* task id that should receive link err irq event */
94
95   unsigned int is_rmap;
96   unsigned int is_rxunaligned;
97   unsigned int is_rmapcrc;
98
99   unsigned int nodemask;
100         unsigned int keep_source; /* copy source address to user-buffer in read() operations
101                              * Note that rm_prot_id has no effect when keep_source is
102                              * set.
103                              */
104         unsigned int rtimeout; /* Read timeout if != 0 */
105} spw_config;
106
107#define SPACEWIRE_IOCTRL_SET_NODEADDR        1
108#define SPACEWIRE_IOCTRL_SET_RXBLOCK         2
109#define SPACEWIRE_IOCTRL_SET_DESTKEY         4
110#define SPACEWIRE_IOCTRL_SET_CLKDIV          5
111#define SPACEWIRE_IOCTRL_SET_TIMER           6
112#define SPACEWIRE_IOCTRL_SET_DISCONNECT      7
113#define SPACEWIRE_IOCTRL_SET_PROMISCUOUS     8
114#define SPACEWIRE_IOCTRL_SET_RMAPEN          9
115#define SPACEWIRE_IOCTRL_SET_RMAPBUFDIS      10
116#define SPACEWIRE_IOCTRL_SET_CHECK_RMAP      11
117#define SPACEWIRE_IOCTRL_SET_RM_PROT_ID      12
118#define SPACEWIRE_IOCTRL_SET_TXBLOCK         14
119#define SPACEWIRE_IOCTRL_SET_DISABLE_ERR     15
120#define SPACEWIRE_IOCTRL_SET_LINK_ERR_IRQ    16
121#define SPACEWIRE_IOCTRL_SET_EVENT_ID        17
122#define SPACEWIRE_IOCTRL_SET_PACKETSIZE      20
123#define SPACEWIRE_IOCTRL_GET_LINK_STATUS     23
124#define SPACEWIRE_IOCTRL_GET_CONFIG          25
125#define SPACEWIRE_IOCTRL_GET_STATISTICS      26
126#define SPACEWIRE_IOCTRL_CLR_STATISTICS      27
127#define SPACEWIRE_IOCTRL_SEND                28
128#define SPACEWIRE_IOCTRL_LINKDISABLE         29
129#define SPACEWIRE_IOCTRL_LINKSTART           30
130#define SPACEWIRE_IOCTRL_SET_TXBLOCK_ON_FULL 31
131#define SPACEWIRE_IOCTRL_SET_COREFREQ        32
132#define SPACEWIRE_IOCTRL_SET_CLKDIVSTART     33
133#define SPACEWIRE_IOCTRL_SET_NODEMASK        34
134#define SPACEWIRE_IOCTRL_SET_KEEP_SOURCE     35
135#define SPACEWIRE_IOCTRL_SET_TCODE_CTRL      36
136#define SPACEWIRE_IOCTRL_SET_TCODE           37
137#define SPACEWIRE_IOCTRL_GET_TCODE           38
138#define SPACEWIRE_IOCTRL_SET_READ_TIMEOUT    39
139
140#define SPACEWIRE_IOCTRL_START               64
141#define SPACEWIRE_IOCTRL_STOP                65
142
143/* Defines what register bits that will be touched
144 * for SPACEWIRE_IOCTRL_SET_TCODE_CTRL
145 */
146#define SPACEWIRE_TCODE_CTRL_IE_MSK          0x001
147#define SPACEWIRE_TCODE_CTRL_TT_MSK          0x004
148#define SPACEWIRE_TCODE_CTRL_TR_MSK          0x008
149
150/* Defines what register bits that should be set
151 * for SPACEWIRE_IOCTRL_SET_TCODE_CTRL
152 */
153#define SPACEWIRE_TCODE_CTRL_IE              0x100
154#define SPACEWIRE_TCODE_CTRL_TT              0x400
155#define SPACEWIRE_TCODE_CTRL_TR              0x800
156
157/* SPACEWIRE_IOCTRL_SET_TCODE argument mask */
158#define SPACEWIRE_TCODE_TCODE                0x0ff
159#define SPACEWIRE_TCODE_SET                  0x100 /* Set Timecode register */
160#define SPACEWIRE_TCODE_TX                   0x400
161
162void grspw_register_drv (void);
163
164void grspw_print(int options);
165
166/* Global GRSPW Function pointer called upon timecode receive interrupt */
167extern void (*grspw_timecode_callback)
168    (void *pDev, void *regs, int minor, unsigned int tc);
169
170
171#ifdef __cplusplus
172}
173#endif
174
175/** @} */
176
177#endif /* __GRSPW_H__ */
Note: See TracBrowser for help on using the repository browser.