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

Subversion Repositories openrisc

[/] [openrisc/] [trunk/] [rtos/] [ecos-2.0/] [packages/] [hal/] [h8300/] [aki3068net/] [v2_0/] [src/] [plf_misc.c] - Blame information for rev 587

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

Line No. Rev Author Line
1 27 unneback
//==========================================================================
2
//
3
//      plf_misc.c
4
//
5
//      HAL platform miscellaneous functions
6
//
7
//==========================================================================
8
//####ECOSGPLCOPYRIGHTBEGIN####
9
// -------------------------------------------
10
// This file is part of eCos, the Embedded Configurable Operating System.
11
// Copyright (C) 1998, 1999, 2000, 2001, 2002 Red Hat, Inc.
12
//
13
// eCos is free software; you can redistribute it and/or modify it under
14
// the terms of the GNU General Public License as published by the Free
15
// Software Foundation; either version 2 or (at your option) any later version.
16
//
17
// eCos is distributed in the hope that it will be useful, but WITHOUT ANY
18
// WARRANTY; without even the implied warranty of MERCHANTABILITY or
19
// FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
20
// for more details.
21
//
22
// You should have received a copy of the GNU General Public License along
23
// with eCos; if not, write to the Free Software Foundation, Inc.,
24
// 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
25
//
26
// As a special exception, if other files instantiate templates or use macros
27
// or inline functions from this file, or you compile this file and link it
28
// with other works to produce a work based on this file, this file does not
29
// by itself cause the resulting work to be covered by the GNU General Public
30
// License. However the source code for this file must still be made available
31
// in accordance with section (3) of the GNU General Public License.
32
//
33
// This exception does not invalidate any other reasons why a work based on
34
// this file might be covered by the GNU General Public License.
35
//
36
// Alternative licenses for eCos may be arranged by contacting Red Hat, Inc.
37
// at http://sources.redhat.com/ecos/ecos-license/
38
// -------------------------------------------
39
//####ECOSGPLCOPYRIGHTEND####
40
//==========================================================================
41
//#####DESCRIPTIONBEGIN####
42
//
43
// Author(s):    nickg
44
// Contributors: nickg, jlarmour
45
// Date:         1999-09-09
46
// Purpose:      HAL miscellaneous functions
47
// Description:  This file contains miscellaneous functions provided by the
48
//               HAL.
49
//
50
//####DESCRIPTIONEND####
51
//
52
//========================================================================*/
53
 
54
#include <pkgconf/hal.h>
55
 
56
#include <cyg/infra/cyg_type.h>         // Base types
57
 
58
#include <cyg/hal/hal_arch.h>           // architectural definitions
59
#include <cyg/hal/hal_io.h>
60
#include <cyg/hal/hal_if.h>
61
#include <cyg/hal/plf_intr.h>
62
#include <cyg/hal/var_arch.h>
63
 
64
/*------------------------------------------------------------------------*/
65
 
66
void hal_platform_init(void)
67
{
68
    hal_if_init();
69
}
70
 
71
void h8300h_reset(void)
72
{
73
    __asm__ ("ldc #0x80,ccr\n"
74
             "jmp @@0\n\t");
75
}
76
 
77
/*------------------------------------------------------------------------*/
78
/* Control C ISR support                                                  */
79
 
80
#if defined(CYGDBG_HAL_DEBUG_GDB_CTRLC_SUPPORT)
81
 
82
struct Hal_SavedRegisters *hal_saved_interrupt_state;
83
 
84
#endif
85
 
86
/*------------------------------------------------------------------------*/
87
/* clock support                                                            */
88
 
89
void hal_clock_initialize(cyg_uint32 period)
90
{
91
    CYG_BYTE prescale;
92
#if CYGNUM_HAL_H8300_RTC_PRESCALE == 8
93
    prescale = 0x01;
94
#else
95
#if CYGNUM_HAL_H8300_RTC_PRESCALE == 64
96
    prescale = 0x02;
97
#else
98
#if CYGNUM_HAL_H8300_RTC_PRESCALE == 8192
99
    prescale = 0x03;
100
#else
101
#error illigal RTC prescale setting
102
#endif
103
#endif
104
#endif
105
    HAL_WRITE_UINT8(CYGARC_TCORA3,period);
106
    HAL_WRITE_UINT8(CYGARC_8TCNT3,0x00);
107
    HAL_WRITE_UINT8(CYGARC_8TCR3,0x48 | prescale);
108
    HAL_WRITE_UINT8(CYGARC_8TCSR3,0x00);
109
}
110
 
111
void hal_clock_reset(cyg_uint32 vector, cyg_uint32 period)
112
{
113
    HAL_WRITE_UINT8(CYGARC_8TCR3,0x00);
114
    HAL_WRITE_UINT8(CYGARC_8TCSR3,0x00);
115
    hal_clock_initialize(period);
116
}
117
 
118
void hal_clock_read(cyg_uint32 *pvalue)
119
{
120
    CYG_BYTE val;
121
    HAL_READ_UINT8(CYGARC_8TCNT3,val);
122
    *pvalue = val;
123
}
124
 
125
//---------------------------------------------------------------------------
126
// Low-level delay (in microseconds)
127
 
128
#if 0
129
void hal_delay_us(int usecs)
130
{
131
    volatile CYG_BYTE *tcr  = (CYG_BYTE *)CYGARC_8TCR2;
132
    volatile CYG_BYTE *tcnt = (CYG_BYTE *)CYGARC_8TCNT2;
133
    short clocks_per_us = (CYGHWR_HAL_H8300_PROCESSOR_SPEED/1000000)/8*25;
134
    //short clocks_per_us = (CYGHWR_HAL_H8300_PROCESSOR_SPEED/1000000)/20;
135
    unsigned char val1,val2;
136
    short diff;
137
 
138
    usecs /= 25;
139
 
140
    *tcnt = 0x00;
141
    *tcr  = 0x01;
142
 
143
    diff = 0;
144
    while (usecs > 0) {
145
        while (diff < clocks_per_us) {
146
            val1 = *tcnt;
147
            while ((val2 = *tcnt) == val1);
148
            if (val2 < val1)
149
                diff += val2 + 0x100 - val1;
150
            else
151
                diff += val2 - val1;
152
        }
153
        usecs -= diff / clocks_per_us;
154
        diff -= clocks_per_us;
155
    }
156
    *tcr  = 0x00;
157
}
158
#endif
159
 
160
/*------------------------------------------------------------------------*/
161
/* End of plf_misc.c                                                      */

powered by: WebSVN 2.1.0

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