185fc5c3bSMarcel Moolenaar /*- 251369649SPedro F. Giffuni * SPDX-License-Identifier: BSD-3-Clause 351369649SPedro F. Giffuni * 416694521SOleksandr Tymoshenko * Copyright (C) 2007-2011 MARVELL INTERNATIONAL LTD. 585fc5c3bSMarcel Moolenaar * All rights reserved. 685fc5c3bSMarcel Moolenaar * 785fc5c3bSMarcel Moolenaar * Developed by Semihalf. 885fc5c3bSMarcel Moolenaar * 985fc5c3bSMarcel Moolenaar * Redistribution and use in source and binary forms, with or without 1085fc5c3bSMarcel Moolenaar * modification, are permitted provided that the following conditions 1185fc5c3bSMarcel Moolenaar * are met: 1285fc5c3bSMarcel Moolenaar * 1. Redistributions of source code must retain the above copyright 1385fc5c3bSMarcel Moolenaar * notice, this list of conditions and the following disclaimer. 1485fc5c3bSMarcel Moolenaar * 2. Redistributions in binary form must reproduce the above copyright 1585fc5c3bSMarcel Moolenaar * notice, this list of conditions and the following disclaimer in the 1685fc5c3bSMarcel Moolenaar * documentation and/or other materials provided with the distribution. 1785fc5c3bSMarcel Moolenaar * 3. Neither the name of MARVELL nor the names of contributors 1885fc5c3bSMarcel Moolenaar * may be used to endorse or promote products derived from this software 1985fc5c3bSMarcel Moolenaar * without specific prior written permission. 2085fc5c3bSMarcel Moolenaar * 2185fc5c3bSMarcel Moolenaar * THIS SOFTWARE IS PROVIDED BY AUTHOR AND CONTRIBUTORS ``AS IS'' AND 2285fc5c3bSMarcel Moolenaar * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 2385fc5c3bSMarcel Moolenaar * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 2485fc5c3bSMarcel Moolenaar * ARE DISCLAIMED. IN NO EVENT SHALL AUTHOR OR CONTRIBUTORS BE LIABLE 2585fc5c3bSMarcel Moolenaar * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 2685fc5c3bSMarcel Moolenaar * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 2785fc5c3bSMarcel Moolenaar * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 2885fc5c3bSMarcel Moolenaar * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 2985fc5c3bSMarcel Moolenaar * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 3085fc5c3bSMarcel Moolenaar * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 3185fc5c3bSMarcel Moolenaar * SUCH DAMAGE. 3285fc5c3bSMarcel Moolenaar */ 3385fc5c3bSMarcel Moolenaar 3485fc5c3bSMarcel Moolenaar #ifndef _MVWIN_H_ 3585fc5c3bSMarcel Moolenaar #define _MVWIN_H_ 3685fc5c3bSMarcel Moolenaar 3785fc5c3bSMarcel Moolenaar /* 3816694521SOleksandr Tymoshenko * Decode windows addresses. 3916694521SOleksandr Tymoshenko * 4016694521SOleksandr Tymoshenko * All decoding windows must be aligned to their size, which has to be 4116694521SOleksandr Tymoshenko * a power of 2. 4285fc5c3bSMarcel Moolenaar */ 4385fc5c3bSMarcel Moolenaar 4485fc5c3bSMarcel Moolenaar /* 4516694521SOleksandr Tymoshenko * SoC Integrated devices: 0xF1000000, 16 MB (VA == PA) 4685fc5c3bSMarcel Moolenaar */ 4785fc5c3bSMarcel Moolenaar 4816694521SOleksandr Tymoshenko /* SoC Regs */ 4916694521SOleksandr Tymoshenko #define MV_PHYS_BASE 0xF1000000 5016694521SOleksandr Tymoshenko #define MV_SIZE (1024 * 1024) /* 1 MB */ 5116694521SOleksandr Tymoshenko 5216694521SOleksandr Tymoshenko /* SRAM */ 5316694521SOleksandr Tymoshenko #define MV_CESA_SRAM_BASE 0xF1100000 5416694521SOleksandr Tymoshenko 5516694521SOleksandr Tymoshenko /* 5616694521SOleksandr Tymoshenko * External devices: 0x80000000, 1 GB (VA == PA) 5716694521SOleksandr Tymoshenko * Includes Device Bus, PCI and PCIE. 5816694521SOleksandr Tymoshenko */ 59fefc2cf7SMarcin Wojtas #define MV_PCI_PORTS 1 /* 1x PCIE -> worst case */ 6016694521SOleksandr Tymoshenko 6116694521SOleksandr Tymoshenko /* PCI/PCIE Memory */ 6216694521SOleksandr Tymoshenko #define MV_PCI_MEM_PHYS_BASE 0x80000000 6316694521SOleksandr Tymoshenko #define MV_PCI_MEM_SIZE (512 * 1024 * 1024) /* 512 MB */ 6485fc5c3bSMarcel Moolenaar #define MV_PCI_MEM_BASE MV_PCI_MEM_PHYS_BASE 6516694521SOleksandr Tymoshenko #define MV_PCI_MEM_SLICE_SIZE (MV_PCI_MEM_SIZE / MV_PCI_PORTS) 6616694521SOleksandr Tymoshenko /* PCI/PCIE I/O */ 6716694521SOleksandr Tymoshenko #define MV_PCI_IO_PHYS_BASE 0xBF000000 6816694521SOleksandr Tymoshenko #define MV_PCI_IO_SIZE (16 * 1024 * 1024) /* 16 MB */ 6916694521SOleksandr Tymoshenko #define MV_PCI_IO_BASE MV_PCI_IO_PHYS_BASE 7016694521SOleksandr Tymoshenko #define MV_PCI_IO_SLICE_SIZE (MV_PCI_IO_SIZE / MV_PCI_PORTS) 7116694521SOleksandr Tymoshenko #define MV_PCI_VA_MEM_BASE 0 7216694521SOleksandr Tymoshenko #define MV_PCI_VA_IO_BASE 0 7316694521SOleksandr Tymoshenko 7416694521SOleksandr Tymoshenko /* 7516694521SOleksandr Tymoshenko * Device Bus (VA == PA) 7616694521SOleksandr Tymoshenko */ 77b91fab42SGrzegorz Bernacki #define MV_DEV_BOOT_BASE 0xF9300000 78b91fab42SGrzegorz Bernacki #define MV_DEV_BOOT_SIZE (1024 * 1024) /* 1 MB */ 7985fc5c3bSMarcel Moolenaar 80b91fab42SGrzegorz Bernacki #define MV_DEV_CS0_BASE 0xF9400000 81b91fab42SGrzegorz Bernacki #define MV_DEV_CS0_SIZE (1024 * 1024) /* 1 MB */ 82b91fab42SGrzegorz Bernacki 83b91fab42SGrzegorz Bernacki #define MV_DEV_CS1_BASE 0xF9500000 84b91fab42SGrzegorz Bernacki #define MV_DEV_CS1_SIZE (32 * 1024 * 1024) /* 32 MB */ 85b91fab42SGrzegorz Bernacki 86b91fab42SGrzegorz Bernacki #define MV_DEV_CS2_BASE 0xFB500000 87b91fab42SGrzegorz Bernacki #define MV_DEV_CS2_SIZE (1024 * 1024) /* 1 MB */ 8885fc5c3bSMarcel Moolenaar 8985fc5c3bSMarcel Moolenaar /* 9085fc5c3bSMarcel Moolenaar * Integrated SoC peripherals addresses 9185fc5c3bSMarcel Moolenaar */ 9285fc5c3bSMarcel Moolenaar #define MV_BASE MV_PHYS_BASE /* VA == PA mapping */ 93091cd2f1SMarcin Wojtas #define MV_DDR_CADR_BASE_ARMV7 (MV_BASE + 0x20180) 9485fc5c3bSMarcel Moolenaar #define MV_DDR_CADR_BASE (MV_BASE + 0x1500) 9585fc5c3bSMarcel Moolenaar #define MV_MPP_BASE (MV_BASE + 0x10000) 96db5ef4fcSRafal Jaworowski 97d65cdf4bSGrzegorz Bernacki #define MV_MISC_BASE (MV_BASE + 0x18200) 9816694521SOleksandr Tymoshenko #define MV_MBUS_BRIDGE_BASE (MV_BASE + 0x20000) 9916694521SOleksandr Tymoshenko #define MV_INTREGS_BASE (MV_MBUS_BRIDGE_BASE + 0x80) 100d65cdf4bSGrzegorz Bernacki #define MV_MP_CLOCKS_BASE (MV_MBUS_BRIDGE_BASE + 0x700) 101091cd2f1SMarcin Wojtas 102091cd2f1SMarcin Wojtas #define MV_CPU_CONTROL_BASE_ARMV7 (MV_MBUS_BRIDGE_BASE + 0x1800) 10385fc5c3bSMarcel Moolenaar #define MV_CPU_CONTROL_BASE (MV_MBUS_BRIDGE_BASE + 0x100) 104db5ef4fcSRafal Jaworowski 10585fc5c3bSMarcel Moolenaar #define MV_PCI_BASE (MV_BASE + 0x30000) 10685fc5c3bSMarcel Moolenaar #define MV_PCI_SIZE 0x2000 107db5ef4fcSRafal Jaworowski 108fefc2cf7SMarcin Wojtas #define MV_PCIE_BASE_ARMADA38X (MV_BASE + 0x80000) 10985fc5c3bSMarcel Moolenaar #define MV_PCIE_BASE (MV_BASE + 0x40000) 11085fc5c3bSMarcel Moolenaar #define MV_PCIE_SIZE 0x2000 11116694521SOleksandr Tymoshenko #define MV_SDIO_BASE (MV_BASE + 0x90000) 11216694521SOleksandr Tymoshenko #define MV_SDIO_SIZE 0x10000 11316694521SOleksandr Tymoshenko 11485fc5c3bSMarcel Moolenaar /* 11585fc5c3bSMarcel Moolenaar * Decode windows definitions and macros 11685fc5c3bSMarcel Moolenaar */ 117091cd2f1SMarcin Wojtas #define MV_WIN_CPU_CTRL_ARMV7(n) (((n) < 8) ? 0x10 * (n) : 0x90 + (0x8 * ((n) - 8))) 118091cd2f1SMarcin Wojtas #define MV_WIN_CPU_BASE_ARMV7(n) ((((n) < 8) ? 0x10 * (n) : 0x90 + (0x8 * ((n) - 8))) + 0x4) 119091cd2f1SMarcin Wojtas #define MV_WIN_CPU_REMAP_LO_ARMV7(n) (0x10 * (n) + 0x008) 120091cd2f1SMarcin Wojtas #define MV_WIN_CPU_REMAP_HI_ARMV7(n) (0x10 * (n) + 0x00C) 121091cd2f1SMarcin Wojtas 122091cd2f1SMarcin Wojtas #define MV_WIN_CPU_CTRL_ARMV5(n) (0x10 * (n) + (((n) < 8) ? 0x000 : 0x880)) 123091cd2f1SMarcin Wojtas #define MV_WIN_CPU_BASE_ARMV5(n) (0x10 * (n) + (((n) < 8) ? 0x004 : 0x884)) 124091cd2f1SMarcin Wojtas #define MV_WIN_CPU_REMAP_LO_ARMV5(n) (0x10 * (n) + (((n) < 8) ? 0x008 : 0x888)) 125091cd2f1SMarcin Wojtas #define MV_WIN_CPU_REMAP_HI_ARMV5(n) (0x10 * (n) + (((n) < 8) ? 0x00C : 0x88C)) 12616694521SOleksandr Tymoshenko 12785fc5c3bSMarcel Moolenaar #define MV_WIN_CPU_MAX 8 128091cd2f1SMarcin Wojtas #define MV_WIN_CPU_MAX_ARMV7 20 12985fc5c3bSMarcel Moolenaar 13016694521SOleksandr Tymoshenko #define MV_WIN_CPU_ATTR_SHIFT 8 13116694521SOleksandr Tymoshenko #define MV_WIN_CPU_TARGET_SHIFT 4 13216694521SOleksandr Tymoshenko #define MV_WIN_CPU_ENABLE_BIT 1 13316694521SOleksandr Tymoshenko 13485fc5c3bSMarcel Moolenaar #define MV_WIN_DDR_BASE(n) (0x8 * (n) + 0x0) 13585fc5c3bSMarcel Moolenaar #define MV_WIN_DDR_SIZE(n) (0x8 * (n) + 0x4) 13685fc5c3bSMarcel Moolenaar #define MV_WIN_DDR_MAX 4 13785fc5c3bSMarcel Moolenaar 13899eef682SGrzegorz Bernacki /* 13999eef682SGrzegorz Bernacki * These values are valid only for peripherals decoding windows 14099eef682SGrzegorz Bernacki * Bit in ATTR is zeroed according to CS bank number 14199eef682SGrzegorz Bernacki */ 14299eef682SGrzegorz Bernacki #define MV_WIN_DDR_ATTR(cs) (0x0F & ~(0x01 << (cs))) 14399eef682SGrzegorz Bernacki #define MV_WIN_DDR_TARGET 0x0 14485fc5c3bSMarcel Moolenaar 145091cd2f1SMarcin Wojtas #define MV_WIN_CESA_TARGET 3 146091cd2f1SMarcin Wojtas #define MV_WIN_CESA_ATTR(eng_sel) 0 147091cd2f1SMarcin Wojtas 148091cd2f1SMarcin Wojtas #define MV_WIN_CESA_TARGET_ARMADAXP 9 14999eef682SGrzegorz Bernacki /* 15099eef682SGrzegorz Bernacki * Bits [2:3] of cesa attribute select engine: 15199eef682SGrzegorz Bernacki * eng_sel: 15299eef682SGrzegorz Bernacki * 1: engine1 15399eef682SGrzegorz Bernacki * 2: engine0 15499eef682SGrzegorz Bernacki */ 155091cd2f1SMarcin Wojtas #define MV_WIN_CESA_ATTR_ARMADAXP(eng_sel) (1 | ((eng_sel) << 2)) 156091cd2f1SMarcin Wojtas #define MV_WIN_CESA_TARGET_ARMADA38X 9 1575d7cb9a8SZbigniew Bodek /* 1585d7cb9a8SZbigniew Bodek * Bits [1:0] = Data swapping 1595d7cb9a8SZbigniew Bodek * 0x0 = Byte swap 1605d7cb9a8SZbigniew Bodek * 0x1 = No swap 1615d7cb9a8SZbigniew Bodek * 0x2 = Byte and word swap 1625d7cb9a8SZbigniew Bodek * 0x3 = Word swap 1635d7cb9a8SZbigniew Bodek * Bits [4:2] = CESA select: 1645d7cb9a8SZbigniew Bodek * 0x6 = CESA0 1655d7cb9a8SZbigniew Bodek * 0x5 = CESA1 1665d7cb9a8SZbigniew Bodek */ 167091cd2f1SMarcin Wojtas #define MV_WIN_CESA_ATTR_ARMADA38X(eng_sel) (0x11 | (1 << (3 - (eng_sel)))) 168fcb93d74SWojciech Macek /* CESA TDMA address decoding registers */ 169fcb93d74SWojciech Macek #define MV_WIN_CESA_CTRL(n) (0x8 * (n) + 0xA04) 170fcb93d74SWojciech Macek #define MV_WIN_CESA_BASE(n) (0x8 * (n) + 0xA00) 171fcb93d74SWojciech Macek #define MV_WIN_CESA_MAX 4 172fcb93d74SWojciech Macek 17316694521SOleksandr Tymoshenko #define MV_WIN_USB_CTRL(n) (0x10 * (n) + 0x320) 17416694521SOleksandr Tymoshenko #define MV_WIN_USB_BASE(n) (0x10 * (n) + 0x324) 17585fc5c3bSMarcel Moolenaar #define MV_WIN_USB_MAX 4 17685fc5c3bSMarcel Moolenaar 177abafc55bSZbigniew Bodek #define MV_WIN_USB3_CTRL(n) (0x8 * (n) + 0x4000) 178abafc55bSZbigniew Bodek #define MV_WIN_USB3_BASE(n) (0x8 * (n) + 0x4004) 17934a3d2c6SWojciech Macek #define MV_WIN_USB3_MAX 8 18034a3d2c6SWojciech Macek 181a8d7fc4aSZbigniew Bodek #define MV_WIN_NETA_OFFSET 0x2000 182a8d7fc4aSZbigniew Bodek #define MV_WIN_NETA_BASE(n) MV_WIN_ETH_BASE(n) + MV_WIN_NETA_OFFSET 183a8d7fc4aSZbigniew Bodek 184*e9e2a7c1SMarcin Wojtas #define MV_WIN_CESA_OFFSET 0x2000 185*e9e2a7c1SMarcin Wojtas 18685fc5c3bSMarcel Moolenaar #define MV_WIN_ETH_BASE(n) (0x8 * (n) + 0x200) 18785fc5c3bSMarcel Moolenaar #define MV_WIN_ETH_SIZE(n) (0x8 * (n) + 0x204) 18885fc5c3bSMarcel Moolenaar #define MV_WIN_ETH_REMAP(n) (0x4 * (n) + 0x280) 18985fc5c3bSMarcel Moolenaar #define MV_WIN_ETH_MAX 6 19085fc5c3bSMarcel Moolenaar 19185fc5c3bSMarcel Moolenaar #define MV_WIN_IDMA_BASE(n) (0x8 * (n) + 0xa00) 19285fc5c3bSMarcel Moolenaar #define MV_WIN_IDMA_SIZE(n) (0x8 * (n) + 0xa04) 19385fc5c3bSMarcel Moolenaar #define MV_WIN_IDMA_REMAP(n) (0x4 * (n) + 0xa60) 19485fc5c3bSMarcel Moolenaar #define MV_WIN_IDMA_CAP(n) (0x4 * (n) + 0xa70) 19585fc5c3bSMarcel Moolenaar #define MV_WIN_IDMA_MAX 8 19685fc5c3bSMarcel Moolenaar #define MV_IDMA_CHAN_MAX 4 19785fc5c3bSMarcel Moolenaar 19885fc5c3bSMarcel Moolenaar #define MV_WIN_XOR_BASE(n, m) (0x4 * (n) + 0xa50 + (m) * 0x100) 19985fc5c3bSMarcel Moolenaar #define MV_WIN_XOR_SIZE(n, m) (0x4 * (n) + 0xa70 + (m) * 0x100) 20085fc5c3bSMarcel Moolenaar #define MV_WIN_XOR_REMAP(n, m) (0x4 * (n) + 0xa90 + (m) * 0x100) 20185fc5c3bSMarcel Moolenaar #define MV_WIN_XOR_CTRL(n, m) (0x4 * (n) + 0xa40 + (m) * 0x100) 20285fc5c3bSMarcel Moolenaar #define MV_WIN_XOR_OVERR(n, m) (0x4 * (n) + 0xaa0 + (m) * 0x100) 20385fc5c3bSMarcel Moolenaar #define MV_WIN_XOR_MAX 8 20485fc5c3bSMarcel Moolenaar #define MV_XOR_CHAN_MAX 2 20585fc5c3bSMarcel Moolenaar #define MV_XOR_NON_REMAP 4 20685fc5c3bSMarcel Moolenaar 207fefc2cf7SMarcin Wojtas #define MV_WIN_PCIE_TARGET_ARMADAXP(n) (4 + (4 * ((n) % 2))) 208fefc2cf7SMarcin Wojtas #define MV_WIN_PCIE_MEM_ATTR_ARMADAXP(n) (0xE8 + (0x10 * ((n) / 2))) 209fefc2cf7SMarcin Wojtas #define MV_WIN_PCIE_IO_ATTR_ARMADAXP(n) (0xE0 + (0x10 * ((n) / 2))) 210fefc2cf7SMarcin Wojtas #define MV_WIN_PCIE_TARGET_ARMADA38X(n) ((n) == 0 ? 8 : 4) 211fefc2cf7SMarcin Wojtas #define MV_WIN_PCIE_MEM_ATTR_ARMADA38X(n) ((n) < 2 ? 0xE8 : (0xD8 - (((n) % 2) * 0x20))) 212fefc2cf7SMarcin Wojtas #define MV_WIN_PCIE_IO_ATTR_ARMADA38X(n) ((n) < 2 ? 0xE0 : (0xD0 - (((n) % 2) * 0x20))) 213fefc2cf7SMarcin Wojtas #define MV_WIN_PCIE_TARGET(n) (4 + (4 * ((n) % 2))) 214fefc2cf7SMarcin Wojtas #define MV_WIN_PCIE_MEM_ATTR(n) (0xE8 + (0x10 * ((n) / 2))) 215fefc2cf7SMarcin Wojtas #define MV_WIN_PCIE_IO_ATTR(n) (0xE0 + (0x10 * ((n) / 2))) 216db5ef4fcSRafal Jaworowski 217e3ac9753SGrzegorz Bernacki #define MV_WIN_PCI_TARGET 3 218e3ac9753SGrzegorz Bernacki #define MV_WIN_PCI_MEM_ATTR 0x59 219e3ac9753SGrzegorz Bernacki #define MV_WIN_PCI_IO_ATTR 0x51 220e3ac9753SGrzegorz Bernacki 22185fc5c3bSMarcel Moolenaar #define MV_WIN_PCIE_CTRL(n) (0x10 * (((n) < 5) ? (n) : \ 22285fc5c3bSMarcel Moolenaar (n) + 1) + 0x1820) 22385fc5c3bSMarcel Moolenaar #define MV_WIN_PCIE_BASE(n) (0x10 * (((n) < 5) ? (n) : \ 22485fc5c3bSMarcel Moolenaar (n) + 1) + 0x1824) 22585fc5c3bSMarcel Moolenaar #define MV_WIN_PCIE_REMAP(n) (0x10 * (((n) < 5) ? (n) : \ 22685fc5c3bSMarcel Moolenaar (n) + 1) + 0x182C) 22785fc5c3bSMarcel Moolenaar #define MV_WIN_PCIE_MAX 6 22885fc5c3bSMarcel Moolenaar 22916694521SOleksandr Tymoshenko #define MV_PCIE_BAR_CTRL(n) (0x04 * (n) + 0x1800) 23016694521SOleksandr Tymoshenko #define MV_PCIE_BAR_BASE(n) (0x08 * ((n) < 3 ? (n) : 4) + 0x0010) 23116694521SOleksandr Tymoshenko #define MV_PCIE_BAR_BASE_H(n) (0x08 * (n) + 0x0014) 23216694521SOleksandr Tymoshenko #define MV_PCIE_BAR_MAX 4 23316694521SOleksandr Tymoshenko #define MV_PCIE_BAR_64BIT (0x4) 23416694521SOleksandr Tymoshenko #define MV_PCIE_BAR_PREFETCH_EN (0x8) 23516694521SOleksandr Tymoshenko 23616694521SOleksandr Tymoshenko #define MV_PCIE_CONTROL (0x1a00) 23716694521SOleksandr Tymoshenko #define MV_PCIE_ROOT_CMPLX (1 << 1) 23885fc5c3bSMarcel Moolenaar 239091cd2f1SMarcin Wojtas #define MV_WIN_SATA_CTRL_ARMADA38X(n) (0x10 * (n) + 0x60) 240091cd2f1SMarcin Wojtas #define MV_WIN_SATA_BASE_ARMADA38X(n) (0x10 * (n) + 0x64) 241091cd2f1SMarcin Wojtas #define MV_WIN_SATA_SIZE_ARMADA38X(n) (0x10 * (n) + 0x68) 242091cd2f1SMarcin Wojtas #define MV_WIN_SATA_MAX_ARMADA38X 4 24385fc5c3bSMarcel Moolenaar #define MV_WIN_SATA_CTRL(n) (0x10 * (n) + 0x30) 24485fc5c3bSMarcel Moolenaar #define MV_WIN_SATA_BASE(n) (0x10 * (n) + 0x34) 24585fc5c3bSMarcel Moolenaar #define MV_WIN_SATA_MAX 4 24685fc5c3bSMarcel Moolenaar 24798a2d78dSLuiz Otavio O Souza #define MV_WIN_SDHCI_CTRL(n) (0x8 * (n) + 0x4080) 24898a2d78dSLuiz Otavio O Souza #define MV_WIN_SDHCI_BASE(n) (0x8 * (n) + 0x4084) 24998a2d78dSLuiz Otavio O Souza #define MV_WIN_SDHCI_MAX 8 25098a2d78dSLuiz Otavio O Souza 2515b683b6fSZbigniew Bodek #define MV_BOOTROM_MEM_ADDR 0xFFF00000 2525b683b6fSZbigniew Bodek #define MV_BOOTROM_WIN_SIZE 0xF 2535b683b6fSZbigniew Bodek #define MV_CPU_SUBSYS_REGS_LEN 0x100 2545b683b6fSZbigniew Bodek 25546c9254bSZbigniew Bodek #define IO_WIN_9_CTRL_OFFSET 0x98 25646c9254bSZbigniew Bodek #define IO_WIN_9_BASE_OFFSET 0x9C 25746c9254bSZbigniew Bodek 25846c9254bSZbigniew Bodek /* Mbus decoding unit IDs and attributes */ 25946c9254bSZbigniew Bodek #define MBUS_BOOTROM_TGT_ID 0x1 26046c9254bSZbigniew Bodek #define MBUS_BOOTROM_ATTR 0x1D 26146c9254bSZbigniew Bodek 2625b683b6fSZbigniew Bodek /* Internal Units Sync Barrier Control Register */ 2635b683b6fSZbigniew Bodek #define MV_SYNC_BARRIER_CTRL 0x84 2645b683b6fSZbigniew Bodek #define MV_SYNC_BARRIER_CTRL_ALL 0xFFFF 2655b683b6fSZbigniew Bodek 266a5643648SLuiz Otavio O Souza /* IO Window Control Register fields */ 267a5643648SLuiz Otavio O Souza #define IO_WIN_SIZE_SHIFT 16 268a5643648SLuiz Otavio O Souza #define IO_WIN_SIZE_MASK 0xFFFF 269a8d7fc4aSZbigniew Bodek #define IO_WIN_COH_ATTR_MASK (0xF << 12) 270a5643648SLuiz Otavio O Souza #define IO_WIN_ATTR_SHIFT 8 271a5643648SLuiz Otavio O Souza #define IO_WIN_ATTR_MASK 0xFF 272a5643648SLuiz Otavio O Souza #define IO_WIN_TGT_SHIFT 4 273a5643648SLuiz Otavio O Souza #define IO_WIN_TGT_MASK 0xF 274a5643648SLuiz Otavio O Souza #define IO_WIN_SYNC_SHIFT 1 275a5643648SLuiz Otavio O Souza #define IO_WIN_SYNC_MASK 0x1 276a5643648SLuiz Otavio O Souza #define IO_WIN_ENA_SHIFT 0 277a5643648SLuiz Otavio O Souza #define IO_WIN_ENA_MASK 0x1 278a5643648SLuiz Otavio O Souza 27985fc5c3bSMarcel Moolenaar #define WIN_REG_IDX_RD(pre,reg,off,base) \ 28085fc5c3bSMarcel Moolenaar static __inline uint32_t \ 28185fc5c3bSMarcel Moolenaar pre ## _ ## reg ## _read(int i) \ 28285fc5c3bSMarcel Moolenaar { \ 283db5ef4fcSRafal Jaworowski return (bus_space_read_4(fdtbus_bs_tag, base, off(i))); \ 28485fc5c3bSMarcel Moolenaar } 28585fc5c3bSMarcel Moolenaar 28685fc5c3bSMarcel Moolenaar #define WIN_REG_IDX_RD2(pre,reg,off,base) \ 28785fc5c3bSMarcel Moolenaar static __inline uint32_t \ 28885fc5c3bSMarcel Moolenaar pre ## _ ## reg ## _read(int i, int j) \ 28985fc5c3bSMarcel Moolenaar { \ 290db5ef4fcSRafal Jaworowski return (bus_space_read_4(fdtbus_bs_tag, base, off(i, j))); \ 29185fc5c3bSMarcel Moolenaar } \ 29285fc5c3bSMarcel Moolenaar 29385fc5c3bSMarcel Moolenaar #define WIN_REG_BASE_IDX_RD(pre,reg,off) \ 29485fc5c3bSMarcel Moolenaar static __inline uint32_t \ 29585fc5c3bSMarcel Moolenaar pre ## _ ## reg ## _read(uint32_t base, int i) \ 29685fc5c3bSMarcel Moolenaar { \ 297db5ef4fcSRafal Jaworowski return (bus_space_read_4(fdtbus_bs_tag, base, off(i))); \ 298db5ef4fcSRafal Jaworowski } 299db5ef4fcSRafal Jaworowski 300db5ef4fcSRafal Jaworowski #define WIN_REG_BASE_IDX_RD2(pre,reg,off) \ 301db5ef4fcSRafal Jaworowski static __inline uint32_t \ 302db5ef4fcSRafal Jaworowski pre ## _ ## reg ## _read(uint32_t base, int i, int j) \ 303db5ef4fcSRafal Jaworowski { \ 304db5ef4fcSRafal Jaworowski return (bus_space_read_4(fdtbus_bs_tag, base, off(i, j))); \ 30585fc5c3bSMarcel Moolenaar } 30685fc5c3bSMarcel Moolenaar 30785fc5c3bSMarcel Moolenaar #define WIN_REG_IDX_WR(pre,reg,off,base) \ 30885fc5c3bSMarcel Moolenaar static __inline void \ 30985fc5c3bSMarcel Moolenaar pre ## _ ## reg ## _write(int i, uint32_t val) \ 31085fc5c3bSMarcel Moolenaar { \ 311db5ef4fcSRafal Jaworowski bus_space_write_4(fdtbus_bs_tag, base, off(i), val); \ 31285fc5c3bSMarcel Moolenaar } 31385fc5c3bSMarcel Moolenaar 31485fc5c3bSMarcel Moolenaar #define WIN_REG_IDX_WR2(pre,reg,off,base) \ 31585fc5c3bSMarcel Moolenaar static __inline void \ 31685fc5c3bSMarcel Moolenaar pre ## _ ## reg ## _write(int i, int j, uint32_t val) \ 31785fc5c3bSMarcel Moolenaar { \ 318db5ef4fcSRafal Jaworowski bus_space_write_4(fdtbus_bs_tag, base, off(i, j), val); \ 31985fc5c3bSMarcel Moolenaar } 32085fc5c3bSMarcel Moolenaar 32185fc5c3bSMarcel Moolenaar #define WIN_REG_BASE_IDX_WR(pre,reg,off) \ 32285fc5c3bSMarcel Moolenaar static __inline void \ 32385fc5c3bSMarcel Moolenaar pre ## _ ## reg ## _write(uint32_t base, int i, uint32_t val) \ 32485fc5c3bSMarcel Moolenaar { \ 325db5ef4fcSRafal Jaworowski bus_space_write_4(fdtbus_bs_tag, base, off(i), val); \ 326db5ef4fcSRafal Jaworowski } 327db5ef4fcSRafal Jaworowski 328db5ef4fcSRafal Jaworowski #define WIN_REG_BASE_IDX_WR2(pre,reg,off) \ 329db5ef4fcSRafal Jaworowski static __inline void \ 330db5ef4fcSRafal Jaworowski pre ## _ ## reg ## _write(uint32_t base, int i, int j, uint32_t val) \ 331db5ef4fcSRafal Jaworowski { \ 332db5ef4fcSRafal Jaworowski bus_space_write_4(fdtbus_bs_tag, base, off(i, j), val); \ 33385fc5c3bSMarcel Moolenaar } 33485fc5c3bSMarcel Moolenaar 33585fc5c3bSMarcel Moolenaar #define WIN_REG_RD(pre,reg,off,base) \ 33685fc5c3bSMarcel Moolenaar static __inline uint32_t \ 33785fc5c3bSMarcel Moolenaar pre ## _ ## reg ## _read(void) \ 33885fc5c3bSMarcel Moolenaar { \ 339db5ef4fcSRafal Jaworowski return (bus_space_read_4(fdtbus_bs_tag, base, off)); \ 34085fc5c3bSMarcel Moolenaar } 34185fc5c3bSMarcel Moolenaar 34285fc5c3bSMarcel Moolenaar #define WIN_REG_BASE_RD(pre,reg,off) \ 34385fc5c3bSMarcel Moolenaar static __inline uint32_t \ 34485fc5c3bSMarcel Moolenaar pre ## _ ## reg ## _read(uint32_t base) \ 34585fc5c3bSMarcel Moolenaar { \ 346db5ef4fcSRafal Jaworowski return (bus_space_read_4(fdtbus_bs_tag, base, off)); \ 34785fc5c3bSMarcel Moolenaar } 34885fc5c3bSMarcel Moolenaar 34985fc5c3bSMarcel Moolenaar #define WIN_REG_WR(pre,reg,off,base) \ 35085fc5c3bSMarcel Moolenaar static __inline void \ 35185fc5c3bSMarcel Moolenaar pre ## _ ## reg ## _write(uint32_t val) \ 35285fc5c3bSMarcel Moolenaar { \ 353db5ef4fcSRafal Jaworowski bus_space_write_4(fdtbus_bs_tag, base, off, val); \ 35485fc5c3bSMarcel Moolenaar } 35585fc5c3bSMarcel Moolenaar 35685fc5c3bSMarcel Moolenaar #define WIN_REG_BASE_WR(pre,reg,off) \ 35785fc5c3bSMarcel Moolenaar static __inline void \ 35885fc5c3bSMarcel Moolenaar pre ## _ ## reg ## _write(uint32_t base, uint32_t val) \ 35985fc5c3bSMarcel Moolenaar { \ 360db5ef4fcSRafal Jaworowski bus_space_write_4(fdtbus_bs_tag, base, off, val); \ 36185fc5c3bSMarcel Moolenaar } 36285fc5c3bSMarcel Moolenaar 36385fc5c3bSMarcel Moolenaar #endif /* _MVWIN_H_ */ 364