intr.h revision 301265
1281494Sandrew/*- 2281494Sandrew * Copyright (c) 2014 Andrew Turner <andrew@FreeBSD.org> 3281494Sandrew * All rights reserved. 4281494Sandrew * 5281494Sandrew * Redistribution and use in source and binary forms, with or without 6281494Sandrew * modification, are permitted provided that the following conditions 7281494Sandrew * are met: 8281494Sandrew * 1. Redistributions of source code must retain the above copyright 9281494Sandrew * notice, this list of conditions and the following disclaimer. 10281494Sandrew * 2. Redistributions in binary form must reproduce the above copyright 11281494Sandrew * notice, this list of conditions and the following disclaimer in the 12281494Sandrew * documentation and/or other materials provided with the distribution. 13281494Sandrew * 14281494Sandrew * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND 15281494Sandrew * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 16281494Sandrew * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 17281494Sandrew * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE 18281494Sandrew * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 19281494Sandrew * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 20281494Sandrew * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 21281494Sandrew * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 22281494Sandrew * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 23281494Sandrew * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 24281494Sandrew * SUCH DAMAGE. 25281494Sandrew * 26281494Sandrew * $FreeBSD: head/sys/arm64/include/intr.h 301265 2016-06-03 10:28:06Z andrew $ 27281494Sandrew */ 28281494Sandrew 29281494Sandrew#ifndef _MACHINE_INTR_H_ 30281494Sandrew#define _MACHINE_INTR_H_ 31281494Sandrew 32299936Sandrew#ifdef INTRNG 33299936Sandrew 34299936Sandrew#ifdef FDT 35299936Sandrew#include <dev/ofw/openfirm.h> 36299936Sandrew#endif 37299936Sandrew 38299936Sandrew#include <sys/intr.h> 39299936Sandrew 40299936Sandrew#ifndef NIRQ 41301265Sandrew#define NIRQ 2048 /* XXX - It should be an option. */ 42299936Sandrew#endif 43299936Sandrew 44299936Sandrewstatic inline void 45299936Sandrewarm_irq_memory_barrier(uintptr_t irq) 46299936Sandrew{ 47299936Sandrew} 48299936Sandrew 49299936Sandrew#ifdef SMP 50299936Sandrewvoid intr_ipi_dispatch(u_int, struct trapframe *); 51299936Sandrew#endif 52299936Sandrew 53299936Sandrew#else 54297028Sandrewint intr_irq_config(u_int, enum intr_trigger, enum intr_polarity); 55297028Sandrewvoid intr_irq_handler(struct trapframe *); 56297028Sandrewint intr_irq_remove_handler(device_t, u_int, void *); 57297028Sandrew 58281494Sandrewvoid arm_dispatch_intr(u_int, struct trapframe *); 59281494Sandrewint arm_enable_intr(void); 60281494Sandrewvoid arm_mask_irq(u_int); 61281494Sandrewvoid arm_register_root_pic(device_t, u_int); 62281494Sandrewvoid arm_register_msi_pic(device_t); 63292062Sandrewint arm_alloc_msi(device_t, device_t, int, int, int *); 64292062Sandrewint arm_release_msi(device_t, device_t, int, int *); 65292062Sandrewint arm_alloc_msix(device_t, device_t, int *); 66292062Sandrewint arm_release_msix(device_t, device_t, int); 67292062Sandrewint arm_map_msi(device_t, device_t, int, uint64_t *, uint32_t *); 68292062Sandrewint arm_map_msix(device_t, device_t, int, uint64_t *, uint32_t *); 69281494Sandrewint arm_setup_intr(const char *, driver_filter_t *, driver_intr_t, 70281494Sandrew void *, u_int, enum intr_type, void **); 71281494Sandrewvoid arm_unmask_irq(u_int); 72281494Sandrew 73281494Sandrew#ifdef SMP 74297028Sandrewint intr_irq_bind(u_int, int); 75297028Sandrew 76281494Sandrewvoid arm_init_secondary(void); 77281494Sandrewvoid arm_setup_ipihandler(driver_filter_t *, u_int); 78281494Sandrewvoid arm_unmask_ipi(u_int); 79281494Sandrew#endif 80299936Sandrew#endif 81281494Sandrew 82281494Sandrew#endif /* _MACHINE_INTR_H */ 83