11.9Sriastrad/*	$NetBSD: mvsoc_intr.h,v 1.9 2023/07/13 16:51:33 riastradh Exp $	*/
21.1Skiyohara/*
31.1Skiyohara * Copyright (c) 2010 KIYOHARA Takashi
41.1Skiyohara * All rights reserved.
51.1Skiyohara *
61.1Skiyohara * Redistribution and use in source and binary forms, with or without
71.1Skiyohara * modification, are permitted provided that the following conditions
81.1Skiyohara * are met:
91.1Skiyohara * 1. Redistributions of source code must retain the above copyright
101.1Skiyohara *    notice, this list of conditions and the following disclaimer.
111.1Skiyohara * 2. Redistributions in binary form must reproduce the above copyright
121.1Skiyohara *    notice, this list of conditions and the following disclaimer in the
131.1Skiyohara *    documentation and/or other materials provided with the distribution.
141.1Skiyohara *
151.1Skiyohara * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
161.1Skiyohara * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
171.1Skiyohara * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
181.1Skiyohara * DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT,
191.1Skiyohara * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
201.1Skiyohara * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
211.1Skiyohara * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
221.1Skiyohara * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
231.1Skiyohara * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
241.1Skiyohara * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
251.1Skiyohara * POSSIBILITY OF SUCH DAMAGE.
261.1Skiyohara */
271.1Skiyohara
281.1Skiyohara#ifndef _MVSOC_INTR_H_
291.1Skiyohara#define _MVSOC_INTR_H_
301.1Skiyohara
311.4Smatt#ifdef _INTR_PRIVATE
321.3Skiyohara#include "opt_mvsoc.h"
331.3Skiyohara
341.3Skiyohara#if defined(ARMADAXP)
351.3Skiyohara#define __HAVE_PIC_SET_PRIORITY
361.5Smatt#define __HAVE_PIC_PENDING_INTRS
371.6Shsuenaga#define PIC_MAXMAXSOURCES 256
381.3Skiyohara#endif
391.4Smatt#endif
401.3Skiyohara
411.1Skiyohara#define ARM_IRQ_HANDLER	_C_LABEL(mvsoc_irq_handler)
421.1Skiyohara
431.1Skiyohara#ifndef _LOCORE
441.2Smattextern int (*find_pending_irqs)(void);
451.1Skiyohara
461.1Skiyoharavoid mvsoc_irq_handler(void *);
471.1Skiyohara
481.1Skiyohara#include <arm/pic/picvar.h>
491.1Skiyohara
501.9Sriastrad/*
511.9Sriastrad * Note: arm and powerpc Marvell platforms have a conflicting idea of
521.9Sriastrad * marvell_intr_establish.
531.9Sriastrad *
541.9Sriastrad * On arm-based Marvell platforms, there is a static inline
551.9Sriastrad * marvell_intr_establish defined in mvsoc_intr.h.
561.9Sriastrad *
571.9Sriastrad * On powerpc-based Marvell platforms, there is an out-of-line
581.9Sriastrad * marvell_intr_establish defined in a SoC-specific gt_mainbus.c
591.9Sriastrad * (evbppc/ev64260, ofppc) and declared in dev/marvell/marvellvar.h.
601.9Sriastrad */
611.1Skiyoharastatic __inline void *
621.1Skiyoharamarvell_intr_establish(int irq, int ipl, int (*func)(void *), void *arg)
631.1Skiyohara{
641.1Skiyohara
651.1Skiyohara	return intr_establish(irq, ipl, IST_LEVEL_HIGH, func, arg);
661.1Skiyohara}
671.1Skiyohara
681.1Skiyohara#endif	/* _LOCORE */
691.1Skiyohara
701.1Skiyohara#endif	/* _MVSOC_INTR_H_ */
71