From: Michal Simek <monstr@monstr.eu>
To: u-boot@lists.denx.de
Subject: [U-Boot] [PATCH 03/12] microblaze: intc: Clear interrupt code
Date: Tue, 10 Jul 2012 10:34:55 +0200 [thread overview]
Message-ID: <4FFBE92F.8080403@monstr.eu> (raw)
In-Reply-To: <CAPnjgZ35OFpiVzaieZh8xRvTXWCB_7JSbFZOmR5T==u7XVzB0Q@mail.gmail.com>
On 07/09/2012 11:21 PM, Simon Glass wrote:
> Hi Michal,
>
> On Mon, Jul 9, 2012 at 2:20 AM, Michal Simek <monstr at monstr.eu <mailto:monstr@monstr.eu>> wrote:
>
> Clear and prepare for device-tree driven configuration.
> Remove CONFIG_SYS_INTC_0 definition
> Use dynamic allocation instead of static.
>
> Signed-off-by: Michal Simek <monstr at monstr.eu <mailto:monstr@monstr.eu>>
>
>
> I'm not really qualified to review this, but it seems reasonable.
>
> Acked-by: Simon Glass <sjg at chromium.org <mailto:sjg@chromium.org>>
thanks.
>
> ---
> arch/microblaze/cpu/interrupts.c | 88 ++++++++++++++-----------
> arch/microblaze/cpu/start.S | 2 -
> arch/microblaze/cpu/timer.c | 2 -
> arch/microblaze/include/asm/microblaze_intc.h | 3 +
> arch/microblaze/lib/board.c | 6 +--
> include/configs/microblaze-generic.h | 1 -
> 6 files changed, 54 insertions(+), 48 deletions(-)
>
> diff --git a/arch/microblaze/cpu/interrupts.c b/arch/microblaze/cpu/interrupts.c
> index e7ca859..ee67082 100644
> --- a/arch/microblaze/cpu/interrupts.c
> +++ b/arch/microblaze/cpu/interrupts.c
> @@ -26,6 +26,7 @@
>
> #include <common.h>
> #include <command.h>
> +#include <malloc.h>
> #include <asm/microblaze_intc.h>
> #include <asm/asm.h>
>
> @@ -48,20 +49,19 @@ int disable_interrupts (void)
> return (msr & 0x2) != 0;
> }
>
> -#ifdef CONFIG_SYS_INTC_0
> -
> -static struct irq_action vecs[CONFIG_SYS_INTC_0_NUM];
> +static struct irq_action *vecs;
> +static u32 irq_no;
>
> /* mapping structure to interrupt controller */
> -microblaze_intc_t *intc = (microblaze_intc_t *) (CONFIG_SYS_INTC_0_ADDR);
> +microblaze_intc_t *intc;
>
> /* default handler */
> -void def_hdlr (void)
> +static void def_hdlr(void)
> {
> puts ("def_hdlr\n");
> }
>
> -void enable_one_interrupt (int irq)
> +static void enable_one_interrupt(int irq)
> {
> int mask;
> int offset = 1;
> @@ -76,7 +76,7 @@ void enable_one_interrupt (int irq)
> #endif
> }
>
> -void disable_one_interrupt (int irq)
> +static void disable_one_interrupt(int irq)
> {
> int mask;
> int offset = 1;
> @@ -96,7 +96,7 @@ void install_interrupt_handler (int irq, interrupt_handler_t * hdlr, void *arg)
> {
> struct irq_action *act;
> /* irq out of range */
> - if ((irq < 0) || (irq > CONFIG_SYS_INTC_0_NUM)) {
> + if ((irq < 0) || (irq > irq_no)) {
> puts ("IRQ out of range\n");
> return;
> }
> @@ -114,7 +114,7 @@ void install_interrupt_handler (int irq, interrupt_handler_t * hdlr, void *arg)
> }
>
> /* initialization interrupt controller - hardware */
> -void intc_init (void)
> +static void intc_init(void)
> {
> intc->mer = 0;
> intc->ier = 0;
> @@ -127,18 +127,33 @@ void intc_init (void)
> #endif
> }
>
> -int interrupts_init (void)
> +int interrupts_init(void)
> {
> int i;
> - /* initialize irq list */
> - for (i = 0; i < CONFIG_SYS_INTC_0_NUM; i++) {
> - vecs[i].handler = (interrupt_handler_t *) def_hdlr;
> - vecs[i].arg = (void *)i;
> - vecs[i].count = 0;
> +
> +#if defined(CONFIG_SYS_INTC_0_ADDR) && defined(CONFIG_SYS_INTC_0_NUM)
> + intc = (microblaze_intc_t *) (CONFIG_SYS_INTC_0_ADDR);
> + irq_no = CONFIG_SYS_INTC_0_NUM;
> +#endif
> + if (irq_no) {
> + vecs = calloc(1, sizeof(struct irq_action) * irq_no);
>
>
> This is fine, since I assume it is called after memalloc_init(), but you could set an arbitrary maximum limit if you prefer.
>
Yes, it is called after mem_malloc_init.
The maximum limit is 32 but it won't be reached.
This checking is done by u-boot BSP.
Applied.
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
next prev parent reply other threads:[~2012-07-10 8:34 UTC|newest]
Thread overview: 43+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-07-09 9:20 [U-Boot] [PATCH 01/12] microblaze: board: Remove compilation warning Michal Simek
2012-07-09 9:20 ` [U-Boot] [PATCH 02/12] microblaze: Remove extern from board.c Michal Simek
2012-07-09 21:10 ` Simon Glass
2012-07-10 8:24 ` Michal Simek
2012-07-09 9:20 ` [U-Boot] [PATCH 03/12] microblaze: intc: Clear interrupt code Michal Simek
2012-07-09 21:21 ` Simon Glass
2012-07-10 8:34 ` Michal Simek [this message]
2012-07-09 9:20 ` [U-Boot] [PATCH 04/12] microblaze: intc: Registering interrupt should return value Michal Simek
2012-07-09 21:22 ` Simon Glass
2012-07-10 8:52 ` Michal Simek
2012-07-09 9:20 ` [U-Boot] [PATCH 05/12] microblaze: intc: Coding style cleanup Michal Simek
2012-07-09 21:23 ` Simon Glass
2012-07-10 8:55 ` Michal Simek
2012-07-09 9:20 ` [U-Boot] [PATCH 06/12] microblaze: intc: Add device-tree driver configuration Michal Simek
2012-07-09 21:26 ` Simon Glass
2012-07-10 9:07 ` Michal Simek
2012-07-10 21:02 ` Simon Glass
2012-07-11 5:32 ` Michal Simek
2012-07-09 9:20 ` [U-Boot] [PATCH 07/12] microblaze: Move __udelay implementation Michal Simek
2012-07-09 21:28 ` Simon Glass
2012-07-10 8:25 ` Michal Simek
2012-07-09 9:20 ` [U-Boot] [PATCH 08/12] microblaze: timer: Prepare for device-tree initialization Michal Simek
2012-07-09 18:26 ` Stephan Linz
2012-07-10 8:11 ` Michal Simek
2012-07-09 19:06 ` Stephan Linz
2012-07-10 8:16 ` Michal Simek
2012-07-10 18:36 ` Stephan Linz
2012-07-11 6:07 ` Michal Simek
2012-07-09 9:20 ` [U-Boot] [PATCH 09/12] microblaze: timer: Add device-tree driver configuration Michal Simek
2012-07-09 18:25 ` Stephan Linz
2012-07-09 21:32 ` Simon Glass
2012-07-10 9:23 ` Michal Simek
2012-07-10 9:34 ` Michal Simek
2012-07-10 21:04 ` Simon Glass
2012-07-11 6:18 ` Michal Simek
2012-07-11 9:53 ` Simon Glass
2012-07-09 9:20 ` [U-Boot] [PATCH 10/12] microblaze: Call serial multi initialization Michal Simek
2012-07-09 21:32 ` Simon Glass
2012-07-10 8:27 ` Michal Simek
2012-07-09 9:20 ` [U-Boot] [PATCH 11/12] microblaze: Clean microblaze initialization Michal Simek
2012-07-09 9:20 ` [U-Boot] [PATCH 12/12] microblaze: board: Use bi_flashstart instead of CONFIG_SYS_FLASH_BASE Michal Simek
2012-07-09 21:08 ` [U-Boot] [PATCH 01/12] microblaze: board: Remove compilation warning Simon Glass
2012-07-10 8:17 ` Michal Simek
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=4FFBE92F.8080403@monstr.eu \
--to=monstr@monstr.eu \
--cc=u-boot@lists.denx.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox