1 1.13 rin /* $NetBSD: mvsocvar.h,v 1.13 2021/08/30 00:04:30 rin Exp $ */ 2 1.1 kiyohara /* 3 1.1 kiyohara * Copyright (c) 2007, 2010 KIYOHARA Takashi 4 1.1 kiyohara * All rights reserved. 5 1.1 kiyohara * 6 1.1 kiyohara * Redistribution and use in source and binary forms, with or without 7 1.1 kiyohara * modification, are permitted provided that the following conditions 8 1.1 kiyohara * are met: 9 1.1 kiyohara * 1. Redistributions of source code must retain the above copyright 10 1.1 kiyohara * notice, this list of conditions and the following disclaimer. 11 1.1 kiyohara * 2. Redistributions in binary form must reproduce the above copyright 12 1.1 kiyohara * notice, this list of conditions and the following disclaimer in the 13 1.1 kiyohara * documentation and/or other materials provided with the distribution. 14 1.1 kiyohara * 15 1.1 kiyohara * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR 16 1.1 kiyohara * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 17 1.1 kiyohara * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 18 1.1 kiyohara * DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, 19 1.1 kiyohara * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 20 1.1 kiyohara * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 21 1.1 kiyohara * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 22 1.1 kiyohara * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, 23 1.1 kiyohara * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN 24 1.1 kiyohara * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 25 1.1 kiyohara * POSSIBILITY OF SUCH DAMAGE. 26 1.1 kiyohara */ 27 1.1 kiyohara 28 1.1 kiyohara #ifndef _MVSOCVAR_H_ 29 1.1 kiyohara #define _MVSOCVAR_H_ 30 1.1 kiyohara 31 1.2 dyoung #include <sys/bus.h> 32 1.1 kiyohara 33 1.1 kiyohara struct mvsoc_softc { 34 1.1 kiyohara device_t sc_dev; 35 1.1 kiyohara 36 1.1 kiyohara bus_addr_t sc_addr; 37 1.1 kiyohara bus_space_tag_t sc_iot; 38 1.1 kiyohara bus_space_handle_t sc_ioh; 39 1.1 kiyohara bus_dma_tag_t sc_dmat; 40 1.1 kiyohara }; 41 1.1 kiyohara 42 1.1 kiyohara typedef int (*mvsoc_irq_handler_t)(void *); 43 1.1 kiyohara 44 1.1 kiyohara extern uint32_t mvPclk, mvSysclk, mvTclk; 45 1.1 kiyohara extern vaddr_t mlmb_base; 46 1.1 kiyohara extern int nwindow, nremap; 47 1.1 kiyohara extern int gpp_npins, gpp_irqbase; 48 1.1 kiyohara extern struct bus_space mvsoc_bs_tag; 49 1.1 kiyohara extern struct arm32_bus_dma_tag mvsoc_bus_dma_tag; 50 1.5 kiyohara 51 1.13 rin #define read_mlmbreg(o) \ 52 1.13 rin le32toh(*(volatile uint32_t *)(mlmb_base + (o))) 53 1.13 rin #define write_mlmbreg(o, v) \ 54 1.13 rin (*(volatile uint32_t *)(mlmb_base + (o)) = htole32(v)) 55 1.1 kiyohara 56 1.1 kiyohara void mvsoc_bootstrap(bus_addr_t); 57 1.1 kiyohara uint16_t mvsoc_model(void); 58 1.1 kiyohara uint8_t mvsoc_rev(void); 59 1.3 kiyohara void *mvsoc_bridge_intr_establish(int, int, int (*)(void *), void *); 60 1.1 kiyohara 61 1.1 kiyohara #include <dev/marvell/marvellvar.h> 62 1.1 kiyohara 63 1.1 kiyohara enum mvsoc_tags { 64 1.1 kiyohara MVSOC_TAG_INTERNALREG = MARVELL_TAG_MAX, 65 1.1 kiyohara 66 1.1 kiyohara ORION_TAG_PEX0_MEM, 67 1.1 kiyohara ORION_TAG_PEX0_IO, 68 1.1 kiyohara ORION_TAG_PEX1_MEM, 69 1.1 kiyohara ORION_TAG_PEX1_IO, 70 1.1 kiyohara ORION_TAG_PCI_MEM, 71 1.1 kiyohara ORION_TAG_PCI_IO, 72 1.1 kiyohara ORION_TAG_DEVICE_CS0, 73 1.1 kiyohara ORION_TAG_DEVICE_CS1, 74 1.1 kiyohara ORION_TAG_DEVICE_CS2, 75 1.1 kiyohara ORION_TAG_FLASH_CS, 76 1.1 kiyohara ORION_TAG_DEVICE_BOOTCS, 77 1.1 kiyohara ORION_TAG_CRYPT, 78 1.1 kiyohara 79 1.1 kiyohara KIRKWOOD_TAG_PEX_MEM, 80 1.1 kiyohara KIRKWOOD_TAG_PEX_IO, 81 1.3 kiyohara KIRKWOOD_TAG_PEX1_MEM, 82 1.3 kiyohara KIRKWOOD_TAG_PEX1_IO, 83 1.1 kiyohara KIRKWOOD_TAG_NAND, 84 1.1 kiyohara KIRKWOOD_TAG_SPI, 85 1.1 kiyohara KIRKWOOD_TAG_BOOTROM, 86 1.1 kiyohara KIRKWOOD_TAG_CRYPT, 87 1.4 rkujawa 88 1.5 kiyohara MV78XX0_TAG_DEVICE_CS0, 89 1.5 kiyohara MV78XX0_TAG_DEVICE_CS1, 90 1.5 kiyohara MV78XX0_TAG_DEVICE_CS2, 91 1.5 kiyohara MV78XX0_TAG_DEVICE_CS3, 92 1.5 kiyohara MV78XX0_TAG_DEVICE_BOOTCS, 93 1.5 kiyohara MV78XX0_TAG_SPI, 94 1.5 kiyohara MV78XX0_TAG_PEX0_MEM, 95 1.5 kiyohara MV78XX0_TAG_PEX01_MEM, 96 1.5 kiyohara MV78XX0_TAG_PEX02_MEM, 97 1.5 kiyohara MV78XX0_TAG_PEX03_MEM, 98 1.5 kiyohara MV78XX0_TAG_PEX0_IO, 99 1.5 kiyohara MV78XX0_TAG_PEX01_IO, 100 1.5 kiyohara MV78XX0_TAG_PEX02_IO, 101 1.5 kiyohara MV78XX0_TAG_PEX03_IO, 102 1.5 kiyohara MV78XX0_TAG_PEX1_MEM, 103 1.5 kiyohara MV78XX0_TAG_PEX11_MEM, 104 1.5 kiyohara MV78XX0_TAG_PEX12_MEM, 105 1.5 kiyohara MV78XX0_TAG_PEX13_MEM, 106 1.5 kiyohara MV78XX0_TAG_PEX1_IO, 107 1.5 kiyohara MV78XX0_TAG_PEX11_IO, 108 1.5 kiyohara MV78XX0_TAG_PEX12_IO, 109 1.5 kiyohara MV78XX0_TAG_PEX13_IO, 110 1.5 kiyohara MV78XX0_TAG_CRYPT, 111 1.5 kiyohara 112 1.11 kiyohara DOVE_TAG_PEX0_MEM, 113 1.11 kiyohara DOVE_TAG_PEX0_IO, 114 1.11 kiyohara DOVE_TAG_PEX1_MEM, 115 1.11 kiyohara DOVE_TAG_PEX1_IO, 116 1.11 kiyohara DOVE_TAG_CRYPT, 117 1.11 kiyohara DOVE_TAG_SPI0, 118 1.11 kiyohara DOVE_TAG_SPI1, 119 1.11 kiyohara DOVE_TAG_BOOTROM, 120 1.11 kiyohara DOVE_TAG_NAND, 121 1.11 kiyohara DOVE_TAG_PMU, 122 1.11 kiyohara 123 1.4 rkujawa ARMADAXP_TAG_PEX00_MEM, 124 1.4 rkujawa ARMADAXP_TAG_PEX00_IO, 125 1.4 rkujawa ARMADAXP_TAG_PEX01_MEM, 126 1.4 rkujawa ARMADAXP_TAG_PEX01_IO, 127 1.4 rkujawa ARMADAXP_TAG_PEX02_MEM, 128 1.4 rkujawa ARMADAXP_TAG_PEX02_IO, 129 1.4 rkujawa ARMADAXP_TAG_PEX03_MEM, 130 1.4 rkujawa ARMADAXP_TAG_PEX03_IO, 131 1.12 skrll ARMADAXP_TAG_PEX10_MEM, 132 1.12 skrll ARMADAXP_TAG_PEX10_IO, 133 1.12 skrll ARMADAXP_TAG_PEX11_MEM, 134 1.12 skrll ARMADAXP_TAG_PEX11_IO, 135 1.12 skrll ARMADAXP_TAG_PEX12_MEM, 136 1.12 skrll ARMADAXP_TAG_PEX12_IO, 137 1.12 skrll ARMADAXP_TAG_PEX13_MEM, 138 1.12 skrll ARMADAXP_TAG_PEX13_IO, 139 1.4 rkujawa ARMADAXP_TAG_PEX2_MEM, 140 1.4 rkujawa ARMADAXP_TAG_PEX2_IO, 141 1.4 rkujawa ARMADAXP_TAG_PEX3_MEM, 142 1.4 rkujawa ARMADAXP_TAG_PEX3_IO, 143 1.10 hsuenaga ARMADAXP_TAG_CRYPT0, 144 1.10 hsuenaga ARMADAXP_TAG_CRYPT1, 145 1.1 kiyohara }; 146 1.1 kiyohara int mvsoc_target(int, uint32_t *, uint32_t *, uint32_t *, uint32_t *); 147 1.9 hsuenaga int mvsoc_target_dump(struct mvsoc_softc *); 148 1.9 hsuenaga int mvsoc_attr_dump(struct mvsoc_softc *, uint32_t, uint32_t); 149 1.1 kiyohara 150 1.11 kiyohara extern void (*mvsoc_intr_init)(void); 151 1.7 kiyohara extern int (*mvsoc_clkgating)(struct marvell_attach_args *); 152 1.7 kiyohara 153 1.11 kiyohara void orion_bootstrap(vaddr_t); 154 1.11 kiyohara void kirkwood_bootstrap(vaddr_t); 155 1.11 kiyohara void mv78xx0_bootstrap(vaddr_t); 156 1.11 kiyohara void dove_bootstrap(vaddr_t); 157 1.11 kiyohara void armadaxp_bootstrap(vaddr_t, bus_addr_t); 158 1.5 kiyohara 159 1.1 kiyohara #endif /* _MVSOCVAR_H_ */ 160