1/*- 2 * Copyright 2013-2015 John Wehle <john@feith.com> 3 * All rights reserved. 4 * 5 * Based on omap4_l2cache.c by Olivier Houchard 6 * 7 * Redistribution and use in source and binary forms, with or without 8 * modification, are permitted provided that the following conditions 9 * are met: 10 * 1. Redistributions of source code must retain the above copyright 11 * notice, this list of conditions and the following disclaimer. 12 * 2. Redistributions in binary form must reproduce the above copyright 13 * notice, this list of conditions and the following disclaimer in the 14 * documentation and/or other materials provided with the distribution. 15 * 16 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND 17 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 18 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 19 * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE 20 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 21 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 22 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 23 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 24 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 25 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 26 * SUCH DAMAGE. 27 * 28 * $FreeBSD$ 29 */ 30 31#include <sys/cdefs.h> 32__FBSDID("$FreeBSD$"); 33 34#include <sys/types.h> 35#include <sys/param.h> 36#include <sys/systm.h> 37#include <sys/bus.h> 38#include <sys/rman.h> 39#include <sys/lock.h> 40#include <sys/mutex.h> 41 42#include <machine/bus.h> 43#include <machine/pl310.h> 44 45void 46platform_pl310_init(struct pl310_softc *sc) 47{ 48 uint32_t aux; 49 50 aux = pl310_read4(sc, PL310_AUX_CTRL); 51 52 /* 53 * The Amlogic Linux platform code enables via AUX: 54 * 55 * Early BRESP 56 * Full Line of Zero (which must match processor setting) 57 * Data Prefetch 58 * 59 * and additionally on the m6 enables: 60 * 61 * Instruction Prefetch 62 * 63 * For the moment we only enable Data Prefetch ... 64 * further refinements can happen as things mature. 65 */ 66 67 /* 68 * Disable instruction prefetch. 69 */ 70 aux &= ~AUX_CTRL_INSTR_PREFETCH; 71 72 /* 73 * Enable data prefetch. 74 */ 75 aux |= AUX_CTRL_DATA_PREFETCH; 76 77 pl310_write4(sc, PL310_AUX_CTRL, aux); 78} 79 80void 81platform_pl310_write_ctrl(struct pl310_softc *sc, uint32_t val) 82{ 83 84 pl310_write4(sc, PL310_CTRL, val); 85} 86 87void 88platform_pl310_write_debug(struct pl310_softc *sc, uint32_t val) 89{ 90 91 pl310_write4(sc, PL310_DEBUG_CTRL, val); 92} 93