Home | History | Annotate | Line # | Download | only in marvell
mvsoc.c revision 1.24.2.1
      1  1.24.2.1  pgoyette /*	$NetBSD: mvsoc.c,v 1.24.2.1 2017/03/20 06:57:11 pgoyette Exp $	*/
      2       1.1  kiyohara /*
      3  1.24.2.1  pgoyette  * Copyright (c) 2007, 2008, 2013, 2014, 2016 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 #include <sys/cdefs.h>
     29  1.24.2.1  pgoyette __KERNEL_RCSID(0, "$NetBSD: mvsoc.c,v 1.24.2.1 2017/03/20 06:57:11 pgoyette Exp $");
     30       1.1  kiyohara 
     31       1.1  kiyohara #include "opt_cputypes.h"
     32       1.1  kiyohara #include "opt_mvsoc.h"
     33      1.21  hsuenaga #ifdef ARMADAXP
     34      1.19  hsuenaga #include "mvxpe.h"
     35      1.23  hsuenaga #include "mvxpsec.h"
     36      1.21  hsuenaga #endif
     37       1.1  kiyohara 
     38       1.1  kiyohara #include <sys/param.h>
     39      1.21  hsuenaga #include <sys/boot_flag.h>
     40      1.21  hsuenaga #include <sys/systm.h>
     41       1.1  kiyohara #include <sys/bus.h>
     42       1.1  kiyohara #include <sys/device.h>
     43       1.1  kiyohara #include <sys/errno.h>
     44       1.1  kiyohara 
     45       1.1  kiyohara #include <dev/pci/pcidevs.h>
     46       1.1  kiyohara #include <dev/pci/pcireg.h>
     47       1.1  kiyohara #include <dev/marvell/marvellreg.h>
     48       1.1  kiyohara #include <dev/marvell/marvellvar.h>
     49       1.1  kiyohara 
     50       1.1  kiyohara #include <arm/marvell/mvsocreg.h>
     51       1.1  kiyohara #include <arm/marvell/mvsocvar.h>
     52       1.1  kiyohara #include <arm/marvell/orionreg.h>
     53       1.1  kiyohara #include <arm/marvell/kirkwoodreg.h>
     54      1.13  kiyohara #include <arm/marvell/mv78xx0reg.h>
     55  1.24.2.1  pgoyette #include <arm/marvell/dovereg.h>
     56      1.21  hsuenaga #include <arm/marvell/armadaxpvar.h>
     57      1.13  kiyohara #include <arm/marvell/armadaxpreg.h>
     58       1.1  kiyohara 
     59      1.13  kiyohara #include <uvm/uvm.h>
     60      1.11   rkujawa 
     61       1.1  kiyohara #include "locators.h"
     62       1.1  kiyohara 
     63       1.9      matt #ifdef MVSOC_CONSOLE_EARLY
     64       1.9      matt #include <dev/ic/ns16550reg.h>
     65       1.9      matt #include <dev/ic/comreg.h>
     66       1.9      matt #include <dev/cons.h>
     67       1.9      matt #endif
     68       1.1  kiyohara 
     69       1.1  kiyohara static int mvsoc_match(device_t, struct cfdata *, void *);
     70       1.1  kiyohara static void mvsoc_attach(device_t, device_t, void *);
     71       1.1  kiyohara 
     72       1.1  kiyohara static int mvsoc_print(void *, const char *);
     73       1.1  kiyohara static int mvsoc_search(device_t, cfdata_t, const int *, void *);
     74       1.1  kiyohara 
     75      1.17  kiyohara static int mvsoc_target_ddr(uint32_t, uint32_t *, uint32_t *);
     76      1.17  kiyohara static int mvsoc_target_ddr3(uint32_t, uint32_t *, uint32_t *);
     77  1.24.2.1  pgoyette static int mvsoc_target_axi(int, uint32_t *, uint32_t *);
     78      1.17  kiyohara static int mvsoc_target_peripheral(uint32_t, uint32_t, uint32_t *, uint32_t *);
     79      1.17  kiyohara 
     80       1.1  kiyohara uint32_t mvPclk, mvSysclk, mvTclk = 0;
     81       1.1  kiyohara int nwindow = 0, nremap = 0;
     82       1.1  kiyohara static vaddr_t regbase = 0xffffffff, dsc_base, pex_base;
     83       1.1  kiyohara vaddr_t mlmb_base;
     84       1.1  kiyohara 
     85       1.1  kiyohara void (*mvsoc_intr_init)(void);
     86      1.16  kiyohara int (*mvsoc_clkgating)(struct marvell_attach_args *);
     87       1.1  kiyohara 
     88       1.1  kiyohara 
     89       1.9      matt #ifdef MVSOC_CONSOLE_EARLY
     90       1.9      matt static vaddr_t com_base;
     91       1.9      matt 
     92       1.9      matt static inline uint32_t
     93       1.9      matt uart_read(bus_size_t o)
     94       1.9      matt {
     95       1.9      matt 	return *(volatile uint32_t *)(com_base + (o << 2));
     96       1.9      matt }
     97       1.9      matt 
     98       1.9      matt static inline void
     99       1.9      matt uart_write(bus_size_t o, uint32_t v)
    100       1.9      matt {
    101       1.9      matt 	*(volatile uint32_t *)(com_base + (o << 2)) = v;
    102       1.9      matt }
    103       1.9      matt 
    104       1.9      matt static int
    105       1.9      matt mvsoc_cngetc(dev_t dv)
    106       1.9      matt {
    107       1.9      matt         if ((uart_read(com_lsr) & LSR_RXRDY) == 0)
    108       1.9      matt 		return -1;
    109       1.9      matt 
    110       1.9      matt 	return uart_read(com_data) & 0xff;
    111       1.9      matt }
    112       1.9      matt 
    113       1.9      matt static void
    114       1.9      matt mvsoc_cnputc(dev_t dv, int c)
    115       1.9      matt {
    116       1.9      matt 	int timo = 150000;
    117       1.9      matt 
    118       1.9      matt         while ((uart_read(com_lsr) & LSR_TXRDY) == 0 && --timo > 0)
    119       1.9      matt 		;
    120       1.9      matt 
    121       1.9      matt 	uart_write(com_data, c);
    122       1.9      matt 
    123       1.9      matt 	timo = 150000;
    124       1.9      matt         while ((uart_read(com_lsr) & LSR_TSRE) == 0 && --timo > 0)
    125       1.9      matt 		;
    126       1.9      matt }
    127       1.9      matt 
    128       1.9      matt static struct consdev mvsoc_earlycons = {
    129       1.9      matt 	.cn_putc = mvsoc_cnputc,
    130       1.9      matt 	.cn_getc = mvsoc_cngetc,
    131       1.9      matt 	.cn_pollc = nullcnpollc,
    132       1.9      matt };
    133       1.9      matt #endif
    134       1.9      matt 
    135       1.9      matt 
    136       1.1  kiyohara /* attributes */
    137       1.1  kiyohara static struct {
    138       1.1  kiyohara 	int tag;
    139       1.1  kiyohara 	uint32_t attr;
    140       1.1  kiyohara 	uint32_t target;
    141       1.1  kiyohara } mvsoc_tags[] = {
    142       1.1  kiyohara 	{ MARVELL_TAG_SDRAM_CS0,
    143       1.1  kiyohara 	  MARVELL_ATTR_SDRAM_CS0,	MVSOC_UNITID_DDR },
    144       1.1  kiyohara 	{ MARVELL_TAG_SDRAM_CS1,
    145       1.1  kiyohara 	  MARVELL_ATTR_SDRAM_CS1,	MVSOC_UNITID_DDR },
    146       1.1  kiyohara 	{ MARVELL_TAG_SDRAM_CS2,
    147       1.1  kiyohara 	  MARVELL_ATTR_SDRAM_CS2,	MVSOC_UNITID_DDR },
    148       1.1  kiyohara 	{ MARVELL_TAG_SDRAM_CS3,
    149       1.1  kiyohara 	  MARVELL_ATTR_SDRAM_CS3,	MVSOC_UNITID_DDR },
    150       1.1  kiyohara 
    151  1.24.2.1  pgoyette 	{ MARVELL_TAG_AXI_CS0,
    152  1.24.2.1  pgoyette 	  MARVELL_ATTR_AXI_DDR,		MVSOC_UNITID_DDR },
    153  1.24.2.1  pgoyette 	{ MARVELL_TAG_AXI_CS1,
    154  1.24.2.1  pgoyette 	  MARVELL_ATTR_AXI_DDR,		MVSOC_UNITID_DDR },
    155  1.24.2.1  pgoyette 
    156      1.17  kiyohara 	{ MARVELL_TAG_DDR3_CS0,
    157      1.17  kiyohara 	  MARVELL_ATTR_SDRAM_CS0,	MVSOC_UNITID_DDR },
    158      1.17  kiyohara 	{ MARVELL_TAG_DDR3_CS1,
    159      1.17  kiyohara 	  MARVELL_ATTR_SDRAM_CS1,	MVSOC_UNITID_DDR },
    160      1.17  kiyohara 	{ MARVELL_TAG_DDR3_CS2,
    161      1.17  kiyohara 	  MARVELL_ATTR_SDRAM_CS2,	MVSOC_UNITID_DDR },
    162      1.17  kiyohara 	{ MARVELL_TAG_DDR3_CS3,
    163      1.17  kiyohara 	  MARVELL_ATTR_SDRAM_CS3,	MVSOC_UNITID_DDR },
    164      1.17  kiyohara 
    165       1.1  kiyohara #if defined(ORION)
    166       1.1  kiyohara 	{ ORION_TAG_DEVICE_CS0,
    167       1.1  kiyohara 	  ORION_ATTR_DEVICE_CS0,	MVSOC_UNITID_DEVBUS },
    168       1.1  kiyohara 	{ ORION_TAG_DEVICE_CS1,
    169       1.1  kiyohara 	  ORION_ATTR_DEVICE_CS1,	MVSOC_UNITID_DEVBUS },
    170       1.1  kiyohara 	{ ORION_TAG_DEVICE_CS2,
    171       1.1  kiyohara 	  ORION_ATTR_DEVICE_CS2,	MVSOC_UNITID_DEVBUS },
    172       1.1  kiyohara 	{ ORION_TAG_DEVICE_BOOTCS,
    173       1.1  kiyohara 	  ORION_ATTR_BOOT_CS,		MVSOC_UNITID_DEVBUS },
    174       1.1  kiyohara 	{ ORION_TAG_FLASH_CS,
    175       1.1  kiyohara 	  ORION_ATTR_FLASH_CS,		MVSOC_UNITID_DEVBUS },
    176       1.1  kiyohara 	{ ORION_TAG_PEX0_MEM,
    177       1.6  kiyohara 	  ORION_ATTR_PEX_MEM,		MVSOC_UNITID_PEX },
    178       1.1  kiyohara 	{ ORION_TAG_PEX0_IO,
    179       1.6  kiyohara 	  ORION_ATTR_PEX_IO,		MVSOC_UNITID_PEX },
    180       1.1  kiyohara 	{ ORION_TAG_PEX1_MEM,
    181       1.1  kiyohara 	  ORION_ATTR_PEX_MEM,		ORION_UNITID_PEX1 },
    182       1.1  kiyohara 	{ ORION_TAG_PEX1_IO,
    183       1.1  kiyohara 	  ORION_ATTR_PEX_IO,		ORION_UNITID_PEX1 },
    184       1.1  kiyohara 	{ ORION_TAG_PCI_MEM,
    185       1.1  kiyohara 	  ORION_ATTR_PCI_MEM,		ORION_UNITID_PCI },
    186       1.1  kiyohara 	{ ORION_TAG_PCI_IO,
    187       1.1  kiyohara 	  ORION_ATTR_PCI_IO,		ORION_UNITID_PCI },
    188       1.1  kiyohara 	{ ORION_TAG_CRYPT,
    189       1.1  kiyohara 	  ORION_ATTR_CRYPT,		ORION_UNITID_CRYPT },
    190       1.1  kiyohara #endif
    191       1.1  kiyohara 
    192       1.1  kiyohara #if defined(KIRKWOOD)
    193       1.1  kiyohara 	{ KIRKWOOD_TAG_NAND,
    194       1.1  kiyohara 	  KIRKWOOD_ATTR_NAND,		MVSOC_UNITID_DEVBUS },
    195       1.1  kiyohara 	{ KIRKWOOD_TAG_SPI,
    196       1.1  kiyohara 	  KIRKWOOD_ATTR_SPI,		MVSOC_UNITID_DEVBUS },
    197       1.1  kiyohara 	{ KIRKWOOD_TAG_BOOTROM,
    198       1.1  kiyohara 	  KIRKWOOD_ATTR_BOOTROM,	MVSOC_UNITID_DEVBUS },
    199       1.1  kiyohara 	{ KIRKWOOD_TAG_PEX_MEM,
    200       1.6  kiyohara 	  KIRKWOOD_ATTR_PEX_MEM,	MVSOC_UNITID_PEX },
    201       1.1  kiyohara 	{ KIRKWOOD_TAG_PEX_IO,
    202       1.6  kiyohara 	  KIRKWOOD_ATTR_PEX_IO,		MVSOC_UNITID_PEX },
    203       1.6  kiyohara 	{ KIRKWOOD_TAG_PEX1_MEM,
    204       1.6  kiyohara 	  KIRKWOOD_ATTR_PEX1_MEM,	MVSOC_UNITID_PEX },
    205       1.6  kiyohara 	{ KIRKWOOD_TAG_PEX1_IO,
    206       1.6  kiyohara 	  KIRKWOOD_ATTR_PEX1_IO,	MVSOC_UNITID_PEX },
    207       1.1  kiyohara 	{ KIRKWOOD_TAG_CRYPT,
    208       1.1  kiyohara 	  KIRKWOOD_ATTR_CRYPT,		KIRKWOOD_UNITID_CRYPT },
    209       1.1  kiyohara #endif
    210      1.13  kiyohara 
    211      1.13  kiyohara #if defined(MV78XX0)
    212      1.13  kiyohara 	{ MV78XX0_TAG_DEVICE_CS0,
    213      1.13  kiyohara 	  MV78XX0_ATTR_DEVICE_CS0,	MVSOC_UNITID_DEVBUS },
    214      1.13  kiyohara 	{ MV78XX0_TAG_DEVICE_CS1,
    215      1.13  kiyohara 	  MV78XX0_ATTR_DEVICE_CS1,	MVSOC_UNITID_DEVBUS },
    216      1.13  kiyohara 	{ MV78XX0_TAG_DEVICE_CS2,
    217      1.13  kiyohara 	  MV78XX0_ATTR_DEVICE_CS2,	MVSOC_UNITID_DEVBUS },
    218      1.13  kiyohara 	{ MV78XX0_TAG_DEVICE_CS3,
    219      1.13  kiyohara 	  MV78XX0_ATTR_DEVICE_CS3,	MVSOC_UNITID_DEVBUS },
    220      1.13  kiyohara 	{ MV78XX0_TAG_DEVICE_BOOTCS,
    221      1.13  kiyohara 	  MV78XX0_ATTR_BOOT_CS,		MVSOC_UNITID_DEVBUS },
    222      1.13  kiyohara 	{ MV78XX0_TAG_SPI,
    223      1.13  kiyohara 	  MV78XX0_ATTR_SPI,		MVSOC_UNITID_DEVBUS },
    224      1.13  kiyohara 	{ MV78XX0_TAG_PEX0_MEM,
    225      1.13  kiyohara 	  MV78XX0_ATTR_PEX_0_MEM,	MVSOC_UNITID_PEX },
    226      1.13  kiyohara 	{ MV78XX0_TAG_PEX01_MEM,
    227      1.13  kiyohara 	  MV78XX0_ATTR_PEX_1_MEM,	MVSOC_UNITID_PEX },
    228      1.13  kiyohara 	{ MV78XX0_TAG_PEX02_MEM,
    229      1.13  kiyohara 	  MV78XX0_ATTR_PEX_2_MEM,	MVSOC_UNITID_PEX },
    230      1.13  kiyohara 	{ MV78XX0_TAG_PEX03_MEM,
    231      1.13  kiyohara 	  MV78XX0_ATTR_PEX_3_MEM,	MVSOC_UNITID_PEX },
    232      1.13  kiyohara 	{ MV78XX0_TAG_PEX0_IO,
    233      1.13  kiyohara 	  MV78XX0_ATTR_PEX_0_IO,	MVSOC_UNITID_PEX },
    234      1.13  kiyohara 	{ MV78XX0_TAG_PEX01_IO,
    235      1.13  kiyohara 	  MV78XX0_ATTR_PEX_1_IO,	MVSOC_UNITID_PEX },
    236      1.13  kiyohara 	{ MV78XX0_TAG_PEX02_IO,
    237      1.13  kiyohara 	  MV78XX0_ATTR_PEX_2_IO,	MVSOC_UNITID_PEX },
    238      1.13  kiyohara 	{ MV78XX0_TAG_PEX03_IO,
    239      1.13  kiyohara 	  MV78XX0_ATTR_PEX_3_IO,	MVSOC_UNITID_PEX },
    240      1.13  kiyohara 	{ MV78XX0_TAG_PEX1_MEM,
    241      1.13  kiyohara 	  MV78XX0_ATTR_PEX_0_MEM,	MV78XX0_UNITID_PEX1 },
    242      1.13  kiyohara 	{ MV78XX0_TAG_PEX11_MEM,
    243      1.13  kiyohara 	  MV78XX0_ATTR_PEX_1_MEM,	MV78XX0_UNITID_PEX1 },
    244      1.13  kiyohara 	{ MV78XX0_TAG_PEX12_MEM,
    245      1.13  kiyohara 	  MV78XX0_ATTR_PEX_2_MEM,	MV78XX0_UNITID_PEX1 },
    246      1.13  kiyohara 	{ MV78XX0_TAG_PEX13_MEM,
    247      1.13  kiyohara 	  MV78XX0_ATTR_PEX_3_MEM,	MV78XX0_UNITID_PEX1 },
    248      1.13  kiyohara 	{ MV78XX0_TAG_PEX1_IO,
    249      1.13  kiyohara 	  MV78XX0_ATTR_PEX_0_IO,	MV78XX0_UNITID_PEX1 },
    250      1.13  kiyohara 	{ MV78XX0_TAG_PEX11_IO,
    251      1.13  kiyohara 	  MV78XX0_ATTR_PEX_1_IO,	MV78XX0_UNITID_PEX1 },
    252      1.13  kiyohara 	{ MV78XX0_TAG_PEX12_IO,
    253      1.13  kiyohara 	  MV78XX0_ATTR_PEX_2_IO,	MV78XX0_UNITID_PEX1 },
    254      1.13  kiyohara 	{ MV78XX0_TAG_PEX13_IO,
    255      1.13  kiyohara 	  MV78XX0_ATTR_PEX_3_IO,	MV78XX0_UNITID_PEX1 },
    256      1.13  kiyohara 	{ MV78XX0_TAG_CRYPT,
    257      1.13  kiyohara 	  MV78XX0_ATTR_CRYPT,		MV78XX0_UNITID_CRYPT },
    258      1.13  kiyohara #endif
    259      1.13  kiyohara 
    260  1.24.2.1  pgoyette #if defined(DOVE)
    261  1.24.2.1  pgoyette 	{ DOVE_TAG_PEX0_MEM,
    262  1.24.2.1  pgoyette 	  DOVE_ATTR_PEX_MEM,		MVSOC_UNITID_PEX },
    263  1.24.2.1  pgoyette 	{ DOVE_TAG_PEX0_IO,
    264  1.24.2.1  pgoyette 	  DOVE_ATTR_PEX_IO,		MVSOC_UNITID_PEX },
    265  1.24.2.1  pgoyette 	{ DOVE_TAG_PEX1_MEM,
    266  1.24.2.1  pgoyette 	  DOVE_ATTR_PEX_MEM,		DOVE_UNITID_PEX1 },
    267  1.24.2.1  pgoyette 	{ DOVE_TAG_PEX1_IO,
    268  1.24.2.1  pgoyette 	  DOVE_ATTR_PEX_IO,		DOVE_UNITID_PEX1 },
    269  1.24.2.1  pgoyette 	{ DOVE_TAG_CRYPT,
    270  1.24.2.1  pgoyette 	  DOVE_ATTR_SA,			DOVE_UNITID_SA },
    271  1.24.2.1  pgoyette 	{ DOVE_TAG_SPI0,
    272  1.24.2.1  pgoyette 	  DOVE_ATTR_SPI0,		MVSOC_UNITID_DEVBUS },
    273  1.24.2.1  pgoyette 	{ DOVE_TAG_SPI1,
    274  1.24.2.1  pgoyette 	  DOVE_ATTR_SPI1,		MVSOC_UNITID_DEVBUS },
    275  1.24.2.1  pgoyette 	{ DOVE_TAG_BOOTROM,
    276  1.24.2.1  pgoyette 	  DOVE_ATTR_BOOTROM,		MVSOC_UNITID_DEVBUS },
    277  1.24.2.1  pgoyette 	{ DOVE_TAG_PMU,
    278  1.24.2.1  pgoyette 	  DOVE_ATTR_NAND,		DOVE_UNITID_NAND },
    279  1.24.2.1  pgoyette 	{ DOVE_TAG_PMU,
    280  1.24.2.1  pgoyette 	  DOVE_ATTR_PMU,		DOVE_UNITID_PMU },
    281  1.24.2.1  pgoyette #endif
    282  1.24.2.1  pgoyette 
    283      1.11   rkujawa #if defined(ARMADAXP)
    284      1.11   rkujawa 	{ ARMADAXP_TAG_PEX00_MEM,
    285      1.11   rkujawa 	  ARMADAXP_ATTR_PEXx0_MEM,	ARMADAXP_UNITID_PEX0 },
    286      1.11   rkujawa 	{ ARMADAXP_TAG_PEX00_IO,
    287      1.11   rkujawa 	  ARMADAXP_ATTR_PEXx0_IO,	ARMADAXP_UNITID_PEX0 },
    288  1.24.2.1  pgoyette 
    289      1.11   rkujawa 	{ ARMADAXP_TAG_PEX01_MEM,
    290      1.11   rkujawa 	  ARMADAXP_ATTR_PEXx1_MEM,	ARMADAXP_UNITID_PEX0 },
    291      1.11   rkujawa 	{ ARMADAXP_TAG_PEX01_IO,
    292      1.11   rkujawa 	  ARMADAXP_ATTR_PEXx1_IO,	ARMADAXP_UNITID_PEX0 },
    293  1.24.2.1  pgoyette 
    294      1.11   rkujawa 	{ ARMADAXP_TAG_PEX02_MEM,
    295      1.11   rkujawa 	  ARMADAXP_ATTR_PEXx2_MEM,	ARMADAXP_UNITID_PEX0 },
    296      1.11   rkujawa 	{ ARMADAXP_TAG_PEX02_IO,
    297      1.11   rkujawa 	  ARMADAXP_ATTR_PEXx2_IO,	ARMADAXP_UNITID_PEX0 },
    298  1.24.2.1  pgoyette 
    299      1.11   rkujawa 	{ ARMADAXP_TAG_PEX03_MEM,
    300      1.11   rkujawa 	  ARMADAXP_ATTR_PEXx3_MEM,	ARMADAXP_UNITID_PEX0 },
    301      1.11   rkujawa 	{ ARMADAXP_TAG_PEX03_IO,
    302      1.11   rkujawa 	  ARMADAXP_ATTR_PEXx3_IO,	ARMADAXP_UNITID_PEX0 },
    303  1.24.2.1  pgoyette 
    304  1.24.2.1  pgoyette 	{ ARMADAXP_TAG_PEX10_MEM,
    305  1.24.2.1  pgoyette 	  ARMADAXP_ATTR_PEXx0_MEM,	ARMADAXP_UNITID_PEX1 },
    306  1.24.2.1  pgoyette 	{ ARMADAXP_TAG_PEX10_IO,
    307  1.24.2.1  pgoyette 	  ARMADAXP_ATTR_PEXx0_IO,	ARMADAXP_UNITID_PEX1 },
    308  1.24.2.1  pgoyette 
    309  1.24.2.1  pgoyette 	{ ARMADAXP_TAG_PEX11_MEM,
    310  1.24.2.1  pgoyette 	  ARMADAXP_ATTR_PEXx1_MEM,	ARMADAXP_UNITID_PEX1 },
    311  1.24.2.1  pgoyette 	{ ARMADAXP_TAG_PEX11_IO,
    312  1.24.2.1  pgoyette 	  ARMADAXP_ATTR_PEXx1_IO,	ARMADAXP_UNITID_PEX1 },
    313  1.24.2.1  pgoyette 
    314  1.24.2.1  pgoyette 	{ ARMADAXP_TAG_PEX12_MEM,
    315  1.24.2.1  pgoyette 	  ARMADAXP_ATTR_PEXx2_MEM,	ARMADAXP_UNITID_PEX1 },
    316  1.24.2.1  pgoyette 	{ ARMADAXP_TAG_PEX12_IO,
    317  1.24.2.1  pgoyette 	  ARMADAXP_ATTR_PEXx2_IO,	ARMADAXP_UNITID_PEX1 },
    318  1.24.2.1  pgoyette 
    319  1.24.2.1  pgoyette 	{ ARMADAXP_TAG_PEX13_MEM,
    320  1.24.2.1  pgoyette 	  ARMADAXP_ATTR_PEXx3_MEM,	ARMADAXP_UNITID_PEX1 },
    321  1.24.2.1  pgoyette 	{ ARMADAXP_TAG_PEX13_IO,
    322  1.24.2.1  pgoyette 	  ARMADAXP_ATTR_PEXx3_IO,	ARMADAXP_UNITID_PEX1 },
    323  1.24.2.1  pgoyette 
    324      1.11   rkujawa 	{ ARMADAXP_TAG_PEX2_MEM,
    325      1.11   rkujawa 	  ARMADAXP_ATTR_PEX2_MEM,	ARMADAXP_UNITID_PEX2 },
    326      1.11   rkujawa 	{ ARMADAXP_TAG_PEX2_IO,
    327      1.11   rkujawa 	  ARMADAXP_ATTR_PEX2_IO,	ARMADAXP_UNITID_PEX2 },
    328  1.24.2.1  pgoyette 
    329      1.11   rkujawa 	{ ARMADAXP_TAG_PEX3_MEM,
    330      1.11   rkujawa 	  ARMADAXP_ATTR_PEX3_MEM,	ARMADAXP_UNITID_PEX3 },
    331      1.11   rkujawa 	{ ARMADAXP_TAG_PEX3_IO,
    332      1.11   rkujawa 	  ARMADAXP_ATTR_PEX3_IO,	ARMADAXP_UNITID_PEX3 },
    333  1.24.2.1  pgoyette 
    334      1.23  hsuenaga 	{ ARMADAXP_TAG_CRYPT0,
    335      1.23  hsuenaga 	  ARMADAXP_ATTR_CRYPT0_NOSWAP,	ARMADAXP_UNITID_CRYPT },
    336      1.23  hsuenaga 	{ ARMADAXP_TAG_CRYPT1,
    337      1.23  hsuenaga 	  ARMADAXP_ATTR_CRYPT1_NOSWAP,	ARMADAXP_UNITID_CRYPT },
    338      1.11   rkujawa #endif
    339       1.1  kiyohara };
    340       1.1  kiyohara 
    341       1.1  kiyohara #if defined(ORION)
    342       1.1  kiyohara #define ORION_1(m)	MARVELL_ORION_1_ ## m
    343       1.1  kiyohara #define ORION_2(m)	MARVELL_ORION_2_ ## m
    344       1.1  kiyohara #endif
    345       1.1  kiyohara #if defined(KIRKWOOD)
    346       1.1  kiyohara #undef KIRKWOOD
    347       1.1  kiyohara #define KIRKWOOD(m)	MARVELL_KIRKWOOD_ ## m
    348       1.1  kiyohara #endif
    349       1.1  kiyohara #if defined(MV78XX0)
    350       1.1  kiyohara #undef MV78XX0
    351       1.1  kiyohara #define MV78XX0(m)	MARVELL_MV78XX0_ ## m
    352       1.1  kiyohara #endif
    353  1.24.2.1  pgoyette #if defined(DOVE)
    354  1.24.2.1  pgoyette #undef DOVE
    355  1.24.2.1  pgoyette #define DOVE(m)		MARVELL_DOVE_ ## m
    356  1.24.2.1  pgoyette #endif
    357      1.18  kiyohara #if defined(ARMADAXP)
    358      1.18  kiyohara #undef ARMADAXP
    359      1.18  kiyohara #define ARMADAXP(m)	MARVELL_ARMADAXP_ ## m
    360      1.18  kiyohara #define ARMADA370(m)	MARVELL_ARMADA370_ ## m
    361      1.18  kiyohara #endif
    362       1.1  kiyohara static struct {
    363       1.1  kiyohara 	uint16_t model;
    364       1.1  kiyohara 	uint8_t rev;
    365       1.1  kiyohara 	const char *modelstr;
    366       1.1  kiyohara 	const char *revstr;
    367       1.1  kiyohara 	const char *typestr;
    368       1.1  kiyohara } nametbl[] = {
    369       1.1  kiyohara #if defined(ORION)
    370       1.1  kiyohara 	{ ORION_1(88F1181),	0, "MV88F1181", NULL,	"Orion1" },
    371       1.1  kiyohara 	{ ORION_1(88F5082),	2, "MV88F5082", "A2",	"Orion1" },
    372       1.1  kiyohara 	{ ORION_1(88F5180N),	3, "MV88F5180N","B1",	"Orion1" },
    373       1.1  kiyohara 	{ ORION_1(88F5181),	0, "MV88F5181",	"A0",	"Orion1" },
    374       1.1  kiyohara 	{ ORION_1(88F5181),	1, "MV88F5181",	"A1",	"Orion1" },
    375       1.1  kiyohara 	{ ORION_1(88F5181),	2, "MV88F5181",	"B0",	"Orion1" },
    376       1.1  kiyohara 	{ ORION_1(88F5181),	3, "MV88F5181",	"B1",	"Orion1" },
    377       1.1  kiyohara 	{ ORION_1(88F5181),	8, "MV88F5181L","A0",	"Orion1" },
    378       1.1  kiyohara 	{ ORION_1(88F5181),	9, "MV88F5181L","A1",	"Orion1" },
    379       1.1  kiyohara 	{ ORION_1(88F5182),	0, "MV88F5182",	"A0",	"Orion1" },
    380       1.1  kiyohara 	{ ORION_1(88F5182),	1, "MV88F5182",	"A1",	"Orion1" },
    381       1.1  kiyohara 	{ ORION_1(88F5182),	2, "MV88F5182",	"A2",	"Orion1" },
    382       1.1  kiyohara 	{ ORION_1(88F6082),	0, "MV88F6082",	"A0",	"Orion1" },
    383       1.1  kiyohara 	{ ORION_1(88F6082),	1, "MV88F6082",	"A1",	"Orion1" },
    384       1.1  kiyohara 	{ ORION_1(88F6183),	0, "MV88F6183",	"A0",	"Orion1" },
    385       1.1  kiyohara 	{ ORION_1(88F6183),	1, "MV88F6183",	"Z0",	"Orion1" },
    386       1.1  kiyohara 	{ ORION_1(88W8660),	0, "MV88W8660",	"A0",	"Orion1" },
    387       1.1  kiyohara 	{ ORION_1(88W8660),	1, "MV88W8660",	"A1",	"Orion1" },
    388       1.1  kiyohara 
    389       1.1  kiyohara 	{ ORION_2(88F1281),	0, "MV88F1281",	"A0",	"Orion2" },
    390       1.1  kiyohara 	{ ORION_2(88F5281),	0, "MV88F5281",	"A0",	"Orion2" },
    391       1.1  kiyohara 	{ ORION_2(88F5281),	1, "MV88F5281",	"B0",	"Orion2" },
    392       1.1  kiyohara 	{ ORION_2(88F5281),	2, "MV88F5281",	"C0",	"Orion2" },
    393       1.1  kiyohara 	{ ORION_2(88F5281),	3, "MV88F5281",	"C1",	"Orion2" },
    394       1.1  kiyohara 	{ ORION_2(88F5281),	4, "MV88F5281",	"D0",	"Orion2" },
    395       1.1  kiyohara #endif
    396       1.1  kiyohara 
    397       1.1  kiyohara #if defined(KIRKWOOD)
    398       1.1  kiyohara 	{ KIRKWOOD(88F6180),	2, "88F6180",	"A0",	"Kirkwood" },
    399       1.6  kiyohara 	{ KIRKWOOD(88F6180),	3, "88F6180",	"A1",	"Kirkwood" },
    400       1.1  kiyohara 	{ KIRKWOOD(88F6192),	0, "88F619x",	"Z0",	"Kirkwood" },
    401       1.1  kiyohara 	{ KIRKWOOD(88F6192),	2, "88F619x",	"A0",	"Kirkwood" },
    402       1.4   reinoud 	{ KIRKWOOD(88F6192),	3, "88F619x",	"A1",	"Kirkwood" },
    403       1.1  kiyohara 	{ KIRKWOOD(88F6281),	0, "88F6281",	"Z0",	"Kirkwood" },
    404       1.1  kiyohara 	{ KIRKWOOD(88F6281),	2, "88F6281",	"A0",	"Kirkwood" },
    405       1.1  kiyohara 	{ KIRKWOOD(88F6281),	3, "88F6281",	"A1",	"Kirkwood" },
    406       1.6  kiyohara 	{ KIRKWOOD(88F6282),	0, "88F6282",	"A0",	"Kirkwood" },
    407       1.6  kiyohara 	{ KIRKWOOD(88F6282),	1, "88F6282",	"A1",	"Kirkwood" },
    408       1.1  kiyohara #endif
    409       1.1  kiyohara 
    410       1.1  kiyohara #if defined(MV78XX0)
    411       1.1  kiyohara 	{ MV78XX0(MV78100),	1, "MV78100",	"A0",  "Discovery Innovation" },
    412       1.1  kiyohara 	{ MV78XX0(MV78100),	2, "MV78100",	"A1",  "Discovery Innovation" },
    413       1.1  kiyohara 	{ MV78XX0(MV78200),	1, "MV78200",	"A0",  "Discovery Innovation" },
    414       1.1  kiyohara #endif
    415      1.11   rkujawa 
    416  1.24.2.1  pgoyette #if defined(DOVE)
    417  1.24.2.1  pgoyette 	{ DOVE(88AP510),	0, "88AP510",	"Z0",  "Dove" },
    418  1.24.2.1  pgoyette 	{ DOVE(88AP510),	1, "88AP510",	"Z1",  "Dove" },
    419  1.24.2.1  pgoyette 	{ DOVE(88AP510),	2, "88AP510",	"Y0",  "Dove" },
    420  1.24.2.1  pgoyette 	{ DOVE(88AP510),	3, "88AP510",	"Y1",  "Dove" },
    421  1.24.2.1  pgoyette 	{ DOVE(88AP510),	4, "88AP510",	"X0",  "Dove" },
    422  1.24.2.1  pgoyette 	{ DOVE(88AP510),	6, "88AP510",	"A0",  "Dove" },
    423  1.24.2.1  pgoyette 	{ DOVE(88AP510),	7, "88AP510",	"A1",  "Dove" },
    424  1.24.2.1  pgoyette #endif
    425  1.24.2.1  pgoyette 
    426      1.11   rkujawa #if defined(ARMADAXP)
    427      1.11   rkujawa 	{ ARMADAXP(MV78130),	1, "MV78130",	"A0",  "Armada XP" },
    428      1.11   rkujawa 	{ ARMADAXP(MV78160),	1, "MV78160",	"A0",  "Armada XP" },
    429  1.24.2.1  pgoyette 	{ ARMADAXP(MV78230),	1, "MV78230",	"A0",  "Armada XP" },
    430      1.11   rkujawa 	{ ARMADAXP(MV78260),	1, "MV78260",	"A0",  "Armada XP" },
    431      1.20  hsuenaga 	{ ARMADAXP(MV78260),	2, "MV78260",	"B0",  "Armada XP" },
    432      1.11   rkujawa 	{ ARMADAXP(MV78460),	1, "MV78460",	"A0",  "Armada XP" },
    433      1.11   rkujawa 	{ ARMADAXP(MV78460),	2, "MV78460",	"B0",  "Armada XP" },
    434      1.18  kiyohara 
    435      1.18  kiyohara 	{ ARMADA370(MV6707),	0, "MV6707",	"A0",  "Armada 370" },
    436      1.18  kiyohara 	{ ARMADA370(MV6707),	1, "MV6707",	"A1",  "Armada 370" },
    437      1.18  kiyohara 	{ ARMADA370(MV6710),	0, "MV6710",	"A0",  "Armada 370" },
    438      1.18  kiyohara 	{ ARMADA370(MV6710),	1, "MV6710",	"A1",  "Armada 370" },
    439      1.18  kiyohara 	{ ARMADA370(MV6W11),	0, "MV6W11",	"A0",  "Armada 370" },
    440      1.18  kiyohara 	{ ARMADA370(MV6W11),	1, "MV6W11",	"A1",  "Armada 370" },
    441      1.18  kiyohara #endif
    442      1.18  kiyohara };
    443      1.18  kiyohara 
    444      1.18  kiyohara enum marvell_tags ddr_tags[] = {
    445      1.18  kiyohara 	MARVELL_TAG_SDRAM_CS0,
    446      1.18  kiyohara 	MARVELL_TAG_SDRAM_CS1,
    447      1.18  kiyohara 	MARVELL_TAG_SDRAM_CS2,
    448      1.18  kiyohara 	MARVELL_TAG_SDRAM_CS3,
    449      1.18  kiyohara 
    450      1.18  kiyohara 	MARVELL_TAG_UNDEFINED
    451      1.18  kiyohara };
    452      1.18  kiyohara enum marvell_tags ddr3_tags[] = {
    453      1.18  kiyohara 	MARVELL_TAG_DDR3_CS0,
    454      1.18  kiyohara 	MARVELL_TAG_DDR3_CS1,
    455      1.18  kiyohara 	MARVELL_TAG_DDR3_CS2,
    456      1.18  kiyohara 	MARVELL_TAG_DDR3_CS3,
    457      1.18  kiyohara 
    458      1.18  kiyohara 	MARVELL_TAG_UNDEFINED
    459      1.18  kiyohara };
    460  1.24.2.1  pgoyette enum marvell_tags axi_tags[] = {
    461  1.24.2.1  pgoyette 	MARVELL_TAG_AXI_CS0,
    462  1.24.2.1  pgoyette 	MARVELL_TAG_AXI_CS1,
    463  1.24.2.1  pgoyette 
    464  1.24.2.1  pgoyette 	MARVELL_TAG_UNDEFINED
    465  1.24.2.1  pgoyette };
    466      1.18  kiyohara static struct {
    467      1.18  kiyohara 	uint16_t model;
    468      1.18  kiyohara 	uint8_t rev;
    469      1.18  kiyohara 	enum marvell_tags *tags;
    470      1.18  kiyohara } tagstbl[] = {
    471      1.18  kiyohara #if defined(ORION)
    472      1.18  kiyohara 	{ ORION_1(88F1181),	0, ddr_tags },
    473      1.18  kiyohara 	{ ORION_1(88F5082),	2, ddr_tags },
    474      1.18  kiyohara 	{ ORION_1(88F5180N),	3, ddr_tags },
    475      1.18  kiyohara 	{ ORION_1(88F5181),	0, ddr_tags },
    476      1.18  kiyohara 	{ ORION_1(88F5181),	1, ddr_tags },
    477      1.18  kiyohara 	{ ORION_1(88F5181),	2, ddr_tags },
    478      1.18  kiyohara 	{ ORION_1(88F5181),	3, ddr_tags },
    479      1.18  kiyohara 	{ ORION_1(88F5181),	8, ddr_tags },
    480      1.18  kiyohara 	{ ORION_1(88F5181),	9, ddr_tags },
    481      1.18  kiyohara 	{ ORION_1(88F5182),	0, ddr_tags },
    482      1.18  kiyohara 	{ ORION_1(88F5182),	1, ddr_tags },
    483      1.18  kiyohara 	{ ORION_1(88F5182),	2, ddr_tags },
    484      1.18  kiyohara 	{ ORION_1(88F6082),	0, ddr_tags },
    485      1.18  kiyohara 	{ ORION_1(88F6082),	1, ddr_tags },
    486      1.18  kiyohara 	{ ORION_1(88F6183),	0, ddr_tags },
    487      1.18  kiyohara 	{ ORION_1(88F6183),	1, ddr_tags },
    488      1.18  kiyohara 	{ ORION_1(88W8660),	0, ddr_tags },
    489      1.18  kiyohara 	{ ORION_1(88W8660),	1, ddr_tags },
    490      1.18  kiyohara 
    491      1.18  kiyohara 	{ ORION_2(88F1281),	0, ddr_tags },
    492      1.18  kiyohara 	{ ORION_2(88F5281),	0, ddr_tags },
    493      1.18  kiyohara 	{ ORION_2(88F5281),	1, ddr_tags },
    494      1.18  kiyohara 	{ ORION_2(88F5281),	2, ddr_tags },
    495      1.18  kiyohara 	{ ORION_2(88F5281),	3, ddr_tags },
    496      1.18  kiyohara 	{ ORION_2(88F5281),	4, ddr_tags },
    497      1.18  kiyohara #endif
    498      1.18  kiyohara 
    499      1.18  kiyohara #if defined(KIRKWOOD)
    500      1.18  kiyohara 	{ KIRKWOOD(88F6180),	2, ddr_tags },
    501      1.18  kiyohara 	{ KIRKWOOD(88F6180),	3, ddr_tags },
    502      1.18  kiyohara 	{ KIRKWOOD(88F6192),	0, ddr_tags },
    503      1.18  kiyohara 	{ KIRKWOOD(88F6192),	2, ddr_tags },
    504      1.18  kiyohara 	{ KIRKWOOD(88F6192),	3, ddr_tags },
    505      1.18  kiyohara 	{ KIRKWOOD(88F6281),	0, ddr_tags },
    506      1.18  kiyohara 	{ KIRKWOOD(88F6281),	2, ddr_tags },
    507      1.18  kiyohara 	{ KIRKWOOD(88F6281),	3, ddr_tags },
    508      1.18  kiyohara 	{ KIRKWOOD(88F6282),	0, ddr_tags },
    509      1.18  kiyohara 	{ KIRKWOOD(88F6282),	1, ddr_tags },
    510      1.18  kiyohara #endif
    511      1.18  kiyohara 
    512      1.18  kiyohara #if defined(MV78XX0)
    513      1.18  kiyohara 	{ MV78XX0(MV78100),	1, ddr_tags },
    514      1.18  kiyohara 	{ MV78XX0(MV78100),	2, ddr_tags },
    515      1.18  kiyohara 	{ MV78XX0(MV78200),	1, ddr_tags },
    516      1.18  kiyohara #endif
    517      1.18  kiyohara 
    518  1.24.2.1  pgoyette #if defined(DOVE)
    519  1.24.2.1  pgoyette 	{ DOVE(88AP510),	0, axi_tags },
    520  1.24.2.1  pgoyette 	{ DOVE(88AP510),	1, axi_tags },
    521  1.24.2.1  pgoyette 	{ DOVE(88AP510),	2, axi_tags },
    522  1.24.2.1  pgoyette 	{ DOVE(88AP510),	3, axi_tags },
    523  1.24.2.1  pgoyette 	{ DOVE(88AP510),	4, axi_tags },
    524  1.24.2.1  pgoyette 	{ DOVE(88AP510),	5, axi_tags },
    525  1.24.2.1  pgoyette 	{ DOVE(88AP510),	6, axi_tags },
    526  1.24.2.1  pgoyette 	{ DOVE(88AP510),	7, axi_tags },
    527  1.24.2.1  pgoyette #endif
    528  1.24.2.1  pgoyette 
    529      1.18  kiyohara #if defined(ARMADAXP)
    530      1.18  kiyohara 	{ ARMADAXP(MV78130),	1, ddr3_tags },
    531      1.18  kiyohara 	{ ARMADAXP(MV78160),	1, ddr3_tags },
    532      1.18  kiyohara 	{ ARMADAXP(MV78230),	1, ddr3_tags },
    533      1.18  kiyohara 	{ ARMADAXP(MV78260),	1, ddr3_tags },
    534      1.20  hsuenaga 	{ ARMADAXP(MV78260),	2, ddr3_tags },
    535      1.18  kiyohara 	{ ARMADAXP(MV78460),	1, ddr3_tags },
    536      1.18  kiyohara 	{ ARMADAXP(MV78460),	2, ddr3_tags },
    537      1.18  kiyohara 
    538      1.18  kiyohara 	{ ARMADA370(MV6707),	0, ddr3_tags },
    539      1.18  kiyohara 	{ ARMADA370(MV6707),	1, ddr3_tags },
    540      1.18  kiyohara 	{ ARMADA370(MV6710),	0, ddr3_tags },
    541      1.18  kiyohara 	{ ARMADA370(MV6710),	1, ddr3_tags },
    542      1.18  kiyohara 	{ ARMADA370(MV6W11),	0, ddr3_tags },
    543      1.18  kiyohara 	{ ARMADA370(MV6W11),	1, ddr3_tags },
    544      1.11   rkujawa #endif
    545       1.1  kiyohara };
    546       1.1  kiyohara 
    547      1.18  kiyohara 
    548       1.1  kiyohara #define OFFSET_DEFAULT	MVA_OFFSET_DEFAULT
    549       1.1  kiyohara #define IRQ_DEFAULT	MVA_IRQ_DEFAULT
    550       1.1  kiyohara static const struct mvsoc_periph {
    551       1.1  kiyohara 	int model;
    552       1.1  kiyohara 	const char *name;
    553       1.1  kiyohara 	int unit;
    554       1.1  kiyohara 	bus_size_t offset;
    555       1.1  kiyohara 	int irq;
    556       1.1  kiyohara } mvsoc_periphs[] = {
    557       1.1  kiyohara #if defined(ORION)
    558      1.13  kiyohara #define ORION_IRQ_TMR		(32 + MVSOC_MLMB_MLMBI_CPUTIMER0INTREQ)
    559      1.13  kiyohara 
    560      1.13  kiyohara     { ORION_1(88F1181),	"mvsoctmr",0, MVSOC_TMR_BASE,	ORION_IRQ_TMR },
    561       1.1  kiyohara     { ORION_1(88F1181),	"mvsocgpp",0, MVSOC_GPP_BASE,	ORION_IRQ_GPIO7_0 },
    562       1.1  kiyohara     { ORION_1(88F1181),	"com",     0, MVSOC_COM0_BASE,	ORION_IRQ_UART0 },
    563       1.1  kiyohara     { ORION_1(88F1181),	"com",     1, MVSOC_COM1_BASE,	ORION_IRQ_UART1 },
    564       1.1  kiyohara     { ORION_1(88F1181),	"gttwsi",  0, MVSOC_TWSI_BASE,	ORION_IRQ_TWSI },
    565       1.1  kiyohara     { ORION_1(88F1181),	"mvpex",   0, MVSOC_PEX_BASE,	ORION_IRQ_PEX0INT },
    566       1.1  kiyohara     { ORION_1(88F1181),	"mvpex",   1, ORION_PEX1_BASE,	ORION_IRQ_PEX1INT },
    567       1.1  kiyohara 
    568      1.13  kiyohara     { ORION_1(88F5082),	"mvsoctmr",0, MVSOC_TMR_BASE,	ORION_IRQ_TMR },
    569       1.1  kiyohara     { ORION_1(88F5082),	"mvsocgpp",0, MVSOC_GPP_BASE,	ORION_IRQ_GPIO7_0 },
    570       1.1  kiyohara     { ORION_1(88F5082),	"com",     0, MVSOC_COM0_BASE,	ORION_IRQ_UART0 },
    571       1.1  kiyohara     { ORION_1(88F5082),	"com",     1, MVSOC_COM1_BASE,	ORION_IRQ_UART1 },
    572       1.1  kiyohara     { ORION_1(88F5082),	"ehci",    0, ORION_USB0_BASE,	ORION_IRQ_USBCNT0 },
    573       1.1  kiyohara     { ORION_1(88F5082),	"ehci",    1, ORION_USB1_BASE,	ORION_IRQ_USBCNT1 },
    574       1.7  kiyohara     { ORION_1(88F5082),	"gtidmac", 0, ORION_IDMAC_BASE,	IRQ_DEFAULT },
    575       1.1  kiyohara     { ORION_1(88F5082),	"gttwsi",  0, MVSOC_TWSI_BASE,	ORION_IRQ_TWSI },
    576       1.1  kiyohara     { ORION_1(88F5082),	"mvcesa",  0, ORION_CESA_BASE,	ORION_IRQ_SECURITYINTR},
    577       1.1  kiyohara     { ORION_1(88F5082),	"mvgbec",  0, ORION_GBE_BASE,	IRQ_DEFAULT },
    578       1.1  kiyohara     { ORION_1(88F5082),	"mvpex",   0, MVSOC_PEX_BASE,	ORION_IRQ_PEX0INT },
    579       1.1  kiyohara     { ORION_1(88F5082),	"mvsata",  0, ORION_SATAHC_BASE,ORION_IRQ_SATAINTR },
    580       1.1  kiyohara 
    581      1.13  kiyohara     { ORION_1(88F5180N),"mvsoctmr",0, MVSOC_TMR_BASE,	ORION_IRQ_TMR },
    582       1.1  kiyohara     { ORION_1(88F5180N),"mvsocgpp",0, MVSOC_GPP_BASE,	ORION_IRQ_GPIO7_0 },
    583       1.1  kiyohara     { ORION_1(88F5180N),"com",     0, MVSOC_COM0_BASE,	ORION_IRQ_UART0 },
    584       1.1  kiyohara     { ORION_1(88F5180N),"com",     1, MVSOC_COM1_BASE,	ORION_IRQ_UART1 },
    585       1.1  kiyohara     { ORION_1(88F5180N),"ehci",    0, ORION_USB0_BASE,	ORION_IRQ_USBCNT0 },
    586       1.7  kiyohara     { ORION_1(88F5180N),"gtidmac", 0, ORION_IDMAC_BASE,	IRQ_DEFAULT },
    587       1.1  kiyohara     { ORION_1(88F5180N),"gtpci",   0, ORION_PCI_BASE,	ORION_IRQ_PEX0INT },
    588       1.1  kiyohara     { ORION_1(88F5180N),"gttwsi",  0, MVSOC_TWSI_BASE,	ORION_IRQ_TWSI },
    589       1.1  kiyohara     { ORION_1(88F5180N),"mvgbec",  0, ORION_GBE_BASE,	IRQ_DEFAULT },
    590       1.1  kiyohara     { ORION_1(88F5180N),"mvpex",   0, MVSOC_PEX_BASE,	ORION_IRQ_PEX0INT },
    591       1.1  kiyohara 
    592      1.13  kiyohara     { ORION_1(88F5181),	"mvsoctmr",0, MVSOC_TMR_BASE,	ORION_IRQ_TMR },
    593       1.1  kiyohara     { ORION_1(88F5181),	"mvsocgpp",0, MVSOC_GPP_BASE,	ORION_IRQ_GPIO7_0 },
    594       1.1  kiyohara     { ORION_1(88F5181),	"com",     0, MVSOC_COM0_BASE,	ORION_IRQ_UART0 },
    595       1.1  kiyohara     { ORION_1(88F5181),	"com",     1, MVSOC_COM1_BASE,	ORION_IRQ_UART1 },
    596       1.1  kiyohara     { ORION_1(88F5181),	"ehci",    0, ORION_USB0_BASE,	ORION_IRQ_USBCNT0 },
    597       1.7  kiyohara     { ORION_1(88F5181),	"gtidmac", 0, ORION_IDMAC_BASE,	IRQ_DEFAULT },
    598       1.1  kiyohara     { ORION_1(88F5181),	"gtpci",   0, ORION_PCI_BASE,	ORION_IRQ_PEX0INT },
    599       1.1  kiyohara     { ORION_1(88F5181),	"gttwsi",  0, MVSOC_TWSI_BASE,	ORION_IRQ_TWSI },
    600       1.1  kiyohara     { ORION_1(88F5181),	"mvcesa",  0, ORION_CESA_BASE,	ORION_IRQ_SECURITYINTR},
    601       1.1  kiyohara     { ORION_1(88F5181),	"mvgbec",  0, ORION_GBE_BASE,	IRQ_DEFAULT },
    602       1.1  kiyohara     { ORION_1(88F5181),	"mvpex",   0, MVSOC_PEX_BASE,	ORION_IRQ_PEX0INT },
    603       1.1  kiyohara 
    604      1.13  kiyohara     { ORION_1(88F5182),	"mvsoctmr",0, MVSOC_TMR_BASE,	ORION_IRQ_TMR },
    605       1.1  kiyohara     { ORION_1(88F5182),	"mvsocgpp",0, MVSOC_GPP_BASE,	ORION_IRQ_GPIO7_0 },
    606       1.1  kiyohara     { ORION_1(88F5182),	"com",     0, MVSOC_COM0_BASE,	ORION_IRQ_UART0 },
    607       1.1  kiyohara     { ORION_1(88F5182),	"com",     1, MVSOC_COM1_BASE,	ORION_IRQ_UART1 },
    608       1.1  kiyohara     { ORION_1(88F5182),	"ehci",    0, ORION_USB0_BASE,	ORION_IRQ_USBCNT0 },
    609       1.1  kiyohara     { ORION_1(88F5182),	"ehci",    1, ORION_USB1_BASE,	ORION_IRQ_USBCNT1 },
    610       1.7  kiyohara     { ORION_1(88F5182),	"gtidmac", 0, ORION_IDMAC_BASE,	IRQ_DEFAULT },
    611       1.1  kiyohara     { ORION_1(88F5182),	"gtpci",   0, ORION_PCI_BASE,	ORION_IRQ_PEX0INT },
    612       1.1  kiyohara     { ORION_1(88F5182),	"gttwsi",  0, MVSOC_TWSI_BASE,	ORION_IRQ_TWSI },
    613       1.1  kiyohara     { ORION_1(88F5182),	"mvgbec",  0, ORION_GBE_BASE,	IRQ_DEFAULT },
    614       1.1  kiyohara     { ORION_1(88F5182),	"mvsata",  0, ORION_SATAHC_BASE,ORION_IRQ_SATAINTR },
    615       1.1  kiyohara     { ORION_1(88F5182),	"mvpex",   0, MVSOC_PEX_BASE,	ORION_IRQ_PEX0INT },
    616       1.1  kiyohara 
    617      1.13  kiyohara     { ORION_1(88F6082),	"mvsoctmr",0, MVSOC_TMR_BASE,	ORION_IRQ_TMR },
    618       1.1  kiyohara     { ORION_1(88F6082),	"mvsocgpp",0, MVSOC_GPP_BASE,	ORION_IRQ_GPIO7_0 },
    619       1.1  kiyohara     { ORION_1(88F6082),	"com",     0, MVSOC_COM0_BASE,	ORION_IRQ_UART0 },
    620       1.1  kiyohara     { ORION_1(88F6082),	"com",     1, MVSOC_COM1_BASE,	ORION_IRQ_UART1 },
    621       1.1  kiyohara     { ORION_1(88F6082),	"ehci",    0, ORION_USB0_BASE,	ORION_IRQ_USBCNT0 },
    622       1.1  kiyohara     { ORION_1(88F6082),	"gttwsi",  0, MVSOC_TWSI_BASE,	ORION_IRQ_TWSI },
    623       1.1  kiyohara     { ORION_1(88F6082),	"mvcesa",  0, ORION_CESA_BASE,	ORION_IRQ_SECURITYINTR},
    624       1.1  kiyohara     { ORION_1(88F6082),	"mvgbec",  0, ORION_GBE_BASE,	IRQ_DEFAULT },
    625       1.1  kiyohara     { ORION_1(88F6082),	"mvsata",  0, ORION_SATAHC_BASE,ORION_IRQ_SATAINTR },
    626       1.1  kiyohara     { ORION_1(88F6082),	"mvpex",   0, MVSOC_PEX_BASE,	ORION_IRQ_PEX0INT },
    627       1.1  kiyohara 
    628      1.13  kiyohara     { ORION_1(88F6183),	"mvsoctmr",0, MVSOC_TMR_BASE,	ORION_IRQ_TMR },
    629       1.1  kiyohara     { ORION_1(88F6183),	"mvsocgpp",0, MVSOC_GPP_BASE,	ORION_IRQ_GPIO7_0 },
    630       1.1  kiyohara     { ORION_1(88F6183),	"gttwsi",  0, MVSOC_TWSI_BASE,	ORION_IRQ_TWSI },
    631       1.1  kiyohara     { ORION_1(88F6183),	"mvpex",   0, MVSOC_PEX_BASE,	ORION_IRQ_PEX0INT },
    632       1.1  kiyohara 
    633      1.13  kiyohara     { ORION_1(88W8660),	"mvsoctmr",0, MVSOC_TMR_BASE,	ORION_IRQ_TMR },
    634       1.1  kiyohara     { ORION_1(88W8660),	"mvsocgpp",0, MVSOC_GPP_BASE,	ORION_IRQ_GPIO7_0 },
    635       1.1  kiyohara     { ORION_1(88W8660),	"com",     0, MVSOC_COM0_BASE,	ORION_IRQ_UART0 },
    636       1.1  kiyohara     { ORION_1(88W8660),	"com",     1, MVSOC_COM1_BASE,	ORION_IRQ_UART1 },
    637       1.1  kiyohara     { ORION_1(88W8660),	"ehci",    0, ORION_USB0_BASE,	ORION_IRQ_USBCNT0 },
    638       1.7  kiyohara     { ORION_1(88W8660),	"gtidmac", 0, ORION_IDMAC_BASE,	IRQ_DEFAULT },
    639       1.1  kiyohara     { ORION_1(88W8660),	"gtpci",   0, ORION_PCI_BASE,	ORION_IRQ_PEX0INT },
    640       1.1  kiyohara     { ORION_1(88W8660),	"gttwsi",  0, MVSOC_TWSI_BASE,	ORION_IRQ_TWSI },
    641       1.1  kiyohara     { ORION_1(88W8660),	"mvgbec",  0, ORION_GBE_BASE,	IRQ_DEFAULT },
    642       1.1  kiyohara     { ORION_1(88W8660),	"mvpex",   0, MVSOC_PEX_BASE,	ORION_IRQ_PEX0INT },
    643       1.1  kiyohara 
    644      1.13  kiyohara     { ORION_2(88F1281),	"mvsoctmr",0, MVSOC_TMR_BASE,	ORION_IRQ_TMR },
    645       1.1  kiyohara     { ORION_2(88F1281),	"mvsocgpp",0, MVSOC_GPP_BASE,	ORION_IRQ_GPIO7_0 },
    646       1.1  kiyohara     { ORION_2(88F1281),	"com",     0, MVSOC_COM0_BASE,	ORION_IRQ_UART0 },
    647       1.1  kiyohara     { ORION_2(88F1281),	"com",     1, MVSOC_COM1_BASE,	ORION_IRQ_UART1 },
    648       1.1  kiyohara     { ORION_2(88F1281),	"gttwsi",  0, MVSOC_TWSI_BASE,	ORION_IRQ_TWSI },
    649       1.1  kiyohara     { ORION_2(88F1281),	"mvpex",   0, MVSOC_PEX_BASE,	ORION_IRQ_PEX0INT },
    650       1.1  kiyohara     { ORION_2(88F1281),	"mvpex",   1, ORION_PEX1_BASE,	ORION_IRQ_PEX1INT },
    651       1.1  kiyohara 
    652      1.13  kiyohara     { ORION_2(88F5281),	"mvsoctmr",0, MVSOC_TMR_BASE,	ORION_IRQ_TMR },
    653       1.1  kiyohara     { ORION_2(88F5281),	"mvsocgpp",0, MVSOC_GPP_BASE,	ORION_IRQ_GPIO7_0 },
    654       1.1  kiyohara     { ORION_2(88F5281),	"com",     0, MVSOC_COM0_BASE,	ORION_IRQ_UART0 },
    655       1.1  kiyohara     { ORION_2(88F5281),	"com",     1, MVSOC_COM1_BASE,	ORION_IRQ_UART1 },
    656       1.1  kiyohara     { ORION_2(88F5281),	"ehci",    0, ORION_USB0_BASE,	ORION_IRQ_USBCNT0 },
    657       1.7  kiyohara     { ORION_2(88F5281),	"gtidmac", 0, ORION_IDMAC_BASE,	IRQ_DEFAULT },
    658       1.1  kiyohara     { ORION_2(88F5281),	"gtpci",   0, ORION_PCI_BASE,	ORION_IRQ_PEX0INT },
    659       1.1  kiyohara     { ORION_2(88F5281),	"gttwsi",  0, MVSOC_TWSI_BASE,	ORION_IRQ_TWSI },
    660       1.1  kiyohara     { ORION_2(88F5281),	"mvgbec",  0, ORION_GBE_BASE,	IRQ_DEFAULT },
    661       1.1  kiyohara     { ORION_2(88F5281),	"mvpex",   0, MVSOC_PEX_BASE,	ORION_IRQ_PEX0INT },
    662       1.1  kiyohara #endif
    663       1.1  kiyohara 
    664       1.1  kiyohara #if defined(KIRKWOOD)
    665      1.13  kiyohara #define KIRKWOOD_IRQ_TMR	(64 + MVSOC_MLMB_MLMBI_CPUTIMER0INTREQ)
    666      1.13  kiyohara 
    667      1.13  kiyohara     { KIRKWOOD(88F6180),"mvsoctmr",0, MVSOC_TMR_BASE,	KIRKWOOD_IRQ_TMR },
    668       1.1  kiyohara     { KIRKWOOD(88F6180),"mvsocgpp",0, MVSOC_GPP_BASE,	KIRKWOOD_IRQ_GPIOLO7_0},
    669       1.2      matt     { KIRKWOOD(88F6180),"mvsocrtc",0, KIRKWOOD_RTC_BASE,IRQ_DEFAULT },
    670       1.1  kiyohara     { KIRKWOOD(88F6180),"com",     0, MVSOC_COM0_BASE,	KIRKWOOD_IRQ_UART0INT },
    671       1.1  kiyohara     { KIRKWOOD(88F6180),"com",     1, MVSOC_COM1_BASE,	KIRKWOOD_IRQ_UART1INT },
    672       1.1  kiyohara     { KIRKWOOD(88F6180),"ehci",    0, KIRKWOOD_USB_BASE,KIRKWOOD_IRQ_USB0CNT },
    673       1.7  kiyohara     { KIRKWOOD(88F6180),"gtidmac", 0, KIRKWOOD_IDMAC_BASE,IRQ_DEFAULT },
    674       1.1  kiyohara     { KIRKWOOD(88F6180),"gttwsi",  0, MVSOC_TWSI_BASE,	KIRKWOOD_IRQ_TWSI },
    675       1.1  kiyohara     { KIRKWOOD(88F6180),"mvcesa",  0, KIRKWOOD_CESA_BASE,KIRKWOOD_IRQ_SECURITYINT},
    676       1.1  kiyohara     { KIRKWOOD(88F6180),"mvgbec",  0, KIRKWOOD_GBE0_BASE,IRQ_DEFAULT },
    677       1.1  kiyohara     { KIRKWOOD(88F6180),"mvpex",   0, MVSOC_PEX_BASE,	KIRKWOOD_IRQ_PEX0INT },
    678       1.1  kiyohara     { KIRKWOOD(88F6180),"mvsdio",  0, KIRKWOOD_SDIO_BASE,KIRKWOOD_IRQ_SDIOINT },
    679       1.1  kiyohara 
    680      1.13  kiyohara     { KIRKWOOD(88F6192),"mvsoctmr",0, MVSOC_TMR_BASE,	KIRKWOOD_IRQ_TMR },
    681       1.1  kiyohara     { KIRKWOOD(88F6192),"mvsocgpp",0, MVSOC_GPP_BASE,	KIRKWOOD_IRQ_GPIOLO7_0},
    682       1.2      matt     { KIRKWOOD(88F6192),"mvsocrtc",0, KIRKWOOD_RTC_BASE,IRQ_DEFAULT },
    683       1.1  kiyohara     { KIRKWOOD(88F6192),"com",     0, MVSOC_COM0_BASE,	KIRKWOOD_IRQ_UART0INT },
    684       1.1  kiyohara     { KIRKWOOD(88F6192),"com",     1, MVSOC_COM1_BASE,	KIRKWOOD_IRQ_UART1INT },
    685       1.1  kiyohara     { KIRKWOOD(88F6192),"ehci",    0, KIRKWOOD_USB_BASE,KIRKWOOD_IRQ_USB0CNT },
    686       1.7  kiyohara     { KIRKWOOD(88F6192),"gtidmac", 0, KIRKWOOD_IDMAC_BASE,IRQ_DEFAULT },
    687       1.1  kiyohara     { KIRKWOOD(88F6192),"gttwsi",  0, MVSOC_TWSI_BASE,	KIRKWOOD_IRQ_TWSI },
    688       1.1  kiyohara     { KIRKWOOD(88F6192),"mvcesa",  0, KIRKWOOD_CESA_BASE,KIRKWOOD_IRQ_SECURITYINT},
    689       1.1  kiyohara     { KIRKWOOD(88F6192),"mvgbec",  0, KIRKWOOD_GBE0_BASE,IRQ_DEFAULT },
    690       1.1  kiyohara     { KIRKWOOD(88F6192),"mvgbec",  1, KIRKWOOD_GBE1_BASE,IRQ_DEFAULT },
    691       1.1  kiyohara     { KIRKWOOD(88F6192),"mvpex",   0, MVSOC_PEX_BASE,	KIRKWOOD_IRQ_PEX0INT },
    692       1.1  kiyohara     { KIRKWOOD(88F6192),"mvsata",  0, KIRKWOOD_SATAHC_BASE,KIRKWOOD_IRQ_SATA },
    693       1.1  kiyohara     { KIRKWOOD(88F6192),"mvsdio",  0, KIRKWOOD_SDIO_BASE,KIRKWOOD_IRQ_SDIOINT },
    694       1.1  kiyohara 
    695      1.13  kiyohara     { KIRKWOOD(88F6281),"mvsoctmr",0, MVSOC_TMR_BASE,	KIRKWOOD_IRQ_TMR },
    696       1.1  kiyohara     { KIRKWOOD(88F6281),"mvsocgpp",0, MVSOC_GPP_BASE,	KIRKWOOD_IRQ_GPIOLO7_0},
    697       1.2      matt     { KIRKWOOD(88F6281),"mvsocrtc",0, KIRKWOOD_RTC_BASE,IRQ_DEFAULT },
    698       1.1  kiyohara     { KIRKWOOD(88F6281),"com",     0, MVSOC_COM0_BASE,	KIRKWOOD_IRQ_UART0INT },
    699       1.1  kiyohara     { KIRKWOOD(88F6281),"com",     1, MVSOC_COM1_BASE,	KIRKWOOD_IRQ_UART1INT },
    700      1.16  kiyohara     { KIRKWOOD(88F6281),"ehci",    0, KIRKWOOD_USB_BASE,KIRKWOOD_IRQ_USB0CNT },
    701       1.7  kiyohara     { KIRKWOOD(88F6281),"gtidmac", 0, KIRKWOOD_IDMAC_BASE,IRQ_DEFAULT },
    702       1.1  kiyohara     { KIRKWOOD(88F6281),"gttwsi",  0, MVSOC_TWSI_BASE,	KIRKWOOD_IRQ_TWSI },
    703      1.16  kiyohara     { KIRKWOOD(88F6281),"mvcesa",  0, KIRKWOOD_CESA_BASE,KIRKWOOD_IRQ_SECURITYINT },
    704      1.16  kiyohara     { KIRKWOOD(88F6281),"mvgbec",  0, KIRKWOOD_GBE0_BASE,IRQ_DEFAULT },
    705      1.16  kiyohara     { KIRKWOOD(88F6281),"mvgbec",  1, KIRKWOOD_GBE1_BASE,IRQ_DEFAULT },
    706      1.16  kiyohara     { KIRKWOOD(88F6281),"mvpex",   0, MVSOC_PEX_BASE,	KIRKWOOD_IRQ_PEX0INT },
    707      1.16  kiyohara     { KIRKWOOD(88F6281),"mvsata",  0, KIRKWOOD_SATAHC_BASE,KIRKWOOD_IRQ_SATA },
    708      1.16  kiyohara     { KIRKWOOD(88F6281),"mvsdio",  0, KIRKWOOD_SDIO_BASE,KIRKWOOD_IRQ_SDIOINT },
    709       1.6  kiyohara 
    710      1.13  kiyohara     { KIRKWOOD(88F6282),"mvsoctmr",0, MVSOC_TMR_BASE,	KIRKWOOD_IRQ_TMR },
    711       1.6  kiyohara     { KIRKWOOD(88F6282),"mvsocgpp",0, MVSOC_GPP_BASE,	KIRKWOOD_IRQ_GPIOLO7_0},
    712       1.6  kiyohara     { KIRKWOOD(88F6282),"mvsocrtc",0, KIRKWOOD_RTC_BASE,IRQ_DEFAULT },
    713       1.8  kiyohara     { KIRKWOOD(88F6282),"mvsocts", 0, KIRKWOOD_TS_BASE,	IRQ_DEFAULT },
    714       1.6  kiyohara     { KIRKWOOD(88F6282),"com",     0, MVSOC_COM0_BASE,	KIRKWOOD_IRQ_UART0INT },
    715       1.6  kiyohara     { KIRKWOOD(88F6282),"com",     1, MVSOC_COM1_BASE,	KIRKWOOD_IRQ_UART1INT },
    716       1.6  kiyohara     { KIRKWOOD(88F6282),"ehci",    0, KIRKWOOD_USB_BASE,KIRKWOOD_IRQ_USB0CNT },
    717       1.7  kiyohara     { KIRKWOOD(88F6282),"gtidmac", 0, KIRKWOOD_IDMAC_BASE,IRQ_DEFAULT },
    718       1.6  kiyohara     { KIRKWOOD(88F6282),"gttwsi",  0, MVSOC_TWSI_BASE,	KIRKWOOD_IRQ_TWSI },
    719       1.6  kiyohara     { KIRKWOOD(88F6282),"gttwsi",  1, KIRKWOOD_TWSI1_BASE,KIRKWOOD_IRQ_TWSI1 },
    720       1.6  kiyohara     { KIRKWOOD(88F6282),"mvcesa",  0, KIRKWOOD_CESA_BASE,KIRKWOOD_IRQ_SECURITYINT},
    721       1.6  kiyohara     { KIRKWOOD(88F6282),"mvgbec",  0, KIRKWOOD_GBE0_BASE,IRQ_DEFAULT },
    722       1.6  kiyohara     { KIRKWOOD(88F6282),"mvgbec",  1, KIRKWOOD_GBE1_BASE,IRQ_DEFAULT },
    723       1.6  kiyohara     { KIRKWOOD(88F6282),"mvpex",   0, MVSOC_PEX_BASE,	KIRKWOOD_IRQ_PEX0INT },
    724       1.6  kiyohara     { KIRKWOOD(88F6282),"mvpex",   1, KIRKWOOD_PEX1_BASE,KIRKWOOD_IRQ_PEX1INT },
    725       1.6  kiyohara     { KIRKWOOD(88F6282),"mvsata",  0, KIRKWOOD_SATAHC_BASE,KIRKWOOD_IRQ_SATA },
    726       1.6  kiyohara     { KIRKWOOD(88F6282),"mvsdio",  0, KIRKWOOD_SDIO_BASE,KIRKWOOD_IRQ_SDIOINT },
    727       1.1  kiyohara #endif
    728       1.1  kiyohara 
    729       1.1  kiyohara #if defined(MV78XX0)
    730      1.13  kiyohara     { MV78XX0(MV78100),	"mvsoctmr",0, MVSOC_TMR_BASE,	MV78XX0_IRQ_TIMER0 },
    731      1.13  kiyohara     { MV78XX0(MV78100),	"mvsocgpp",0, MVSOC_GPP_BASE,	MV78XX0_IRQ_GPIO0_7 },
    732      1.13  kiyohara     { MV78XX0(MV78100),	"com",	   0, MVSOC_COM0_BASE,	MV78XX0_IRQ_UART0 },
    733      1.13  kiyohara     { MV78XX0(MV78100),	"com",	   1, MVSOC_COM1_BASE,	MV78XX0_IRQ_UART1 },
    734      1.13  kiyohara     { MV78XX0(MV78100),	"com",	   2, MV78XX0_COM2_BASE,MV78XX0_IRQ_UART2 },
    735      1.13  kiyohara     { MV78XX0(MV78100),	"com",	   3, MV78XX0_COM3_BASE,MV78XX0_IRQ_UART3 },
    736      1.13  kiyohara     { MV78XX0(MV78100),	"gttwsi",  0, MVSOC_TWSI_BASE,	MV78XX0_IRQ_TWSI0 },
    737      1.13  kiyohara     { MV78XX0(MV78100),	"gttwsi",  1, MV78XX0_TWSI1_BASE,MV78XX0_IRQ_TWSI1 },
    738      1.13  kiyohara     { MV78XX0(MV78100), "mvgbec",  0, MV78XX0_GBE0_BASE,IRQ_DEFAULT },
    739      1.13  kiyohara     { MV78XX0(MV78100), "mvgbec",  1, MV78XX0_GBE1_BASE,IRQ_DEFAULT },
    740      1.13  kiyohara     { MV78XX0(MV78100), "mvsata",  0, MV78XX0_SATAHC_BASE,MV78XX0_IRQ_SATA },
    741      1.13  kiyohara 
    742      1.13  kiyohara     { MV78XX0(MV78200),	"mvsoctmr",0, MVSOC_TMR_BASE,	MV78XX0_IRQ_TIMER0 },
    743      1.13  kiyohara     { MV78XX0(MV78200),	"mvsocgpp",0, MVSOC_GPP_BASE,	MV78XX0_IRQ_GPIO0_7 },
    744      1.13  kiyohara     { MV78XX0(MV78200),	"com",     0, MVSOC_COM0_BASE,	MV78XX0_IRQ_UART0 },
    745      1.13  kiyohara     { MV78XX0(MV78200),	"com",     1, MVSOC_COM1_BASE,	MV78XX0_IRQ_UART1 },
    746      1.13  kiyohara     { MV78XX0(MV78200),	"com",	   2, MV78XX0_COM2_BASE,MV78XX0_IRQ_UART2 },
    747      1.13  kiyohara     { MV78XX0(MV78200),	"com",	   3, MV78XX0_COM3_BASE,MV78XX0_IRQ_UART3 },
    748      1.13  kiyohara     { MV78XX0(MV78200),	"gttwsi",  0, MVSOC_TWSI_BASE,	MV78XX0_IRQ_TWSI0 },
    749      1.13  kiyohara     { MV78XX0(MV78200),	"gttwsi",  1, MV78XX0_TWSI1_BASE,MV78XX0_IRQ_TWSI1 },
    750      1.13  kiyohara     { MV78XX0(MV78200), "mvgbec",  0, MV78XX0_GBE0_BASE,IRQ_DEFAULT },
    751      1.13  kiyohara     { MV78XX0(MV78200), "mvgbec",  1, MV78XX0_GBE1_BASE,IRQ_DEFAULT },
    752      1.13  kiyohara     { MV78XX0(MV78200), "mvgbec",  2, MV78XX0_GBE2_BASE,IRQ_DEFAULT },
    753      1.13  kiyohara     { MV78XX0(MV78200), "mvgbec",  3, MV78XX0_GBE3_BASE,IRQ_DEFAULT },
    754      1.13  kiyohara     { MV78XX0(MV78200), "mvsata",  0, MV78XX0_SATAHC_BASE,MV78XX0_IRQ_SATA },
    755       1.1  kiyohara #endif
    756      1.11   rkujawa 
    757  1.24.2.1  pgoyette #if defined(DOVE)
    758  1.24.2.1  pgoyette #define DOVE_IRQ_TMR		(64 + MVSOC_MLMB_MLMBI_CPUTIMER0INTREQ)
    759  1.24.2.1  pgoyette 
    760  1.24.2.1  pgoyette     { DOVE(88AP510),	"mvsoctmr",0, MVSOC_TMR_BASE,	DOVE_IRQ_TMR },
    761  1.24.2.1  pgoyette     { DOVE(88AP510),	"mvsocpmu",0, DOVE_PMU_BASE,	DOVE_IRQ_PMU },
    762  1.24.2.1  pgoyette     { DOVE(88AP510),	"com",     0, MVSOC_COM0_BASE,	DOVE_IRQ_UART0 },
    763  1.24.2.1  pgoyette     { DOVE(88AP510),	"com",     1, MVSOC_COM1_BASE,	DOVE_IRQ_UART1 },
    764  1.24.2.1  pgoyette     { DOVE(88AP510),	"com",     2, DOVE_COM2_BASE,	DOVE_IRQ_UART2 },
    765  1.24.2.1  pgoyette     { DOVE(88AP510),	"com",     3, DOVE_COM3_BASE,	DOVE_IRQ_UART3 },
    766  1.24.2.1  pgoyette     { DOVE(88AP510),	"gttwsi",  0, MVSOC_TWSI_BASE,	DOVE_IRQ_TWSI },
    767  1.24.2.1  pgoyette     { DOVE(88AP510),	"mvspi",   0, DOVE_SPI0_BASE,	DOVE_IRQ_SPI0 },
    768  1.24.2.1  pgoyette     { DOVE(88AP510),	"mvspi",   1, DOVE_SPI1_BASE,	DOVE_IRQ_SPI1 },
    769  1.24.2.1  pgoyette     { DOVE(88AP510),	"mvcesa",  0, DOVE_CESA_BASE,	DOVE_IRQ_SECURITYINT },
    770  1.24.2.1  pgoyette     { DOVE(88AP510),	"ehci",    0, DOVE_USB0_BASE,	DOVE_IRQ_USB0CNT },
    771  1.24.2.1  pgoyette     { DOVE(88AP510),	"ehci",    1, DOVE_USB1_BASE,	DOVE_IRQ_USB1CNT },
    772  1.24.2.1  pgoyette     { DOVE(88AP510),	"gtidmac", 0, DOVE_XORE_BASE,	IRQ_DEFAULT },
    773  1.24.2.1  pgoyette     { DOVE(88AP510),	"mvgbec",  0, DOVE_GBE_BASE,	IRQ_DEFAULT },
    774  1.24.2.1  pgoyette     { DOVE(88AP510),	"mvpex",   0, MVSOC_PEX_BASE,	DOVE_IRQ_PEX0_INT },
    775  1.24.2.1  pgoyette     { DOVE(88AP510),	"mvpex",   1, DOVE_PEX1_BASE,	DOVE_IRQ_PEX1_INT },
    776  1.24.2.1  pgoyette     { DOVE(88AP510),	"sdhc",    0, DOVE_SDHC0_BASE,	DOVE_IRQ_SD0 },
    777  1.24.2.1  pgoyette     { DOVE(88AP510),	"sdhc",    1, DOVE_SDHC1_BASE,	DOVE_IRQ_SD1 },
    778  1.24.2.1  pgoyette     { DOVE(88AP510),	"mvsata",  0, DOVE_SATAHC_BASE,	DOVE_IRQ_SATAINT },
    779  1.24.2.1  pgoyette //    { DOVE(88AP510),	"mvsocgpp",0, MVSOC_GPP_BASE,	IRQ_DEFAULT },
    780  1.24.2.1  pgoyette     { DOVE(88AP510),	"mvsocrtc",0, DOVE_RTC_BASE,	IRQ_DEFAULT },
    781  1.24.2.1  pgoyette #endif
    782  1.24.2.1  pgoyette 
    783      1.11   rkujawa #if defined(ARMADAXP)
    784      1.11   rkujawa     { ARMADAXP(MV78130), "mvsoctmr",0,MVSOC_TMR_BASE,	ARMADAXP_IRQ_TIMER0 },
    785      1.13  kiyohara     { ARMADAXP(MV78130), "com",    0, MVSOC_COM0_BASE,	ARMADAXP_IRQ_UART0 },
    786      1.13  kiyohara     { ARMADAXP(MV78130), "com",    1, MVSOC_COM1_BASE,	ARMADAXP_IRQ_UART1 },
    787      1.13  kiyohara     { ARMADAXP(MV78130), "com",    2, ARMADAXP_COM2_BASE,ARMADAXP_IRQ_UART2 },
    788      1.13  kiyohara     { ARMADAXP(MV78130), "com",    3, ARMADAXP_COM3_BASE,ARMADAXP_IRQ_UART3 },
    789      1.16  kiyohara     { ARMADAXP(MV78130), "mvsocrtc",0,ARMADAXP_RTC_BASE,ARMADAXP_IRQ_RTC },
    790      1.13  kiyohara     { ARMADAXP(MV78130), "gttwsi", 0, MVSOC_TWSI_BASE,	ARMADAXP_IRQ_TWSI0 },
    791      1.13  kiyohara     { ARMADAXP(MV78130), "gttwsi", 1, ARMADAXP_TWSI1_BASE,ARMADAXP_IRQ_TWSI1 },
    792      1.13  kiyohara     { ARMADAXP(MV78130), "gtidmac",0, ARMADAXP_XORE0_BASE,IRQ_DEFAULT },
    793      1.13  kiyohara     { ARMADAXP(MV78130), "gtidmac",1, ARMADAXP_XORE1_BASE,IRQ_DEFAULT },
    794      1.24  kiyohara     { ARMADAXP(MV78130), "mvsocts",0, ARMADAXP_TS_BASE,	ARMADAXP_IRQ_PMU },
    795      1.13  kiyohara     { ARMADAXP(MV78130), "ehci",   0, ARMADAXP_USB0_BASE,ARMADAXP_IRQ_USB0 },
    796      1.13  kiyohara     { ARMADAXP(MV78130), "ehci",   1, ARMADAXP_USB1_BASE,ARMADAXP_IRQ_USB1 },
    797      1.13  kiyohara     { ARMADAXP(MV78130), "ehci",   2, ARMADAXP_USB2_BASE,ARMADAXP_IRQ_USB2 },
    798      1.13  kiyohara     { ARMADAXP(MV78130), "mvpex",  0, MVSOC_PEX_BASE,	ARMADAXP_IRQ_PEX00 },
    799      1.13  kiyohara     { ARMADAXP(MV78130), "mvpex",  1, ARMADAXP_PEX01_BASE,ARMADAXP_IRQ_PEX01 },
    800      1.13  kiyohara     { ARMADAXP(MV78130), "mvpex",  2, ARMADAXP_PEX02_BASE,ARMADAXP_IRQ_PEX02 },
    801      1.13  kiyohara     { ARMADAXP(MV78130), "mvpex",  3, ARMADAXP_PEX03_BASE,ARMADAXP_IRQ_PEX03 },
    802      1.13  kiyohara     { ARMADAXP(MV78130), "mvsata", 0, ARMADAXP_SATAHC_BASE,ARMADAXP_IRQ_SATA0 },
    803      1.13  kiyohara     { ARMADAXP(MV78130), "mvspi",  0, ARMADAXP_SPI_BASE,ARMADAXP_IRQ_SPI },
    804      1.13  kiyohara     { ARMADAXP(MV78130), "mvsdio", 0, ARMADAXP_SDIO_BASE,ARMADAXP_IRQ_SDIO },
    805      1.19  hsuenaga     { ARMADAXP(MV78130), "mvxpe", 0, ARMADAXP_GBE0_BASE,ARMADAXP_IRQ_GBE0_TH_RXTX },
    806      1.19  hsuenaga #if NMVXPE > 0
    807      1.22  hsuenaga     { ARMADAXP(MV78130), "mvxpbm", 0, MVA_OFFSET_DEFAULT,IRQ_DEFAULT },
    808      1.19  hsuenaga     { ARMADAXP(MV78130), "mvxpe", 1, ARMADAXP_GBE1_BASE,ARMADAXP_IRQ_GBE1_TH_RXTX },
    809      1.19  hsuenaga     { ARMADAXP(MV78130), "mvxpe", 2, ARMADAXP_GBE2_BASE,ARMADAXP_IRQ_GBE2_TH_RXTX },
    810      1.19  hsuenaga #else
    811      1.13  kiyohara     { ARMADAXP(MV78130), "mvgbec", 1, ARMADAXP_GBE1_BASE,IRQ_DEFAULT },
    812      1.13  kiyohara     { ARMADAXP(MV78130), "mvgbec", 2, ARMADAXP_GBE2_BASE,IRQ_DEFAULT },
    813      1.19  hsuenaga #endif
    814      1.23  hsuenaga #if NMVXPSEC > 0
    815      1.23  hsuenaga     { ARMADAXP(MV78130), "mvxpsec", 0, ARMADAXP_XPSEC0_BASE,ARMADAXP_IRQ_CESA0 },
    816      1.23  hsuenaga     { ARMADAXP(MV78130), "mvxpsec", 1, ARMADAXP_XPSEC1_BASE,ARMADAXP_IRQ_CESA1 },
    817      1.23  hsuenaga #else
    818      1.13  kiyohara     { ARMADAXP(MV78130), "mvcesa", 0, ARMADAXP_CESA0_BASE,ARMADAXP_IRQ_CESA0 },
    819      1.13  kiyohara     { ARMADAXP(MV78130), "mvcesa", 1, ARMADAXP_CESA1_BASE,ARMADAXP_IRQ_CESA1 },
    820      1.23  hsuenaga #endif
    821      1.11   rkujawa 
    822      1.11   rkujawa     { ARMADAXP(MV78160), "mvsoctmr",0,MVSOC_TMR_BASE,	ARMADAXP_IRQ_TIMER0 },
    823      1.13  kiyohara     { ARMADAXP(MV78160), "com",    0, MVSOC_COM0_BASE,	ARMADAXP_IRQ_UART0 },
    824      1.13  kiyohara     { ARMADAXP(MV78160), "com",    1, MVSOC_COM1_BASE,	ARMADAXP_IRQ_UART1 },
    825      1.13  kiyohara     { ARMADAXP(MV78160), "com",    2, ARMADAXP_COM2_BASE,ARMADAXP_IRQ_UART2 },
    826      1.13  kiyohara     { ARMADAXP(MV78160), "com",    3, ARMADAXP_COM3_BASE,ARMADAXP_IRQ_UART3 },
    827      1.16  kiyohara     { ARMADAXP(MV78160), "mvsocrtc",0,ARMADAXP_RTC_BASE,ARMADAXP_IRQ_RTC },
    828      1.13  kiyohara     { ARMADAXP(MV78160), "gttwsi", 0, MVSOC_TWSI_BASE,	ARMADAXP_IRQ_TWSI0 },
    829      1.13  kiyohara     { ARMADAXP(MV78160), "gttwsi", 1, ARMADAXP_TWSI1_BASE,ARMADAXP_IRQ_TWSI1 },
    830      1.13  kiyohara     { ARMADAXP(MV78160), "gtidmac",0, ARMADAXP_XORE0_BASE,IRQ_DEFAULT },
    831      1.13  kiyohara     { ARMADAXP(MV78160), "gtidmac",1, ARMADAXP_XORE1_BASE,IRQ_DEFAULT },
    832      1.24  kiyohara     { ARMADAXP(MV78160), "mvsocts",0, ARMADAXP_TS_BASE,	ARMADAXP_IRQ_PMU },
    833      1.13  kiyohara     { ARMADAXP(MV78160), "ehci",   0, ARMADAXP_USB0_BASE,ARMADAXP_IRQ_USB0 },
    834      1.13  kiyohara     { ARMADAXP(MV78160), "ehci",   1, ARMADAXP_USB1_BASE,ARMADAXP_IRQ_USB1 },
    835      1.13  kiyohara     { ARMADAXP(MV78160), "ehci",   2, ARMADAXP_USB2_BASE,ARMADAXP_IRQ_USB2 },
    836      1.13  kiyohara     { ARMADAXP(MV78160), "mvpex",  0, MVSOC_PEX_BASE,	ARMADAXP_IRQ_PEX00 },
    837      1.13  kiyohara     { ARMADAXP(MV78160), "mvpex",  1, ARMADAXP_PEX01_BASE,ARMADAXP_IRQ_PEX01 },
    838      1.13  kiyohara     { ARMADAXP(MV78160), "mvpex",  2, ARMADAXP_PEX02_BASE,ARMADAXP_IRQ_PEX02 },
    839      1.13  kiyohara     { ARMADAXP(MV78160), "mvpex",  3, ARMADAXP_PEX03_BASE,ARMADAXP_IRQ_PEX03 },
    840      1.13  kiyohara     { ARMADAXP(MV78160), "mvpex",  4, ARMADAXP_PEX2_BASE,ARMADAXP_IRQ_PEX2 },
    841      1.13  kiyohara     { ARMADAXP(MV78160), "mvsata", 0, ARMADAXP_SATAHC_BASE,ARMADAXP_IRQ_SATA0 },
    842      1.13  kiyohara     { ARMADAXP(MV78160), "mvspi",  0, ARMADAXP_SPI_BASE,ARMADAXP_IRQ_SPI },
    843      1.13  kiyohara     { ARMADAXP(MV78160), "mvsdio", 0, ARMADAXP_SDIO_BASE,ARMADAXP_IRQ_SDIO },
    844      1.19  hsuenaga #if NMVXPE > 0
    845      1.22  hsuenaga     { ARMADAXP(MV78160), "mvxpbm", 0, MVA_OFFSET_DEFAULT,IRQ_DEFAULT },
    846      1.19  hsuenaga     { ARMADAXP(MV78160), "mvxpe", 0, ARMADAXP_GBE0_BASE,ARMADAXP_IRQ_GBE0_TH_RXTX },
    847      1.19  hsuenaga     { ARMADAXP(MV78160), "mvxpe", 1, ARMADAXP_GBE1_BASE,ARMADAXP_IRQ_GBE1_TH_RXTX },
    848      1.19  hsuenaga     { ARMADAXP(MV78160), "mvxpe", 2, ARMADAXP_GBE2_BASE,ARMADAXP_IRQ_GBE2_TH_RXTX },
    849      1.19  hsuenaga     { ARMADAXP(MV78160), "mvxpe", 3, ARMADAXP_GBE3_BASE,ARMADAXP_IRQ_GBE3_TH_RXTX },
    850      1.19  hsuenaga #else
    851      1.13  kiyohara     { ARMADAXP(MV78160), "mvgbec", 0, ARMADAXP_GBE0_BASE,IRQ_DEFAULT },
    852      1.13  kiyohara     { ARMADAXP(MV78160), "mvgbec", 1, ARMADAXP_GBE1_BASE,IRQ_DEFAULT },
    853      1.13  kiyohara     { ARMADAXP(MV78160), "mvgbec", 2, ARMADAXP_GBE2_BASE,IRQ_DEFAULT },
    854      1.13  kiyohara     { ARMADAXP(MV78160), "mvgbec", 3, ARMADAXP_GBE3_BASE,IRQ_DEFAULT },
    855      1.19  hsuenaga #endif
    856      1.23  hsuenaga #if NMVXPSEC > 0
    857      1.23  hsuenaga     { ARMADAXP(MV78160), "mvxpsec", 0, ARMADAXP_XPSEC0_BASE,ARMADAXP_IRQ_CESA0 },
    858      1.23  hsuenaga     { ARMADAXP(MV78160), "mvxpsec", 1, ARMADAXP_XPSEC1_BASE,ARMADAXP_IRQ_CESA1 },
    859      1.23  hsuenaga #else
    860      1.13  kiyohara     { ARMADAXP(MV78160), "mvcesa", 0, ARMADAXP_CESA0_BASE,ARMADAXP_IRQ_CESA0 },
    861      1.13  kiyohara     { ARMADAXP(MV78160), "mvcesa", 1, ARMADAXP_CESA1_BASE,ARMADAXP_IRQ_CESA1 },
    862      1.23  hsuenaga #endif
    863      1.11   rkujawa 
    864      1.11   rkujawa     { ARMADAXP(MV78230), "mvsoctmr",0,MVSOC_TMR_BASE,	ARMADAXP_IRQ_TIMER0 },
    865      1.13  kiyohara     { ARMADAXP(MV78230), "com",    0, MVSOC_COM0_BASE,	ARMADAXP_IRQ_UART0 },
    866      1.13  kiyohara     { ARMADAXP(MV78230), "com",    1, MVSOC_COM1_BASE,	ARMADAXP_IRQ_UART1 },
    867      1.13  kiyohara     { ARMADAXP(MV78230), "com",    2, ARMADAXP_COM2_BASE,ARMADAXP_IRQ_UART2 },
    868      1.13  kiyohara     { ARMADAXP(MV78230), "com",    3, ARMADAXP_COM3_BASE,ARMADAXP_IRQ_UART3 },
    869      1.16  kiyohara     { ARMADAXP(MV78230), "mvsocrtc",0,ARMADAXP_RTC_BASE,ARMADAXP_IRQ_RTC },
    870      1.13  kiyohara     { ARMADAXP(MV78230), "gttwsi", 0, MVSOC_TWSI_BASE,	ARMADAXP_IRQ_TWSI0 },
    871      1.13  kiyohara     { ARMADAXP(MV78230), "gttwsi", 1, ARMADAXP_TWSI1_BASE,ARMADAXP_IRQ_TWSI1 },
    872      1.13  kiyohara     { ARMADAXP(MV78230), "gtidmac",0, ARMADAXP_XORE0_BASE,IRQ_DEFAULT },
    873      1.13  kiyohara     { ARMADAXP(MV78230), "gtidmac",1, ARMADAXP_XORE1_BASE,IRQ_DEFAULT },
    874      1.24  kiyohara     { ARMADAXP(MV78230), "mvsocts",0, ARMADAXP_TS_BASE,	ARMADAXP_IRQ_PMU },
    875      1.13  kiyohara     { ARMADAXP(MV78230), "ehci",   0, ARMADAXP_USB0_BASE,ARMADAXP_IRQ_USB0 },
    876      1.13  kiyohara     { ARMADAXP(MV78230), "ehci",   1, ARMADAXP_USB1_BASE,ARMADAXP_IRQ_USB1 },
    877      1.13  kiyohara     { ARMADAXP(MV78230), "ehci",   2, ARMADAXP_USB2_BASE,ARMADAXP_IRQ_USB2 },
    878      1.13  kiyohara     { ARMADAXP(MV78230), "mvpex",  0, MVSOC_PEX_BASE,	ARMADAXP_IRQ_PEX00 },
    879      1.13  kiyohara     { ARMADAXP(MV78230), "mvpex",  1, ARMADAXP_PEX01_BASE,ARMADAXP_IRQ_PEX01 },
    880      1.13  kiyohara     { ARMADAXP(MV78230), "mvpex",  2, ARMADAXP_PEX02_BASE,ARMADAXP_IRQ_PEX02 },
    881      1.13  kiyohara     { ARMADAXP(MV78230), "mvpex",  3, ARMADAXP_PEX03_BASE,ARMADAXP_IRQ_PEX03 },
    882  1.24.2.1  pgoyette     { ARMADAXP(MV78230), "mvpex",  4, ARMADAXP_PEX10_BASE,ARMADAXP_IRQ_PEX10 },
    883  1.24.2.1  pgoyette     { ARMADAXP(MV78230), "mvpex",  5, ARMADAXP_PEX2_BASE,ARMADAXP_IRQ_PEX2 },
    884  1.24.2.1  pgoyette     { ARMADAXP(MV78230), "mvpex",  6, ARMADAXP_PEX3_BASE,ARMADAXP_IRQ_PEX3 },
    885      1.13  kiyohara     { ARMADAXP(MV78230), "mvsata", 0, ARMADAXP_SATAHC_BASE,ARMADAXP_IRQ_SATA0 },
    886      1.13  kiyohara     { ARMADAXP(MV78230), "mvspi",  0, ARMADAXP_SPI_BASE,ARMADAXP_IRQ_SPI },
    887      1.13  kiyohara     { ARMADAXP(MV78230), "mvsdio", 0, ARMADAXP_SDIO_BASE,ARMADAXP_IRQ_SDIO },
    888      1.19  hsuenaga #if NMVXPE > 0
    889      1.22  hsuenaga     { ARMADAXP(MV78230), "mvxpbm", 0, MVA_OFFSET_DEFAULT,IRQ_DEFAULT },
    890      1.19  hsuenaga     { ARMADAXP(MV78230), "mvxpe", 0, ARMADAXP_GBE0_BASE,ARMADAXP_IRQ_GBE0_TH_RXTX },
    891      1.19  hsuenaga     { ARMADAXP(MV78230), "mvxpe", 1, ARMADAXP_GBE1_BASE,ARMADAXP_IRQ_GBE1_TH_RXTX },
    892      1.19  hsuenaga     { ARMADAXP(MV78230), "mvxpe", 2, ARMADAXP_GBE2_BASE,ARMADAXP_IRQ_GBE2_TH_RXTX },
    893      1.19  hsuenaga #else
    894      1.13  kiyohara     { ARMADAXP(MV78230), "mvgbec", 0, ARMADAXP_GBE0_BASE,IRQ_DEFAULT },
    895      1.13  kiyohara     { ARMADAXP(MV78230), "mvgbec", 1, ARMADAXP_GBE1_BASE,IRQ_DEFAULT },
    896      1.13  kiyohara     { ARMADAXP(MV78230), "mvgbec", 2, ARMADAXP_GBE2_BASE,IRQ_DEFAULT },
    897      1.19  hsuenaga #endif
    898      1.23  hsuenaga #if NMVXPSEC > 0
    899      1.23  hsuenaga     { ARMADAXP(MV78230), "mvxpsec", 0, ARMADAXP_XPSEC0_BASE,ARMADAXP_IRQ_CESA0 },
    900      1.23  hsuenaga     { ARMADAXP(MV78230), "mvxpsec", 1, ARMADAXP_XPSEC1_BASE,ARMADAXP_IRQ_CESA1 },
    901      1.23  hsuenaga #else
    902      1.13  kiyohara     { ARMADAXP(MV78230), "mvcesa", 0, ARMADAXP_CESA0_BASE,ARMADAXP_IRQ_CESA0 },
    903      1.13  kiyohara     { ARMADAXP(MV78230), "mvcesa", 1, ARMADAXP_CESA1_BASE,ARMADAXP_IRQ_CESA1 },
    904      1.23  hsuenaga #endif
    905      1.11   rkujawa 
    906      1.11   rkujawa     { ARMADAXP(MV78260), "mvsoctmr",0,MVSOC_TMR_BASE,	ARMADAXP_IRQ_TIMER0 },
    907      1.13  kiyohara     { ARMADAXP(MV78260), "com",    0, MVSOC_COM0_BASE,	ARMADAXP_IRQ_UART0 },
    908      1.13  kiyohara     { ARMADAXP(MV78260), "com",    1, MVSOC_COM1_BASE,	ARMADAXP_IRQ_UART1 },
    909      1.13  kiyohara     { ARMADAXP(MV78260), "com",    2, ARMADAXP_COM2_BASE,ARMADAXP_IRQ_UART2 },
    910      1.13  kiyohara     { ARMADAXP(MV78260), "com",    3, ARMADAXP_COM3_BASE,ARMADAXP_IRQ_UART3 },
    911      1.16  kiyohara     { ARMADAXP(MV78260), "mvsocrtc",0,ARMADAXP_RTC_BASE,ARMADAXP_IRQ_RTC },
    912      1.13  kiyohara     { ARMADAXP(MV78260), "gttwsi", 0, MVSOC_TWSI_BASE,	ARMADAXP_IRQ_TWSI0 },
    913      1.13  kiyohara     { ARMADAXP(MV78260), "gttwsi", 1, ARMADAXP_TWSI1_BASE,ARMADAXP_IRQ_TWSI1 },
    914      1.13  kiyohara     { ARMADAXP(MV78260), "gtidmac",0, ARMADAXP_XORE0_BASE,IRQ_DEFAULT },
    915      1.13  kiyohara     { ARMADAXP(MV78260), "gtidmac",1, ARMADAXP_XORE1_BASE,IRQ_DEFAULT },
    916      1.24  kiyohara     { ARMADAXP(MV78260), "mvsocts",0, ARMADAXP_TS_BASE,	ARMADAXP_IRQ_PMU },
    917      1.13  kiyohara     { ARMADAXP(MV78260), "ehci",   0, ARMADAXP_USB0_BASE,ARMADAXP_IRQ_USB0 },
    918      1.13  kiyohara     { ARMADAXP(MV78260), "ehci",   1, ARMADAXP_USB1_BASE,ARMADAXP_IRQ_USB1 },
    919      1.13  kiyohara     { ARMADAXP(MV78260), "ehci",   2, ARMADAXP_USB2_BASE,ARMADAXP_IRQ_USB2 },
    920      1.13  kiyohara     { ARMADAXP(MV78260), "mvpex",  0, MVSOC_PEX_BASE,	ARMADAXP_IRQ_PEX00 },
    921      1.13  kiyohara     { ARMADAXP(MV78260), "mvpex",  1, ARMADAXP_PEX01_BASE,ARMADAXP_IRQ_PEX01 },
    922      1.13  kiyohara     { ARMADAXP(MV78260), "mvpex",  2, ARMADAXP_PEX02_BASE,ARMADAXP_IRQ_PEX02 },
    923      1.13  kiyohara     { ARMADAXP(MV78260), "mvpex",  3, ARMADAXP_PEX03_BASE,ARMADAXP_IRQ_PEX03 },
    924      1.13  kiyohara     { ARMADAXP(MV78260), "mvpex",  4, ARMADAXP_PEX2_BASE,ARMADAXP_IRQ_PEX2 },
    925      1.13  kiyohara     { ARMADAXP(MV78260), "mvsata", 0, ARMADAXP_SATAHC_BASE,ARMADAXP_IRQ_SATA0 },
    926      1.13  kiyohara     { ARMADAXP(MV78260), "mvspi",  0, ARMADAXP_SPI_BASE,ARMADAXP_IRQ_SPI },
    927      1.13  kiyohara     { ARMADAXP(MV78260), "mvsdio", 0, ARMADAXP_SDIO_BASE,ARMADAXP_IRQ_SDIO },
    928      1.19  hsuenaga #if NMVXPE > 0
    929      1.22  hsuenaga     { ARMADAXP(MV78260), "mvxpbm", 0, MVA_OFFSET_DEFAULT,IRQ_DEFAULT },
    930      1.19  hsuenaga     { ARMADAXP(MV78260), "mvxpe", 0, ARMADAXP_GBE0_BASE,ARMADAXP_IRQ_GBE0_TH_RXTX },
    931      1.19  hsuenaga     { ARMADAXP(MV78260), "mvxpe", 1, ARMADAXP_GBE1_BASE,ARMADAXP_IRQ_GBE1_TH_RXTX },
    932      1.19  hsuenaga     { ARMADAXP(MV78260), "mvxpe", 2, ARMADAXP_GBE2_BASE,ARMADAXP_IRQ_GBE2_TH_RXTX },
    933      1.19  hsuenaga     { ARMADAXP(MV78260), "mvxpe", 3, ARMADAXP_GBE3_BASE,ARMADAXP_IRQ_GBE3_TH_RXTX },
    934      1.19  hsuenaga #else
    935      1.13  kiyohara     { ARMADAXP(MV78260), "mvgbec", 0, ARMADAXP_GBE0_BASE,IRQ_DEFAULT },
    936      1.13  kiyohara     { ARMADAXP(MV78260), "mvgbec", 1, ARMADAXP_GBE1_BASE,IRQ_DEFAULT },
    937      1.13  kiyohara     { ARMADAXP(MV78260), "mvgbec", 2, ARMADAXP_GBE2_BASE,IRQ_DEFAULT },
    938      1.13  kiyohara     { ARMADAXP(MV78260), "mvgbec", 3, ARMADAXP_GBE3_BASE,IRQ_DEFAULT },
    939      1.19  hsuenaga #endif
    940      1.23  hsuenaga #if NMVXPSEC > 0
    941      1.23  hsuenaga     { ARMADAXP(MV78260), "mvxpsec", 0, ARMADAXP_XPSEC0_BASE,ARMADAXP_IRQ_CESA0 },
    942      1.23  hsuenaga     { ARMADAXP(MV78260), "mvxpsec", 1, ARMADAXP_XPSEC1_BASE,ARMADAXP_IRQ_CESA1 },
    943      1.23  hsuenaga #else
    944      1.13  kiyohara     { ARMADAXP(MV78260), "mvcesa", 0, ARMADAXP_CESA0_BASE,ARMADAXP_IRQ_CESA0 },
    945      1.13  kiyohara     { ARMADAXP(MV78260), "mvcesa", 1, ARMADAXP_CESA1_BASE,ARMADAXP_IRQ_CESA1 },
    946      1.23  hsuenaga #endif
    947      1.11   rkujawa 
    948      1.11   rkujawa     { ARMADAXP(MV78460), "mvsoctmr",0,MVSOC_TMR_BASE,	ARMADAXP_IRQ_TIMER0 },
    949      1.13  kiyohara     { ARMADAXP(MV78460), "com",    0, MVSOC_COM0_BASE,	ARMADAXP_IRQ_UART0 },
    950      1.13  kiyohara     { ARMADAXP(MV78460), "com",    1, MVSOC_COM1_BASE,	ARMADAXP_IRQ_UART1 },
    951      1.13  kiyohara     { ARMADAXP(MV78460), "com",    2, ARMADAXP_COM2_BASE,ARMADAXP_IRQ_UART2 },
    952      1.13  kiyohara     { ARMADAXP(MV78460), "com",    3, ARMADAXP_COM3_BASE,ARMADAXP_IRQ_UART3 },
    953      1.16  kiyohara     { ARMADAXP(MV78460), "mvsocrtc",0,ARMADAXP_RTC_BASE,ARMADAXP_IRQ_RTC },
    954      1.13  kiyohara     { ARMADAXP(MV78460), "gttwsi", 0, MVSOC_TWSI_BASE,	ARMADAXP_IRQ_TWSI0 },
    955      1.13  kiyohara     { ARMADAXP(MV78460), "gttwsi", 1, ARMADAXP_TWSI1_BASE,ARMADAXP_IRQ_TWSI1 },
    956      1.13  kiyohara     { ARMADAXP(MV78460), "gtidmac",0, ARMADAXP_XORE0_BASE,IRQ_DEFAULT },
    957      1.13  kiyohara     { ARMADAXP(MV78460), "gtidmac",1, ARMADAXP_XORE1_BASE,IRQ_DEFAULT },
    958      1.24  kiyohara     { ARMADAXP(MV78460), "mvsocts",0, ARMADAXP_TS_BASE,	ARMADAXP_IRQ_PMU },
    959      1.13  kiyohara     { ARMADAXP(MV78460), "ehci",   0, ARMADAXP_USB0_BASE,ARMADAXP_IRQ_USB0 },
    960      1.13  kiyohara     { ARMADAXP(MV78460), "ehci",   1, ARMADAXP_USB1_BASE,ARMADAXP_IRQ_USB1 },
    961      1.13  kiyohara     { ARMADAXP(MV78460), "ehci",   2, ARMADAXP_USB2_BASE,ARMADAXP_IRQ_USB2 },
    962      1.13  kiyohara     { ARMADAXP(MV78460), "mvpex",  0, MVSOC_PEX_BASE,	ARMADAXP_IRQ_PEX00 },
    963      1.13  kiyohara     { ARMADAXP(MV78460), "mvpex",  1, ARMADAXP_PEX01_BASE,ARMADAXP_IRQ_PEX01 },
    964      1.13  kiyohara     { ARMADAXP(MV78460), "mvpex",  2, ARMADAXP_PEX02_BASE,ARMADAXP_IRQ_PEX02 },
    965      1.13  kiyohara     { ARMADAXP(MV78460), "mvpex",  3, ARMADAXP_PEX03_BASE,ARMADAXP_IRQ_PEX03 },
    966      1.13  kiyohara     { ARMADAXP(MV78460), "mvpex",  4, ARMADAXP_PEX2_BASE,ARMADAXP_IRQ_PEX2 },
    967      1.13  kiyohara     { ARMADAXP(MV78460), "mvpex",  5, ARMADAXP_PEX3_BASE,ARMADAXP_IRQ_PEX3 },
    968      1.13  kiyohara     { ARMADAXP(MV78460), "mvsata", 0, ARMADAXP_SATAHC_BASE,ARMADAXP_IRQ_SATA0 },
    969      1.13  kiyohara     { ARMADAXP(MV78460), "mvspi",  0, ARMADAXP_SPI_BASE,ARMADAXP_IRQ_SPI },
    970      1.13  kiyohara     { ARMADAXP(MV78460), "mvsdio", 0, ARMADAXP_SDIO_BASE,ARMADAXP_IRQ_SDIO },
    971      1.19  hsuenaga #if NMVXPE > 0
    972      1.22  hsuenaga     { ARMADAXP(MV78460), "mvxpbm", 0, MVA_OFFSET_DEFAULT,IRQ_DEFAULT },
    973      1.19  hsuenaga     { ARMADAXP(MV78460), "mvxpe", 0, ARMADAXP_GBE0_BASE,ARMADAXP_IRQ_GBE0_TH_RXTX },
    974      1.19  hsuenaga     { ARMADAXP(MV78460), "mvxpe", 1, ARMADAXP_GBE1_BASE,ARMADAXP_IRQ_GBE1_TH_RXTX },
    975      1.19  hsuenaga     { ARMADAXP(MV78460), "mvxpe", 2, ARMADAXP_GBE2_BASE,ARMADAXP_IRQ_GBE2_TH_RXTX },
    976      1.19  hsuenaga     { ARMADAXP(MV78460), "mvxpe", 3, ARMADAXP_GBE3_BASE,ARMADAXP_IRQ_GBE3_TH_RXTX },
    977      1.19  hsuenaga #else
    978      1.13  kiyohara     { ARMADAXP(MV78460), "mvgbec", 0, ARMADAXP_GBE0_BASE,IRQ_DEFAULT },
    979      1.13  kiyohara     { ARMADAXP(MV78460), "mvgbec", 1, ARMADAXP_GBE1_BASE,IRQ_DEFAULT },
    980      1.13  kiyohara     { ARMADAXP(MV78460), "mvgbec", 2, ARMADAXP_GBE2_BASE,IRQ_DEFAULT },
    981      1.13  kiyohara     { ARMADAXP(MV78460), "mvgbec", 3, ARMADAXP_GBE3_BASE,IRQ_DEFAULT },
    982      1.19  hsuenaga #endif
    983      1.23  hsuenaga #if NMVXPSEC > 0
    984      1.23  hsuenaga     { ARMADAXP(MV78460), "mvxpsec", 0, ARMADAXP_XPSEC0_BASE,ARMADAXP_IRQ_CESA0 },
    985      1.23  hsuenaga     { ARMADAXP(MV78460), "mvxpsec", 1, ARMADAXP_XPSEC1_BASE,ARMADAXP_IRQ_CESA1 },
    986      1.23  hsuenaga #else
    987      1.13  kiyohara     { ARMADAXP(MV78460), "mvcesa", 0, ARMADAXP_CESA0_BASE,ARMADAXP_IRQ_CESA0 },
    988      1.13  kiyohara     { ARMADAXP(MV78460), "mvcesa", 1, ARMADAXP_CESA1_BASE,ARMADAXP_IRQ_CESA1 },
    989      1.23  hsuenaga #endif
    990      1.18  kiyohara 
    991      1.18  kiyohara     { ARMADA370(MV6710), "mvsoctmr",0,MVSOC_TMR_BASE,	ARMADAXP_IRQ_TIMER0 },
    992      1.18  kiyohara     { ARMADA370(MV6710), "com",    0, MVSOC_COM0_BASE,	ARMADAXP_IRQ_UART0 },
    993      1.18  kiyohara     { ARMADA370(MV6710), "com",    1, MVSOC_COM1_BASE,	ARMADAXP_IRQ_UART1 },
    994      1.18  kiyohara     { ARMADA370(MV6710), "mvsocrtc",0,ARMADAXP_RTC_BASE,ARMADAXP_IRQ_RTC },
    995      1.18  kiyohara     { ARMADA370(MV6710), "gttwsi", 0, MVSOC_TWSI_BASE,	ARMADAXP_IRQ_TWSI0 },
    996      1.18  kiyohara     { ARMADA370(MV6710), "gttwsi", 1, ARMADAXP_TWSI1_BASE,ARMADAXP_IRQ_TWSI1 },
    997      1.18  kiyohara     { ARMADA370(MV6710), "gtidmac",0, ARMADAXP_XORE0_BASE,IRQ_DEFAULT },
    998      1.18  kiyohara     { ARMADA370(MV6710), "ehci",   0, ARMADAXP_USB0_BASE,ARMADAXP_IRQ_USB0 },
    999      1.18  kiyohara     { ARMADA370(MV6710), "ehci",   1, ARMADAXP_USB1_BASE,ARMADAXP_IRQ_USB1 },
   1000      1.18  kiyohara     { ARMADA370(MV6710), "mvpex",  0, MVSOC_PEX_BASE,	ARMADAXP_IRQ_PEX00 },
   1001      1.18  kiyohara     { ARMADA370(MV6710), "mvpex",  1, ARMADAXP_PEX01_BASE,ARMADAXP_IRQ_PEX01 },
   1002      1.18  kiyohara     { ARMADA370(MV6710), "mvsata", 0, ARMADAXP_SATAHC_BASE,ARMADAXP_IRQ_SATA0 },
   1003      1.18  kiyohara     { ARMADA370(MV6710), "mvspi",  0, ARMADAXP_SPI_BASE,ARMADAXP_IRQ_SPI },
   1004      1.18  kiyohara     { ARMADA370(MV6710), "mvspi",  1, ARMADAXP_SPI_BASE,ARMADAXP_IRQ_SPI },
   1005      1.18  kiyohara     { ARMADA370(MV6710), "mvsdio", 0, ARMADAXP_SDIO_BASE,ARMADAXP_IRQ_SDIO },
   1006      1.19  hsuenaga #if NMVXPE > 0
   1007      1.22  hsuenaga     { ARMADA370(MV6710), "mvxpbm", 0, MVA_OFFSET_DEFAULT,IRQ_DEFAULT },
   1008      1.19  hsuenaga     { ARMADA370(MV6710), "mvxpe", 0, ARMADAXP_GBE0_BASE,ARMADAXP_IRQ_GBE0_TH_RXTX },
   1009      1.19  hsuenaga     { ARMADA370(MV6710), "mvxpe", 1, ARMADAXP_GBE1_BASE,ARMADAXP_IRQ_GBE1_TH_RXTX },
   1010      1.19  hsuenaga #else
   1011      1.18  kiyohara     { ARMADA370(MV6710), "mvgbec", 0, ARMADAXP_GBE0_BASE,IRQ_DEFAULT },
   1012      1.18  kiyohara     { ARMADA370(MV6710), "mvgbec", 1, ARMADAXP_GBE1_BASE,IRQ_DEFAULT },
   1013      1.19  hsuenaga #endif
   1014      1.23  hsuenaga #if NMVXPSEC > 0
   1015      1.23  hsuenaga     { ARMADA370(MV6710), "mvxpsec", 0, ARMADAXP_XPSEC0_BASE,ARMADAXP_IRQ_CESA0 },
   1016      1.23  hsuenaga #else
   1017      1.18  kiyohara     { ARMADA370(MV6710), "mvcesa", 0, ARMADAXP_CESA0_BASE,ARMADAXP_IRQ_CESA0 },
   1018      1.11   rkujawa #endif
   1019      1.23  hsuenaga #endif
   1020       1.1  kiyohara };
   1021       1.1  kiyohara 
   1022       1.1  kiyohara 
   1023       1.1  kiyohara CFATTACH_DECL_NEW(mvsoc, sizeof(struct mvsoc_softc),
   1024       1.1  kiyohara     mvsoc_match, mvsoc_attach, NULL, NULL);
   1025       1.1  kiyohara 
   1026       1.1  kiyohara /* ARGSUSED */
   1027       1.1  kiyohara static int
   1028       1.1  kiyohara mvsoc_match(device_t parent, struct cfdata *match, void *aux)
   1029       1.1  kiyohara {
   1030       1.1  kiyohara 
   1031       1.1  kiyohara 	return 1;
   1032       1.1  kiyohara }
   1033       1.1  kiyohara 
   1034       1.1  kiyohara /* ARGSUSED */
   1035       1.1  kiyohara static void
   1036       1.1  kiyohara mvsoc_attach(device_t parent, device_t self, void *aux)
   1037       1.1  kiyohara {
   1038       1.1  kiyohara 	struct mvsoc_softc *sc = device_private(self);
   1039       1.1  kiyohara 	struct marvell_attach_args mva;
   1040      1.18  kiyohara 	enum marvell_tags *tags;
   1041       1.1  kiyohara 	uint16_t model;
   1042       1.1  kiyohara 	uint8_t rev;
   1043       1.1  kiyohara 	int i;
   1044       1.1  kiyohara 
   1045       1.1  kiyohara 	sc->sc_dev = self;
   1046       1.1  kiyohara 	sc->sc_iot = &mvsoc_bs_tag;
   1047      1.13  kiyohara 	sc->sc_addr = vtophys(regbase);
   1048       1.1  kiyohara 	sc->sc_dmat = &mvsoc_bus_dma_tag;
   1049       1.1  kiyohara 	if (bus_space_map(sc->sc_iot, sc->sc_addr, 0x100000, 0, &sc->sc_ioh) !=
   1050       1.1  kiyohara 	    0) {
   1051       1.1  kiyohara 		aprint_error_dev(self, "can't map registers\n");
   1052       1.1  kiyohara 		return;
   1053       1.1  kiyohara 	}
   1054       1.1  kiyohara 
   1055       1.1  kiyohara 	model = mvsoc_model();
   1056       1.1  kiyohara 	rev = mvsoc_rev();
   1057       1.1  kiyohara 	for (i = 0; i < __arraycount(nametbl); i++)
   1058       1.1  kiyohara 		if (nametbl[i].model == model && nametbl[i].rev == rev)
   1059       1.1  kiyohara 			break;
   1060       1.1  kiyohara 	if (i >= __arraycount(nametbl))
   1061       1.1  kiyohara 		panic("unknown SoC: model 0x%04x, rev 0x%02x", model, rev);
   1062       1.1  kiyohara 
   1063       1.1  kiyohara 	aprint_normal(": Marvell %s %s%s  %s\n",
   1064       1.1  kiyohara 	    nametbl[i].modelstr,
   1065       1.1  kiyohara 	    nametbl[i].revstr != NULL ? "Rev. " : "",
   1066       1.1  kiyohara 	    nametbl[i].revstr != NULL ? nametbl[i].revstr : "",
   1067       1.1  kiyohara 	    nametbl[i].typestr);
   1068       1.1  kiyohara         aprint_normal("%s: CPU Clock %d.%03d MHz"
   1069       1.1  kiyohara 	    "  SysClock %d.%03d MHz  TClock %d.%03d MHz\n",
   1070       1.1  kiyohara 	    device_xname(self),
   1071       1.1  kiyohara 	    mvPclk / 1000000, (mvPclk / 1000) % 1000,
   1072       1.1  kiyohara 	    mvSysclk / 1000000, (mvSysclk / 1000) % 1000,
   1073       1.1  kiyohara 	    mvTclk / 1000000, (mvTclk / 1000) % 1000);
   1074       1.1  kiyohara 	aprint_naive("\n");
   1075       1.1  kiyohara 
   1076       1.1  kiyohara 	mvsoc_intr_init();
   1077       1.1  kiyohara 
   1078      1.18  kiyohara 	for (i = 0; i < __arraycount(tagstbl); i++)
   1079      1.18  kiyohara 		if (tagstbl[i].model == model && tagstbl[i].rev == rev)
   1080      1.18  kiyohara 			break;
   1081      1.18  kiyohara 	if (i >= __arraycount(tagstbl))
   1082      1.18  kiyohara 		panic("unknown SoC: model 0x%04x, rev 0x%02x", model, rev);
   1083      1.18  kiyohara 	tags = tagstbl[i].tags;
   1084      1.18  kiyohara 
   1085      1.21  hsuenaga 	if (boothowto & (AB_VERBOSE | AB_DEBUG))
   1086      1.21  hsuenaga 		mvsoc_target_dump(sc);
   1087      1.21  hsuenaga 
   1088       1.1  kiyohara 	for (i = 0; i < __arraycount(mvsoc_periphs); i++) {
   1089       1.1  kiyohara 		if (mvsoc_periphs[i].model != model)
   1090       1.1  kiyohara 			continue;
   1091       1.1  kiyohara 
   1092       1.1  kiyohara 		mva.mva_name = mvsoc_periphs[i].name;
   1093       1.1  kiyohara 		mva.mva_model = model;
   1094       1.1  kiyohara 		mva.mva_revision = rev;
   1095       1.1  kiyohara 		mva.mva_iot = sc->sc_iot;
   1096       1.1  kiyohara 		mva.mva_ioh = sc->sc_ioh;
   1097       1.1  kiyohara 		mva.mva_unit = mvsoc_periphs[i].unit;
   1098       1.1  kiyohara 		mva.mva_addr = sc->sc_addr;
   1099       1.1  kiyohara 		mva.mva_offset = mvsoc_periphs[i].offset;
   1100       1.1  kiyohara 		mva.mva_size = 0;
   1101       1.1  kiyohara 		mva.mva_dmat = sc->sc_dmat;
   1102       1.1  kiyohara 		mva.mva_irq = mvsoc_periphs[i].irq;
   1103      1.18  kiyohara 		mva.mva_tags = tags;
   1104       1.1  kiyohara 
   1105      1.16  kiyohara 		/* Skip clock disabled devices */
   1106      1.16  kiyohara 		if (mvsoc_clkgating != NULL && mvsoc_clkgating(&mva)) {
   1107      1.16  kiyohara 			aprint_normal_dev(self, "%s%d clock disabled\n",
   1108      1.16  kiyohara 			    mvsoc_periphs[i].name, mvsoc_periphs[i].unit);
   1109      1.16  kiyohara 			continue;
   1110      1.16  kiyohara 		}
   1111      1.16  kiyohara 
   1112       1.1  kiyohara 		config_found_sm_loc(sc->sc_dev, "mvsoc", NULL, &mva,
   1113       1.1  kiyohara 		    mvsoc_print, mvsoc_search);
   1114       1.1  kiyohara 	}
   1115       1.1  kiyohara }
   1116       1.1  kiyohara 
   1117       1.1  kiyohara static int
   1118       1.1  kiyohara mvsoc_print(void *aux, const char *pnp)
   1119       1.1  kiyohara {
   1120       1.1  kiyohara 	struct marvell_attach_args *mva = aux;
   1121       1.1  kiyohara 
   1122       1.1  kiyohara 	if (pnp)
   1123       1.1  kiyohara 		aprint_normal("%s at %s unit %d",
   1124       1.1  kiyohara 		    mva->mva_name, pnp, mva->mva_unit);
   1125       1.1  kiyohara 	else {
   1126       1.1  kiyohara 		if (mva->mva_unit != MVA_UNIT_DEFAULT)
   1127       1.1  kiyohara 			aprint_normal(" unit %d", mva->mva_unit);
   1128       1.1  kiyohara 		if (mva->mva_offset != MVA_OFFSET_DEFAULT) {
   1129       1.1  kiyohara 			aprint_normal(" offset 0x%04lx", mva->mva_offset);
   1130       1.1  kiyohara 			if (mva->mva_size > 0)
   1131       1.1  kiyohara 				aprint_normal("-0x%04lx",
   1132       1.1  kiyohara 				    mva->mva_offset + mva->mva_size - 1);
   1133       1.1  kiyohara 		}
   1134       1.1  kiyohara 		if (mva->mva_irq != MVA_IRQ_DEFAULT)
   1135       1.1  kiyohara 			aprint_normal(" irq %d", mva->mva_irq);
   1136       1.1  kiyohara 	}
   1137       1.1  kiyohara 
   1138       1.1  kiyohara 	return UNCONF;
   1139       1.1  kiyohara }
   1140       1.1  kiyohara 
   1141       1.1  kiyohara /* ARGSUSED */
   1142       1.1  kiyohara static int
   1143       1.1  kiyohara mvsoc_search(device_t parent, cfdata_t cf, const int *ldesc, void *aux)
   1144       1.1  kiyohara {
   1145       1.1  kiyohara 
   1146       1.1  kiyohara 	return config_match(parent, cf, aux);
   1147       1.1  kiyohara }
   1148       1.1  kiyohara 
   1149       1.1  kiyohara /* ARGSUSED */
   1150       1.1  kiyohara int
   1151       1.1  kiyohara marvell_winparams_by_tag(device_t dev, int tag, int *target, int *attribute,
   1152       1.1  kiyohara 			 uint64_t *base, uint32_t *size)
   1153       1.1  kiyohara {
   1154       1.1  kiyohara 	uint32_t base32;
   1155       1.1  kiyohara 	int rv;
   1156       1.1  kiyohara 
   1157       1.1  kiyohara 	rv = mvsoc_target(tag, target, attribute, &base32, size);
   1158       1.1  kiyohara 	*base = base32;
   1159       1.1  kiyohara 	if (rv == -1)
   1160       1.1  kiyohara 		return -1;
   1161       1.1  kiyohara 	return 0;
   1162       1.1  kiyohara }
   1163       1.1  kiyohara 
   1164       1.1  kiyohara 
   1165       1.1  kiyohara /*
   1166       1.1  kiyohara  * These functions is called before bus_space is initialized.
   1167       1.1  kiyohara  */
   1168       1.1  kiyohara 
   1169       1.1  kiyohara void
   1170       1.1  kiyohara mvsoc_bootstrap(bus_addr_t iobase)
   1171       1.1  kiyohara {
   1172       1.1  kiyohara 
   1173       1.1  kiyohara 	regbase = iobase;
   1174       1.1  kiyohara 	dsc_base = iobase + MVSOC_DSC_BASE;
   1175       1.1  kiyohara 	mlmb_base = iobase + MVSOC_MLMB_BASE;
   1176       1.1  kiyohara 	pex_base = iobase + MVSOC_PEX_BASE;
   1177       1.9      matt #ifdef MVSOC_CONSOLE_EARLY
   1178       1.9      matt 	com_base = iobase + MVSOC_COM0_BASE;
   1179       1.9      matt 	cn_tab = &mvsoc_earlycons;
   1180       1.9      matt 	printf("Hello\n");
   1181       1.9      matt #endif
   1182       1.1  kiyohara }
   1183       1.1  kiyohara 
   1184       1.1  kiyohara /*
   1185       1.1  kiyohara  * We can read register of PCI configurations from (MVSOC_PEX_BASE + 0).
   1186       1.1  kiyohara  */
   1187       1.1  kiyohara uint16_t
   1188       1.5      matt mvsoc_model(void)
   1189       1.1  kiyohara {
   1190       1.1  kiyohara 	/*
   1191       1.1  kiyohara 	 * We read product-id from vendor/device register of PCI-Express.
   1192       1.1  kiyohara 	 */
   1193       1.1  kiyohara 	uint32_t reg;
   1194       1.1  kiyohara 	uint16_t model;
   1195       1.1  kiyohara 
   1196       1.1  kiyohara 	KASSERT(regbase != 0xffffffff);
   1197       1.1  kiyohara 
   1198       1.1  kiyohara 	reg = *(volatile uint32_t *)(pex_base + PCI_ID_REG);
   1199       1.1  kiyohara 	model = PCI_PRODUCT(reg);
   1200       1.1  kiyohara 
   1201       1.1  kiyohara #if defined(ORION)
   1202       1.1  kiyohara 	if (model == PCI_PRODUCT_MARVELL_88F5182) {
   1203       1.1  kiyohara 		reg = *(volatile uint32_t *)(regbase + ORION_PMI_BASE +
   1204       1.1  kiyohara 		    ORION_PMI_SAMPLE_AT_RESET);
   1205       1.1  kiyohara 		if ((reg & ORION_PMISMPL_TCLK_MASK) == 0)
   1206       1.1  kiyohara 			model = PCI_PRODUCT_MARVELL_88F5082;
   1207       1.1  kiyohara 	}
   1208       1.1  kiyohara #endif
   1209      1.14  kiyohara #if defined(KIRKWOOD)
   1210      1.14  kiyohara 	if (model == PCI_PRODUCT_MARVELL_88F6281) {
   1211      1.14  kiyohara 		reg = *(volatile uint32_t *)(regbase + KIRKWOOD_MISC_BASE +
   1212      1.14  kiyohara 		    KIRKWOOD_MISC_DEVICEID);
   1213      1.14  kiyohara 		if (reg == 1)	/* 88F6192 is 1 */
   1214      1.14  kiyohara 			model = MARVELL_KIRKWOOD_88F6192;
   1215      1.14  kiyohara 	}
   1216      1.14  kiyohara #endif
   1217       1.1  kiyohara 
   1218       1.1  kiyohara 	return model;
   1219       1.1  kiyohara }
   1220       1.1  kiyohara 
   1221       1.1  kiyohara uint8_t
   1222       1.5      matt mvsoc_rev(void)
   1223       1.1  kiyohara {
   1224       1.1  kiyohara 	uint32_t reg;
   1225       1.1  kiyohara 	uint8_t rev;
   1226       1.1  kiyohara 
   1227       1.1  kiyohara 	KASSERT(regbase != 0xffffffff);
   1228       1.1  kiyohara 
   1229       1.1  kiyohara 	reg = *(volatile uint32_t *)(pex_base + PCI_CLASS_REG);
   1230       1.1  kiyohara 	rev = PCI_REVISION(reg);
   1231       1.1  kiyohara 
   1232       1.1  kiyohara 	return rev;
   1233       1.1  kiyohara }
   1234       1.1  kiyohara 
   1235       1.1  kiyohara 
   1236       1.1  kiyohara int
   1237       1.1  kiyohara mvsoc_target(int tag, uint32_t *target, uint32_t *attr, uint32_t *base,
   1238       1.1  kiyohara 	     uint32_t *size)
   1239       1.1  kiyohara {
   1240       1.1  kiyohara 	int i;
   1241       1.1  kiyohara 
   1242       1.1  kiyohara 	KASSERT(regbase != 0xffffffff);
   1243       1.1  kiyohara 
   1244       1.1  kiyohara 	if (tag == MVSOC_TAG_INTERNALREG) {
   1245       1.1  kiyohara 		if (target != NULL)
   1246       1.1  kiyohara 			*target = 0;
   1247       1.1  kiyohara 		if (attr != NULL)
   1248       1.1  kiyohara 			*attr = 0;
   1249       1.1  kiyohara 		if (base != NULL)
   1250       1.1  kiyohara 			*base = read_mlmbreg(MVSOC_MLMB_IRBAR) &
   1251       1.1  kiyohara 			    MVSOC_MLMB_IRBAR_BASE_MASK;
   1252       1.1  kiyohara 		if (size != NULL)
   1253       1.1  kiyohara 			*size = 0;
   1254       1.1  kiyohara 
   1255       1.1  kiyohara 		return 0;
   1256       1.1  kiyohara 	}
   1257       1.1  kiyohara 
   1258       1.1  kiyohara 	/* sanity check */
   1259       1.1  kiyohara 	for (i = 0; i < __arraycount(mvsoc_tags); i++)
   1260       1.1  kiyohara 		if (mvsoc_tags[i].tag == tag)
   1261       1.1  kiyohara 			break;
   1262       1.1  kiyohara 	if (i >= __arraycount(mvsoc_tags))
   1263       1.1  kiyohara 		return -1;
   1264       1.1  kiyohara 
   1265       1.1  kiyohara 	if (target != NULL)
   1266       1.1  kiyohara 		*target = mvsoc_tags[i].target;
   1267       1.1  kiyohara 	if (attr != NULL)
   1268       1.1  kiyohara 		*attr = mvsoc_tags[i].attr;
   1269       1.1  kiyohara 
   1270       1.1  kiyohara 	if (mvsoc_tags[i].target == MVSOC_UNITID_DDR) {
   1271      1.17  kiyohara 		if (tag == MARVELL_TAG_SDRAM_CS0 ||
   1272      1.17  kiyohara 		    tag == MARVELL_TAG_SDRAM_CS1 ||
   1273      1.17  kiyohara 		    tag == MARVELL_TAG_SDRAM_CS2 ||
   1274      1.17  kiyohara 		    tag == MARVELL_TAG_SDRAM_CS3)
   1275      1.17  kiyohara 			return mvsoc_target_ddr(mvsoc_tags[i].attr, base, size);
   1276  1.24.2.1  pgoyette 		else if (tag == MARVELL_TAG_AXI_CS0 ||
   1277  1.24.2.1  pgoyette 		    tag == MARVELL_TAG_AXI_CS1)
   1278  1.24.2.1  pgoyette 			return mvsoc_target_axi(tag, base, size);
   1279      1.17  kiyohara 		else
   1280      1.17  kiyohara 			return mvsoc_target_ddr3(mvsoc_tags[i].attr, base,
   1281      1.17  kiyohara 			    size);
   1282      1.17  kiyohara 	} else
   1283      1.17  kiyohara 		return mvsoc_target_peripheral(mvsoc_tags[i].target,
   1284      1.17  kiyohara 		    mvsoc_tags[i].attr, base, size);
   1285      1.17  kiyohara }
   1286      1.17  kiyohara 
   1287      1.17  kiyohara static int
   1288      1.17  kiyohara mvsoc_target_ddr(uint32_t attr, uint32_t *base, uint32_t *size)
   1289      1.17  kiyohara {
   1290      1.17  kiyohara 	uint32_t baseaddrreg, sizereg;
   1291      1.17  kiyohara 	int cs;
   1292      1.17  kiyohara 
   1293      1.17  kiyohara 	/*
   1294      1.17  kiyohara 	 * Read DDR SDRAM Controller Address Decode Registers
   1295      1.17  kiyohara 	 */
   1296      1.17  kiyohara 
   1297      1.17  kiyohara 	switch (attr) {
   1298      1.17  kiyohara 	case MARVELL_ATTR_SDRAM_CS0:
   1299      1.17  kiyohara 		cs = 0;
   1300      1.17  kiyohara 		break;
   1301      1.17  kiyohara 	case MARVELL_ATTR_SDRAM_CS1:
   1302      1.17  kiyohara 		cs = 1;
   1303      1.17  kiyohara 		break;
   1304      1.17  kiyohara 	case MARVELL_ATTR_SDRAM_CS2:
   1305      1.17  kiyohara 		cs = 2;
   1306      1.17  kiyohara 		break;
   1307      1.17  kiyohara 	case MARVELL_ATTR_SDRAM_CS3:
   1308      1.17  kiyohara 		cs = 3;
   1309      1.17  kiyohara 		break;
   1310      1.17  kiyohara 	default:
   1311      1.17  kiyohara 		aprint_error("unknwon ATTR: 0x%x", attr);
   1312      1.17  kiyohara 		return -1;
   1313      1.17  kiyohara 	}
   1314      1.17  kiyohara 	sizereg = *(volatile uint32_t *)(dsc_base + MVSOC_DSC_CSSR(cs));
   1315      1.17  kiyohara 	if (sizereg & MVSOC_DSC_CSSR_WINEN) {
   1316      1.17  kiyohara 		baseaddrreg =
   1317      1.17  kiyohara 		    *(volatile uint32_t *)(dsc_base + MVSOC_DSC_CSBAR(cs));
   1318       1.1  kiyohara 
   1319      1.17  kiyohara 		if (base != NULL)
   1320      1.17  kiyohara 			*base = baseaddrreg & MVSOC_DSC_CSBAR_BASE_MASK;
   1321      1.17  kiyohara 		if (size != NULL)
   1322      1.17  kiyohara 			*size = (sizereg & MVSOC_DSC_CSSR_SIZE_MASK) +
   1323      1.17  kiyohara 			    (~MVSOC_DSC_CSSR_SIZE_MASK + 1);
   1324       1.1  kiyohara 	} else {
   1325      1.17  kiyohara 		if (base != NULL)
   1326      1.17  kiyohara 			*base = 0;
   1327      1.17  kiyohara 		if (size != NULL)
   1328      1.17  kiyohara 			*size = 0;
   1329      1.17  kiyohara 	}
   1330      1.17  kiyohara 	return 0;
   1331      1.17  kiyohara }
   1332      1.17  kiyohara 
   1333      1.17  kiyohara static int
   1334      1.17  kiyohara mvsoc_target_ddr3(uint32_t attr, uint32_t *base, uint32_t *size)
   1335      1.17  kiyohara {
   1336      1.17  kiyohara 	uint32_t baseaddrreg, sizereg;
   1337      1.17  kiyohara 	int cs, i;
   1338      1.17  kiyohara 
   1339      1.17  kiyohara 	/*
   1340      1.17  kiyohara 	 * Read DDR3 SDRAM Address Decoding Registers
   1341      1.17  kiyohara 	 */
   1342       1.1  kiyohara 
   1343      1.17  kiyohara 	switch (attr) {
   1344      1.17  kiyohara 	case MARVELL_ATTR_SDRAM_CS0:
   1345      1.17  kiyohara 		cs = 0;
   1346      1.17  kiyohara 		break;
   1347      1.17  kiyohara 	case MARVELL_ATTR_SDRAM_CS1:
   1348      1.17  kiyohara 		cs = 1;
   1349      1.17  kiyohara 		break;
   1350      1.17  kiyohara 	case MARVELL_ATTR_SDRAM_CS2:
   1351      1.17  kiyohara 		cs = 2;
   1352      1.17  kiyohara 		break;
   1353      1.17  kiyohara 	case MARVELL_ATTR_SDRAM_CS3:
   1354      1.17  kiyohara 		cs = 3;
   1355      1.17  kiyohara 		break;
   1356      1.17  kiyohara 	default:
   1357      1.17  kiyohara 		aprint_error("unknwon ATTR: 0x%x", attr);
   1358      1.17  kiyohara 		return -1;
   1359      1.17  kiyohara 	}
   1360      1.17  kiyohara 	for (i = 0; i < MVSOC_MLMB_NWIN; i++) {
   1361      1.17  kiyohara 		sizereg = read_mlmbreg(MVSOC_MLMB_WINCR(i));
   1362      1.17  kiyohara 		if ((sizereg & MVSOC_MLMB_WINCR_EN) &&
   1363      1.17  kiyohara 		    MVSOC_MLMB_WINCR_WINCS(sizereg) == cs)
   1364      1.17  kiyohara 			break;
   1365      1.17  kiyohara 	}
   1366      1.17  kiyohara 	if (i == MVSOC_MLMB_NWIN) {
   1367       1.1  kiyohara 		if (base != NULL)
   1368       1.1  kiyohara 			*base = 0;
   1369       1.1  kiyohara 		if (size != NULL)
   1370       1.1  kiyohara 			*size = 0;
   1371      1.17  kiyohara 		return 0;
   1372      1.17  kiyohara 	}
   1373       1.1  kiyohara 
   1374      1.17  kiyohara 	baseaddrreg = read_mlmbreg(MVSOC_MLMB_WINBAR(i));
   1375      1.17  kiyohara 	if (base != NULL)
   1376      1.17  kiyohara 		*base = baseaddrreg & MVSOC_MLMB_WINBAR_BASE_MASK;
   1377      1.17  kiyohara 	if (size != NULL)
   1378      1.17  kiyohara 		*size = (sizereg & MVSOC_MLMB_WINCR_SIZE_MASK) +
   1379      1.17  kiyohara 		    (~MVSOC_MLMB_WINCR_SIZE_MASK + 1);
   1380      1.17  kiyohara 	return 0;
   1381      1.17  kiyohara }
   1382      1.17  kiyohara 
   1383      1.17  kiyohara static int
   1384  1.24.2.1  pgoyette mvsoc_target_axi(int tag, uint32_t *base, uint32_t *size)
   1385  1.24.2.1  pgoyette {
   1386  1.24.2.1  pgoyette 	uint32_t val;
   1387  1.24.2.1  pgoyette 	int cs;
   1388  1.24.2.1  pgoyette 
   1389  1.24.2.1  pgoyette 	/*
   1390  1.24.2.1  pgoyette 	 * Read MMAP1 Chip Select N the other side of AXI DDR Registers
   1391  1.24.2.1  pgoyette 	 */
   1392  1.24.2.1  pgoyette 
   1393  1.24.2.1  pgoyette 	switch (tag) {
   1394  1.24.2.1  pgoyette 	case MARVELL_TAG_AXI_CS0:
   1395  1.24.2.1  pgoyette 		cs = 0;
   1396  1.24.2.1  pgoyette 		break;
   1397  1.24.2.1  pgoyette 	case MARVELL_TAG_AXI_CS1:
   1398  1.24.2.1  pgoyette 		cs = 1;
   1399  1.24.2.1  pgoyette 		break;
   1400  1.24.2.1  pgoyette 	default:
   1401  1.24.2.1  pgoyette 		aprint_error("unknwon TAG: 0x%x", tag);
   1402  1.24.2.1  pgoyette 		return -1;
   1403  1.24.2.1  pgoyette 	}
   1404  1.24.2.1  pgoyette 	val = *(volatile uint32_t *)(regbase + MVSOC_AXI_MMAP1(cs));
   1405  1.24.2.1  pgoyette 	if (val & MVSOC_AXI_MMAP1_VALID) {
   1406  1.24.2.1  pgoyette 		if (base != NULL)
   1407  1.24.2.1  pgoyette 			*base = MVSOC_AXI_MMAP1_STARTADDRESS(val);
   1408  1.24.2.1  pgoyette 		if (size != NULL)
   1409  1.24.2.1  pgoyette 			*size = MVSOC_AXI_MMAP1_AREALENGTH(val);
   1410  1.24.2.1  pgoyette 	} else {
   1411  1.24.2.1  pgoyette 		if (base != NULL)
   1412  1.24.2.1  pgoyette 			*base = 0;
   1413  1.24.2.1  pgoyette 		if (size != NULL)
   1414  1.24.2.1  pgoyette 			*size = 0;
   1415  1.24.2.1  pgoyette 	}
   1416  1.24.2.1  pgoyette 	return 0;
   1417  1.24.2.1  pgoyette }
   1418  1.24.2.1  pgoyette 
   1419  1.24.2.1  pgoyette static int
   1420      1.17  kiyohara mvsoc_target_peripheral(uint32_t target, uint32_t attr, uint32_t *base,
   1421      1.17  kiyohara 			uint32_t *size)
   1422      1.17  kiyohara {
   1423      1.17  kiyohara 	uint32_t basereg, ctrlreg, ta, tamask;
   1424      1.17  kiyohara 	int i;
   1425      1.17  kiyohara 
   1426      1.17  kiyohara 	/*
   1427      1.17  kiyohara 	 * Read CPU Address Map Registers
   1428      1.17  kiyohara 	 */
   1429      1.17  kiyohara 
   1430      1.17  kiyohara 	ta = MVSOC_MLMB_WCR_TARGET(target) | MVSOC_MLMB_WCR_ATTR(attr);
   1431      1.17  kiyohara 	tamask = MVSOC_MLMB_WCR_TARGET(MVSOC_UNITID_MASK) |
   1432      1.17  kiyohara 	    MVSOC_MLMB_WCR_ATTR(MARVELL_ATTR_MASK);
   1433      1.17  kiyohara 
   1434      1.17  kiyohara 	if (base != NULL)
   1435      1.17  kiyohara 		*base = 0;
   1436      1.17  kiyohara 	if (size != NULL)
   1437      1.17  kiyohara 		*size = 0;
   1438      1.17  kiyohara 
   1439      1.17  kiyohara 	for (i = 0; i < nwindow; i++) {
   1440      1.17  kiyohara 		ctrlreg = read_mlmbreg(MVSOC_MLMB_WCR(i));
   1441      1.17  kiyohara 		if ((ctrlreg & tamask) != ta)
   1442      1.17  kiyohara 			continue;
   1443      1.17  kiyohara 		if (ctrlreg & MVSOC_MLMB_WCR_WINEN) {
   1444      1.17  kiyohara 			basereg = read_mlmbreg(MVSOC_MLMB_WBR(i));
   1445      1.17  kiyohara 
   1446      1.17  kiyohara 			if (base != NULL)
   1447      1.17  kiyohara 				*base = basereg & MVSOC_MLMB_WBR_BASE_MASK;
   1448      1.17  kiyohara 			if (size != NULL)
   1449      1.17  kiyohara 				*size = (ctrlreg &
   1450      1.17  kiyohara 				    MVSOC_MLMB_WCR_SIZE_MASK) +
   1451      1.17  kiyohara 				    (~MVSOC_MLMB_WCR_SIZE_MASK + 1);
   1452       1.1  kiyohara 		}
   1453      1.17  kiyohara 		break;
   1454       1.1  kiyohara 	}
   1455      1.17  kiyohara 	return i;
   1456       1.1  kiyohara }
   1457      1.21  hsuenaga 
   1458      1.21  hsuenaga int
   1459      1.21  hsuenaga mvsoc_target_dump(struct mvsoc_softc *sc)
   1460      1.21  hsuenaga {
   1461      1.21  hsuenaga 	uint32_t reg, base, size, target, attr, enable;
   1462      1.21  hsuenaga 	int i, n;
   1463      1.21  hsuenaga 
   1464      1.21  hsuenaga 	for (i = 0, n = 0; i < nwindow; i++) {
   1465      1.21  hsuenaga 		reg = read_mlmbreg(MVSOC_MLMB_WCR(i));
   1466      1.21  hsuenaga 		enable = reg & MVSOC_MLMB_WCR_WINEN;
   1467      1.21  hsuenaga 		target = MVSOC_MLMB_WCR_GET_TARGET(reg);
   1468      1.21  hsuenaga 		attr = MVSOC_MLMB_WCR_GET_ATTR(reg);
   1469      1.21  hsuenaga 		size = MVSOC_MLMB_WCR_GET_SIZE(reg);
   1470      1.21  hsuenaga 
   1471      1.21  hsuenaga 		reg = read_mlmbreg(MVSOC_MLMB_WBR(i));
   1472      1.21  hsuenaga 		base = MVSOC_MLMB_WBR_GET_BASE(reg);
   1473      1.21  hsuenaga 
   1474      1.21  hsuenaga 		if (!enable)
   1475      1.21  hsuenaga 			continue;
   1476      1.21  hsuenaga 
   1477      1.21  hsuenaga 		aprint_verbose_dev(sc->sc_dev,
   1478      1.21  hsuenaga 		    "Mbus window %2d: Base 0x%08x Size 0x%08x ", i, base, size);
   1479      1.21  hsuenaga #ifdef ARMADAXP
   1480      1.21  hsuenaga 		armadaxp_attr_dump(sc, target, attr);
   1481      1.21  hsuenaga #else
   1482      1.21  hsuenaga 		mvsoc_attr_dump(sc, target, attr);
   1483      1.21  hsuenaga #endif
   1484      1.21  hsuenaga 		printf("\n");
   1485      1.21  hsuenaga 		n++;
   1486      1.21  hsuenaga 	}
   1487      1.21  hsuenaga 
   1488      1.21  hsuenaga 	return n;
   1489      1.21  hsuenaga }
   1490      1.21  hsuenaga 
   1491      1.21  hsuenaga int
   1492      1.21  hsuenaga mvsoc_attr_dump(struct mvsoc_softc *sc, uint32_t target, uint32_t attr)
   1493      1.21  hsuenaga {
   1494      1.21  hsuenaga 	aprint_verbose_dev(sc->sc_dev, "target 0x%x(attr 0x%x)", target, attr);
   1495      1.21  hsuenaga 	return 0;
   1496      1.21  hsuenaga }
   1497