28 Oct, 2010

3 commits


02 Oct, 2009

1 commit

  • Fix some build failures when using gcc-4.x for MN10300.

    Firstly, __get_user() fails to build because the pointer points to a const and
    __gu_val ends up being read-only:

    In file included from include/linux/mempolicy.h:62,
    from init/main.c:50:
    include/linux/pagemap.h: In function 'fault_in_pages_readable':
    include/linux/pagemap.h:394: error: read-only variable '__gu_val' used as 'asm' output
    include/linux/pagemap.h:394: error: read-only variable '__gu_val' used as 'asm' output
    include/linux/pagemap.h:394: error: read-only variable '__gu_val' used as 'asm' output
    include/linux/pagemap.h:400: error: read-only variable '__gu_val' used as 'asm' output
    include/linux/pagemap.h:400: error: read-only variable '__gu_val' used as 'asm' output
    include/linux/pagemap.h:400: error: read-only variable '__gu_val' used as 'asm' output
    make[1]: *** [init/main.o] Error 1

    Secondly, gcc-4 doesn't allow casts of lvalues:

    UPD include/linux/compile.h
    arch/mn10300/kernel/rtc.c: In function 'calibrate_clock':
    arch/mn10300/kernel/rtc.c:170: error: lvalue required as left operand of assignment
    arch/mn10300/kernel/rtc.c:172: error: lvalue required as left operand of assignment
    make[1]: *** [arch/mn10300/kernel/rtc.o] Error 1

    These are seen with gcc 4.2.1.

    Signed-off-by: Mark Salter
    Signed-off-by: David Howells
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Mark Salter
     

10 Apr, 2009

1 commit


02 Oct, 2008

1 commit

  • Fix the IRQ handling on the MN10300 arch.

    This patch makes a number of significant changes:

    (1) It separates the irq_chip definition for edge-triggered interrupts from
    the one for level-triggered interrupts.

    This is necessary because the MN10300 PIC latches the IRQ channel's
    interrupt request bit (GxICR_REQUEST), even after the device has ceased to
    assert its interrupt line and the interrupt channel has been disabled in
    the PIC. So for level-triggered interrupts we need to clear this bit when
    we re-enable - which is achieved by setting GxICR_DETECT but not
    GxICR_REQUEST when writing to the register.

    Not doing this results in spurious interrupts occurring because calling
    mask_ack() at the start of handle_level_irq() is insufficient - it fails
    to clear the REQUEST latch because the device that caused the interrupt is
    still asserting its interrupt line at this point.

    (2) IRQ disablement [irq_chip::disable_irq()] shouldn't clear the interrupt
    request flag for edge-triggered interrupts lest it lose an interrupt.

    (3) IRQ unmasking [irq_chip::unmask_irq()] also shouldn't clear the interrupt
    request flag for edge-triggered interrupts lest it lose an interrupt.

    (4) The end() operation is now left to the default (no-operation) as
    __do_IRQ() is compiled out. This may affect misrouted_irq(), but
    according to Thomas Gleixner it's the correct thing to do.

    (5) handle_level_irq() is used for edge-triggered interrupts rather than
    handle_edge_irq() as the MN10300 PIC latches interrupt events even on
    masked IRQ channels, thus rendering IRQ_PENDING unnecessary. It is
    sufficient to call mask_ack() at the start and unmask() at the end.

    (6) For level-triggered interrupts, ack() is now NULL as it's not used, and
    there is no effective ACK function on the PIC. mask_ack() is now the
    same as mask() as the latch continues to latch, even when the channel is
    masked.

    Further, the patch discards the disable() op implementation as its now the same
    as the mask() op implementation, which is used instead.

    It also discards the enable() op implementations as they're now the same as
    the unmask() op implementations, which are used instead.

    Signed-off-by: David Howells
    Signed-off-by: Linus Torvalds

    David Howells
     

09 Feb, 2008

2 commits

  • Add platform MTD support for the ASB2303 board.

    Signed-off-by: David Howells
    Acked-by: David Woodhouse
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    David Howells
     
  • Add architecture support for the MN10300/AM33 CPUs produced by MEI to the
    kernel.

    This patch also adds board support for the ASB2303 with the ASB2308 daughter
    board, and the ASB2305. The only processor supported is the MN103E010, which
    is an AM33v2 core plus on-chip devices.

    [akpm@linux-foundation.org: nuke cvs control strings]
    Signed-off-by: Masakazu Urade
    Signed-off-by: Koichi Yasutake
    Signed-off-by: David Howells
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    David Howells