OpenCores
URL https://opencores.org/ocsvn/openrisc/openrisc/trunk

Subversion Repositories openrisc

[/] [openrisc/] [trunk/] [rtos/] [ecos-2.0/] [packages/] [hal/] [arm/] [xscale/] [iq80310/] [v2_0/] [include/] [plf_io.h] - Blame information for rev 581

Go to most recent revision | Details | Compare with Previous | View Log

Line No. Rev Author Line
1 27 unneback
#ifndef CYGONCE_PLF_IO_H
2
#define CYGONCE_PLF_IO_H
3
 
4
//=============================================================================
5
//
6
//      plf_io.h
7
//
8
//      Platform specific IO support
9
//
10
//=============================================================================
11
//####ECOSGPLCOPYRIGHTBEGIN####
12
// -------------------------------------------
13
// This file is part of eCos, the Embedded Configurable Operating System.
14
// Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003 Red Hat, Inc.
15
// Copyright (C) 2002 Gary Thomas
16
//
17
// eCos is free software; you can redistribute it and/or modify it under
18
// the terms of the GNU General Public License as published by the Free
19
// Software Foundation; either version 2 or (at your option) any later version.
20
//
21
// eCos is distributed in the hope that it will be useful, but WITHOUT ANY
22
// WARRANTY; without even the implied warranty of MERCHANTABILITY or
23
// FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
24
// for more details.
25
//
26
// You should have received a copy of the GNU General Public License along
27
// with eCos; if not, write to the Free Software Foundation, Inc.,
28
// 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
29
//
30
// As a special exception, if other files instantiate templates or use macros
31
// or inline functions from this file, or you compile this file and link it
32
// with other works to produce a work based on this file, this file does not
33
// by itself cause the resulting work to be covered by the GNU General Public
34
// License. However the source code for this file must still be made available
35
// in accordance with section (3) of the GNU General Public License.
36
//
37
// This exception does not invalidate any other reasons why a work based on
38
// this file might be covered by the GNU General Public License.
39
//
40
// Alternative licenses for eCos may be arranged by contacting Red Hat, Inc.
41
// at http://sources.redhat.com/ecos/ecos-license/
42
// -------------------------------------------
43
//####ECOSGPLCOPYRIGHTEND####
44
//=============================================================================
45
//#####DESCRIPTIONBEGIN####
46
//
47
// Author(s):    msalter
48
// Contributors: hmt, jskov, msalter
49
// Date:         2000-10-10
50
// Purpose:      Intel IOP310 PCI IO support macros
51
// Description: 
52
// Usage:        #include <cyg/hal/plf_io.h>
53
//
54
//####DESCRIPTIONEND####
55
//
56
//=============================================================================
57
 
58
// Translate the PCI interrupt requested by the device (INTA#, INTB#,
59
// INTC# or INTD#) to the associated CPU interrupt (i.e., HAL vector).
60
#define HAL_PCI_TRANSLATE_INTERRUPT( __bus, __devfn, __vec, __valid)          \
61
    CYG_MACRO_START                                                           \
62
    cyg_uint32 __dev = CYG_PCI_DEV_GET_DEV(__devfn);                          \
63
    cyg_uint32 __fn = CYG_PCI_DEV_GET_FN(__devfn);                            \
64
    __valid = false;                                                          \
65
    if (__bus == (*SBNR_REG + 1) && __dev == 0 && __fn == 0) {                  \
66
        __vec = CYGNUM_HAL_INTERRUPT_ETHERNET;                                \
67
        __valid = true;                                                       \
68
    } else {                                                                  \
69
        cyg_uint8 __req;                                                      \
70
        HAL_PCI_CFG_READ_UINT8(__bus, __devfn, CYG_PCI_CFG_INT_PIN, __req);   \
71
        switch (__dev % 4) {                                                  \
72
          case 0:                                                             \
73
            switch(__req) {                                                   \
74
              case 1: /* INTA */                                              \
75
                __vec=CYGNUM_HAL_INTERRUPT_PCI_S_INTA; __valid=true; break;   \
76
              case 2: /* INTB */                                              \
77
                __vec=CYGNUM_HAL_INTERRUPT_PCI_S_INTB; __valid=true; break;   \
78
              case 3: /* INTC */                                              \
79
                __vec=CYGNUM_HAL_INTERRUPT_PCI_S_INTC; __valid=true; break;   \
80
              case 4: /* INTD */                                              \
81
                __vec=CYGNUM_HAL_INTERRUPT_PCI_S_INTD; __valid=true; break;   \
82
            }                                                                 \
83
            break;                                                            \
84
          case 1:                                                             \
85
            switch(__req) {                                                   \
86
              case 1: /* INTA */                                              \
87
                __vec=CYGNUM_HAL_INTERRUPT_PCI_S_INTB; __valid=true; break;   \
88
              case 2: /* INTB */                                              \
89
                __vec=CYGNUM_HAL_INTERRUPT_PCI_S_INTC; __valid=true; break;   \
90
              case 3: /* INTC */                                              \
91
                __vec=CYGNUM_HAL_INTERRUPT_PCI_S_INTD; __valid=true; break;   \
92
              case 4: /* INTD */                                              \
93
                __vec=CYGNUM_HAL_INTERRUPT_PCI_S_INTA; __valid=true; break;   \
94
            }                                                                 \
95
            break;                                                            \
96
          case 2:                                                             \
97
            switch(__req) {                                                   \
98
              case 1: /* INTA */                                              \
99
                __vec=CYGNUM_HAL_INTERRUPT_PCI_S_INTC; __valid=true; break;   \
100
              case 2: /* INTB */                                              \
101
                __vec=CYGNUM_HAL_INTERRUPT_PCI_S_INTD; __valid=true; break;   \
102
              case 3: /* INTC */                                              \
103
                __vec=CYGNUM_HAL_INTERRUPT_PCI_S_INTA; __valid=true; break;   \
104
              case 4: /* INTD */                                              \
105
                __vec=CYGNUM_HAL_INTERRUPT_PCI_S_INTB; __valid=true; break;   \
106
            }                                                                 \
107
            break;                                                            \
108
          case 3:                                                             \
109
            switch(__req) {                                                   \
110
              case 1: /* INTA */                                              \
111
                __vec=CYGNUM_HAL_INTERRUPT_PCI_S_INTD; __valid=true; break;   \
112
              case 2: /* INTB */                                              \
113
                __vec=CYGNUM_HAL_INTERRUPT_PCI_S_INTA; __valid=true; break;   \
114
              case 3: /* INTC */                                              \
115
                __vec=CYGNUM_HAL_INTERRUPT_PCI_S_INTB; __valid=true; break;   \
116
              case 4: /* INTD */                                              \
117
                __vec=CYGNUM_HAL_INTERRUPT_PCI_S_INTC; __valid=true; break;   \
118
            }                                                                 \
119
            break;                                                            \
120
        }                                                                     \
121
    }                                                                         \
122
    CYG_MACRO_END
123
 
124
//-----------------------------------------------------------------------------
125
// end of plf_io.h
126
#endif // CYGONCE_PLF_IO_H

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.