11da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/* 21da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * LSAPIC Interrupt Controller 31da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * 41da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * This takes care of interrupts that are generated by the CPU's 51da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * internal Streamlined Advanced Programmable Interrupt Controller 61da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * (LSAPIC), such as the ITC and IPI interrupts. 71da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * 81da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * Copyright (C) 1999 VA Linux Systems 91da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * Copyright (C) 1999 Walt Drummond <drummond@valinux.com> 101da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * Copyright (C) 2000 Hewlett-Packard Co 111da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * Copyright (C) 2000 David Mosberger-Tang <davidm@hpl.hp.com> 121da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds */ 131da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 141da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#include <linux/sched.h> 151da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#include <linux/irq.h> 161da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 171da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsstatic unsigned int 185c217b60fed39ed2ac6a2e8b788df4a74fa68878Thomas Gleixnerlsapic_noop_startup (struct irq_data *data) 191da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds{ 201da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds return 0; 211da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds} 221da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 231da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsstatic void 245c217b60fed39ed2ac6a2e8b788df4a74fa68878Thomas Gleixnerlsapic_noop (struct irq_data *data) 251da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds{ 2672fdbdce3d52282f8ea95f512e871791256754e6Simon Arlott /* nothing to do... */ 271da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds} 281da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 295c217b60fed39ed2ac6a2e8b788df4a74fa68878Thomas Gleixnerstatic int lsapic_retrigger(struct irq_data *data) 30c0ad90a32fb60f4129d0e24dfd5fd7128e2e09f2Ingo Molnar{ 315c217b60fed39ed2ac6a2e8b788df4a74fa68878Thomas Gleixner ia64_resend_irq(data->irq); 32c0ad90a32fb60f4129d0e24dfd5fd7128e2e09f2Ingo Molnar 33c0ad90a32fb60f4129d0e24dfd5fd7128e2e09f2Ingo Molnar return 1; 34c0ad90a32fb60f4129d0e24dfd5fd7128e2e09f2Ingo Molnar} 35c0ad90a32fb60f4129d0e24dfd5fd7128e2e09f2Ingo Molnar 36fb824f4838c3110c282268a3620f41da67b3f3fbThomas Gleixnerstruct irq_chip irq_type_ia64_lsapic = { 375c217b60fed39ed2ac6a2e8b788df4a74fa68878Thomas Gleixner .name = "LSAPIC", 385c217b60fed39ed2ac6a2e8b788df4a74fa68878Thomas Gleixner .irq_startup = lsapic_noop_startup, 395c217b60fed39ed2ac6a2e8b788df4a74fa68878Thomas Gleixner .irq_shutdown = lsapic_noop, 405c217b60fed39ed2ac6a2e8b788df4a74fa68878Thomas Gleixner .irq_enable = lsapic_noop, 415c217b60fed39ed2ac6a2e8b788df4a74fa68878Thomas Gleixner .irq_disable = lsapic_noop, 425c217b60fed39ed2ac6a2e8b788df4a74fa68878Thomas Gleixner .irq_ack = lsapic_noop, 435c217b60fed39ed2ac6a2e8b788df4a74fa68878Thomas Gleixner .irq_retrigger = lsapic_retrigger, 441da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds}; 45