• Paul Gortmaker's avatar
    powerpc: Fix build failure in sysdev/mpic.c for MPIC_WEIRD=y · 0215b4aa
    Paul Gortmaker authored
    Commit 446f6d06 ("powerpc/mpic: Properly
    set default triggers") breaks the mpc7447_hpc_defconfig as follows:
    
      CC      arch/powerpc/sysdev/mpic.o
    arch/powerpc/sysdev/mpic.c: In function 'mpic_set_irq_type':
    arch/powerpc/sysdev/mpic.c:886:9: error: case label does not reduce to an integer constant
    arch/powerpc/sysdev/mpic.c:890:9: error: case label does not reduce to an integer constant
    arch/powerpc/sysdev/mpic.c:894:9: error: case label does not reduce to an integer constant
    arch/powerpc/sysdev/mpic.c:898:9: error: case label does not reduce to an integer constant
    
    Looking at the cpp output (gcc 4.7.3), I see:
    
       case mpic->hw_set[MPIC_IDX_VECPRI_SENSE_EDGE] |
            mpic->hw_set[MPIC_IDX_VECPRI_POLARITY_POSITIVE]:
    
    The pointer into an array appears because CONFIG_MPIC_WEIRD=y is set
    for this platform, thus enabling the following:
    
      -------------------
      #ifdef CONFIG_MPIC_WEIRD
      static u32 mpic_infos[][MPIC_IDX_END] = {
            [0] = { /* Original OpenPIC compatible MPIC */
    
      [...]
    
      #define MPIC_INFO(name) mpic->hw_set[MPIC_IDX_##name]
    
      #else /* CONFIG_MPIC_WEIRD */
    
      #define MPIC_INFO(name) MPIC_##name
    
      #endif /* CONFIG_MPIC_WEIRD */
      -------------------
    
    Here we convert the case section to if/else if, and also add
    the equivalent of a default case to warn about unknown types.
    Boot tested on sbc8548, build tested on all defconfigs.
    Signed-off-by: default avatarPaul Gortmaker <paul.gortmaker@windriver.com>
    Signed-off-by: default avatarBenjamin Herrenschmidt <benh@kernel.crashing.org>
    0215b4aa
mpic.c 52 KB