1
0
mirror of https://xff.cz/git/u-boot/ synced 2025-09-02 09:12:08 +02:00

x86: Move UCLASS_IRQ into a separate file

Update this uclass to support the needs of the Apollo Lake ITSS. It
supports four operations.

Move the uclass into a separate directory so that sandbox can use it too.
Add a new Kconfig to control it and enable this on x86.

Signed-off-by: Simon Glass <sjg@chromium.org>
Reviewed-by: Bin Meng <bmeng.cn@gmail.com>
This commit is contained in:
Simon Glass
2019-12-06 21:41:58 -07:00
committed by Bin Meng
parent 3e17ffbb44
commit 79d66a6ac1
6 changed files with 152 additions and 5 deletions

View File

@@ -203,6 +203,15 @@ config FSL_SEC_MON
Security Monitor can be transitioned on any security failures,
like software violations or hardware security violations.
config IRQ
bool "Intel Interrupt controller"
depends on X86 || SANDBOX
help
This enables support for Intel interrupt controllers, including ITSS.
Some devices have extra features, such as Apollo Lake. The
device has its own uclass since there are several operations
involved.
config JZ4780_EFUSE
bool "Ingenic JZ4780 eFUSE support"
depends on ARCH_JZ47XX

View File

@@ -41,6 +41,7 @@ obj-$(CONFIG_FS_LOADER) += fs_loader.o
obj-$(CONFIG_GDSYS_IOEP) += gdsys_ioep.o
obj-$(CONFIG_GDSYS_RXAUI_CTRL) += gdsys_rxaui_ctrl.o
obj-$(CONFIG_GDSYS_SOC) += gdsys_soc.o
obj-$(CONFIG_IRQ) += irq-uclass.o
obj-$(CONFIG_$(SPL_)I2C_EEPROM) += i2c_eeprom.o
obj-$(CONFIG_IHS_FPGA) += ihs_fpga.o
obj-$(CONFIG_IMX8) += imx8/

53
drivers/misc/irq-uclass.c Normal file
View File

@@ -0,0 +1,53 @@
// SPDX-License-Identifier: GPL-2.0+
/*
* Copyright (C) 2015, Bin Meng <bmeng.cn@gmail.com>
*/
#include <common.h>
#include <dm.h>
#include <irq.h>
int irq_route_pmc_gpio_gpe(struct udevice *dev, uint pmc_gpe_num)
{
const struct irq_ops *ops = irq_get_ops(dev);
if (!ops->route_pmc_gpio_gpe)
return -ENOSYS;
return ops->route_pmc_gpio_gpe(dev, pmc_gpe_num);
}
int irq_set_polarity(struct udevice *dev, uint irq, bool active_low)
{
const struct irq_ops *ops = irq_get_ops(dev);
if (!ops->set_polarity)
return -ENOSYS;
return ops->set_polarity(dev, irq, active_low);
}
int irq_snapshot_polarities(struct udevice *dev)
{
const struct irq_ops *ops = irq_get_ops(dev);
if (!ops->snapshot_polarities)
return -ENOSYS;
return ops->snapshot_polarities(dev);
}
int irq_restore_polarities(struct udevice *dev)
{
const struct irq_ops *ops = irq_get_ops(dev);
if (!ops->restore_polarities)
return -ENOSYS;
return ops->restore_polarities(dev);
}
UCLASS_DRIVER(irq) = {
.id = UCLASS_IRQ,
.name = "irq",
};