tegra_soc.c revision 1.2.2.6 1 1.2.2.6 skrll /* $NetBSD: tegra_soc.c,v 1.2.2.6 2017/08/28 17:51:31 skrll Exp $ */
2 1.2.2.2 skrll
3 1.2.2.2 skrll /*-
4 1.2.2.2 skrll * Copyright (c) 2015 Jared D. McNeill <jmcneill (at) invisible.ca>
5 1.2.2.2 skrll * All rights reserved.
6 1.2.2.2 skrll *
7 1.2.2.2 skrll * Redistribution and use in source and binary forms, with or without
8 1.2.2.2 skrll * modification, are permitted provided that the following conditions
9 1.2.2.2 skrll * are met:
10 1.2.2.2 skrll * 1. Redistributions of source code must retain the above copyright
11 1.2.2.2 skrll * notice, this list of conditions and the following disclaimer.
12 1.2.2.2 skrll * 2. Redistributions in binary form must reproduce the above copyright
13 1.2.2.2 skrll * notice, this list of conditions and the following disclaimer in the
14 1.2.2.2 skrll * documentation and/or other materials provided with the distribution.
15 1.2.2.2 skrll *
16 1.2.2.2 skrll * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
17 1.2.2.2 skrll * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
18 1.2.2.2 skrll * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
19 1.2.2.2 skrll * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
20 1.2.2.2 skrll * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
21 1.2.2.2 skrll * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
22 1.2.2.2 skrll * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
23 1.2.2.2 skrll * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
24 1.2.2.2 skrll * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
25 1.2.2.2 skrll * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
26 1.2.2.2 skrll * SUCH DAMAGE.
27 1.2.2.2 skrll */
28 1.2.2.2 skrll
29 1.2.2.2 skrll #include "opt_tegra.h"
30 1.2.2.2 skrll #include "opt_multiprocessor.h"
31 1.2.2.2 skrll
32 1.2.2.2 skrll #include <sys/cdefs.h>
33 1.2.2.6 skrll __KERNEL_RCSID(0, "$NetBSD: tegra_soc.c,v 1.2.2.6 2017/08/28 17:51:31 skrll Exp $");
34 1.2.2.2 skrll
35 1.2.2.2 skrll #include <sys/param.h>
36 1.2.2.2 skrll #include <sys/bus.h>
37 1.2.2.2 skrll #include <sys/cpu.h>
38 1.2.2.2 skrll #include <sys/device.h>
39 1.2.2.2 skrll
40 1.2.2.2 skrll #include <uvm/uvm_extern.h>
41 1.2.2.2 skrll
42 1.2.2.2 skrll #include <arm/bootconfig.h>
43 1.2.2.2 skrll #include <arm/cpufunc.h>
44 1.2.2.2 skrll
45 1.2.2.2 skrll #include <arm/nvidia/tegra_reg.h>
46 1.2.2.2 skrll #include <arm/nvidia/tegra_apbreg.h>
47 1.2.2.2 skrll #include <arm/nvidia/tegra_mcreg.h>
48 1.2.2.2 skrll #include <arm/nvidia/tegra_var.h>
49 1.2.2.2 skrll
50 1.2.2.5 skrll bus_space_handle_t tegra_host1x_bsh;
51 1.2.2.3 skrll bus_space_handle_t tegra_ppsb_bsh;
52 1.2.2.2 skrll bus_space_handle_t tegra_apb_bsh;
53 1.2.2.5 skrll bus_space_handle_t tegra_ahb_a2_bsh;
54 1.2.2.2 skrll
55 1.2.2.2 skrll void
56 1.2.2.2 skrll tegra_bootstrap(void)
57 1.2.2.2 skrll {
58 1.2.2.3 skrll if (bus_space_map(&armv7_generic_bs_tag,
59 1.2.2.5 skrll TEGRA_HOST1X_BASE, TEGRA_HOST1X_SIZE, 0,
60 1.2.2.5 skrll &tegra_host1x_bsh) != 0)
61 1.2.2.5 skrll panic("couldn't map HOST1X");
62 1.2.2.5 skrll if (bus_space_map(&armv7_generic_bs_tag,
63 1.2.2.3 skrll TEGRA_PPSB_BASE, TEGRA_PPSB_SIZE, 0,
64 1.2.2.3 skrll &tegra_ppsb_bsh) != 0)
65 1.2.2.3 skrll panic("couldn't map PPSB");
66 1.2.2.3 skrll if (bus_space_map(&armv7_generic_bs_tag,
67 1.2.2.2 skrll TEGRA_APB_BASE, TEGRA_APB_SIZE, 0,
68 1.2.2.3 skrll &tegra_apb_bsh) != 0)
69 1.2.2.3 skrll panic("couldn't map APB");
70 1.2.2.5 skrll if (bus_space_map(&armv7_generic_bs_tag,
71 1.2.2.5 skrll TEGRA_AHB_A2_BASE, TEGRA_AHB_A2_SIZE, 0,
72 1.2.2.5 skrll &tegra_ahb_a2_bsh) != 0)
73 1.2.2.5 skrll panic("couldn't map AHB A2");
74 1.2.2.2 skrll }
75