public inbox for u-boot@lists.denx.de
 help / color / mirror / Atom feed
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

  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