lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20171110033125.991-2-qiang.zhao@nxp.com>
Date:   Fri, 10 Nov 2017 11:31:22 +0800
From:   Zhao Qiang <qiang.zhao@....com>
To:     <tglx@...utronix.de>, <marc.zyngier@....com>,
        <jason@...edaemon.net>
CC:     <linux-kernel@...r.kernel.org>, Zhao Qiang <qiang.zhao@....com>
Subject: [Patch v13 1/4] irqchip/qeic: move qeic driver from drivers/soc/fsl/qe

move the driver from drivers/soc/fsl/qe to drivers/irqchip,
merge qe_ic.h and qe_ic.c into irq-qeic.c.

Signed-off-by: Zhao Qiang <qiang.zhao@....com>
---
 MAINTAINERS                                        |   6 +
 drivers/irqchip/Makefile                           |   1 +
 drivers/{soc/fsl/qe/qe_ic.c => irqchip/irq-qeic.c} | 141 +++++++++++++++++----
 drivers/soc/fsl/qe/Makefile                        |   2 +-
 drivers/soc/fsl/qe/qe_ic.h                         | 103 ---------------
 5 files changed, 123 insertions(+), 130 deletions(-)
 rename drivers/{soc/fsl/qe/qe_ic.c => irqchip/irq-qeic.c} (81%)
 delete mode 100644 drivers/soc/fsl/qe/qe_ic.h

