[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Minios-devel] [UNIKRAFT PATCHv4 3/3] plat/drivers/ofw: Move gic_get_irq_from_dtb to gic_fdt.c
As discussed at [1], we'd better move gic_get_irq_from_dtb to ofw related file gic_fdt.c [1] https://lists.xenproject.org/archives/html/minios-devel/2019-07/msg00192.html Signed-off-by: Jia He <justin.he@xxxxxxx> Suggested-by: Sharan Santhanam <sharan.santhanam@xxxxxxxxx> --- plat/drivers/ofw/fdt.c | 21 -------------- plat/drivers/ofw/gic_fdt.c | 56 ++++++++++++++++++++++++++++++++++++++ plat/kvm/Makefile.uk | 1 + 3 files changed, 57 insertions(+), 21 deletions(-) create mode 100644 plat/drivers/ofw/gic_fdt.c diff --git a/plat/drivers/ofw/fdt.c b/plat/drivers/ofw/fdt.c index afe3f91..76f8ff3 100644 --- a/plat/drivers/ofw/fdt.c +++ b/plat/drivers/ofw/fdt.c @@ -39,7 +39,6 @@ #include <ofw/fdt.h> #include <uk/print.h> #include <uk/assert.h> -#include <uk/print.h> #define FDT_MAX_ADDR_CELLS FDT_MAX_NCELLS #define FDT_CHECK_COUNTS(na, ns) ((na) > 0 && (na) <= FDT_MAX_ADDR_CELLS && \ @@ -289,23 +288,3 @@ int fdt_get_interrupt(const void *fdt, int nodeoffset, return 0; } - -int gic_get_irq_from_dtb(const void *fdt, int nodeoffset, int index, - uint32_t *irq_type, uint32_t *hwirq, - uint32_t *trigger_type) -{ - fdt32_t *prop; - int ret, size; - - UK_ASSERT(irq_type != NULL && hwirq != NULL && trigger_type != NULL); - - ret = fdt_get_interrupt(fdt, nodeoffset, index, &size, &prop); - if (ret < 0) - return ret; - - *irq_type = fdt32_to_cpu(prop[0]); - *hwirq = fdt32_to_cpu(prop[1]); - *trigger_type = fdt32_to_cpu(prop[2]); - - return 0; -} diff --git a/plat/drivers/ofw/gic_fdt.c b/plat/drivers/ofw/gic_fdt.c new file mode 100644 index 0000000..4f88fdd --- /dev/null +++ b/plat/drivers/ofw/gic_fdt.c @@ -0,0 +1,56 @@ +/* SPDX-License-Identifier: BSD-3-Clause */ +/* + * Authors: Jia He <justin.he@xxxxxxx> + * + * Copyright (c) 2019, Arm Ltd. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + * THIS HEADER MAY NOT BE EXTRACTED OR MODIFIED IN ANY WAY. + */ +#include <libfdt_env.h> +#include <ofw/fdt.h> +#include <uk/assert.h> + +int gic_get_irq_from_dtb(const void *fdt, int nodeoffset, int index, + uint32_t *irq_type, uint32_t *hwirq, + uint32_t *trigger_type) +{ + fdt32_t *prop; + int ret, size; + + UK_ASSERT(irq_type != NULL && hwirq != NULL && trigger_type != NULL); + + ret = fdt_get_interrupt(fdt, nodeoffset, index, &size, &prop); + if (ret < 0) + return ret; + + *irq_type = fdt32_to_cpu(prop[0]); + *hwirq = fdt32_to_cpu(prop[1]); + *trigger_type = fdt32_to_cpu(prop[2]); + + return 0; +} diff --git a/plat/kvm/Makefile.uk b/plat/kvm/Makefile.uk index 5208357..619e32a 100644 --- a/plat/kvm/Makefile.uk +++ b/plat/kvm/Makefile.uk @@ -127,6 +127,7 @@ LIBKVMOFW_CINCLUDES-y += -I$(UK_PLAT_COMMON_BASE)/include LIBKVMOFW_CINCLUDES-y += -I$(UK_PLAT_DRIVERS_BASE)/include LIBKVMOFW_SRCS-y += $(UK_PLAT_DRIVERS_BASE)/ofw/fdt.c +LIBKVMOFW_SRCS-$(CONFIG_LIBGICV2) += $(UK_PLAT_DRIVERS_BASE)/ofw/gic_fdt.c ## ## GICv2 library definitions -- 2.17.1 _______________________________________________ Minios-devel mailing list Minios-devel@xxxxxxxxxxxxxxxxxxxx https://lists.xenproject.org/mailman/listinfo/minios-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |