Re: [U-Boot] [PATCH v2 3/7] microblaze: intc: Registering interrupt should return value
On 08/07/2012 10:10 PM, Stephan Linz wrote: Am Montag, den 06.08.2012, 09:46 +0200 schrieb Michal Simek: Return value to find out if un/registration was succesful. Signed-off-by: Michal Simek mon...@monstr.eu --- v2: Add comment to header file to describe parameters and return codes --- arch/microblaze/cpu/interrupts.c | 16 +--- arch/microblaze/include/asm/microblaze_intc.h | 11 ++- 2 files changed, 19 insertions(+), 8 deletions(-) diff --git a/arch/microblaze/cpu/interrupts.c b/arch/microblaze/cpu/interrupts.c index ee67082..08f6bad 100644 --- a/arch/microblaze/cpu/interrupts.c +++ b/arch/microblaze/cpu/interrupts.c @@ -91,14 +91,13 @@ static void disable_one_interrupt(int irq) #endif } -/* adding new handler for interrupt */ -void install_interrupt_handler (int irq, interrupt_handler_t * hdlr, void *arg) +int install_interrupt_handler(int irq, interrupt_handler_t *hdlr, void *arg) { struct irq_action *act; /* irq out of range */ if ((irq 0) || (irq irq_no)) { puts (IRQ out of range\n); - return; + return -1; } act = vecs[irq]; if (hdlr) { /* enable */ @@ -106,11 +105,14 @@ void install_interrupt_handler (int irq, interrupt_handler_t * hdlr, void *arg) act-arg = arg; act-count = 0; enable_one_interrupt (irq); - } else {/* disable */ - act-handler = (interrupt_handler_t *) def_hdlr; - act-arg = (void *)irq; - disable_one_interrupt (irq); + return 0; } + + /* Disable */ + act-handler = (interrupt_handler_t *) def_hdlr; + act-arg = (void *)irq; + disable_one_interrupt(irq); + return 1; } /* initialization interrupt controller - hardware */ diff --git a/arch/microblaze/include/asm/microblaze_intc.h b/arch/microblaze/include/asm/microblaze_intc.h index 6142b9c..e9640f5 100644 --- a/arch/microblaze/include/asm/microblaze_intc.h +++ b/arch/microblaze/include/asm/microblaze_intc.h @@ -39,7 +39,16 @@ struct irq_action { int count; /* number of interrupt */ }; -void install_interrupt_handler (int irq, interrupt_handler_t * hdlr, +/** + * Register and unregister interrupt handler rutines + * + * @param irq IRQ number + * @param hdlr Interrupt handler rutine + * @param arg Pointer to argument which is passed to int. handler rutine + * @return 0 if registration pass, 1 if unregistration pass, + * or an error code 0 otherwise + */ +int install_interrupt_handler(int irq, interrupt_handler_t *hdlr, void *arg); Hi Michal, why not two different functions here, one for registration, another one for unregistration? To mee it is puzzling to use a 'install' function for unregistration ... partially agree with that. Maybe we could introduce one macro for that. #define uninstall_interrupt_handler(irq) install_interrupt_handler(irq, NULL, NULL) ... whatever, you should evaluate the return code in fsl_init2() too. Not necessary to do it in this patch. Thanks, Michal -- Michal Simek, Ing. (M.Eng) w: www.monstr.eu p: +42-0-721842854 Maintainer of Linux kernel 2.6 Microblaze Linux - http://www.monstr.eu/fdt/ Microblaze U-BOOT custodian ___ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot
Re: [U-Boot] [PATCH v2 3/7] microblaze: intc: Registering interrupt should return value
Am Mittwoch, den 08.08.2012, 10:27 +0200 schrieb Michal Simek: On 08/07/2012 10:10 PM, Stephan Linz wrote: Am Montag, den 06.08.2012, 09:46 +0200 schrieb Michal Simek: Return value to find out if un/registration was succesful. Signed-off-by: Michal Simek mon...@monstr.eu --- v2: Add comment to header file to describe parameters and return codes --- arch/microblaze/cpu/interrupts.c | 16 +--- arch/microblaze/include/asm/microblaze_intc.h | 11 ++- 2 files changed, 19 insertions(+), 8 deletions(-) diff --git a/arch/microblaze/cpu/interrupts.c b/arch/microblaze/cpu/interrupts.c index ee67082..08f6bad 100644 --- a/arch/microblaze/cpu/interrupts.c +++ b/arch/microblaze/cpu/interrupts.c @@ -91,14 +91,13 @@ static void disable_one_interrupt(int irq) #endif } -/* adding new handler for interrupt */ -void install_interrupt_handler (int irq, interrupt_handler_t * hdlr, void *arg) +int install_interrupt_handler(int irq, interrupt_handler_t *hdlr, void *arg) { struct irq_action *act; /* irq out of range */ if ((irq 0) || (irq irq_no)) { puts (IRQ out of range\n); - return; + return -1; } act = vecs[irq]; if (hdlr) { /* enable */ @@ -106,11 +105,14 @@ void install_interrupt_handler (int irq, interrupt_handler_t * hdlr, void *arg) act-arg = arg; act-count = 0; enable_one_interrupt (irq); - } else {/* disable */ - act-handler = (interrupt_handler_t *) def_hdlr; - act-arg = (void *)irq; - disable_one_interrupt (irq); + return 0; } + + /* Disable */ + act-handler = (interrupt_handler_t *) def_hdlr; + act-arg = (void *)irq; + disable_one_interrupt(irq); + return 1; } /* initialization interrupt controller - hardware */ diff --git a/arch/microblaze/include/asm/microblaze_intc.h b/arch/microblaze/include/asm/microblaze_intc.h index 6142b9c..e9640f5 100644 --- a/arch/microblaze/include/asm/microblaze_intc.h +++ b/arch/microblaze/include/asm/microblaze_intc.h @@ -39,7 +39,16 @@ struct irq_action { int count; /* number of interrupt */ }; -void install_interrupt_handler (int irq, interrupt_handler_t * hdlr, +/** + * Register and unregister interrupt handler rutines + * + * @param irq IRQ number + * @param hdlrInterrupt handler rutine + * @param arg Pointer to argument which is passed to int. handler rutine + * @return0 if registration pass, 1 if unregistration pass, + *or an error code 0 otherwise + */ +int install_interrupt_handler(int irq, interrupt_handler_t *hdlr, void *arg); Hi Michal, why not two different functions here, one for registration, another one for unregistration? To mee it is puzzling to use a 'install' function for unregistration ... partially agree with that. Maybe we could introduce one macro for that. #define uninstall_interrupt_handler(irq) install_interrupt_handler(irq, NULL, NULL) yes, that is ok ... ... whatever, you should evaluate the return code in fsl_init2() too. Not necessary to do it in this patch. yes, it's another part ... br, Stephan ___ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot
Re: [U-Boot] [PATCH v2 3/7] microblaze: intc: Registering interrupt should return value
Am Montag, den 06.08.2012, 09:46 +0200 schrieb Michal Simek: Return value to find out if un/registration was succesful. Signed-off-by: Michal Simek mon...@monstr.eu --- v2: Add comment to header file to describe parameters and return codes --- arch/microblaze/cpu/interrupts.c | 16 +--- arch/microblaze/include/asm/microblaze_intc.h | 11 ++- 2 files changed, 19 insertions(+), 8 deletions(-) diff --git a/arch/microblaze/cpu/interrupts.c b/arch/microblaze/cpu/interrupts.c index ee67082..08f6bad 100644 --- a/arch/microblaze/cpu/interrupts.c +++ b/arch/microblaze/cpu/interrupts.c @@ -91,14 +91,13 @@ static void disable_one_interrupt(int irq) #endif } -/* adding new handler for interrupt */ -void install_interrupt_handler (int irq, interrupt_handler_t * hdlr, void *arg) +int install_interrupt_handler(int irq, interrupt_handler_t *hdlr, void *arg) { struct irq_action *act; /* irq out of range */ if ((irq 0) || (irq irq_no)) { puts (IRQ out of range\n); - return; + return -1; } act = vecs[irq]; if (hdlr) { /* enable */ @@ -106,11 +105,14 @@ void install_interrupt_handler (int irq, interrupt_handler_t * hdlr, void *arg) act-arg = arg; act-count = 0; enable_one_interrupt (irq); - } else {/* disable */ - act-handler = (interrupt_handler_t *) def_hdlr; - act-arg = (void *)irq; - disable_one_interrupt (irq); + return 0; } + + /* Disable */ + act-handler = (interrupt_handler_t *) def_hdlr; + act-arg = (void *)irq; + disable_one_interrupt(irq); + return 1; } /* initialization interrupt controller - hardware */ diff --git a/arch/microblaze/include/asm/microblaze_intc.h b/arch/microblaze/include/asm/microblaze_intc.h index 6142b9c..e9640f5 100644 --- a/arch/microblaze/include/asm/microblaze_intc.h +++ b/arch/microblaze/include/asm/microblaze_intc.h @@ -39,7 +39,16 @@ struct irq_action { int count; /* number of interrupt */ }; -void install_interrupt_handler (int irq, interrupt_handler_t * hdlr, +/** + * Register and unregister interrupt handler rutines + * + * @param irqIRQ number + * @param hdlr Interrupt handler rutine + * @param argPointer to argument which is passed to int. handler rutine + * @return 0 if registration pass, 1 if unregistration pass, + * or an error code 0 otherwise + */ +int install_interrupt_handler(int irq, interrupt_handler_t *hdlr, void *arg); Hi Michal, why not two different functions here, one for registration, another one for unregistration? To mee it is puzzling to use a 'install' function for unregistration ... ... whatever, you should evaluate the return code in fsl_init2() too. int interrupts_init(void); ___ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot
[U-Boot] [PATCH v2 3/7] microblaze: intc: Registering interrupt should return value
Return value to find out if un/registration was succesful. Signed-off-by: Michal Simek mon...@monstr.eu --- v2: Add comment to header file to describe parameters and return codes --- arch/microblaze/cpu/interrupts.c | 16 +--- arch/microblaze/include/asm/microblaze_intc.h | 11 ++- 2 files changed, 19 insertions(+), 8 deletions(-) diff --git a/arch/microblaze/cpu/interrupts.c b/arch/microblaze/cpu/interrupts.c index ee67082..08f6bad 100644 --- a/arch/microblaze/cpu/interrupts.c +++ b/arch/microblaze/cpu/interrupts.c @@ -91,14 +91,13 @@ static void disable_one_interrupt(int irq) #endif } -/* adding new handler for interrupt */ -void install_interrupt_handler (int irq, interrupt_handler_t * hdlr, void *arg) +int install_interrupt_handler(int irq, interrupt_handler_t *hdlr, void *arg) { struct irq_action *act; /* irq out of range */ if ((irq 0) || (irq irq_no)) { puts (IRQ out of range\n); - return; + return -1; } act = vecs[irq]; if (hdlr) { /* enable */ @@ -106,11 +105,14 @@ void install_interrupt_handler (int irq, interrupt_handler_t * hdlr, void *arg) act-arg = arg; act-count = 0; enable_one_interrupt (irq); - } else {/* disable */ - act-handler = (interrupt_handler_t *) def_hdlr; - act-arg = (void *)irq; - disable_one_interrupt (irq); + return 0; } + + /* Disable */ + act-handler = (interrupt_handler_t *) def_hdlr; + act-arg = (void *)irq; + disable_one_interrupt(irq); + return 1; } /* initialization interrupt controller - hardware */ diff --git a/arch/microblaze/include/asm/microblaze_intc.h b/arch/microblaze/include/asm/microblaze_intc.h index 6142b9c..e9640f5 100644 --- a/arch/microblaze/include/asm/microblaze_intc.h +++ b/arch/microblaze/include/asm/microblaze_intc.h @@ -39,7 +39,16 @@ struct irq_action { int count; /* number of interrupt */ }; -void install_interrupt_handler (int irq, interrupt_handler_t * hdlr, +/** + * Register and unregister interrupt handler rutines + * + * @param irq IRQ number + * @param hdlr Interrupt handler rutine + * @param arg Pointer to argument which is passed to int. handler rutine + * @return 0 if registration pass, 1 if unregistration pass, + * or an error code 0 otherwise + */ +int install_interrupt_handler(int irq, interrupt_handler_t *hdlr, void *arg); int interrupts_init(void); -- 1.7.0.4 ___ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot