162306a36Sopenharmony_ci// SPDX-License-Identifier: GPL-2.0 262306a36Sopenharmony_ci/* 362306a36Sopenharmony_ci * linux/arch/sh/boards/se/7721/irq.c 462306a36Sopenharmony_ci * 562306a36Sopenharmony_ci * Copyright (C) 2008 Renesas Solutions Corp. 662306a36Sopenharmony_ci */ 762306a36Sopenharmony_ci#include <linux/init.h> 862306a36Sopenharmony_ci#include <linux/irq.h> 962306a36Sopenharmony_ci#include <linux/interrupt.h> 1062306a36Sopenharmony_ci#include <linux/io.h> 1162306a36Sopenharmony_ci#include <mach-se/mach/se7721.h> 1262306a36Sopenharmony_ci 1362306a36Sopenharmony_cienum { 1462306a36Sopenharmony_ci UNUSED = 0, 1562306a36Sopenharmony_ci 1662306a36Sopenharmony_ci /* board specific interrupt sources */ 1762306a36Sopenharmony_ci MRSHPC, 1862306a36Sopenharmony_ci}; 1962306a36Sopenharmony_ci 2062306a36Sopenharmony_cistatic struct intc_vect vectors[] __initdata = { 2162306a36Sopenharmony_ci INTC_IRQ(MRSHPC, MRSHPC_IRQ0), 2262306a36Sopenharmony_ci}; 2362306a36Sopenharmony_ci 2462306a36Sopenharmony_cistatic struct intc_prio_reg prio_registers[] __initdata = { 2562306a36Sopenharmony_ci { FPGA_ILSR6, 0, 8, 4, /* IRLMSK */ 2662306a36Sopenharmony_ci { 0, MRSHPC } }, 2762306a36Sopenharmony_ci}; 2862306a36Sopenharmony_ci 2962306a36Sopenharmony_cistatic DECLARE_INTC_DESC(intc_desc, "SE7721", vectors, 3062306a36Sopenharmony_ci NULL, NULL, prio_registers, NULL); 3162306a36Sopenharmony_ci 3262306a36Sopenharmony_ci/* 3362306a36Sopenharmony_ci * Initialize IRQ setting 3462306a36Sopenharmony_ci */ 3562306a36Sopenharmony_civoid __init init_se7721_IRQ(void) 3662306a36Sopenharmony_ci{ 3762306a36Sopenharmony_ci /* PPCR */ 3862306a36Sopenharmony_ci __raw_writew(__raw_readw(0xa4050118) & ~0x00ff, 0xa4050118); 3962306a36Sopenharmony_ci 4062306a36Sopenharmony_ci register_intc_controller(&intc_desc); 4162306a36Sopenharmony_ci intc_set_priority(MRSHPC_IRQ0, 0xf - MRSHPC_IRQ0); 4262306a36Sopenharmony_ci} 43