File Index
Files and directories
Sign in
FILE

irq-riscv-aplic-main.h

File preview with syntax highlighting.

linux-6.19.14/drivers/irqchip/irq-riscv-aplic-main.h C
 1/* SPDX-License-Identifier: GPL-2.0-only */
 2/*
 3 * Copyright (C) 2021 Western Digital Corporation or its affiliates.
 4 * Copyright (C) 2022 Ventana Micro Systems Inc.
 5 */
 6
 7#ifndef _IRQ_RISCV_APLIC_MAIN_H
 8#define _IRQ_RISCV_APLIC_MAIN_H
 9
10#include <linux/device.h>
11#include <linux/io.h>
12#include <linux/irq.h>
13#include <linux/irqdomain.h>
14#include <linux/fwnode.h>
15
16#define APLIC_DEFAULT_PRIORITY		1
17
18struct aplic_msicfg {
19	phys_addr_t		base_ppn;
20	u32			hhxs;
21	u32			hhxw;
22	u32			lhxs;
23	u32			lhxw;
24};
25
26struct aplic_src_ctrl {
27	u32			sourcecfg;
28	u32			target;
29	u32			ie;
30};
31
32struct aplic_saved_regs {
33	u32			domaincfg;
34#ifdef CONFIG_RISCV_M_MODE
35	u32			msiaddr;
36	u32			msiaddrh;
37#endif
38	struct aplic_src_ctrl	*srcs;
39};
40
41struct aplic_priv {
42	struct list_head	head;
43	struct notifier_block	genpd_nb;
44	struct aplic_saved_regs	saved_hw_regs;
45	struct device		*dev;
46	u32			gsi_base;
47	u32			nr_irqs;
48	u32			nr_idcs;
49	u32			acpi_aplic_id;
50	void __iomem		*regs;
51	struct aplic_msicfg	msicfg;
52};
53
54void aplic_irq_unmask(struct irq_data *d);
55void aplic_irq_mask(struct irq_data *d);
56int aplic_irq_set_type(struct irq_data *d, unsigned int type);
57int aplic_irqdomain_translate(struct irq_fwspec *fwspec, u32 gsi_base,
58			      unsigned long *hwirq, unsigned int *type);
59void aplic_init_hw_global(struct aplic_priv *priv, bool msi_mode);
60int aplic_setup_priv(struct aplic_priv *priv, struct device *dev, void __iomem *regs);
61void aplic_direct_restore_states(struct aplic_priv *priv);
62int aplic_direct_setup(struct device *dev, void __iomem *regs);
63#ifdef CONFIG_RISCV_APLIC_MSI
64int aplic_msi_setup(struct device *dev, void __iomem *regs);
65#else
66static inline int aplic_msi_setup(struct device *dev, void __iomem *regs)
67{
68	return -ENODEV;
69}
70#endif
71
72#endif
~/ Read-only file preview.