cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

irq-r7780mp.c (1801B)


      1// SPDX-License-Identifier: GPL-2.0
      2/*
      3 * Renesas Solutions Highlander R7780MP Support.
      4 *
      5 * Copyright (C) 2002  Atom Create Engineering Co., Ltd.
      6 * Copyright (C) 2006  Paul Mundt
      7 * Copyright (C) 2007  Magnus Damm
      8 */
      9#include <linux/init.h>
     10#include <linux/irq.h>
     11#include <linux/io.h>
     12#include <mach/highlander.h>
     13
     14enum {
     15	UNUSED = 0,
     16
     17	/* board specific interrupt sources */
     18	CF,		/* Compact Flash */
     19	TP,		/* Touch panel */
     20	SCIF1,		/* FPGA SCIF1 */
     21	SCIF0,		/* FPGA SCIF0 */
     22	SMBUS,		/* SMBUS */
     23	RTC,		/* RTC Alarm */
     24	AX88796,	/* Ethernet controller */
     25	PSW,		/* Push Switch */
     26
     27	/* external bus connector */
     28	EXT1, EXT2, EXT4, EXT5, EXT6,
     29};
     30
     31static struct intc_vect vectors[] __initdata = {
     32	INTC_IRQ(CF, IRQ_CF),
     33	INTC_IRQ(TP, IRQ_TP),
     34	INTC_IRQ(SCIF1, IRQ_SCIF1),
     35	INTC_IRQ(SCIF0, IRQ_SCIF0),
     36	INTC_IRQ(SMBUS, IRQ_SMBUS),
     37	INTC_IRQ(RTC, IRQ_RTC),
     38	INTC_IRQ(AX88796, IRQ_AX88796),
     39	INTC_IRQ(PSW, IRQ_PSW),
     40
     41	INTC_IRQ(EXT1, IRQ_EXT1), INTC_IRQ(EXT2, IRQ_EXT2),
     42	INTC_IRQ(EXT4, IRQ_EXT4), INTC_IRQ(EXT5, IRQ_EXT5),
     43	INTC_IRQ(EXT6, IRQ_EXT6),
     44};
     45
     46static struct intc_mask_reg mask_registers[] __initdata = {
     47	{ 0xa4000000, 0, 16, /* IRLMSK */
     48	  { SCIF0, SCIF1, RTC, 0, CF, 0, TP, SMBUS,
     49	    0, EXT6, EXT5, EXT4, EXT2, EXT1, PSW, AX88796 } },
     50};
     51
     52static unsigned char irl2irq[HL_NR_IRL] __initdata = {
     53	0, IRQ_CF, IRQ_TP, IRQ_SCIF1,
     54	IRQ_SCIF0, IRQ_SMBUS, IRQ_RTC, IRQ_EXT6,
     55	IRQ_EXT5, IRQ_EXT4, IRQ_EXT2, IRQ_EXT1,
     56	0, IRQ_AX88796, IRQ_PSW,
     57};
     58
     59static DECLARE_INTC_DESC(intc_desc, "r7780mp", vectors,
     60			 NULL, mask_registers, NULL, NULL);
     61
     62unsigned char * __init highlander_plat_irq_setup(void)
     63{
     64	if ((__raw_readw(0xa4000700) & 0xf000) == 0x2000) {
     65		printk(KERN_INFO "Using r7780mp interrupt controller.\n");
     66		register_intc_controller(&intc_desc);
     67		return irl2irq;
     68	}
     69
     70	return NULL;
     71}