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

Subversion Repositories openrisc

[/] [openrisc/] [trunk/] [rtos/] [ecos-2.0/] [packages/] [hal/] [mips/] [idt79s334a/] [v2_0/] [include/] [plf_io.h] - Blame information for rev 638

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 Red Hat, Inc.
15
//
16
// eCos is free software; you can redistribute it and/or modify it under
17
// the terms of the GNU General Public License as published by the Free
18
// Software Foundation; either version 2 or (at your option) any later version.
19
//
20
// eCos is distributed in the hope that it will be useful, but WITHOUT ANY
21
// WARRANTY; without even the implied warranty of MERCHANTABILITY or
22
// FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
23
// for more details.
24
//
25
// You should have received a copy of the GNU General Public License along
26
// with eCos; if not, write to the Free Software Foundation, Inc.,
27
// 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
28
//
29
// As a special exception, if other files instantiate templates or use macros
30
// or inline functions from this file, or you compile this file and link it
31
// with other works to produce a work based on this file, this file does not
32
// by itself cause the resulting work to be covered by the GNU General Public
33
// License. However the source code for this file must still be made available
34
// in accordance with section (3) of the GNU General Public License.
35
//
36
// This exception does not invalidate any other reasons why a work based on
37
// this file might be covered by the GNU General Public License.
38
//
39
// Alternative licenses for eCos may be arranged by contacting Red Hat, Inc.
40
// at http://sources.redhat.com/ecos/ecos-license/
41
// -------------------------------------------
42
//####ECOSGPLCOPYRIGHTEND####
43
//=============================================================================
44
//#####DESCRIPTIONBEGIN####
45
//
46
// Author(s):    tmichals
47
// Contributors: hmt, jskov, nickg
48
// Date:         2003-02-13
49
// Purpose:      IDT79s334a platform IO support
50
// Description: 
51
// Usage:        #include <cyg/hal/plf_io.h>
52
//
53
//####DESCRIPTIONEND####
54
//
55
//=============================================================================
56
#include <pkgconf/hal.h>
57
#include <cyg/hal/hal_misc.h>
58
#include <cyg/hal/hal_arch.h>
59
#include <cyg/hal/plf_intr.h>
60
 
61
//-----------------------------------------------------------------------------
62
 
63
__externC void cyg_plf_pci_init(void);
64
 
65
// Initialization of the PCI bus.
66
#define HAL_PCI_INIT() hal_rc334PciInit()
67
 
68
 
69
// Map PCI device resources starting from these addresses in PCI space.
70
#define HAL_PCI_ALLOC_BASE_MEMORY 0x00100000
71
#define HAL_PCI_ALLOC_BASE_IO     0x18800000
72
 
73
// This is where the PCI spaces are mapped in the CPU's address space.
74
#define HAL_PCI_PHYSICAL_MEMORY_BASE   0xA0000000
75
#define HAL_PCI_PHYSICAL_IO_BASE       0xA0000000
76
 
77
 
78
 
79
#define PCI_MEM_BASE            0x40000000   // 512M to xxx
80
#define PCI_IO_BASE             0x18000000   // 16M to xxx
81
#define PCI_CONFIG_BASE         0x60000000   // 16M to xxx
82
 
83
 
84
 
85
// Read a value from the PCI configuration space of the appropriate
86
// size at an address composed from the bus, devfn and offset.
87
#define HAL_PCI_CFG_READ_UINT8( __bus, __devfn, __offset, __val )  \
88
                 __val = ecosPciConfigInByte(__bus, __devfn, __offset)
89
 
90
 
91
 
92
#define HAL_PCI_CFG_READ_UINT16( __bus, __devfn, __offset, __val ) \
93
        __val = ecosPciConfigInHalfWord(__bus, __devfn, __offset)
94
 
95
#define HAL_PCI_CFG_READ_UINT32( __bus, __devfn, __offset, __val ) \
96
           __val = ecosPciConfigInWord(__bus, __devfn, __offset)
97
 
98
// Write a value to the PCI configuration space of the appropriate
99
// size at an address composed from the bus, devfn and offset.
100
#define HAL_PCI_CFG_WRITE_UINT8( __bus, __devfn, __offset, __val )  \
101
         __val =ecosPciConfigOutChar(__bus, __devfn, __offset)
102
 
103
#define HAL_PCI_CFG_WRITE_UINT16( __bus, __devfn, __offset, __val ) \
104
           ecosPciConfigOutHalfWord(__bus, __devfn, __offset, __val)
105
 
106
#define HAL_PCI_CFG_WRITE_UINT32( __bus, __devfn, __offset, __val ) \
107
           ecosPciConfigOutWord(__bus, __devfn, __offset, __val)
108
 
109
 
110
 
111
// Translate the PCI interrupt requested by the device (INTA#, INTB#,
112
// INTC# ) to the associated CPU interrupt (i.e., HAL vector).
113
#define HAL_PCI_TRANSLATE_INTERRUPT( __bus, __devfn, __vec, __valid) \
114
    CYG_MACRO_START                                                           \
115
    cyg_uint8 __req;                                                          \
116
    HAL_PCI_CFG_READ_UINT8(__bus, __devfn, CYG_PCI_CFG_INT_PIN, __req);       \
117
    if (0 != __req) {                                                         \
118
        /* Slot D is not used, assigned the RTC to INT 5 Sorry!              */\
119
        CYG_ADDRWORD __translation[4] = {                                     \
120
 
121
            CYGNUM_HAL_PCI_A ,  /* INTB# */                              \
122
            CYGNUM_HAL_PCI_B ,  /* INTA# */                              \
123
            CYGNUM_HAL_PCI_C ,  /* INTA# */                              \
124
            }; /* D is NOT used */                                            \
125
                                                                              \
126
        __vec = __translation[((__req+CYG_PCI_DEV_GET_DEV(__devfn))&3)];      \
127
        __valid = true;                                                       \
128
    } else {                                                                  \
129
        /* Device will not generate interrupt requests. */                    \
130
        __valid = false;                                                      \
131
    }                                                                         \
132
    CYG_MACRO_END
133
 
134
 
135
// end of plf_io.h
136
#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.