xref: /freebsd/sys/arm/broadcom/bcm2835/bcm2835_vcbus.h (revision 95ee2897e98f5d444f26ed2334cc7c439f9c16c6)
11b1a53cfSOleksandr Tymoshenko /*-
2*4d846d26SWarner Losh  * SPDX-License-Identifier: BSD-2-Clause
3af3dc4a7SPedro F. Giffuni  *
41b1a53cfSOleksandr Tymoshenko  * Copyright (c) 2012 Oleksandr Tymoshenko <gonzo@freebsd.org>
51b1a53cfSOleksandr Tymoshenko  * All rights reserved.
61b1a53cfSOleksandr Tymoshenko  *
71b1a53cfSOleksandr Tymoshenko  * Redistribution and use in source and binary forms, with or without
81b1a53cfSOleksandr Tymoshenko  * modification, are permitted provided that the following conditions
91b1a53cfSOleksandr Tymoshenko  * are met:
101b1a53cfSOleksandr Tymoshenko  * 1. Redistributions of source code must retain the above copyright
111b1a53cfSOleksandr Tymoshenko  *    notice, this list of conditions and the following disclaimer.
121b1a53cfSOleksandr Tymoshenko  * 2. Redistributions in binary form must reproduce the above copyright
131b1a53cfSOleksandr Tymoshenko  *    notice, this list of conditions and the following disclaimer in the
141b1a53cfSOleksandr Tymoshenko  *    documentation and/or other materials provided with the distribution.
151b1a53cfSOleksandr Tymoshenko  *
161b1a53cfSOleksandr Tymoshenko  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
171b1a53cfSOleksandr Tymoshenko  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
181b1a53cfSOleksandr Tymoshenko  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
191b1a53cfSOleksandr Tymoshenko  * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
201b1a53cfSOleksandr Tymoshenko  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
211b1a53cfSOleksandr Tymoshenko  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
221b1a53cfSOleksandr Tymoshenko  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
231b1a53cfSOleksandr Tymoshenko  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
241b1a53cfSOleksandr Tymoshenko  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
251b1a53cfSOleksandr Tymoshenko  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
261b1a53cfSOleksandr Tymoshenko  * SUCH DAMAGE.
271b1a53cfSOleksandr Tymoshenko  */
281b1a53cfSOleksandr Tymoshenko 
291b1a53cfSOleksandr Tymoshenko /*
301b1a53cfSOleksandr Tymoshenko  * Defines for converting physical address to VideoCore bus address and back
311b1a53cfSOleksandr Tymoshenko  */
321b1a53cfSOleksandr Tymoshenko 
331b1a53cfSOleksandr Tymoshenko #ifndef _BCM2835_VCBUS_H_
341b1a53cfSOleksandr Tymoshenko #define _BCM2835_VCBUS_H_
351b1a53cfSOleksandr Tymoshenko 
361b1a53cfSOleksandr Tymoshenko #define	BCM2835_VCBUS_SDRAM_CACHED	0x40000000
371b1a53cfSOleksandr Tymoshenko #define	BCM2835_VCBUS_SDRAM_UNCACHED	0xC0000000
381b1a53cfSOleksandr Tymoshenko 
39e5b6b345SOleksandr Tymoshenko #define	BCM2835_ARM_IO_BASE		0x20000000
4040084ac3SKyle Evans #define	BCM2835_VCBUS_IO_BASE		0x7E000000
412ae58071SLuiz Otavio O Souza #define	BCM2835_VCBUS_SDRAM_BASE	BCM2835_VCBUS_SDRAM_CACHED
4240084ac3SKyle Evans 
435910fe02SKyle Evans #define	BCM2836_ARM_IO_BASE		0x3f000000
445910fe02SKyle Evans #define	BCM2836_VCBUS_IO_BASE		BCM2835_VCBUS_IO_BASE
455910fe02SKyle Evans #define	BCM2836_VCBUS_SDRAM_BASE	BCM2835_VCBUS_SDRAM_UNCACHED
465910fe02SKyle Evans 
475910fe02SKyle Evans #define	BCM2837_ARM_IO_BASE		BCM2836_ARM_IO_BASE
4840084ac3SKyle Evans #define	BCM2837_VCBUS_IO_BASE		BCM2835_VCBUS_IO_BASE
4940084ac3SKyle Evans #define	BCM2837_VCBUS_SDRAM_BASE	BCM2835_VCBUS_SDRAM_UNCACHED
5040084ac3SKyle Evans 
5140084ac3SKyle Evans #define	BCM2838_ARM_IO_BASE		0xfe000000
5240084ac3SKyle Evans #define	BCM2838_VCBUS_IO_BASE		BCM2835_VCBUS_IO_BASE
5340084ac3SKyle Evans #define	BCM2838_VCBUS_SDRAM_BASE	BCM2835_VCBUS_SDRAM_UNCACHED
54e5b6b345SOleksandr Tymoshenko 
551b1a53cfSOleksandr Tymoshenko /*
5640084ac3SKyle Evans  * Max allowed SDRAM mapping for most peripherals.  The Raspberry Pi 4 has more
5740084ac3SKyle Evans  * than 1 GB of SDRAM, but only the lowest 1 GB is mapped into the "Legacy
5840084ac3SKyle Evans  * Master view" of the address space accessible by the DMA engine.  Technically,
5940084ac3SKyle Evans  * we can slide this window around to whatever similarly sized range is
6040084ac3SKyle Evans  * convenient, but this is the most useful window given how busdma(9) works and
6140084ac3SKyle Evans  * that the window must be reconfigured for all channels in a given DMA engine.
6240084ac3SKyle Evans  * The DMA lite engine's window can be configured separately from the 30-bit DMA
6340084ac3SKyle Evans  * engine.
641b1a53cfSOleksandr Tymoshenko  */
6540084ac3SKyle Evans #define	BCM2838_PERIPH_MAXADDR		0x3fffffff
661b1a53cfSOleksandr Tymoshenko 
6740084ac3SKyle Evans #define	BCM28XX_ARM_IO_SIZE		0x01000000
68e5b6b345SOleksandr Tymoshenko 
6940084ac3SKyle Evans vm_paddr_t bcm283x_armc_to_vcbus(vm_paddr_t pa);
7040084ac3SKyle Evans vm_paddr_t bcm283x_vcbus_to_armc(vm_paddr_t vca);
7140084ac3SKyle Evans bus_addr_t bcm283x_dmabus_peripheral_lowaddr(void);
72e5b6b345SOleksandr Tymoshenko 
7340084ac3SKyle Evans #define	ARMC_TO_VCBUS(pa)	bcm283x_armc_to_vcbus(pa)
7440084ac3SKyle Evans #define	VCBUS_TO_ARMC(vca)	bcm283x_vcbus_to_armc(vca)
751b1a53cfSOleksandr Tymoshenko 
76588b15d7SKyle Evans /* Compatibility name for vchiq arm interface. */
77588b15d7SKyle Evans #define	PHYS_TO_VCBUS		ARMC_TO_VCBUS
78588b15d7SKyle Evans 
791b1a53cfSOleksandr Tymoshenko #endif /* _BCM2835_VCBUS_H_ */
80