[PATCH] bsp/raspberry: Add a bsp_fdt_map_intr().

Christian Mauderer oss at c-mauderer.de
Sat Apr 4 15:14:24 UTC 2020


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

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