162306a36Sopenharmony_ci// SPDX-License-Identifier: GPL-2.0 262306a36Sopenharmony_ci/* 362306a36Sopenharmony_ci * arch/sh/boards/mach-landisk/irq.c 462306a36Sopenharmony_ci * 562306a36Sopenharmony_ci * I-O DATA Device, Inc. LANDISK Support 662306a36Sopenharmony_ci * 762306a36Sopenharmony_ci * Copyright (C) 2005-2007 kogiidena 862306a36Sopenharmony_ci * Copyright (C) 2011 Nobuhiro Iwamatsu 962306a36Sopenharmony_ci * 1062306a36Sopenharmony_ci * Copyright (C) 2001 Ian da Silva, Jeremy Siegel 1162306a36Sopenharmony_ci * Based largely on io_se.c. 1262306a36Sopenharmony_ci */ 1362306a36Sopenharmony_ci 1462306a36Sopenharmony_ci#include <linux/init.h> 1562306a36Sopenharmony_ci#include <linux/irq.h> 1662306a36Sopenharmony_ci#include <linux/interrupt.h> 1762306a36Sopenharmony_ci#include <linux/io.h> 1862306a36Sopenharmony_ci#include <mach-landisk/mach/iodata_landisk.h> 1962306a36Sopenharmony_ci 2062306a36Sopenharmony_cienum { 2162306a36Sopenharmony_ci UNUSED = 0, 2262306a36Sopenharmony_ci 2362306a36Sopenharmony_ci PCI_INTA, /* PCI int A */ 2462306a36Sopenharmony_ci PCI_INTB, /* PCI int B */ 2562306a36Sopenharmony_ci PCI_INTC, /* PCI int C */ 2662306a36Sopenharmony_ci PCI_INTD, /* PCI int D */ 2762306a36Sopenharmony_ci ATA, /* ATA */ 2862306a36Sopenharmony_ci FATA, /* CF */ 2962306a36Sopenharmony_ci POWER, /* Power switch */ 3062306a36Sopenharmony_ci BUTTON, /* Button switch */ 3162306a36Sopenharmony_ci}; 3262306a36Sopenharmony_ci 3362306a36Sopenharmony_ci/* Vectors for LANDISK */ 3462306a36Sopenharmony_cistatic struct intc_vect vectors_landisk[] __initdata = { 3562306a36Sopenharmony_ci INTC_IRQ(PCI_INTA, IRQ_PCIINTA), 3662306a36Sopenharmony_ci INTC_IRQ(PCI_INTB, IRQ_PCIINTB), 3762306a36Sopenharmony_ci INTC_IRQ(PCI_INTC, IRQ_PCIINTC), 3862306a36Sopenharmony_ci INTC_IRQ(PCI_INTD, IRQ_PCIINTD), 3962306a36Sopenharmony_ci INTC_IRQ(ATA, IRQ_ATA), 4062306a36Sopenharmony_ci INTC_IRQ(FATA, IRQ_FATA), 4162306a36Sopenharmony_ci INTC_IRQ(POWER, IRQ_POWER), 4262306a36Sopenharmony_ci INTC_IRQ(BUTTON, IRQ_BUTTON), 4362306a36Sopenharmony_ci}; 4462306a36Sopenharmony_ci 4562306a36Sopenharmony_ci/* IRLMSK mask register layout for LANDISK */ 4662306a36Sopenharmony_cistatic struct intc_mask_reg mask_registers_landisk[] __initdata = { 4762306a36Sopenharmony_ci { PA_IMASK, 0, 8, /* IRLMSK */ 4862306a36Sopenharmony_ci { BUTTON, POWER, FATA, ATA, 4962306a36Sopenharmony_ci PCI_INTD, PCI_INTC, PCI_INTB, PCI_INTA, 5062306a36Sopenharmony_ci } 5162306a36Sopenharmony_ci }, 5262306a36Sopenharmony_ci}; 5362306a36Sopenharmony_ci 5462306a36Sopenharmony_cistatic DECLARE_INTC_DESC(intc_desc_landisk, "landisk", vectors_landisk, NULL, 5562306a36Sopenharmony_ci mask_registers_landisk, NULL, NULL); 5662306a36Sopenharmony_ci/* 5762306a36Sopenharmony_ci * Initialize IRQ setting 5862306a36Sopenharmony_ci */ 5962306a36Sopenharmony_civoid __init init_landisk_IRQ(void) 6062306a36Sopenharmony_ci{ 6162306a36Sopenharmony_ci register_intc_controller(&intc_desc_landisk); 6262306a36Sopenharmony_ci __raw_writeb(0x00, PA_PWRINT_CLR); 6362306a36Sopenharmony_ci} 64