License cleanup: add SPDX GPL-2.0 license identifier to files with no license
[sfrench/cifs-2.6.git] / arch / ia64 / hp / sim / hpsim_irq.c
1 // SPDX-License-Identifier: GPL-2.0
2 /*
3  * Platform dependent support for HP simulator.
4  *
5  * Copyright (C) 1998-2001 Hewlett-Packard Co
6  * Copyright (C) 1998-2001 David Mosberger-Tang <davidm@hpl.hp.com>
7  */
8
9 #include <linux/init.h>
10 #include <linux/kernel.h>
11 #include <linux/sched.h>
12 #include <linux/irq.h>
13
14 #include "hpsim_ssc.h"
15
16 static unsigned int
17 hpsim_irq_startup(struct irq_data *data)
18 {
19         return 0;
20 }
21
22 static void
23 hpsim_irq_noop(struct irq_data *data)
24 {
25 }
26
27 static int
28 hpsim_set_affinity_noop(struct irq_data *d, const struct cpumask *b, bool f)
29 {
30         return 0;
31 }
32
33 static struct irq_chip irq_type_hp_sim = {
34         .name =                 "hpsim",
35         .irq_startup =          hpsim_irq_startup,
36         .irq_shutdown =         hpsim_irq_noop,
37         .irq_enable =           hpsim_irq_noop,
38         .irq_disable =          hpsim_irq_noop,
39         .irq_ack =              hpsim_irq_noop,
40         .irq_set_affinity =     hpsim_set_affinity_noop,
41 };
42
43 static void hpsim_irq_set_chip(int irq)
44 {
45         struct irq_chip *chip = irq_get_chip(irq);
46
47         if (chip == &no_irq_chip)
48                 irq_set_chip(irq, &irq_type_hp_sim);
49 }
50
51 static void hpsim_connect_irq(int intr, int irq)
52 {
53         ia64_ssc(intr, irq, 0, 0, SSC_CONNECT_INTERRUPT);
54 }
55
56 int hpsim_get_irq(int intr)
57 {
58         int irq = assign_irq_vector(AUTO_ASSIGN);
59
60         if (irq >= 0) {
61                 hpsim_irq_set_chip(irq);
62                 irq_set_handler(irq, handle_simple_irq);
63                 hpsim_connect_irq(intr, irq);
64         }
65
66         return irq;
67 }
68
69 void __init
70 hpsim_irq_init (void)
71 {
72         int i;
73
74         for_each_active_irq(i)
75                 hpsim_irq_set_chip(i);
76 }