[PATCH] Updated Legacy code in arm edb7312

Joel Sherrill joel.sherrill at OARcorp.com
Wed Jul 10 17:27:13 UTC 2013


This should be merged.

I didn't see any warnings in the code modified. The file irq.c
had a warning.

On 7/10/2013 9:52 AM, Vipul Nayyar wrote:
> ---
>   c/src/lib/libbsp/arm/edb7312/clock/clockdrv.c  | 49 +++++++++++---------------
>   c/src/lib/libbsp/arm/edb7312/network/network.c | 27 +++++++++-----
>   2 files changed, 39 insertions(+), 37 deletions(-)
>
> diff --git a/c/src/lib/libbsp/arm/edb7312/clock/clockdrv.c b/c/src/lib/libbsp/arm/edb7312/clock/clockdrv.c
> index bd77dd6..af0448ff7 100644
> --- a/c/src/lib/libbsp/arm/edb7312/clock/clockdrv.c
> +++ b/c/src/lib/libbsp/arm/edb7312/clock/clockdrv.c
> @@ -12,24 +12,14 @@
>   #include <ep7312.h>
>   #include <bsp.h>
>   #include <bsp/irq.h>
> +#include <assert.h>
>   
>   #if ON_SKYEYE==1
>     #define CLOCK_DRIVER_USE_FAST_IDLE
>   #endif
>   
>   void Clock_isr(rtems_irq_hdl_param arg);
> -static void clock_isr_on(const rtems_irq_connect_data *unused);
> -static void clock_isr_off(const rtems_irq_connect_data *unused);
> -static int clock_isr_is_on(const rtems_irq_connect_data *irq);
> -
> -rtems_irq_connect_data clock_isr_data = {
> -  .name   = BSP_TC1OI,
> -  .hdl    = Clock_isr,
> -  .handle = NULL,
> -  .on     = clock_isr_on,
> -  .off    = clock_isr_off,
> -  .isOn   = clock_isr_is_on,
> -};
> +uint32_t clock_driver_get_nanoseconds_since_last_tick(void);
>   
>   #define Clock_driver_support_at_tick()                \
>     do {                                                \
> @@ -38,8 +28,16 @@ rtems_irq_connect_data clock_isr_data = {
>   
>   #define Clock_driver_support_install_isr( _new, _old ) \
>     do {                                                 \
> +    rtems_status_code status = RTEMS_SUCCESSFUL;       \
>       (_old) = NULL; /* avoid warning */;                \
> -    BSP_install_rtems_irq_handler(&clock_isr_data);    \
> +    status = rtems_interrupt_handler_install(          \
> +        BSP_TC1OI,                                     \
> +        "Clock",                                       \
> +        RTEMS_INTERRUPT_UNIQUE,                        \
> +        Clock_isr,                                     \
> +        NULL                                           \
> +    );                                                 \
> +    assert(status == RTEMS_SUCCESSFUL);                \
>     } while(0)
>   
>   /*
> @@ -60,9 +58,15 @@ rtems_irq_connect_data clock_isr_data = {
>       *EP7312_TC1EOI = 0xFFFFFFFF;                    \
>     } while (0)
>   
> -#define Clock_driver_support_shutdown_hardware()                        \
> -  do {                                                                  \
> -    BSP_remove_rtems_irq_handler(&clock_isr_data);                  \
> +#define Clock_driver_support_shutdown_hardware()    \
> +  do {                                              \
> +    rtems_status_code status = RTEMS_SUCCESSFUL;    \
> +    status = rtems_interrupt_handler_remove(        \
> +        BSP_TC1OI,                                  \
> +        Clock_isr,                                  \
> +        NULL                                        \
> +    );                                              \
> +    assert(status == RTEMS_SUCCESSFUL);             \
>     } while (0)
>   
>   /**
> @@ -76,17 +80,4 @@ uint32_t clock_driver_get_nanoseconds_since_last_tick(void)
>   #define Clock_driver_nanoseconds_since_last_tick \
>     clock_driver_get_nanoseconds_since_last_tick
>   
> -static void clock_isr_on(const rtems_irq_connect_data *unused)
> -{
> -}
> -
> -static void clock_isr_off(const rtems_irq_connect_data *unused)
> -{
> -}
> -
> -static int clock_isr_is_on(const rtems_irq_connect_data *irq)
> -{
> -  return 1;
> -}
> -
>   #include "../../../shared/clockdrv_shell.h"
> diff --git a/c/src/lib/libbsp/arm/edb7312/network/network.c b/c/src/lib/libbsp/arm/edb7312/network/network.c
> index 1db4d02..ce139ec 100644
> --- a/c/src/lib/libbsp/arm/edb7312/network/network.c
> +++ b/c/src/lib/libbsp/arm/edb7312/network/network.c
> @@ -2,18 +2,13 @@
>   #include <sys/mbuf.h>
>   #include <bsp/irq.h>
>   #include <libchip/cs8900.h>
> +#include <assert.h>
>   
>   #define CS8900_BASE 0x20000300
>   unsigned int bsp_cs8900_io_base = 0;
>   unsigned int bsp_cs8900_memory_base = 0;
>   cs8900_device *g_cs;
>   void cs8900_isr(rtems_irq_hdl_param unused);
> -rtems_irq_connect_data cs8900_isr_data = {BSP_EINT3,
> -					  cs8900_isr,
> -					  NULL,
> -					  NULL,
> -					  NULL,
> -					  NULL};
>   
>   char g_enetbuf[1520];
>   
> @@ -68,13 +63,29 @@ unsigned short cs8900_mem_get_reg (cs8900_device *cs, unsigned long reg)
>   
>   void cs8900_attach_interrupt (cs8900_device *cs)
>   {
> +    rtems_status_code status = RTEMS_SUCCESSFUL;
>       g_cs = cs;
> -    BSP_install_rtems_irq_handler(&cs8900_isr_data);
> +
> +    status = rtems_interrupt_handler_install(
> +        BSP_EINT3,
> +        "Network",
> +        RTEMS_INTERRUPT_UNIQUE,
> +        cs8900_isr,
> +        NULL
> +    );
> +    assert(status == RTEMS_SUCCESSFUL);
>   }
>   
>   void cs8900_detach_interrupt (cs8900_device *cs)
>   {
> -    BSP_remove_rtems_irq_handler(&cs8900_isr_data);
> +    rtems_status_code status = RTEMS_SUCCESSFUL;
> +
> +    status = rtems_interrupt_handler_remove(
> +        BSP_EINT3,
> +        cs8900_isr,
> +        NULL
> +    );
> +    assert(status == RTEMS_SUCCESSFUL);
>   }
>   
>   unsigned short cs8900_get_data_block (cs8900_device *cs, unsigned char *data)


-- 
Joel Sherrill, Ph.D.             Director of Research & Development
joel.sherrill at OARcorp.com        On-Line Applications Research
Ask me about RTEMS: a free RTOS  Huntsville AL 35805
Support Available                (256) 722-9985




More information about the devel mailing list