1. 16 Feb, 2012 13 commits
    • Mark Salter's avatar
      irq_domain/c6x: Convert c6x to use generic irq_domain support. · 0bd761e1
      Mark Salter authored
      The C6X IRQ support was copied almost verbatim from the PowerPC virtual IRQ
      code. The PowerPC code was used as the basis for generic irq_domain support,
      so this patch mostly copies what what done to arch/powerpc by Grant Likely
      in his irq_domain patch series.
      Signed-off-by: default avatarMark Salter <msalter@redhat.com>
      Signed-off-by: default avatarGrant Likely <grant.likely@secretlab.ca>
      Cc: Aurelien Jacquiot <a-jacquiot@ti.com>
      Cc: Thomas Gleixner <tglx@linutronix.de>
      0bd761e1
    • Grant Likely's avatar
      irq_domain: constify irq_domain_ops · a18dc81b
      Grant Likely authored
      Make irq_domain_ops pointer a constant to make it safer for multiple
      instances to share the same ops pointer and change the irq_domain code
      so that it does not modify the ops.
      
      v4: Fix mismatched type reference in powerpc code
      Signed-off-by: default avatarGrant Likely <grant.likely@secretlab.ca>
      Cc: Thomas Gleixner <tglx@linutronix.de>
      Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
      Cc: Milton Miller <miltonm@bga.com>
      Tested-by: default avatarOlof Johansson <olof@lixom.net>
      a18dc81b
    • Grant Likely's avatar
      irq_domain: Create common xlate functions that device drivers can use · 16b2e6e2
      Grant Likely authored
      Rather than having each interrupt controller driver creating its own barely
      unique .xlate function for irq_domain, create a library of translators which
      any driver can use directly.
      
      v5: - Remove irq_domain_xlate_pci().  It was incorrect.
      Signed-off-by: default avatarGrant Likely <grant.likely@secretlab.ca>
      Cc: Rob Herring <rob.herring@calxeda.com>
      Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
      Cc: Mark Salter <msalter@redhat.com>
      Cc: Thomas Gleixner <tglx@linutronix.de>
      Cc: Milton Miller <miltonm@bga.com>
      Tested-by: default avatarOlof Johansson <olof@lixom.net>
      16b2e6e2
    • Grant Likely's avatar
      irq_domain: Remove irq_domain_add_simple() · 6b783f7c
      Grant Likely authored
      irq_domain_add_simple() was a stop-gap measure until complete irq_domain
      support was complete.  This patch removes the irq_domain_add_simple()
      interface.
      
      This patch also drops the explicit irq_domain initialization performed
      by the mach-versatile code because the versatile interrupt controller
      already has irq_domain support built into it.  This was a bug that was
      hanging around quietly for a while, but with the full irq_domain which
      actually verifies that irq_domain ranges are available it would cause
      the registration to fail and the system wouldn't boot.
      
      v4: Fixed number of irqs in mx5 gpio code
      v2: Updated to pass in host_data pointer on irq_domain allocation.
      Signed-off-by: default avatarGrant Likely <grant.likely@secretlab.ca>
      Cc: Rob Herring <rob.herring@calxeda.com>
      Cc: Thomas Gleixner <tglx@linutronix.de>
      Cc: Milton Miller <miltonm@bga.com>
      Cc: Russell King <linux@arm.linux.org.uk>
      Tested-by: default avatarOlof Johansson <olof@lixom.net>
      6b783f7c
    • Grant Likely's avatar
      irq_domain: Remove 'new' irq_domain in favour of the ppc one · 75294957
      Grant Likely authored
      This patch removes the simplistic implementation of irq_domains and enables
      the powerpc infrastructure for all irq_domain users.  The powerpc
      infrastructure includes support for complex mappings between Linux and
      hardware irq numbers, and can manage allocation of irq_descs.
      
      This patch also converts the few users of irq_domain_add()/irq_domain_del()
      to call irq_domain_add_legacy() instead.
      
      v3: Fix bug that set up too many irqs in translation range.
      v2: Fix removal of irq_alloc_descs() call in gic driver
      Signed-off-by: default avatarGrant Likely <grant.likely@secretlab.ca>
      Cc: Rob Herring <rob.herring@calxeda.com>
      Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
      Cc: Thomas Gleixner <tglx@linutronix.de>
      Cc: Milton Miller <miltonm@bga.com>
      Tested-by: default avatarOlof Johansson <olof@lixom.net>
      75294957
    • Benoit Cousson's avatar
      mfd: twl-core.c: Fix the number of interrupts managed by twl4030 · 5769089a
      Benoit Cousson authored
      TWL4030 does handle 3 different interrupts ranges: 8 for the core, 8 for
      the power events and 18 for the GPIOs.
      
      Change the total number of interrupts managed by TWL4030 from 8 to 34.
      Signed-off-by: default avatarBenoit Cousson <b-cousson@ti.com>
      Signed-off-by: default avatarGrant Likely <grant.likely@secretlab.ca>
      5769089a
    • Grant Likely's avatar
      of/address: add empty static inlines for !CONFIG_OF · a850a755
      Grant Likely authored
      As the title says, this patch adds empty implementations for the address
      translation functions so that they can be used when CONFIG_OF is disabled.
      Signed-off-by: default avatarGrant Likely <grant.likely@secretlab.ca>
      Cc: Rob Herring <rob.herring@calxeda.com>
      a850a755
    • Grant Likely's avatar
      irq_domain: Add support for base irq and hwirq in legacy mappings · 1bc04f2c
      Grant Likely authored
      Add support for a legacy mapping where irq = (hwirq - first_hwirq + first_irq)
      so that a controller driver can allocate a fixed range of irq_descs and use
      a simple calculation to translate back and forth between linux and hw irq
      numbers.  This is needed to use an irq_domain with many of the ARM interrupt
      controller drivers that manage their own irq_desc allocations.  Ultimately
      the goal is to migrate those drivers to use the linear revmap, but doing it
      this way allows each driver to be converted separately which makes the
      migration path easier.
      
      This patch generalizes the IRQ_DOMAIN_MAP_LEGACY method to use
      (first_irq-first_hwirq) as the offset between hwirq and linux irq number,
      and adds checks to make sure that the hwirq number does not exceed range
      assigned to the controller.
      Signed-off-by: default avatarGrant Likely <grant.likely@secretlab.ca>
      Cc: Rob Herring <rob.herring@calxeda.com>
      Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
      Cc: Thomas Gleixner <tglx@linutronix.de>
      Cc: Milton Miller <miltonm@bga.com>
      Tested-by: default avatarOlof Johansson <olof@lixom.net>
      1bc04f2c
    • Grant Likely's avatar
      irq_domain: Replace irq_alloc_host() with revmap-specific initializers · a8db8cf0
      Grant Likely authored
      Each revmap type has different arguments for setting up the revmap.
      This patch splits up the generator functions so that each revmap type
      can do its own setup and the user doesn't need to keep track of how
      each revmap type handles the arguments.
      
      This patch also adds a host_data argument to the generators.  There are
      cases where the host_data pointer will be needed before the function returns.
      ie. the legacy map calls the .map callback for each irq before returning.
      
      v2: - Add void *host_data argument to irq_domain_add_*() functions
          - fixed failure to compile
          - Moved IRQ_DOMAIN_MAP_* defines into irqdomain.c
      Signed-off-by: default avatarGrant Likely <grant.likely@secretlab.ca>
      Cc: Rob Herring <rob.herring@calxeda.com>
      Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
      Cc: Thomas Gleixner <tglx@linutronix.de>
      Cc: Milton Miller <miltonm@bga.com>
      Tested-by: default avatarOlof Johansson <olof@lixom.net>
      a8db8cf0
    • Grant Likely's avatar
      irq_domain: Remove references to old irq_host names · 68700650
      Grant Likely authored
      No functional changes.  Replaces non-exported references to 'host' with domain.
      Does not change any symbol names referenced by other .c files.
      Signed-off-by: default avatarGrant Likely <grant.likely@secretlab.ca>
      Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
      Cc: Thomas Gleixner <tglx@linutronix.de>
      Cc: Milton Miller <miltonm@bga.com>
      Tested-by: default avatarOlof Johansson <olof@lixom.net>
      68700650
    • Grant Likely's avatar
      irq_domain: remove NO_IRQ from irq domain code · 03848373
      Grant Likely authored
      zero always means no irq when using irq domains.  Get rid of the NO_IRQ
      references.
      Signed-off-by: default avatarGrant Likely <grant.likely@secretlab.ca>
      Cc: Rob Herring <rob.herring@calxeda.com>
      Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
      Cc: Thomas Gleixner <tglx@linutronix.de>
      Cc: Milton Miller <miltonm@bga.com>
      Tested-by: default avatarOlof Johansson <olof@lixom.net>
      03848373
    • Grant Likely's avatar
      irq_domain: Move irq_domain code from powerpc to kernel/irq · cc79ca69
      Grant Likely authored
      This patch only moves the code.  It doesn't make any changes, and the
      code is still only compiled for powerpc.  Follow-on patches will generalize
      the code for other architectures.
      Signed-off-by: default avatarGrant Likely <grant.likely@secretlab.ca>
      Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
      Cc: Thomas Gleixner <tglx@linutronix.de>
      Cc: Milton Miller <miltonm@bga.com>
      Tested-by: default avatarOlof Johansson <olof@lixom.net>
      cc79ca69
    • Grant Likely's avatar
      irq_domain/powerpc: Eliminate virq_is_host() · 6d9285b0
      Grant Likely authored
      There is only one user, and it is trivial to open-code.
      Signed-off-by: default avatarGrant Likely <grant.likely@secretlab.ca>
      Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
      Cc: Thomas Gleixner <tglx@linutronix.de>
      Cc: Milton Miller <miltonm@bga.com>
      Tested-by: default avatarOlof Johansson <olof@lixom.net>
      6d9285b0
  2. 14 Feb, 2012 14 commits
  3. 13 Feb, 2012 13 commits
    • Linus Torvalds's avatar
      Merge tag 'battery-fixes-for-v3.3-rc2' of git://git.infradead.org/users/cbou/battery-urgent · 3b582f39
      Linus Torvalds authored
      Just a few small fixes for a bunch of drivers. Nothing noteworthy.
      
      * tag 'battery-fixes-for-v3.3-rc2' of git://git.infradead.org/users/cbou/battery-urgent:
        lp8727_charger: Add terminating entry for i2c_device_id table
        power_supply: Fix modalias for charger-manager
        lp8727_chager: Fix permissions on a header file
        bq27x00_battery: Fix flag register read
        Revert "bq27x00_battery: Fix reporting status value for bq27500 battery"
      3b582f39
    • Linus Torvalds's avatar
      Merge branch 'for-linus' of git://oss.sgi.com/xfs/xfs · 19be13cf
      Linus Torvalds authored
      Two bugfixes in XFS for 3.3: one fix passes KMEM_SLEEP to kmem_realloc
      instead of 0, and the other resolves a possible deadlock in xfs quotas.
      
      * 'for-linus' of git://oss.sgi.com/xfs/xfs:
        xfs: use a normal shrinker for the dquot freelist
        xfs: pass KM_SLEEP flag to kmem_realloc() in xlog_recover_add_to_cnt_trans()
      19be13cf
    • Linus Torvalds's avatar
      Merge branch 'omap-fixes-warnings' of git://git.linaro.org/people/rmk/linux-arm · b14a2998
      Linus Torvalds authored
      This set of changes are fixing various section mismatch warnings which
      look to be completely valid.  Primerily, those which are fixed are those
      which can cause oopses by manipulation of driver binding via sysfs.  For
      example: calling code marked __init from driver probe __devinit
      functions.
      
      Some of these changes will be reworked at the next merge window when the
      underlying reasons are sorted out.  In the mean time, I think it's
      important to have this fixed for correctness.
      
      Also included in this set are fixes to various error messages in OMAP -
      including making them gramatically correct, fixing a few spelling
      errors, and more importantly, making them greppable by unwrapping them.
      
      Tony Lindgren has acked all these patches, put them out for testing a
      week ago, and I've tested them on the platforms I have.
      
      * 'omap-fixes-warnings' of git://git.linaro.org/people/rmk/linux-arm:
        ARM: omap: resolve nebulous 'Error setting wl12xx data'
        ARM: omap: fix wrapped error messages in omap_hwmod.c
        ARM: omap: fix section mismatch warnings in mux.c caused by hsmmc.c
        ARM: omap: fix section mismatch warning for sdp3430_twl_gpio_setup()
        ARM: omap: fix section mismatch error for omap_4430sdp_display_init()
        ARM: omap: fix section mismatch warning for omap_secondary_startup()
        ARM: omap: preemptively fix section mismatch in omap4_sdp4430_wifi_mux_init()
        ARM: omap: fix section mismatch warning in mux.c
        ARM: omap: fix section mismatch errors in TWL PMIC driver
        ARM: omap: fix uninformative vc/i2c configuration error message
        ARM: omap: fix vc.c PMIC error message
        ARM: omap: fix prm44xx.c OMAP44XX_IRQ_PRCM build error
      b14a2998
    • Linus Torvalds's avatar
      Merge branch 'omap-fixes-urgent' of git://git.linaro.org/people/rmk/linux-arm · a269c2f5
      Linus Torvalds authored
      This pull request covers the major oopsing issues with OMAP, caused by
      the lack of the TWL driver.  Even when the TWL driver is not built in,
      we shouldn't oops.
      
      * 'omap-fixes-urgent' of git://git.linaro.org/people/rmk/linux-arm:
        ARM: omap: fix broken twl-core dependencies and ifdefs
        ARM: omap: fix oops in drivers/video/omap2/dss/dpi.c
        ARM: omap: fix oops in arch/arm/mach-omap2/vp.c when pmic is not found
      a269c2f5
    • Linus Torvalds's avatar
      Merge branch 'fixes' of git://git.linaro.org/people/rmk/linux-arm · ed5016d7
      Linus Torvalds authored
      * 'fixes' of git://git.linaro.org/people/rmk/linux-arm:
        ARM: 7322/1: Print BUG instead of undefined instruction on BUG_ON()
        ARM: 7321/1: cache-v7: Disable preemption when reading CCSIDR
        ARM: 7320/1: Fix proc_info table alignment
      ed5016d7
    • Linus Torvalds's avatar
      i387: make irq_fpu_usable() tests more robust · 5b1cbac3
      Linus Torvalds authored
      Some code - especially the crypto layer - wants to use the x86
      FP/MMX/AVX register set in what may be interrupt (typically softirq)
      context.
      
      That *can* be ok, but the tests for when it was ok were somewhat
      suspect.  We cannot touch the thread-specific status bits either, so
      we'd better check that we're not going to try to save FP state or
      anything like that.
      
      Now, it may be that the TS bit is always cleared *before* we set the
      USEDFPU bit (and only set when we had already cleared the USEDFP
      before), so the TS bit test may actually have been sufficient, but it
      certainly was not obviously so.
      
      So this explicitly verifies that we will not touch the TS_USEDFPU bit,
      and adds a few related sanity-checks.  Because it seems that somehow
      AES-NI is corrupting user FP state.  The cause is not clear, and this
      patch doesn't fix it, but while debugging it I really wanted the code to
      be more obviously correct and robust.
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      5b1cbac3
    • Linus Torvalds's avatar
      i387: math_state_restore() isn't called from asm · be98c2cd
      Linus Torvalds authored
      It was marked asmlinkage for some really old and stale legacy reasons.
      Fix that and the equally stale comment.
      
      Noticed when debugging the irq_fpu_usable() bugs.
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      be98c2cd
    • Takashi Iwai's avatar
      Merge branch 'fix/acer-alc889-fix' into fix/hda · a68f20ef
      Takashi Iwai authored
      Conflicts:
      	sound/pci/hda/patch_realtek.c
      
      Merged back the fix for Acer Aspire 6935 with ALC889 codec.
      The fix commit was based on 3.2 kernel so that it can be applied to
      stable kernel cleanly.
      a68f20ef
    • Takashi Iwai's avatar
      ALSA: hda - Fix silent speaker output on Acer Aspire 6935 · 02a237b2
      Takashi Iwai authored
      Since 3.2 kernel, the driver starts trying to assign the multi-io DACs
      before the speaker, thus it assigns DAC2/3 for multi-io and DAC4 for
      the speaker for a standard laptop setup like a HP, a speaker, a mic-in
      and a line-in.  However, on Acer Aspire 6935, it seems that the
      speaker pin 0x14 must be connected with either DAC1 or 2; otherwise it
      results in silence by some reason, although the codec itself allows
      the routing to DAC3/4.
      
      As a workaround, the connection list of each pin is reduced to be
      mapped to either only DAC1/2 or DAC3/4, so that the compatible
      assignment as in kernel 3.1 is achieved.
      
      Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=42740
      
      Cc: <stable@kernel.org> [v3.2+]
      Signed-off-by: default avatarTakashi Iwai <tiwai@suse.de>
      02a237b2
    • Takashi Iwai's avatar
      ALSA: hda - Fix initialization of secondary capture source on VT1705 · fc1156c0
      Takashi Iwai authored
      VT1705 codec has two ADCs where the secondary ADC has no MUX but only
      a fixed connection to the mic pin.  This confused the driver and it
      tries always overriding the input-source selection by assumption of
      the existing MUX for the secondary ADC, resulted in resetting the
      input-source at each time PM (including power-saving) occurs.
      
      The fix is simply to check the existence of MUX for secondary ADCs in
      the initialization code.
      Tested-by: default avatarAnisse Astier <anisse@astier.eu>
      Cc: <stable@kernel.org> [v3.1+]
      Signed-off-by: default avatarTakashi Iwai <tiwai@suse.de>
      fc1156c0
    • Russell King's avatar
      ARM: omap: resolve nebulous 'Error setting wl12xx data' · 70d669de
      Russell King authored
      It's useful to print the error code when a called function fails so a
      diagnosis of why it failed is possible.  In this case, it fails because
      we try to register some data for the wl12xx driver, but as the driver
      is not configured, a stub function is used which simply returns -ENOSYS.
      
      Let's do the simple thing for -rc and print the error code.
      
      Also, the return code from platform_register_device() at each of these
      sites was not being checked.  Add some checking, and again print the
      error code.
      
      This should be fixed properly for the next merge window so we don't
      issue error messages merely because a driver is not configured.
      Acked-by: default avatarTony Lindgren <tony@atomide.com>
      Signed-off-by: default avatarRussell King <rmk+kernel@arm.linux.org.uk>
      70d669de
    • Russell King's avatar
      ARM: omap: fix wrapped error messages in omap_hwmod.c · 4f8a428d
      Russell King authored
      While trying to debug my OMAP platforms, they emitted this message:
      
      omap_hwmod: %s: enabled state can only be entered from initialized, idle, or disabled state
      
      The following backtrace said it was from a function called '_enable',
      which didn't provide much clue.  Grepping didn't find it either.
      
      The message is wrapped, so unwrap the message so grep can find it.  Do
      the same for three other messages in this file.
      Acked-by: default avatarPaul Walmsley <paul@pwsan.com>
      Acked-by: default avatarTony Lindgren <tony@atomide.com>
      Signed-off-by: default avatarRussell King <rmk+kernel@arm.linux.org.uk>
      4f8a428d
    • Russell King's avatar
      ARM: omap: fix section mismatch warnings in mux.c caused by hsmmc.c · 8930b4e3
      Russell King authored
      The previous commit causes new section mismatch warnings:
      
      WARNING: arch/arm/mach-omap2/built-in.o(.text+0xdb30): Section mismatch in reference from the function omap_init_hsmmc() to the function .init.text:omap_mux_init_gpio()
      The function omap_init_hsmmc() references
      the function __init omap_mux_init_gpio().
      This is often because omap_init_hsmmc lacks a __init
      annotation or the annotation of omap_mux_init_gpio is wrong.
      
      WARNING: arch/arm/mach-omap2/built-in.o(.text+0xdb4c): Section mismatch in reference from the function omap_init_hsmmc() to the function .init.text:omap_mux_init_gpio()
      The function omap_init_hsmmc() references
      the function __init omap_mux_init_gpio().
      This is often because omap_init_hsmmc lacks a __init
      annotation or the annotation of omap_mux_init_gpio is wrong.
      
      WARNING: arch/arm/mach-omap2/built-in.o(.text+0xdb60): Section mismatch in reference from the function omap_init_hsmmc() to the function .init.text:omap_mux_init_signal()
      The function omap_init_hsmmc() references
      the function __init omap_mux_init_signal().
      This is often because omap_init_hsmmc lacks a __init
      annotation or the annotation of omap_mux_init_signal is wrong.
      
      WARNING: arch/arm/mach-omap2/built-in.o(.text+0xdb6c): Section mismatch in reference from the function omap_init_hsmmc() to the function .init.text:omap_mux_init_signal()
      The function omap_init_hsmmc() references
      the function __init omap_mux_init_signal().
      This is often because omap_init_hsmmc lacks a __init
      annotation or the annotation of omap_mux_init_signal is wrong.
      
      WARNING: arch/arm/mach-omap2/built-in.o(.text+0xdb78): Section mismatch in reference from the function omap_init_hsmmc() to the function .init.text:omap_mux_init_signal()
      The function omap_init_hsmmc() references
      the function __init omap_mux_init_signal().
      This is often because omap_init_hsmmc lacks a __init
      annotation or the annotation of omap_mux_init_signal is wrong.
      
      WARNING: arch/arm/mach-omap2/built-in.o(.text+0xdb90): Section mismatch in reference from the function omap_init_hsmmc() to the function .init.text:omap_mux_init_signal()
      The function omap_init_hsmmc() references
      the function __init omap_mux_init_signal().
      This is often because omap_init_hsmmc lacks a __init
      annotation or the annotation of omap_mux_init_signal is wrong.
      
      WARNING: arch/arm/mach-omap2/built-in.o(.text+0xdb9c): Section mismatch in reference from the function omap_init_hsmmc() to the function .init.text:omap_mux_init_signal()
      The function omap_init_hsmmc() references
      the function __init omap_mux_init_signal().
      This is often because omap_init_hsmmc lacks a __init
      annotation or the annotation of omap_mux_init_signal is wrong.
      
      WARNING: arch/arm/mach-omap2/built-in.o(.text+0xdba8): Section mismatch in reference from the function omap_init_hsmmc() to the function .init.text:omap_mux_init_signal()
      The function omap_init_hsmmc() references
      the function __init omap_mux_init_signal().
      This is often because omap_init_hsmmc lacks a __init
      annotation or the annotation of omap_mux_init_signal is wrong.
      
      WARNING: arch/arm/mach-omap2/built-in.o(.text+0xdbc0): Section mismatch in reference from the function omap_init_hsmmc() to the function .init.text:omap_mux_init_signal()
      The function omap_init_hsmmc() references
      the function __init omap_mux_init_signal().
      This is often because omap_init_hsmmc lacks a __init
      annotation or the annotation of omap_mux_init_signal is wrong.
      
      WARNING: arch/arm/mach-omap2/built-in.o(.text+0xdbcc): Section mismatch in reference from the function omap_init_hsmmc() to the function .init.text:omap_mux_init_signal()
      The function omap_init_hsmmc() references
      the function __init omap_mux_init_signal().
      This is often because omap_init_hsmmc lacks a __init
      annotation or the annotation of omap_mux_init_signal is wrong.
      
      WARNING: arch/arm/mach-omap2/built-in.o(.text+0xdbd8): Section mismatch in reference from the function omap_init_hsmmc() to the function .init.text:omap_mux_init_signal()
      The function omap_init_hsmmc() references
      the function __init omap_mux_init_signal().
      This is often because omap_init_hsmmc lacks a __init
      annotation or the annotation of omap_mux_init_signal is wrong.
      
      WARNING: arch/arm/mach-omap2/built-in.o(.text+0xdbf8): Section mismatch in reference from the function omap_init_hsmmc() to the function .init.text:omap_mux_init_signal()
      The function omap_init_hsmmc() references
      the function __init omap_mux_init_signal().
      This is often because omap_init_hsmmc lacks a __init
      annotation or the annotation of omap_mux_init_signal is wrong.
      
      WARNING: arch/arm/mach-omap2/built-in.o(.text+0xdc04): Section mismatch in reference from the function omap_init_hsmmc() to the function .init.text:omap_mux_init_signal()
      The function omap_init_hsmmc() references
      the function __init omap_mux_init_signal().
      This is often because omap_init_hsmmc lacks a __init
      annotation or the annotation of omap_mux_init_signal is wrong.
      
      WARNING: arch/arm/mach-omap2/built-in.o(.text+0xdc10): Section mismatch in reference from the function omap_init_hsmmc() to the function .init.text:omap_mux_init_signal()
      The function omap_init_hsmmc() references
      the function __init omap_mux_init_signal().
      This is often because omap_init_hsmmc lacks a __init
      annotation or the annotation of omap_mux_init_signal is wrong.
      
      WARNING: arch/arm/mach-omap2/built-in.o(.text+0xdc28): Section mismatch in reference from the function omap_init_hsmmc() to the function .init.text:omap_mux_init_signal()
      The function omap_init_hsmmc() references
      the function __init omap_mux_init_signal().
      This is often because omap_init_hsmmc lacks a __init
      annotation or the annotation of omap_mux_init_signal is wrong.
      
      WARNING: arch/arm/mach-omap2/built-in.o(.text+0xdc34): Section mismatch in reference from the function omap_init_hsmmc() to the function .init.text:omap_mux_init_signal()
      The function omap_init_hsmmc() references
      the function __init omap_mux_init_signal().
      This is often because omap_init_hsmmc lacks a __init
      annotation or the annotation of omap_mux_init_signal is wrong.
      
      WARNING: arch/arm/mach-omap2/built-in.o(.text+0xdc40): Section mismatch in reference from the function omap_init_hsmmc() to the function .init.text:omap_mux_init_signal()
      The function omap_init_hsmmc() references
      the function __init omap_mux_init_signal().
      This is often because omap_init_hsmmc lacks a __init
      annotation or the annotation of omap_mux_init_signal is wrong.
      
      WARNING: arch/arm/mach-omap2/built-in.o(.text+0xdc58): Section mismatch in reference from the function omap_init_hsmmc() to the function .init.text:omap_mux_init_signal()
      The function omap_init_hsmmc() references
      the function __init omap_mux_init_signal().
      This is often because omap_init_hsmmc lacks a __init
      annotation or the annotation of omap_mux_init_signal is wrong.
      
      WARNING: arch/arm/mach-omap2/built-in.o(.text+0xdc64): Section mismatch in reference from the function omap_init_hsmmc() to the function .init.text:omap_mux_init_signal()
      The function omap_init_hsmmc() references
      the function __init omap_mux_init_signal().
      This is often because omap_init_hsmmc lacks a __init
      annotation or the annotation of omap_mux_init_signal is wrong.
      
      WARNING: arch/arm/mach-omap2/built-in.o(.text+0xdc70): Section mismatch in reference from the function omap_init_hsmmc() to the function .init.text:omap_mux_init_signal()
      The function omap_init_hsmmc() references
      the function __init omap_mux_init_signal().
      This is often because omap_init_hsmmc lacks a __init
      annotation or the annotation of omap_mux_init_signal is wrong.
      
      WARNING: arch/arm/mach-omap2/built-in.o(.text+0xdc7c): Section mismatch in reference from the function omap_init_hsmmc() to the function .init.text:omap_mux_init_signal()
      The function omap_init_hsmmc() references
      the function __init omap_mux_init_signal().
      This is often because omap_init_hsmmc lacks a __init
      annotation or the annotation of omap_mux_init_signal is wrong.
      
      Again, as for omap2_hsmmc_init(), these functions are callable at
      runtime via the gpio-twl4030.c driver, and so these can't be marked
      __init.
      Acked-by: default avatarTony Lindgren <tony@atomide.com>
      Signed-off-by: default avatarRussell King <rmk+kernel@arm.linux.org.uk>
      8930b4e3