diff --git a/MAINTAINERS b/MAINTAINERS
index af0cb69f6a3e..e872c84e4e37 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -5553,6 +5553,12 @@ F:	drivers/soc/fsl/qe/
 F:	include/soc/fsl/*qe*.h
 F:	include/soc/fsl/*ucc*.h
 
+FREESCALE QEIC DRIVERS
+M:	Qiang Zhao <qiang.zhao@....com>
+L:	linux-kernel@...r.kernel.org
+S:	Maintained
+F:	drivers/irqchip/irq-qeic.c
+
 FREESCALE QUICC ENGINE UCC ETHERNET DRIVER
 M:	Li Yang <leoyang.li@....com>
 L:	netdev@...r.kernel.org
diff --git a/drivers/irqchip/Makefile b/drivers/irqchip/Makefile
index 845abc107ad5..77aa4f55a54c 100644
--- a/drivers/irqchip/Makefile
+++ b/drivers/irqchip/Makefile
@@ -79,3 +79,4 @@ obj-$(CONFIG_ARCH_ASPEED)		+= irq-aspeed-vic.o irq-aspeed-i2c-ic.o
 obj-$(CONFIG_STM32_EXTI) 		+= irq-stm32-exti.o
 obj-$(CONFIG_QCOM_IRQ_COMBINER)		+= qcom-irq-combiner.o
 obj-$(CONFIG_IRQ_UNIPHIER_AIDET)	+= irq-uniphier-aidet.o
+obj-$(CONFIG_QUICC_ENGINE)		+= irq-qeic.o
diff --git a/drivers/soc/fsl/qe/qe_ic.c b/drivers/irqchip/irq-qeic.c
similarity index 81%
rename from drivers/soc/fsl/qe/qe_ic.c
rename to drivers/irqchip/irq-qeic.c
index ec2ca864b0c5..aba71354e17c 100644
--- a/drivers/soc/fsl/qe/qe_ic.c
+++ b/drivers/irqchip/irq-qeic.c
@@ -1,7 +1,7 @@
 /*
- * arch/powerpc/sysdev/qe_lib/qe_ic.c
+ * drivers/irqchip/irq-qeic.c
  *
- * Copyright (C) 2006 Freescale Semiconductor, Inc.  All rights reserved.
+ * Copyright (C) 2016 Freescale Semiconductor, Inc.  All rights reserved.
  *
  * Author: Li Yang <leoli@...escale.com>
  * Based on code from Shlomi Gridish <gridish@...escale.com>
@@ -30,145 +30,234 @@
 #include <asm/io.h>
 #include <soc/fsl/qe/qe_ic.h>
 
-#include "qe_ic.h"
+#define NR_QE_IC_INTS		64
+
+/* QE IC registers offset */
+#define QEIC_CICR		0x00
+#define QEIC_CIVEC		0x04
+#define QEIC_CRIPNR		0x08
+#define QEIC_CIPNR		0x0c
+#define QEIC_CIPXCC		0x10
+#define QEIC_CIPYCC		0x14
+#define QEIC_CIPWCC		0x18
+#define QEIC_CIPZCC		0x1c
+#define QEIC_CIMR		0x20
+#define QEIC_CRIMR		0x24
+#define QEIC_CICNR		0x28
+#define QEIC_CIPRTA		0x30
+#define QEIC_CIPRTB		0x34
+#define QEIC_CRICR		0x3c
+#define QEIC_CHIVEC		0x60
+
+/* Interrupt priority registers */
+#define CIPCC_SHIFT_PRI0	29
+#define CIPCC_SHIFT_PRI1	26
+#define CIPCC_SHIFT_PRI2	23
+#define CIPCC_SHIFT_PRI3	20
+#define CIPCC_SHIFT_PRI4	13
+#define CIPCC_SHIFT_PRI5	10
+#define CIPCC_SHIFT_PRI6	7
+#define CIPCC_SHIFT_PRI7	4
+
+/* CICR priority modes */
+#define CICR_GWCC		BIT(18)
+#define CICR_GXCC		BIT(17)
+#define CICR_GYCC		BIT(16)
+#define CICR_GZCC		BIT(19)
+#define CICR_GRTA		BIT(21)
+#define CICR_GRTB		BIT(22)
+#define CICR_HPIT_SHIFT		8
+#define CICR_HPIT_MASK		0x00000300
+#define CICR_HP_SHIFT		24
+#define CICR_HP_MASK		0x3f000000
+
+/* CICNR */
+#define CICNR_WCC1T_SHIFT	20
+#define CICNR_ZCC1T_SHIFT	28
+#define CICNR_YCC1T_SHIFT	12
+#define CICNR_XCC1T_SHIFT	4
+
+/* CRICR */
+#define CRICR_RTA1T_SHIFT	20
+#define CRICR_RTB1T_SHIFT	28
+
+/* Signal indicator */
+#define SIGNAL_MASK		3
+#define SIGNAL_HIGH		2
+#define SIGNAL_LOW		0
+
+struct qe_ic {
+	/* Control registers offset */
+	u32 __iomem *regs;
+
+	/* The remapper for this QEIC */
+	struct irq_domain *irqhost;
+
+	/* The "linux" controller struct */
+	struct irq_chip hc_irq;
+
+	/* VIRQ numbers of QE high/low irqs */
+	unsigned int virq_high;
+	unsigned int virq_low;
+};
+
+/*
+ * QE interrupt controller internal structure
+ */
+struct qe_ic_info {
+	/* location of this source at the QIMR register. */
+	u32	mask;
+
+	/* Mask register offset */
+	u32	mask_reg;
+
+	/*
+	 * for grouped interrupts sources - the interrupt
+	 * code as appears at the group priority register
+	 */
+	u8	pri_code;
+
+	/* Group priority register offset */
+	u32	pri_reg;
+};
 
 static DEFINE_RAW_SPINLOCK(qe_ic_lock);
 
 static struct qe_ic_info qe_ic_info[] = {
 	[1] = {
-	       .mask = 0x00008000,
+	       .mask = BIT(15),
 	       .mask_reg = QEIC_CIMR,
 	       .pri_code = 0,
 	       .pri_reg = QEIC_CIPWCC,
 	       },
 	[2] = {
-	       .mask = 0x00004000,
+	       .mask = BIT(14),
 	       .mask_reg = QEIC_CIMR,
 	       .pri_code = 1,
 	       .pri_reg = QEIC_CIPWCC,
 	       },
 	[3] = {
-	       .mask = 0x00002000,
+	       .mask = BIT(13),
 	       .mask_reg = QEIC_CIMR,
 	       .pri_code = 2,
 	       .pri_reg = QEIC_CIPWCC,
 	       },
 	[10] = {
-		.mask = 0x00000040,
+		.mask = BIT(6),
 		.mask_reg = QEIC_CIMR,
 		.pri_code = 1,
 		.pri_reg = QEIC_CIPZCC,
 		},
 	[11] = {
-		.mask = 0x00000020,
+		.mask = BIT(5),
 		.mask_reg = QEIC_CIMR,
 		.pri_code = 2,
 		.pri_reg = QEIC_CIPZCC,
 		},
 	[12] = {
-		.mask = 0x00000010,
+		.mask = BIT(4),
 		.mask_reg = QEIC_CIMR,
 		.pri_code = 3,
 		.pri_reg = QEIC_CIPZCC,
 		},
 	[13] = {
-		.mask = 0x00000008,
+		.mask = BIT(3),
 		.mask_reg = QEIC_CIMR,
 		.pri_code = 4,
 		.pri_reg = QEIC_CIPZCC,
 		},
 	[14] = {
-		.mask = 0x00000004,
+		.mask = BIT(2),
 		.mask_reg = QEIC_CIMR,
 		.pri_code = 5,
 		.pri_reg = QEIC_CIPZCC,
 		},
 	[15] = {
-		.mask = 0x00000002,
+		.mask = BIT(1),
 		.mask_reg = QEIC_CIMR,
 		.pri_code = 6,
 		.pri_reg = QEIC_CIPZCC,
 		},
 	[20] = {
-		.mask = 0x10000000,
+		.mask = BIT(28),
 		.mask_reg = QEIC_CRIMR,
 		.pri_code = 3,
 		.pri_reg = QEIC_CIPRTA,
 		},
 	[25] = {
-		.mask = 0x00800000,
+		.mask = BIT(23),
 		.mask_reg = QEIC_CRIMR,
 		.pri_code = 0,
 		.pri_reg = QEIC_CIPRTB,
 		},
 	[26] = {
-		.mask = 0x00400000,
+		.mask = BIT(22),
 		.mask_reg = QEIC_CRIMR,
 		.pri_code = 1,
 		.pri_reg = QEIC_CIPRTB,
 		},
 	[27] = {
-		.mask = 0x00200000,
+		.mask = BIT(21),
 		.mask_reg = QEIC_CRIMR,
 		.pri_code = 2,
 		.pri_reg = QEIC_CIPRTB,
 		},
 	[28] = {
-		.mask = 0x00100000,
+		.mask = BIT(20),
 		.mask_reg = QEIC_CRIMR,
 		.pri_code = 3,
 		.pri_reg = QEIC_CIPRTB,
 		},
 	[32] = {
-		.mask = 0x80000000,
+		.mask = BIT(31),
 		.mask_reg = QEIC_CIMR,
 		.pri_code = 0,
 		.pri_reg = QEIC_CIPXCC,
 		},
 	[33] = {
-		.mask = 0x40000000,
+		.mask = BIT(30),
 		.mask_reg = QEIC_CIMR,
 		.pri_code = 1,
 		.pri_reg = QEIC_CIPXCC,
 		},
 	[34] = {
-		.mask = 0x20000000,
+		.mask = BIT(29),
 		.mask_reg = QEIC_CIMR,
 		.pri_code = 2,
 		.pri_reg = QEIC_CIPXCC,
 		},
 	[35] = {
-		.mask = 0x10000000,
+		.mask = BIT(28),
 		.mask_reg = QEIC_CIMR,
 		.pri_code = 3,
 		.pri_reg = QEIC_CIPXCC,
 		},
 	[36] = {
-		.mask = 0x08000000,
+		.mask = BIT(27),
 		.mask_reg = QEIC_CIMR,
 		.pri_code = 4,
 		.pri_reg = QEIC_CIPXCC,
 		},
 	[40] = {
-		.mask = 0x00800000,
+		.mask = BIT(23),
 		.mask_reg = QEIC_CIMR,
 		.pri_code = 0,
 		.pri_reg = QEIC_CIPYCC,
 		},
 	[41] = {
-		.mask = 0x00400000,
+		.mask = BIT(22),
 		.mask_reg = QEIC_CIMR,
 		.pri_code = 1,
 		.pri_reg = QEIC_CIPYCC,
 		},
 	[42] = {
-		.mask = 0x00200000,
+		.mask = BIT(21),
 		.mask_reg = QEIC_CIMR,
 		.pri_code = 2,
 		.pri_reg = QEIC_CIPYCC,
 		},
 	[43] = {
-		.mask = 0x00100000,
+		.mask = BIT(20),
 		.mask_reg = QEIC_CIMR,
 		.pri_code = 3,
 		.pri_reg = QEIC_CIPYCC,
diff --git a/drivers/soc/fsl/qe/Makefile b/drivers/soc/fsl/qe/Makefile
index 2031d385bc7e..51e472648bad 100644
--- a/drivers/soc/fsl/qe/Makefile
+++ b/drivers/soc/fsl/qe/Makefile
@@ -1,7 +1,7 @@
 #
 # Makefile for the linux ppc-specific parts of QE
 #
-obj-$(CONFIG_QUICC_ENGINE)+= qe.o qe_common.o qe_ic.o qe_io.o
+obj-$(CONFIG_QUICC_ENGINE)+= qe.o qe_common.o qe_io.o
 obj-$(CONFIG_CPM)	+= qe_common.o
 obj-$(CONFIG_UCC)	+= ucc.o
 obj-$(CONFIG_UCC_SLOW)	+= ucc_slow.o
diff --git a/drivers/soc/fsl/qe/qe_ic.h b/drivers/soc/fsl/qe/qe_ic.h
deleted file mode 100644
index 926a2ed42319..000000000000
--- a/drivers/soc/fsl/qe/qe_ic.h
+++ /dev/null
@@ -1,103 +0,0 @@
-/*
- * drivers/soc/fsl/qe/qe_ic.h
- *
- * QUICC ENGINE Interrupt Controller Header
- *
- * Copyright (C) 2006 Freescale Semiconductor, Inc. All rights reserved.
- *
- * Author: Li Yang <leoli@...escale.com>
- * Based on code from Shlomi Gridish <gridish@...escale.com>
- *
- * This program is free software; you can redistribute  it and/or modify it
- * under  the terms of  the GNU General  Public License as published by the
- * Free Software Foundation;  either version 2 of the  License, or (at your
- * option) any later version.
- */
-#ifndef _POWERPC_SYSDEV_QE_IC_H
-#define _POWERPC_SYSDEV_QE_IC_H
-
-#include <soc/fsl/qe/qe_ic.h>
-
-#define NR_QE_IC_INTS		64
-
-/* QE IC registers offset */
-#define QEIC_CICR		0x00
-#define QEIC_CIVEC		0x04
-#define QEIC_CRIPNR		0x08
-#define QEIC_CIPNR		0x0c
-#define QEIC_CIPXCC		0x10
-#define QEIC_CIPYCC		0x14
-#define QEIC_CIPWCC		0x18
-#define QEIC_CIPZCC		0x1c
-#define QEIC_CIMR		0x20
-#define QEIC_CRIMR		0x24
-#define QEIC_CICNR		0x28
-#define QEIC_CIPRTA		0x30
-#define QEIC_CIPRTB		0x34
-#define QEIC_CRICR		0x3c
-#define QEIC_CHIVEC		0x60
-
-/* Interrupt priority registers */
-#define CIPCC_SHIFT_PRI0	29
-#define CIPCC_SHIFT_PRI1	26
-#define CIPCC_SHIFT_PRI2	23
-#define CIPCC_SHIFT_PRI3	20
-#define CIPCC_SHIFT_PRI4	13
-#define CIPCC_SHIFT_PRI5	10
-#define CIPCC_SHIFT_PRI6	7
-#define CIPCC_SHIFT_PRI7	4
-
-/* CICR priority modes */
-#define CICR_GWCC		0x00040000
-#define CICR_GXCC		0x00020000
-#define CICR_GYCC		0x00010000
-#define CICR_GZCC		0x00080000
-#define CICR_GRTA		0x00200000
-#define CICR_GRTB		0x00400000
-#define CICR_HPIT_SHIFT		8
-#define CICR_HPIT_MASK		0x00000300
-#define CICR_HP_SHIFT		24
-#define CICR_HP_MASK		0x3f000000
-
-/* CICNR */
-#define CICNR_WCC1T_SHIFT	20
-#define CICNR_ZCC1T_SHIFT	28
-#define CICNR_YCC1T_SHIFT	12
-#define CICNR_XCC1T_SHIFT	4
-
-/* CRICR */
-#define CRICR_RTA1T_SHIFT	20
-#define CRICR_RTB1T_SHIFT	28
-
-/* Signal indicator */
-#define SIGNAL_MASK		3
-#define SIGNAL_HIGH		2
-#define SIGNAL_LOW		0
-
-struct qe_ic {
-	/* Control registers offset */
-	volatile u32 __iomem *regs;
-
-	/* The remapper for this QEIC */
-	struct irq_domain *irqhost;
-
-	/* The "linux" controller struct */
-	struct irq_chip hc_irq;
-
-	/* VIRQ numbers of QE high/low irqs */
-	unsigned int virq_high;
-	unsigned int virq_low;
-};
-
-/*
- * QE interrupt controller internal structure
- */
-struct qe_ic_info {
-	u32	mask;	  /* location of this source at the QIMR register. */
-	u32	mask_reg; /* Mask register offset */
-	u8	pri_code; /* for grouped interrupts sources - the interrupt
-			     code as appears at the group priority register */
-	u32	pri_reg;  /* Group priority register offset */
-};
-
-#endif /* _POWERPC_SYSDEV_QE_IC_H */
-- 
2.14.1

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