Home | History | Annotate | Line # | Download | only in broadcom
      1  1.2  matt /* $NetBSD: bcm53xx_intr.h,v 1.2 2013/10/28 22:51:16 matt Exp $ */
      2  1.1  matt /*-
      3  1.1  matt  * Copyright (c) 2012 The NetBSD Foundation, Inc.
      4  1.1  matt  * All rights reserved.
      5  1.1  matt  *
      6  1.1  matt  * This code is derived from software contributed to The NetBSD Foundation
      7  1.1  matt  * by Matt Thomas of 3am Software Foundry.
      8  1.1  matt  *
      9  1.1  matt  * Redistribution and use in source and binary forms, with or without
     10  1.1  matt  * modification, are permitted provided that the following conditions
     11  1.1  matt  * are met:
     12  1.1  matt  * 1. Redistributions of source code must retain the above copyright
     13  1.1  matt  *    notice, this list of conditions and the following disclaimer.
     14  1.1  matt  * 2. Redistributions in binary form must reproduce the above copyright
     15  1.1  matt  *    notice, this list of conditions and the following disclaimer in the
     16  1.1  matt  *    documentation and/or other materials provided with the distribution.
     17  1.1  matt  *
     18  1.1  matt  * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
     19  1.1  matt  * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
     20  1.1  matt  * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
     21  1.1  matt  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
     22  1.1  matt  * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
     23  1.1  matt  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
     24  1.1  matt  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
     25  1.1  matt  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
     26  1.1  matt  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
     27  1.1  matt  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
     28  1.1  matt  * POSSIBILITY OF SUCH DAMAGE.
     29  1.1  matt  */
     30  1.1  matt 
     31  1.1  matt #ifndef _ARM_BROADCOM_BCM53XX_INTR_H_
     32  1.1  matt #define _ARM_BROADCOM_BCM53XX_INTR_H_
     33  1.1  matt 
     34  1.2  matt #ifdef _KERNEL_OPT
     35  1.2  matt #include "opt_broadcom.h"
     36  1.2  matt #endif
     37  1.2  matt 
     38  1.1  matt #define	PIC_MAXSOURCES			256
     39  1.1  matt #define	PIC_MAXMAXSOURCES		280
     40  1.1  matt 
     41  1.1  matt /*
     42  1.1  matt  * The BCM53xx uses a generic interrupt controller so pull that stuff.
     43  1.1  matt  */
     44  1.1  matt #include <arm/cortex/gic_intr.h>
     45  1.1  matt #include <arm/cortex/a9tmr_intr.h>	/* A9 Timer PPIs */
     46  1.1  matt 
     47  1.1  matt #define	IRQ_L2CC			32
     48  1.1  matt #define	IRQ_PWRWDOG			33
     49  1.1  matt #define	IRQ_TRAP8			34
     50  1.1  matt #define	IRQ_TRAP1			35
     51  1.1  matt #define	IRQ_COMMTX			36
     52  1.1  matt #define	IRQ__RSVD37			37
     53  1.1  matt #define	IRQ_COMMRX			38
     54  1.1  matt #define	IRQ__RSVD39			39
     55  1.1  matt #define	IRQ_PMU				40
     56  1.1  matt #define	IRQ__RSVD41			41
     57  1.1  matt #define	IRQ_CTI				42
     58  1.1  matt #define	IRQ__RSVD43			43
     59  1.1  matt #define	IRQ_DEFLAG_CPU0			44
     60  1.1  matt #define	IRQ_DEFLAG_CPU1			45
     61  1.1  matt #define	IRQ_ARMCORE_M1_PINS_BUS		46
     62  1.1  matt #define	IRQ_PCIE0_M0_PINS_BUS		47
     63  1.1  matt #define	IRQ_PCIE1_M0_PINS_BUS		48
     64  1.1  matt #define	IRQ_PCIE2_M0_PINS_BUS		49
     65  1.1  matt #define	IRQ_DMA_M0_PINS_BUS		50
     66  1.1  matt #define	IRQ_AMAC_M0_PINS_BUS		51
     67  1.1  matt #define	IRQ_AMAC_M1_PINS_BUS		52
     68  1.1  matt #define	IRQ_AMAC_M2_PINS_BUS		53
     69  1.1  matt #define	IRQ_AMAC_M3_PINS_BUS		54
     70  1.1  matt #define	IRQ_USBH_M0_PINS_BUS		55
     71  1.1  matt #define	IRQ_USBH_M1_PINS_BUS		56
     72  1.1  matt #define	IRQ_SDIO_M0_PINS_BUS		57
     73  1.1  matt #define	IRQ_I2S_M0_PINS_BUS		58
     74  1.1  matt #define	IRQ_A9JTAG_M0_PINS_BUS		59
     75  1.1  matt #define	IRQ_JTAG_M0_PINS_BUS		60
     76  1.1  matt #define	IRQ_ARMCORE_ACP_PINS_BUS	61
     77  1.1  matt #define	IRQ_ARMCORE_S0_PINS_BUS		62
     78  1.1  matt #define	IRQ_DDR_S1_PINS_BUS		63
     79  1.1  matt #define	IRQ_DDR_S2_PINS_BUS		64
     80  1.1  matt #define	IRQ_PCIE0_S0_PINS_BUS		65
     81  1.1  matt #define	IRQ_PCIE1_S0_PINS_BUS		66
     82  1.1  matt #define	IRQ_PCIE2_S0_PINS_BUS		67
     83  1.1  matt #define	IRQ_ROM_S0_PINS_BUS		68
     84  1.1  matt #define	IRQ_NAND_S0_PINS_BUS		69
     85  1.1  matt #define	IRQ_QSPI_S0_PINS_BUS		70
     86  1.1  matt #define	IRQ_A9JTAG_S0_PINS_BUS		71
     87  1.1  matt #define	IRQ_APBX_S0_PINS_BUS		72
     88  1.2  matt 
     89  1.2  matt #ifdef BCM5301X
     90  1.2  matt #define	BCM53XXX_IRQ(a,c)		((a))
     91  1.2  matt #elif defined(BCM563XX)
     92  1.2  matt #define	BCM53XXX_IRQ(a,c)		((a) + (c))
     93  1.2  matt #else
     94  1.2  matt #error unknown iProc variant
     95  1.2  matt #endif
     96  1.2  matt 
     97  1.2  matt #define	IRQ_DS_0_PINS_BUS		BCM53XXX_IRQ(73, 6)
     98  1.2  matt #define	IRQ_DS_1_PINS_BUS		BCM53XXX_IRQ(74, 6)
     99  1.2  matt #define	IRQ_DS_2_PINS_BUS		BCM53XXX_IRQ(75, 6)
    100  1.2  matt #define	IRQ_DS_3_PINS_BUS		BCM53XXX_IRQ(76, 6)
    101  1.2  matt #define	IRQ_DS_4_PINS_BUS		BCM53XXX_IRQ(77, 6)
    102  1.2  matt #define	IRQ_DDR_CONTROLLER		BCM53XXX_IRQ(78, 6)
    103  1.2  matt #define	IRQ_DMAC			BCM53XXX_IRQ(79, 6)	/* 16 */
    104  1.2  matt #define	IRQ_DMAC_ABORT			BCM53XXX_IRQ(95, 6)
    105  1.2  matt #define	IRQ_NAND_RD_MISS		BCM53XXX_IRQ(96, 6)
    106  1.2  matt #define	IRQ_NAND_BLK_ERASE_COMP		BCM53XXX_IRQ(97, 6)
    107  1.2  matt #define	IRQ_NAND_COPY_BACK_COMP		BCM53XXX_IRQ(98, 6)
    108  1.2  matt #define	IRQ_NAND_PGM_PAGE_COMP		BCM53XXX_IRQ(99, 6)
    109  1.2  matt #define	IRQ_NAND_RO_CTLR_READY		BCM53XXX_IRQ(100, 6)
    110  1.2  matt #define	IRQ_NAND_RB_B			BCM53XXX_IRQ(101, 6)
    111  1.2  matt #define	IRQ_NAND_ECC_MIPS_UNCORR	BCM53XXX_IRQ(102, 6)
    112  1.2  matt #define	IRQ_NAND_ECC_MIPS_CORR		BCM53XXX_IRQ(103, 6)
    113  1.2  matt 
    114  1.2  matt #define	IRQ_SPI_FULLNESS_REACHED	BCM53XXX_IRQ(104, 6)
    115  1.2  matt #define	IRQ_SPI_TRUNCATED		BCM53XXX_IRQ(105, 6)
    116  1.2  matt #define	IRQ_SPI_IMPATIENT		BCM53XXX_IRQ(106, 6)
    117  1.2  matt #define	IRQ_SPI_SESSION_DONE		BCM53XXX_IRQ(107, 6)
    118  1.2  matt #define	IRQ_SPI_INTERRUPT_OVERREAD	BCM53XXX_IRQ(108, 6)
    119  1.2  matt #define	IRQ_SPI_MSPI_INTERRUPT_DONE	BCM53XXX_IRQ(109, 6)
    120  1.2  matt #define	IRQ_SPI_MSPI_INTERRUPT_HALT_SET_TRANSACTION_DONE \
    121  1.2  matt 					BCM53XXX_IRQ(110, 6)
    122  1.2  matt #define	IRQ_USB2			BCM53XXX_IRQ(111, 6)
    123  1.2  matt 
    124  1.2  matt #define	IRQ_CCA				BCM53XXX_IRQ(117, 6)
    125  1.2  matt #define	IRQ_UART2			BCM53XXX_IRQ(118, 6)
    126  1.2  matt #define	IRQ_GPIO			BCM53XXX_IRQ(119, 6)
    127  1.2  matt #define	IRQ_I2S				BCM53XXX_IRQ(120, 6)
    128  1.2  matt #define	IRQ_SMBUS1			BCM53XXX_IRQ(121, 6)
    129  1.2  matt #define	IRQ_TIMER0_1			BCM53XXX_IRQ(122, 7)
    130  1.2  matt #define	IRQ_TIMER0_2			BCM53XXX_IRQ(123, 7)
    131  1.2  matt #define	IRQ_TIMER1_1			BCM53XXX_IRQ(124, 7)
    132  1.2  matt #define	IRQ_TIMER1_2			BCM53XXX_IRQ(125, 7)
    133  1.2  matt #define	IRQ_RNG				BCM53XXX_IRQ(126, 7)
    134  1.2  matt #define	IRQ_SWITCH_SOC			BCM53XXX_IRQ(127, 7)	/* 32 */
    135  1.2  matt #define	 IRQ_NETWORK_LINK_EVENT		BCM53XXX_IRQ(127, 7)	/* 8 */
    136  1.2  matt #define	 IRQ_PHY			BCM53XXX_IRQ(135, 7)
    137  1.2  matt #define	 IRQ_TIMESYNC			BCM53XXX_IRQ(136, 7)
    138  1.2  matt #define	 IRQ_IMP_SLEEP_TIMER		BCM53XXX_IRQ(137, 7)	/* 3 */
    139  1.2  matt #define	IRQ_PCIE_INT0			BCM53XXX_IRQ(159, 55)	/* 6 */
    140  1.2  matt #define	IRQ_PCIE_INT1			BCM53XXX_IRQ(165, 55)	/* 6 */
    141  1.2  matt #define	IRQ_PCIE_INT2			BCM53XXX_IRQ(171, 55)	/* 6 */
    142  1.2  matt #define	IRQ_SDIO			BCM53XXX_IRQ(177, 55)
    143  1.2  matt #define	IRQ_GMAC0			BCM53XXX_IRQ(179, 55)
    144  1.2  matt #define	IRQ_GMAC1			BCM53XXX_IRQ(180, 55)
    145  1.2  matt 
    146  1.2  matt #ifdef BCM5301X
    147  1.2  matt #define	IRQ_XHCI_0			(112)
    148  1.2  matt #define	IRQ_XHCI_1			(113)
    149  1.2  matt #define	IRQ_XHCI_2			(114)
    150  1.2  matt #define	IRQ_XHCI_3			(115)
    151  1.2  matt #define	IRQ_XHCI_HSE			(116)
    152  1.2  matt #define	IRQ_FA				(178)
    153  1.2  matt #define	IRQ_GMAC2			(181)
    154  1.2  matt #define	IRQ_GMAC3			(182)
    155  1.2  matt #endif
    156  1.2  matt 
    157  1.2  matt #ifdef BCM563XX
    158  1.2  matt #define	IRQ_SATA_PINS_BUS		(73)
    159  1.2  matt #define	IRQ_SRAM_PINS_BUS		(74)
    160  1.2  matt #define	IRQ_APBW_PINS_BUS		(75)
    161  1.2  matt #define	IRQ_APBX_PINS_BUS		(76)
    162  1.2  matt #define	IRQ_APBY_PINS_BUS		(77)
    163  1.2  matt #define	IRQ_APBZ_PINS_BUS		(78)
    164  1.2  matt #define	IRQ_SMBUS2			(128)
    165  1.2  matt #define	IRQ_SATA0			(190)
    166  1.2  matt #define	IRQ_SATA1			(191)
    167  1.2  matt #define	IRQ_I2S_INTR			(201)
    168  1.2  matt #define	IRQ_MACSEC0			(202)
    169  1.2  matt #define	IRQ_MACSEC1			(203)
    170  1.2  matt #define	IRQ_USB2D			(238)
    171  1.2  matt #define	IRQ_APBV_PINS_BUS		(239)
    172  1.2  matt #define	IRQ_SRAM_MEM_CORRECTABLE	(240)
    173  1.2  matt #define	IRQ_SRAM_MEM_UNCORRECTABLE	(241)
    174  1.2  matt #define	IRQ_SRAM_MEM_ACCESS_VIO		(242)
    175  1.2  matt #define	IRQ_SRAM_MEM_SBMA_MISMATCH	(243)
    176  1.2  matt #define	IRQ_CCB_WDT			(244)
    177  1.2  matt #endif /* BCM563XX */
    178  1.1  matt 
    179  1.1  matt #endif /* _ARM_BROADCOM_BC53XX_INTR_H_ */
    180