Hi,
The MIPS based Xilfpga platform uses the axi interrupt controller
daisy chained to the MIPS microAptiv cpu interrupt controller.
This patch series moves the axi interrupt controller driver out
of arch/microblaze to drivers/irqchip. This makes it usable by
MIPS.
The rest of the series basically enables drivers and adds dt nodes.
Would make sense for this to go via the MIPS tree.
Hence, ACKs from microblaze. irqchip and net welcome.
Regards,
ZubairLK
Note: Compile tested on microblaze only!
Based on v4.8-rc2
Zubair Lutfullah Kakakhel (9):
microblaze: irqchip: Move intc driver to irqchip
irqchip: xilinx: Add support for parent intc
MIPS: xilfpga: Use irqchip_init instead of the legacy way
MIPS: xilfpga: Use Xilinx AXI Interrupt Controller
MIPS: xilfpga: Update DT node and specify uart irq
MIPS: Xilfpga: Add DT node for AXI I2C
net: ethernet: xilinx: Enable emaclite for MIPS
MIPS: xilfpga: Add DT node for AXI emaclite
MIPS: xilfpga: Update defconfig
arch/microblaze/Kconfig | 1 +
arch/microblaze/kernel/Makefile | 2 +-
arch/mips/Kconfig | 1 +
arch/mips/boot/dts/xilfpga/nexys4ddr.dts | 64 ++++++++++++++++++++++
arch/mips/configs/xilfpga_defconfig | 37 ++++++++++++-
arch/mips/xilfpga/intc.c | 7 +--
drivers/irqchip/Kconfig | 4 ++
drivers/irqchip/Makefile | 1 +
.../kernel/intc.c => drivers/irqchip/irq-xilinx.c | 28 +++++++++-
drivers/net/ethernet/xilinx/Kconfig | 4 +-
10 files changed, 139 insertions(+), 10 deletions(-)
rename arch/microblaze/kernel/intc.c => drivers/irqchip/irq-xilinx.c (90%)
--
1.9.1
IRQs from peripherals such as i2c/uart/ethernet come via
the AXI Interrupt controller.
Select it in Kconfig for xilfpga and add the DT node
Signed-off-by: Zubair Lutfullah Kakakhel <redacted>
---
arch/mips/Kconfig | 1 +
arch/mips/boot/dts/xilfpga/nexys4ddr.dts | 12 ++++++++++++
2 files changed, 13 insertions(+)
This prepares the code use the Xilinx AXI Interrupt Controller
driver now available in drivers/irqchip/irq-xilinx.c
Signed-off-by: Zubair Lutfullah Kakakhel <redacted>
---
arch/mips/xilfpga/intc.c | 7 ++-----
1 file changed, 2 insertions(+), 5 deletions(-)
@@ -7,6 +7,12 @@ CONFIG_EMBEDDED=y CONFIG_SLAB=y # CONFIG_BLOCK is not set # CONFIG_SUSPEND is not set+CONFIG_NET=y+CONFIG_PACKET=y+CONFIG_UNIX=y+CONFIG_INET=y+# CONFIG_IPV6 is not set+# CONFIG_WIRELESS is not set # CONFIG_UEVENT_HELPER is not set CONFIG_DEVTMPFS=y CONFIG_DEVTMPFS_MOUNT=y
@@ -14,6 +20,30 @@ CONFIG_DEVTMPFS_MOUNT=y # CONFIG_PREVENT_FIRMWARE_BUILD is not set # CONFIG_FW_LOADER is not set # CONFIG_ALLOW_DEV_COREDUMP is not set+CONFIG_NETDEVICES=y+# CONFIG_NET_CORE is not set+# CONFIG_NET_VENDOR_ARC is not set+# CONFIG_NET_CADENCE is not set+# CONFIG_NET_VENDOR_BROADCOM is not set+# CONFIG_NET_VENDOR_EZCHIP is not set+# CONFIG_NET_VENDOR_INTEL is not set+# CONFIG_NET_VENDOR_MARVELL is not set+# CONFIG_NET_VENDOR_MICREL is not set+# CONFIG_NET_VENDOR_NATSEMI is not set+# CONFIG_NET_VENDOR_NETRONOME is not set+# CONFIG_NET_VENDOR_QUALCOMM is not set+# CONFIG_NET_VENDOR_RENESAS is not set+# CONFIG_NET_VENDOR_ROCKER is not set+# CONFIG_NET_VENDOR_SAMSUNG is not set+# CONFIG_NET_VENDOR_SEEQ is not set+# CONFIG_NET_VENDOR_SMSC is not set+# CONFIG_NET_VENDOR_STMICRO is not set+# CONFIG_NET_VENDOR_SYNOPSYS is not set+# CONFIG_NET_VENDOR_VIA is not set+# CONFIG_NET_VENDOR_WIZNET is not set+CONFIG_XILINX_EMACLITE=y+CONFIG_SMSC_PHY=y+# CONFIG_WLAN is not set # CONFIG_INPUT_MOUSEDEV is not set # CONFIG_INPUT_KEYBOARD is not set # CONFIG_INPUT_MOUSE is not set
@@ -25,13 +55,18 @@ CONFIG_SERIAL_8250=y CONFIG_SERIAL_8250_CONSOLE=y CONFIG_SERIAL_OF_PLATFORM=y # CONFIG_HW_RANDOM is not set+CONFIG_I2C=y+CONFIG_I2C_CHARDEV=y+# CONFIG_I2C_HELPER_AUTO is not set+CONFIG_I2C_XILINX=y CONFIG_GPIO_SYSFS=y CONFIG_GPIO_XILINX=y-# CONFIG_HWMON is not set+CONFIG_SENSORS_ADT7410=y # CONFIG_USB_SUPPORT is not set # CONFIG_MIPS_PLATFORM_DEVICES is not set # CONFIG_IOMMU_SUPPORT is not set # CONFIG_PROC_PAGE_MONITOR is not set+CONFIG_TMPFS=y # CONFIG_MISC_FILESYSTEMS is not set CONFIG_PANIC_ON_OOPS=y # CONFIG_SCHED_DEBUG is not set
The xilfpga platform has a Xilinx AXI emaclite block.
Add the DT node to use it.
Signed-off-by: Zubair Lutfullah Kakakhel <redacted>
---
arch/mips/boot/dts/xilfpga/nexys4ddr.dts | 27 +++++++++++++++++++++++++++
1 file changed, 27 insertions(+)
The xilfpga platform has an AXI I2C Bus master with a temperature
sensor connected to it.
Add the device tree node to use them.
Signed-off-by: Zubair Lutfullah Kakakhel <redacted>
---
arch/mips/boot/dts/xilfpga/nexys4ddr.dts | 22 ++++++++++++++++++++++
1 file changed, 22 insertions(+)
The MIPS based xilfpga platform has the following IRQ structure
Peripherals --> xilinx_intcontroller -> mips_cpu_int controller
Add support for the driver to chain the irq handler
Signed-off-by: Zubair Lutfullah Kakakhel <redacted>
---
drivers/irqchip/irq-xilinx.c | 28 +++++++++++++++++++++++++++-
1 file changed, 27 insertions(+), 1 deletion(-)
The Xilinx AXI Interrupt Controller IP block is used by the MIPS
based xilfpga platform.
Move the interrupt controller code out of arch/microblaze so that
it can be used by everyone
Signed-off-by: Zubair Lutfullah Kakakhel <redacted>
---
arch/microblaze/Kconfig | 1 +
arch/microblaze/kernel/Makefile | 2 +-
drivers/irqchip/Kconfig | 4 ++++
drivers/irqchip/Makefile | 1 +
arch/microblaze/kernel/intc.c => drivers/irqchip/irq-xilinx.c | 0
5 files changed, 7 insertions(+), 1 deletion(-)
rename arch/microblaze/kernel/intc.c => drivers/irqchip/irq-xilinx.c (100%)
diff --git a/arch/microblaze/kernel/intc.c b/drivers/irqchip/irq-xilinx.csimilarity index 100%rename from arch/microblaze/kernel/intc.crename to drivers/irqchip/irq-xilinx.c
--
1.9.1
From: Jason Cooper <hidden> Date: 2016-08-15 15:06:21
Hi Zubair,
On Mon, Aug 15, 2016 at 02:55:27PM +0100, Zubair Lutfullah Kakakhel wrote:
The Xilinx AXI Interrupt Controller IP block is used by the MIPS
based xilfpga platform.
Move the interrupt controller code out of arch/microblaze so that
it can be used by everyone
Signed-off-by: Zubair Lutfullah Kakakhel <redacted>
---
arch/microblaze/Kconfig | 1 +
arch/microblaze/kernel/Makefile | 2 +-
drivers/irqchip/Kconfig | 4 ++++
drivers/irqchip/Makefile | 1 +
arch/microblaze/kernel/intc.c => drivers/irqchip/irq-xilinx.c | 0
5 files changed, 7 insertions(+), 1 deletion(-)
rename arch/microblaze/kernel/intc.c => drivers/irqchip/irq-xilinx.c (100%)
diff --git a/arch/microblaze/kernel/intc.c b/drivers/irqchip/irq-xilinx.csimilarity index 100%rename from arch/microblaze/kernel/intc.crename to drivers/irqchip/irq-xilinx.c
--
1.9.1
From: Jason Cooper <hidden> Date: 2016-08-15 15:13:05
Hi Zubair,
On Mon, Aug 15, 2016 at 02:55:30PM +0100, Zubair Lutfullah Kakakhel wrote:
quoted hunk
IRQs from peripherals such as i2c/uart/ethernet come via
the AXI Interrupt controller.
Select it in Kconfig for xilfpga and add the DT node
Signed-off-by: Zubair Lutfullah Kakakhel <redacted>
---
arch/mips/Kconfig | 1 +
arch/mips/boot/dts/xilfpga/nexys4ddr.dts | 12 ++++++++++++
2 files changed, 13 insertions(+)
From: Jason Cooper <hidden> Date: 2016-08-15 15:17:16
Hi Zubair,
On Mon, Aug 15, 2016 at 02:55:34PM +0100, Zubair Lutfullah Kakakhel wrote:
quoted hunk
The xilfpga platform has a Xilinx AXI emaclite block.
Add the DT node to use it.
Signed-off-by: Zubair Lutfullah Kakakhel <redacted>
---
arch/mips/boot/dts/xilfpga/nexys4ddr.dts | 27 +++++++++++++++++++++++++++
1 file changed, 27 insertions(+)
From: Jason Cooper <hidden> Date: 2016-08-15 15:23:00
Hi Zubair,
On Mon, Aug 15, 2016 at 02:55:27PM +0100, Zubair Lutfullah Kakakhel wrote:
The Xilinx AXI Interrupt Controller IP block is used by the MIPS
based xilfpga platform.
Move the interrupt controller code out of arch/microblaze so that
it can be used by everyone
Signed-off-by: Zubair Lutfullah Kakakhel <redacted>
---
arch/microblaze/Kconfig | 1 +
arch/microblaze/kernel/Makefile | 2 +-
drivers/irqchip/Kconfig | 4 ++++
drivers/irqchip/Makefile | 1 +
arch/microblaze/kernel/intc.c => drivers/irqchip/irq-xilinx.c | 0
5 files changed, 7 insertions(+), 1 deletion(-)
rename arch/microblaze/kernel/intc.c => drivers/irqchip/irq-xilinx.c (100%)
When you send the next version, please disable rename detection. The
driver looks pretty straight forward, but I'd like to take the
opportunity to clean up the abstraction around read and write. As well
as making it easier for everyone to review on-list.
thx,
Jason.
Hi Zubair,
On Mon, Aug 15, 2016 at 02:55:27PM +0100, Zubair Lutfullah Kakakhel wrote:
quoted
The Xilinx AXI Interrupt Controller IP block is used by the MIPS
based xilfpga platform.
Move the interrupt controller code out of arch/microblaze so that
it can be used by everyone
Signed-off-by: Zubair Lutfullah Kakakhel <redacted>
---
arch/microblaze/Kconfig | 1 +
arch/microblaze/kernel/Makefile | 2 +-
drivers/irqchip/Kconfig | 4 ++++
drivers/irqchip/Makefile | 1 +
arch/microblaze/kernel/intc.c => drivers/irqchip/irq-xilinx.c | 0
5 files changed, 7 insertions(+), 1 deletion(-)
rename arch/microblaze/kernel/intc.c => drivers/irqchip/irq-xilinx.c (100%)
When you send the next version, please disable rename detection. The
driver looks pretty straight forward, but I'd like to take the
opportunity to clean up the abstraction around read and write. As well
as making it easier for everyone to review on-list.
Thanks for the review.
I'll send the v2 in a while.
Regards,
ZubairLK
Hi Zubair,
On Mon, Aug 15, 2016 at 02:55:34PM +0100, Zubair Lutfullah Kakakhel wrote:
quoted
The xilfpga platform has a Xilinx AXI emaclite block.
Add the DT node to use it.
Signed-off-by: Zubair Lutfullah Kakakhel <redacted>
---
arch/mips/boot/dts/xilfpga/nexys4ddr.dts | 27 +++++++++++++++++++++++++++
1 file changed, 27 insertions(+)