162306a36Sopenharmony_ci// SPDX-License-Identifier: GPL-2.0 262306a36Sopenharmony_ci/* 362306a36Sopenharmony_ci * SDK7786 FPGA IRQ Controller Support. 462306a36Sopenharmony_ci * 562306a36Sopenharmony_ci * Copyright (C) 2010 Matt Fleming 662306a36Sopenharmony_ci * Copyright (C) 2010 Paul Mundt 762306a36Sopenharmony_ci */ 862306a36Sopenharmony_ci#include <linux/irq.h> 962306a36Sopenharmony_ci#include <mach/fpga.h> 1062306a36Sopenharmony_ci#include <mach/irq.h> 1162306a36Sopenharmony_ci 1262306a36Sopenharmony_cienum { 1362306a36Sopenharmony_ci ATA_IRQ_BIT = 1, 1462306a36Sopenharmony_ci SPI_BUSY_BIT = 2, 1562306a36Sopenharmony_ci LIRQ5_BIT = 3, 1662306a36Sopenharmony_ci LIRQ6_BIT = 4, 1762306a36Sopenharmony_ci LIRQ7_BIT = 5, 1862306a36Sopenharmony_ci LIRQ8_BIT = 6, 1962306a36Sopenharmony_ci KEY_IRQ_BIT = 7, 2062306a36Sopenharmony_ci PEN_IRQ_BIT = 8, 2162306a36Sopenharmony_ci ETH_IRQ_BIT = 9, 2262306a36Sopenharmony_ci RTC_ALARM_BIT = 10, 2362306a36Sopenharmony_ci CRYSTAL_FAIL_BIT = 12, 2462306a36Sopenharmony_ci ETH_PME_BIT = 14, 2562306a36Sopenharmony_ci}; 2662306a36Sopenharmony_ci 2762306a36Sopenharmony_civoid __init sdk7786_init_irq(void) 2862306a36Sopenharmony_ci{ 2962306a36Sopenharmony_ci unsigned int tmp; 3062306a36Sopenharmony_ci 3162306a36Sopenharmony_ci /* Enable priority encoding for all IRLs */ 3262306a36Sopenharmony_ci fpga_write_reg(fpga_read_reg(INTMSR) | 0x0303, INTMSR); 3362306a36Sopenharmony_ci 3462306a36Sopenharmony_ci /* Clear FPGA interrupt status registers */ 3562306a36Sopenharmony_ci fpga_write_reg(0x0000, INTASR); 3662306a36Sopenharmony_ci fpga_write_reg(0x0000, INTBSR); 3762306a36Sopenharmony_ci 3862306a36Sopenharmony_ci /* Unmask FPGA interrupts */ 3962306a36Sopenharmony_ci tmp = fpga_read_reg(INTAMR); 4062306a36Sopenharmony_ci tmp &= ~(1 << ETH_IRQ_BIT); 4162306a36Sopenharmony_ci fpga_write_reg(tmp, INTAMR); 4262306a36Sopenharmony_ci 4362306a36Sopenharmony_ci plat_irq_setup_pins(IRQ_MODE_IRL7654_MASK); 4462306a36Sopenharmony_ci plat_irq_setup_pins(IRQ_MODE_IRL3210_MASK); 4562306a36Sopenharmony_ci} 46