root/drivers/soc/fsl/qe/qe_ic.h

/* [<][>][^][v][top][bottom][index][help] */

INCLUDED FROM


   1 /* SPDX-License-Identifier: GPL-2.0-or-later */
   2 /*
   3  * drivers/soc/fsl/qe/qe_ic.h
   4  *
   5  * QUICC ENGINE Interrupt Controller Header
   6  *
   7  * Copyright (C) 2006 Freescale Semiconductor, Inc. All rights reserved.
   8  *
   9  * Author: Li Yang <leoli@freescale.com>
  10  * Based on code from Shlomi Gridish <gridish@freescale.com>
  11  */
  12 #ifndef _POWERPC_SYSDEV_QE_IC_H
  13 #define _POWERPC_SYSDEV_QE_IC_H
  14 
  15 #include <soc/fsl/qe/qe_ic.h>
  16 
  17 #define NR_QE_IC_INTS           64
  18 
  19 /* QE IC registers offset */
  20 #define QEIC_CICR               0x00
  21 #define QEIC_CIVEC              0x04
  22 #define QEIC_CRIPNR             0x08
  23 #define QEIC_CIPNR              0x0c
  24 #define QEIC_CIPXCC             0x10
  25 #define QEIC_CIPYCC             0x14
  26 #define QEIC_CIPWCC             0x18
  27 #define QEIC_CIPZCC             0x1c
  28 #define QEIC_CIMR               0x20
  29 #define QEIC_CRIMR              0x24
  30 #define QEIC_CICNR              0x28
  31 #define QEIC_CIPRTA             0x30
  32 #define QEIC_CIPRTB             0x34
  33 #define QEIC_CRICR              0x3c
  34 #define QEIC_CHIVEC             0x60
  35 
  36 /* Interrupt priority registers */
  37 #define CIPCC_SHIFT_PRI0        29
  38 #define CIPCC_SHIFT_PRI1        26
  39 #define CIPCC_SHIFT_PRI2        23
  40 #define CIPCC_SHIFT_PRI3        20
  41 #define CIPCC_SHIFT_PRI4        13
  42 #define CIPCC_SHIFT_PRI5        10
  43 #define CIPCC_SHIFT_PRI6        7
  44 #define CIPCC_SHIFT_PRI7        4
  45 
  46 /* CICR priority modes */
  47 #define CICR_GWCC               0x00040000
  48 #define CICR_GXCC               0x00020000
  49 #define CICR_GYCC               0x00010000
  50 #define CICR_GZCC               0x00080000
  51 #define CICR_GRTA               0x00200000
  52 #define CICR_GRTB               0x00400000
  53 #define CICR_HPIT_SHIFT         8
  54 #define CICR_HPIT_MASK          0x00000300
  55 #define CICR_HP_SHIFT           24
  56 #define CICR_HP_MASK            0x3f000000
  57 
  58 /* CICNR */
  59 #define CICNR_WCC1T_SHIFT       20
  60 #define CICNR_ZCC1T_SHIFT       28
  61 #define CICNR_YCC1T_SHIFT       12
  62 #define CICNR_XCC1T_SHIFT       4
  63 
  64 /* CRICR */
  65 #define CRICR_RTA1T_SHIFT       20
  66 #define CRICR_RTB1T_SHIFT       28
  67 
  68 /* Signal indicator */
  69 #define SIGNAL_MASK             3
  70 #define SIGNAL_HIGH             2
  71 #define SIGNAL_LOW              0
  72 
  73 struct qe_ic {
  74         /* Control registers offset */
  75         volatile u32 __iomem *regs;
  76 
  77         /* The remapper for this QEIC */
  78         struct irq_domain *irqhost;
  79 
  80         /* The "linux" controller struct */
  81         struct irq_chip hc_irq;
  82 
  83         /* VIRQ numbers of QE high/low irqs */
  84         unsigned int virq_high;
  85         unsigned int virq_low;
  86 };
  87 
  88 /*
  89  * QE interrupt controller internal structure
  90  */
  91 struct qe_ic_info {
  92         u32     mask;     /* location of this source at the QIMR register. */
  93         u32     mask_reg; /* Mask register offset */
  94         u8      pri_code; /* for grouped interrupts sources - the interrupt
  95                              code as appears at the group priority register */
  96         u32     pri_reg;  /* Group priority register offset */
  97 };
  98 
  99 #endif /* _POWERPC_SYSDEV_QE_IC_H */

/* [<][>][^][v][top][bottom][index][help] */