[PATCH] bsp/raspberry: Add a bsp_fdt_map_intr().
Gedare Bloom
gedare at rtems.org
Sat Apr 4 15:42:50 UTC 2020
On Sat, Apr 4, 2020 at 9:14 AM Christian Mauderer <oss at c-mauderer.de> wrote:
>
> On 04/04/2020 17:04, Gedare Bloom wrote:
> > On Sat, Apr 4, 2020 at 4:57 AM Christian Mauderer <oss at c-mauderer.de> wrote:
> >>
> >> From: Christian Mauderer <christian.mauderer at embedded-brains.de>
> >>
> >> Fixes #3903
> >> ---
> >> bsps/arm/raspberrypi/include/bsp/irq.h | 2 ++
> >> bsps/arm/raspberrypi/start/bspstart.c | 23 +++++++++++++++++++++++
> >> 2 files changed, 25 insertions(+)
> >>
> >> diff --git a/bsps/arm/raspberrypi/include/bsp/irq.h b/bsps/arm/raspberrypi/include/bsp/irq.h
> >> index 6a9d05cba6..6758094519 100644
> >> --- a/bsps/arm/raspberrypi/include/bsp/irq.h
> >> +++ b/bsps/arm/raspberrypi/include/bsp/irq.h
> >> @@ -35,6 +35,8 @@
> >>
> >> #define BCM2835_INTC_TOTAL_IRQ 64 + 8
> >>
> >> +#define BCM2835_IRQ_SET1_MIN 0
> >> +#define BCM2835_IRQ_SET2_MIN 32
> >>
> >> #define BCM2835_IRQ_ID_GPU_TIMER_M0 0
> >> #define BCM2835_IRQ_ID_GPU_TIMER_M1 1
> >> diff --git a/bsps/arm/raspberrypi/start/bspstart.c b/bsps/arm/raspberrypi/start/bspstart.c
> >> index 49896e4d47..89fe8707f1 100644
> >> --- a/bsps/arm/raspberrypi/start/bspstart.c
> >> +++ b/bsps/arm/raspberrypi/start/bspstart.c
> >> @@ -101,6 +101,29 @@ void *raspberrypi_get_reg_of_node(const void *fdt, int node)
> >> return (BUS_TO_PHY((void *) fdt32_to_cpu(val[0])));
> >> }
> >>
> >> +#ifdef BSP_FDT_IS_SUPPORTED
> >> +uint32_t bsp_fdt_map_intr(const uint32_t *intr, size_t icells)
> >> +{
> >> + uint32_t controller = intr[0];
> >> + uint32_t source = intr[1];
> >> +
> >> + switch(controller) {
> > should have spaces here:
> > switch ( controller ) {
>
> I'll fix that before pushing.
>
> >
> >> + case 0:
> >> + return source + BCM2835_IRQ_ID_BASIC_BASE_ID;
> >> + break;
> >> + case 1:
> >> + return source + BCM2835_IRQ_SET1_MIN;
> >> + break;
> >> + case 2:
> >> + return source + BCM2835_IRQ_SET2_MIN;
> >> + break;
> >> + default:
> >> + return (uint32_t)(-1);
> > Not my favorite thing to see. Is 0 an ok error condition?
> >
> > It can be pushed either way
>
> 0 is a valid interrupt. I wanted one that isn't valid as an error value
> so that some function throws an error (for example there are some checks
> during bsp_interrupt_vector_enable / _disable for this BSP).
>
> If you prefer, I could use one of the following:
>
> * (BSP_INTERRUPT_VECTOR_MAX + 1)
> * BSP_IRQ_COUNT
> * UINT32_MAX
> * BSP_INTERRUPT_VECTOR_INVALID and set that define to for example UINT32_MAX
>
It would be nice to have something that could be used consistently,
since this is a shared low-level interface. I like
BSP_INTERRUPT_VECTOR_INVALID idea.
> Best regards
>
> Christian
>
> >
> >> + break;
> >> + }
> >> +}
> >> +#endif /* BSP_FDT_IS_SUPPORTED */
> >> +
> >> void bsp_start(void)
> >> {
> >> bcm2835_get_board_spec_entries spec = { 0 };
> >> --
> >> 2.25.1
> >>
> >> _______________________________________________
> >> devel mailing list
> >> devel at rtems.org
> >> http://lists.rtems.org/mailman/listinfo/devel
> >
More information about the devel
mailing list