Home | History | Annotate | Line # | Download | only in marvell
      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