source: soft/giet_vm/sys/drivers.h @ 250

Last change on this file since 250 was 249, checked in by alain, 11 years ago

Various modifications to support IO Bridge,
and MEMC configuration interface.

File size: 5.8 KB
Line 
1///////////////////////////////////////////////////////////////////////////////////
2// File     : drivers.h
3// Date     : 01/04/2012
4// Author   : alain greiner and joel porquet
5// Copyright (c) UPMC-LIP6
6///////////////////////////////////////////////////////////////////////////////////
7
8#ifndef _GIET_SYS_DRIVERS_H_
9#define _GIET_SYS_DRIVERS_H_
10
11///////////////////////////////////////////////////////////////////////////////////
12// Timer access functions (used for both vci_multi_timer and vci_xicu)
13///////////////////////////////////////////////////////////////////////////////////
14
15extern volatile unsigned char _timer_event[];
16
17unsigned int _timer_start(unsigned int cluster_id, unsigned int local_id, unsigned int period);
18unsigned int _timer_stop(unsigned int cluster_id, unsigned int local_id);
19unsigned int _timer_reset_irq(unsigned int cluster_id, unsigned int local_id);
20unsigned int _timer_reset_irq_cpt(unsigned int cluster_id, unsigned int local_id);
21
22
23///////////////////////////////////////////////////////////////////////////////////
24// TTY access functions and variables
25///////////////////////////////////////////////////////////////////////////////////
26
27extern volatile unsigned char _tty_get_buf[];
28extern volatile unsigned char _tty_get_full[];
29extern unsigned int _tty_put_lock;
30
31unsigned int _tty_write(const char * buffer, unsigned int length);
32unsigned int _tty_read(char * buffer, unsigned int length);
33unsigned int _tty_get_char(unsigned int tty_id, unsigned char * buffer); 
34
35///////////////////////////////////////////////////////////////////////////////////
36// ICU access functions (both vci_multi_icu and vci_xicu)
37///////////////////////////////////////////////////////////////////////////////////
38
39unsigned int _icu_get_index(unsigned int cluster_id, unsigned int proc_id, unsigned int * buffer);
40unsigned int _icu_set_mask(
41        unsigned int cluster_id,
42        unsigned int proc_id,
43        unsigned int mask, 
44        unsigned int is_timer);
45
46///////////////////////////////////////////////////////////////////////////////////
47// IOC access functions and variables (vci_block_device)
48///////////////////////////////////////////////////////////////////////////////////
49
50extern volatile unsigned int _ioc_status;
51extern volatile unsigned int _ioc_done;
52extern unsigned int _ioc_lock;
53extern unsigned int _ioc_iommu_ix1;
54extern unsigned int _ioc_iommu_npages; 
55
56
57unsigned int _ioc_write(unsigned int lba, const void * buffer, unsigned int count);
58unsigned int _ioc_read(unsigned int lba, void * buffer, unsigned int count);
59unsigned int _ioc_completed();
60unsigned int _ioc_get_status(unsigned int * status);
61unsigned int _ioc_get_block_size();
62
63///////////////////////////////////////////////////////////////////////////////////
64// Multi DMA variables            (vci_multi_dma)
65///////////////////////////////////////////////////////////////////////////////////
66
67extern volatile unsigned int _dma_status[];
68extern volatile unsigned int _dma_done[];
69extern unsigned int _dma_lock[];
70extern unsigned int _dma_iommu_ix1;
71extern unsigned int _dma_iommu_npages[];
72
73unsigned int _dma_reset_irq(unsigned int cluster_id, unsigned int local_id);
74unsigned int _dma_get_status(unsigned int cluster_id, unsigned int local_id, unsigned int * status);
75
76unsigned int _dma_transfer(
77        unsigned int dev_type,
78        unsigned int to_user,
79        unsigned int offset,
80        unsigned int user_vaddr,
81        unsigned int length);
82
83unsigned int _dma_completed();
84
85///////////////////////////////////////////////////////////////////////////////////
86// Frame Buffer access functions  (vci_frame_buffer)
87///////////////////////////////////////////////////////////////////////////////////
88
89unsigned int _fb_sync_write(unsigned int offset, const void * buffer, unsigned int length);
90unsigned int _fb_sync_read( unsigned int offset, const void * buffer, unsigned int length);
91unsigned int _fb_write(     unsigned int offset, const void * buffer, unsigned int length);
92unsigned int _fb_read(      unsigned int offset, const void * buffer, unsigned int length);
93
94unsigned int _fb_completed();
95
96///////////////////////////////////////////////////////////////////////////////////
97// NIC device access functions  (vci_multi_nic)
98///////////////////////////////////////////////////////////////////////////////////
99
100unsigned int _nic_sync_write(unsigned int offset, const void * buffer, unsigned int length);
101unsigned int _nic_sync_read( unsigned int offset, const void * buffer, unsigned int length);
102unsigned int _nic_write(     unsigned int offset, const void * buffer, unsigned int length);
103unsigned int _nic_read(      unsigned int offset, const void * buffer, unsigned int length);
104
105unsigned int _nic_completed();
106
107///////////////////////////////////////////////////////////////////////////////////
108// GCD access functions
109///////////////////////////////////////////////////////////////////////////////////
110
111unsigned int _gcd_write(unsigned int register_index, unsigned int   value);
112unsigned int _gcd_read( unsigned int register_index, unsigned int * buffer);
113
114///////////////////////////////////////////////////////////////////////////////////
115// MEMC access functions
116///////////////////////////////////////////////////////////////////////////////////
117
118void _memc_inval( unsigned long long buf_paddr, unsigned int buf_length);
119void _memc_sync(  unsigned long long buf_paddr, unsigned int buf_length);
120
121///////////////////////////////////////////////////////////////////////////////////
122// Heap related function(s)
123///////////////////////////////////////////////////////////////////////////////////
124
125unsigned int _heap_info(unsigned int * vaddr, unsigned int * size);
126
127
128#endif
129
130// Local Variables:
131// tab-width: 4
132// c-basic-offset: 4
133// c-file-offsets:((innamespace . 0)(inline-open . 0))
134// indent-tabs-mode: nil
135// End:
136// vim: filetype=c:expandtab:shiftwidth=4:tabstop=4:softtabstop=4
137
Note: See TracBrowser for help on using the repository browser.