smdk2410.c revision 1.1 1 1.1 mycroft /* $NetBSD: smdk2410.c,v 1.1 2003/09/03 03:18:30 mycroft Exp $ */
2 1.1 mycroft
3 1.1 mycroft /*
4 1.1 mycroft * Copyright (c) 2003 By Noon Software, Inc. All rights reserved.
5 1.1 mycroft *
6 1.1 mycroft * Redistribution and use in source and binary forms, with or without
7 1.1 mycroft * modification, are permitted provided that the following conditions
8 1.1 mycroft * are met:
9 1.1 mycroft * 1. Redistributions of source code must retain the above copyright
10 1.1 mycroft * notice, this list of conditions and the following disclaimer.
11 1.1 mycroft * 2. Redistributions in binary form must reproduce the above copyright
12 1.1 mycroft * notice, this list of conditions and the following disclaimer in the
13 1.1 mycroft * documentation and/or other materials provided with the distribution.
14 1.1 mycroft * 3. The names of the authors may not be used to endorse or promote products
15 1.1 mycroft * derived from this software without specific prior written permission.
16 1.1 mycroft *
17 1.1 mycroft * THIS SOFTWARE IS PROVIDED BY THE AUTHORS ``AS IS'' AND ANY EXPRESS OR
18 1.1 mycroft * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
19 1.1 mycroft * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
20 1.1 mycroft * IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY DIRECT, INDIRECT,
21 1.1 mycroft * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
22 1.1 mycroft * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
23 1.1 mycroft * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
24 1.1 mycroft * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
25 1.1 mycroft * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
26 1.1 mycroft * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
27 1.1 mycroft */
28 1.1 mycroft
29 1.1 mycroft /*
30 1.1 mycroft * Board initialization routines for the Samsung's SMDK2410.
31 1.1 mycroft */
32 1.1 mycroft
33 1.1 mycroft #include <sys/types.h>
34 1.1 mycroft #include <lib/libsa/stand.h>
35 1.1 mycroft #include <arch/arm/s3c2xx0/s3c2410reg.h>
36 1.1 mycroft
37 1.1 mycroft #include "board.h"
38 1.1 mycroft
39 1.1 mycroft void
40 1.1 mycroft board_init(void)
41 1.1 mycroft {
42 1.1 mycroft
43 1.1 mycroft mem_init();
44 1.1 mycroft }
45 1.1 mycroft
46 1.1 mycroft void
47 1.1 mycroft board_fini(void)
48 1.1 mycroft {
49 1.1 mycroft
50 1.1 mycroft }
51 1.1 mycroft
52 1.1 mycroft void
53 1.1 mycroft mem_init(void)
54 1.1 mycroft {
55 1.1 mycroft uint32_t start, size, heap;
56 1.1 mycroft
57 1.1 mycroft start = S3C2410_SDRAM_START;
58 1.1 mycroft size = SDRAM_SIZE;
59 1.1 mycroft
60 1.1 mycroft heap = (start + size) - HEAP_SIZE;
61 1.1 mycroft
62 1.1 mycroft printf(">> RAM 0x%x - 0x%x, heap at 0x%x\n",
63 1.1 mycroft start, (start + size) - 1, heap);
64 1.1 mycroft setheap((void *)heap, (void *)(heap + HEAP_SIZE - 1));
65 1.1 mycroft }
66 1.1 mycroft
67 1.1 mycroft long get_com_freq(void);
68 1.1 mycroft long
69 1.1 mycroft get_com_freq(void)
70 1.1 mycroft {
71 1.1 mycroft long clk;
72 1.1 mycroft uint32_t pllcon = *(volatile uint32_t *)(S3C2410_CLKMAN_BASE+CLKMAN_MPLLCON);
73 1.1 mycroft uint32_t clkdivn = *(volatile uint32_t *)(S3C2410_CLKMAN_BASE+CLKMAN_CLKDIVN);
74 1.1 mycroft
75 1.1 mycroft int mdiv = (pllcon & PLLCON_MDIV_MASK) >> PLLCON_MDIV_SHIFT;
76 1.1 mycroft int pdiv = (pllcon & PLLCON_PDIV_MASK) >> PLLCON_PDIV_SHIFT;
77 1.1 mycroft int sdiv = (pllcon & PLLCON_SDIV_MASK) >> PLLCON_SDIV_SHIFT;
78 1.1 mycroft
79 1.1 mycroft #if XTAL_CLK < 1000 /* in MHz */
80 1.1 mycroft clk = (XTAL_CLK * 1000000 * (8 + mdiv)) / ((pdiv + 2) << sdiv);
81 1.1 mycroft #else /* in Hz */
82 1.1 mycroft clk = (XTAL_CLK * (8 + mdiv)) / ((pdiv + 2) << sdiv);
83 1.1 mycroft #endif
84 1.1 mycroft
85 1.1 mycroft if (clkdivn & CLKDIVN_HDIVN)
86 1.1 mycroft clk /= 2;
87 1.1 mycroft if (clkdivn & CLKDIVN_PDIVN)
88 1.1 mycroft clk /= 2;
89 1.1 mycroft
90 1.1 mycroft return clk;
91 1.1 mycroft }
92