The Design and Implementation of the FreeBSD Operating System, Second Edition
Now available: The Design and Implementation of the FreeBSD Operating System (Second Edition)


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]

FreeBSD/Linux Kernel Cross Reference
sys/arm/ti/ti_machdep.c

Version: -  FREEBSD  -  FREEBSD-13-STABLE  -  FREEBSD-13-0  -  FREEBSD-12-STABLE  -  FREEBSD-12-0  -  FREEBSD-11-STABLE  -  FREEBSD-11-0  -  FREEBSD-10-STABLE  -  FREEBSD-10-0  -  FREEBSD-9-STABLE  -  FREEBSD-9-0  -  FREEBSD-8-STABLE  -  FREEBSD-8-0  -  FREEBSD-7-STABLE  -  FREEBSD-7-0  -  FREEBSD-6-STABLE  -  FREEBSD-6-0  -  FREEBSD-5-STABLE  -  FREEBSD-5-0  -  FREEBSD-4-STABLE  -  FREEBSD-3-STABLE  -  FREEBSD22  -  l41  -  OPENBSD  -  linux-2.6  -  MK84  -  PLAN9  -  xnu-8792 
SearchContext: -  none  -  3  -  10 

    1 /*-
    2  * SPDX-License-Identifier: BSD-4-Clause
    3  *
    4  * Copyright (c) 1994-1998 Mark Brinicombe.
    5  * Copyright (c) 1994 Brini.
    6  * All rights reserved.
    7  *
    8  * This code is derived from software written for Brini by Mark Brinicombe
    9  *
   10  * Redistribution and use in source and binary forms, with or without
   11  * modification, are permitted provided that the following conditions
   12  * are met:
   13  * 1. Redistributions of source code must retain the above copyright
   14  *    notice, this list of conditions and the following disclaimer.
   15  * 2. Redistributions in binary form must reproduce the above copyright
   16  *    notice, this list of conditions and the following disclaimer in the
   17  *    documentation and/or other materials provided with the distribution.
   18  * 3. All advertising materials mentioning features or use of this software
   19  *    must display the following acknowledgement:
   20  *      This product includes software developed by Brini.
   21  * 4. The name of the company nor the name of the author may be used to
   22  *    endorse or promote products derived from this software without specific
   23  *    prior written permission.
   24  *
   25  * THIS SOFTWARE IS PROVIDED BY BRINI ``AS IS'' AND ANY EXPRESS OR IMPLIED
   26  * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
   27  * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
   28  * IN NO EVENT SHALL BRINI OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
   29  * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
   30  * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
   31  * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
   32  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
   33  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
   34  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
   35  * SUCH DAMAGE.
   36  *
   37  * from: FreeBSD: //depot/projects/arm/src/sys/arm/at91/kb920x_machdep.c, rev 45
   38  */
   39 
   40 #include "opt_platform.h"
   41 
   42 #include <sys/cdefs.h>
   43 __FBSDID("$FreeBSD$");
   44 
   45 #include <sys/param.h>
   46 #include <sys/systm.h>
   47 #include <sys/bus.h>
   48 #include <sys/devmap.h>
   49 
   50 #include <vm/vm.h>
   51 #include <vm/pmap.h>
   52 
   53 #include <machine/bus.h>
   54 #include <machine/machdep.h>
   55 #include <machine/platformvar.h>
   56 
   57 #include <arm/ti/omap4/omap4_machdep.h>
   58 #include <arm/ti/omap4/omap4_reg.h>
   59 #include <arm/ti/ti_cpuid.h>
   60 
   61 #include "platform_if.h"
   62 
   63 #if defined(SOC_OMAP4)
   64 #include "platform_pl310_if.h"
   65 
   66 static platform_attach_t omap4_attach;
   67 static platform_devmap_init_t ti_omap4_devmap_init;
   68 #endif
   69 #if defined(SOC_TI_AM335X)
   70 static platform_attach_t ti_am335x_attach;
   71 static platform_devmap_init_t ti_am335x_devmap_init;
   72 #endif
   73 static platform_cpu_reset_t ti_plat_cpu_reset;
   74 
   75 void (*ti_cpu_reset)(void) = NULL;
   76 
   77 int _ti_chip = -1;
   78 
   79 #if defined(SOC_OMAP4)
   80 static int
   81 omap4_attach(platform_t plat)
   82 {
   83         _ti_chip = CHIP_OMAP_4;
   84         return (0);
   85 }
   86 #endif
   87 
   88 #if defined(SOC_TI_AM335X)
   89 static int
   90 ti_am335x_attach(platform_t plat)
   91 {
   92         _ti_chip = CHIP_AM335X;
   93         return (0);
   94 }
   95 #endif
   96 
   97 /*
   98  * Construct static devmap entries to map out the most frequently used
   99  * peripherals using 1mb section mappings.
  100  */
  101 #if defined(SOC_OMAP4)
  102 static int
  103 ti_omap4_devmap_init(platform_t plat)
  104 {
  105         devmap_add_entry(0x48000000, 0x01000000); /*16mb L4_PER devices */
  106         devmap_add_entry(0x4A000000, 0x01000000); /*16mb L4_CFG devices */
  107         return (0);
  108 }
  109 #endif
  110 
  111 #if defined(SOC_TI_AM335X)
  112 static int
  113 ti_am335x_devmap_init(platform_t plat)
  114 {
  115 
  116         devmap_add_entry(0x44C00000, 0x00400000); /* 4mb L4_WKUP devices*/
  117         devmap_add_entry(0x47400000, 0x00100000); /* 1mb USB            */
  118         devmap_add_entry(0x47800000, 0x00100000); /* 1mb mmchs2         */
  119         devmap_add_entry(0x48000000, 0x01000000); /*16mb L4_PER devices */
  120         devmap_add_entry(0x49000000, 0x00100000); /* 1mb edma3          */
  121         devmap_add_entry(0x49800000, 0x00300000); /* 3mb edma3          */
  122         devmap_add_entry(0x4A000000, 0x01000000); /*16mb L4_FAST devices*/
  123         return (0);
  124 }
  125 #endif
  126 
  127 static void
  128 ti_plat_cpu_reset(platform_t plat)
  129 {
  130         if (ti_cpu_reset)
  131                 (*ti_cpu_reset)();
  132         else
  133                 printf("no cpu_reset implementation\n");
  134 }
  135 
  136 #if defined(SOC_OMAP4)
  137 static platform_method_t omap4_methods[] = {
  138         PLATFORMMETHOD(platform_attach,         omap4_attach),
  139         PLATFORMMETHOD(platform_devmap_init,    ti_omap4_devmap_init),
  140         PLATFORMMETHOD(platform_cpu_reset,      ti_plat_cpu_reset),
  141 
  142 #ifdef SMP
  143         PLATFORMMETHOD(platform_mp_start_ap,    omap4_mp_start_ap),
  144         PLATFORMMETHOD(platform_mp_setmaxid,    omap4_mp_setmaxid),
  145 #endif
  146 
  147         PLATFORMMETHOD(platform_pl310_init,     omap4_pl310_init),
  148         PLATFORMMETHOD(platform_pl310_write_ctrl, omap4_pl310_write_ctrl),
  149         PLATFORMMETHOD(platform_pl310_write_debug, omap4_pl310_write_debug),
  150 
  151         PLATFORMMETHOD_END,
  152 };
  153 FDT_PLATFORM_DEF(omap4, "omap4", 0, "ti,omap4430", 200);
  154 #endif
  155 
  156 #if defined(SOC_TI_AM335X)
  157 static platform_method_t am335x_methods[] = {
  158         PLATFORMMETHOD(platform_attach,         ti_am335x_attach),
  159         PLATFORMMETHOD(platform_devmap_init,    ti_am335x_devmap_init),
  160         PLATFORMMETHOD(platform_cpu_reset,      ti_plat_cpu_reset),
  161 
  162         PLATFORMMETHOD_END,
  163 };
  164 
  165 FDT_PLATFORM_DEF(am335x, "am335x", 0, "ti,am33xx", 200);
  166 #endif

Cache object: 4057ac300d25a0df9d0e148b2fec332a


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]


This page is part of the FreeBSD/Linux Linux Kernel Cross-Reference, and was automatically generated using a modified version of the LXR engine.