source: branch/giet_vm_ioc_drivers/giet_drivers/xcu_driver.h @ 284

Last change on this file since 284 was 281, checked in by cfuguet, 11 years ago

Modifications in GIET_VM:

  • Supporting platforms with more than one IRQ per processor from the XICU.

When this is the case, the IRQ per processor can be signalled
by the XCU peripheric number of channels on the XML file.

The xml_parser will generate a constant on the hard_config.h
file, called IRQ_PER_PROCESSOR and this constant will be use
by the GIET_VM to create accordingly the irq masks on the
ICU

File size: 2.7 KB
Line 
1///////////////////////////////////////////////////////////////////////////////////
2// File     : xcu_driver.h
3// Date     : 01/11/2013
4// Author   : alain greiner
5// Copyright (c) UPMC-LIP6
6///////////////////////////////////////////////////////////////////////////////////
7
8#ifndef _GIET_XCU_DRIVER_H_
9#define _GIET_XCU_DRIVER_H_
10
11///////////////////////////////////////////////////////////////////////////////////
12// XICU registers offsets
13///////////////////////////////////////////////////////////////////////////////////
14
15enum Xicu_registers
16{
17    XICU_WTI_REG = 0,
18    XICU_PTI_PER = 1,
19    XICU_PTI_VAL = 2,
20    XICU_PTI_ACK = 3,
21
22    XICU_MSK_PTI = 4,
23    XICU_MSK_PTI_ENABLE = 5,
24    XICU_MSK_PTI_DISABLE = 6,
25    XICU_PTI_ACTIVE = 6,
26
27    XICU_MSK_HWI = 8,
28    XICU_MSK_HWI_ENABLE = 9,
29    XICU_MSK_HWI_DISABLE = 10,
30    XICU_HWI_ACTIVE = 10,
31
32    XICU_MSK_WTI = 12,
33    XICU_MSK_WTI_ENABLE = 13,
34    XICU_MSK_WTI_DISABLE = 14,
35    XICU_WTI_ACTIVE = 14,
36
37    XICU_PRIO = 15,
38};
39
40#define XICU_REG(func, index) (((func)<<5)|(index))
41 
42///////////////////////////////////////////////////////////////////////////////////
43// XICU access functions
44///////////////////////////////////////////////////////////////////////////////////
45
46extern unsigned int _xcu_get_index( unsigned int cluster_xy, 
47                                    unsigned int irq_index, 
48                                    unsigned int * buffer );
49
50extern unsigned int _xcu_set_mask( unsigned int cluster_xy,
51                                   unsigned int irq_index,
52                                   unsigned int mask, 
53                                   unsigned int is_timer );
54
55extern unsigned int _xcu_send_ipi( unsigned int cluster_xy,
56                                   unsigned int wti_index,
57                                   unsigned int wdata );
58
59extern unsigned int _xcu_timer_start( unsigned int cluster_xy, 
60                                      unsigned int pti_index,
61                                      unsigned int period ); 
62
63extern unsigned int _xcu_timer_stop( unsigned int cluster_xy, 
64                                     unsigned int pti_index ); 
65
66extern unsigned int _xcu_timer_reset_irq( unsigned int cluster_xy, 
67                                          unsigned int pti_index );
68
69extern unsigned int _xcu_timer_reset_cpt( unsigned int cluster_xy, 
70                                          unsigned int pti_index ); 
71
72///////////////////////////////////////////////////////////////////////////////////
73
74#endif
75
76// Local Variables:
77// tab-width: 4
78// c-basic-offset: 4
79// c-file-offsets:((innamespace . 0)(inline-open . 0))
80// indent-tabs-mode: nil
81// End:
82// vim: filetype=c:expandtab:shiftwidth=4:tabstop=4:softtabstop=4
83
Note: See TracBrowser for help on using the repository browser.