160727d8bSWarner Losh /*- 2f6a7723dSBenno Rice * Copyright (C) 2002 Benno Rice. 3f6a7723dSBenno Rice * All rights reserved. 4f6a7723dSBenno Rice * 5f6a7723dSBenno Rice * Redistribution and use in source and binary forms, with or without 6f6a7723dSBenno Rice * modification, are permitted provided that the following conditions 7f6a7723dSBenno Rice * are met: 8f6a7723dSBenno Rice * 1. Redistributions of source code must retain the above copyright 9f6a7723dSBenno Rice * notice, this list of conditions and the following disclaimer. 10f6a7723dSBenno Rice * 2. Redistributions in binary form must reproduce the above copyright 11f6a7723dSBenno Rice * notice, this list of conditions and the following disclaimer in the 12f6a7723dSBenno Rice * documentation and/or other materials provided with the distribution. 13f6a7723dSBenno Rice * 14f6a7723dSBenno Rice * THIS SOFTWARE IS PROVIDED BY Benno Rice ``AS IS'' AND ANY EXPRESS OR 15f6a7723dSBenno Rice * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES 16f6a7723dSBenno Rice * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 17f6a7723dSBenno Rice * IN NO EVENT SHALL TOOLS GMBH BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 18f6a7723dSBenno Rice * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 19f6a7723dSBenno Rice * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; 20f6a7723dSBenno Rice * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, 21f6a7723dSBenno Rice * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR 22f6a7723dSBenno Rice * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF 23f6a7723dSBenno Rice * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 24f6a7723dSBenno Rice * 25f6a7723dSBenno Rice * $FreeBSD$ 26f6a7723dSBenno Rice */ 27f6a7723dSBenno Rice 28f6a7723dSBenno Rice #ifndef _MACHINE_INTR_MACHDEP_H_ 29f6a7723dSBenno Rice #define _MACHINE_INTR_MACHDEP_H_ 30f6a7723dSBenno Rice 3177d40ffdSMarcel Moolenaar #define INTR_VECTORS 256 326d2d7b8cSMarcel Moolenaar 332f204e1fSNathan Whitehorn #define MAX_PICS 16 34607ebaafSMarcel Moolenaar #define MAP_IRQ(node, pin) powerpc_get_irq(node, pin) 35f6a7723dSBenno Rice 36ca2c1931SNathan Whitehorn /* 37ca2c1931SNathan Whitehorn * Default base address for MSI messages on PowerPC 38ca2c1931SNathan Whitehorn */ 39ca2c1931SNathan Whitehorn #define MSI_INTEL_ADDR_BASE 0xfee00000 40ca2c1931SNathan Whitehorn 41eaef5f0aSNathan Whitehorn extern device_t root_pic; 42f6a7723dSBenno Rice 4377d40ffdSMarcel Moolenaar struct trapframe; 44f6a7723dSBenno Rice 4505c62b81SMarcel Moolenaar driver_filter_t powerpc_ipi_handler; 4605c62b81SMarcel Moolenaar 47707c2fb9SAlexander Motin void intrcnt_add(const char *name, u_long **countp); 48707c2fb9SAlexander Motin 496d2d7b8cSMarcel Moolenaar void powerpc_register_pic(device_t, uint32_t, u_int, u_int, u_int); 506d2d7b8cSMarcel Moolenaar u_int powerpc_get_irq(uint32_t, u_int); 514f5d8660SMarcel Moolenaar 5277d40ffdSMarcel Moolenaar void powerpc_dispatch_intr(u_int, struct trapframe *); 5377d40ffdSMarcel Moolenaar int powerpc_enable_intr(void); 54eaef5f0aSNathan Whitehorn int powerpc_setup_intr(const char *, u_int, driver_filter_t, driver_intr_t, 55eaef5f0aSNathan Whitehorn void *, enum intr_type, void **); 5677d40ffdSMarcel Moolenaar int powerpc_teardown_intr(void *); 5708393b3eSNathan Whitehorn int powerpc_bind_intr(u_int irq, u_char cpu); 58d6f59297SMarcel Moolenaar int powerpc_config_intr(int, enum intr_trigger, enum intr_polarity); 5954423402SNathan Whitehorn int powerpc_fw_config_intr(int irq, int sense_code); 60f6a7723dSBenno Rice 61*0aeed3e9SJustin Hibbits void powerpc_intr_mask(u_int irq); 62*0aeed3e9SJustin Hibbits void powerpc_intr_unmask(u_int irq); 63*0aeed3e9SJustin Hibbits 64f6a7723dSBenno Rice #endif /* _MACHINE_INTR_MACHDEP_H_ */ 65