09 Jan, 2012

1 commit


12 Aug, 2010

1 commit

  • This patch includes below fixes:
    1. fix wm8350_create_cache error path
    make sure wm8350->reg_cache is freed in error path.
    2. fix wm8350_device_init error path
    no need to kfree(wm8350->reg_cache) in the case of goto out.

    Signed-off-by: Axel Lin
    Acked-by: Mark Brown
    Signed-off-by: Samuel Ortiz

    Axel Lin
     

13 May, 2010

1 commit

  • In certain circumstances, especially under heavy load, the AUXADC
    completion interrupt may be detected after we've timed out waiting for
    it. That conversion would still succeed but the next conversion will
    see the completion that was signalled by the interrupt for the previous
    conversion and therefore not wait for the AUXADC conversion to run,
    causing it to report failure.

    Provide a simple, non-invasive cleanup by using try_wait_for_completion()
    to ensure that the completion is not signalled before we wait. Since
    the AUXADC is run within a mutex we know there can only have been at
    most one AUXADC interrupt outstanding. A more involved change should
    follow for the next merge window.

    Signed-off-by: Mark Brown
    Signed-off-by: Samuel Ortiz

    Mark Brown
     

30 Mar, 2010

1 commit

  • …it slab.h inclusion from percpu.h

    percpu.h is included by sched.h and module.h and thus ends up being
    included when building most .c files. percpu.h includes slab.h which
    in turn includes gfp.h making everything defined by the two files
    universally available and complicating inclusion dependencies.

    percpu.h -> slab.h dependency is about to be removed. Prepare for
    this change by updating users of gfp and slab facilities include those
    headers directly instead of assuming availability. As this conversion
    needs to touch large number of source files, the following script is
    used as the basis of conversion.

    http://userweb.kernel.org/~tj/misc/slabh-sweep.py

    The script does the followings.

    * Scan files for gfp and slab usages and update includes such that
    only the necessary includes are there. ie. if only gfp is used,
    gfp.h, if slab is used, slab.h.

    * When the script inserts a new include, it looks at the include
    blocks and try to put the new include such that its order conforms
    to its surrounding. It's put in the include block which contains
    core kernel includes, in the same order that the rest are ordered -
    alphabetical, Christmas tree, rev-Xmas-tree or at the end if there
    doesn't seem to be any matching order.

    * If the script can't find a place to put a new include (mostly
    because the file doesn't have fitting include block), it prints out
    an error message indicating which .h file needs to be added to the
    file.

    The conversion was done in the following steps.

    1. The initial automatic conversion of all .c files updated slightly
    over 4000 files, deleting around 700 includes and adding ~480 gfp.h
    and ~3000 slab.h inclusions. The script emitted errors for ~400
    files.

    2. Each error was manually checked. Some didn't need the inclusion,
    some needed manual addition while adding it to implementation .h or
    embedding .c file was more appropriate for others. This step added
    inclusions to around 150 files.

    3. The script was run again and the output was compared to the edits
    from #2 to make sure no file was left behind.

    4. Several build tests were done and a couple of problems were fixed.
    e.g. lib/decompress_*.c used malloc/free() wrappers around slab
    APIs requiring slab.h to be added manually.

    5. The script was run on all .h files but without automatically
    editing them as sprinkling gfp.h and slab.h inclusions around .h
    files could easily lead to inclusion dependency hell. Most gfp.h
    inclusion directives were ignored as stuff from gfp.h was usually
    wildly available and often used in preprocessor macros. Each
    slab.h inclusion directive was examined and added manually as
    necessary.

    6. percpu.h was updated not to include slab.h.

    7. Build test were done on the following configurations and failures
    were fixed. CONFIG_GCOV_KERNEL was turned off for all tests (as my
    distributed build env didn't work with gcov compiles) and a few
    more options had to be turned off depending on archs to make things
    build (like ipr on powerpc/64 which failed due to missing writeq).

    * x86 and x86_64 UP and SMP allmodconfig and a custom test config.
    * powerpc and powerpc64 SMP allmodconfig
    * sparc and sparc64 SMP allmodconfig
    * ia64 SMP allmodconfig
    * s390 SMP allmodconfig
    * alpha SMP allmodconfig
    * um on x86_64 SMP allmodconfig

    8. percpu.h modifications were reverted so that it could be applied as
    a separate patch and serve as bisection point.

    Given the fact that I had only a couple of failures from tests on step
    6, I'm fairly confident about the coverage of this conversion patch.
    If there is a breakage, it's likely to be something in one of the arch
    headers which should be easily discoverable easily on most builds of
    the specific arch.

    Signed-off-by: Tejun Heo <tj@kernel.org>
    Guess-its-ok-by: Christoph Lameter <cl@linux-foundation.org>
    Cc: Ingo Molnar <mingo@redhat.com>
    Cc: Lee Schermerhorn <Lee.Schermerhorn@hp.com>

    Tejun Heo
     

08 Mar, 2010

1 commit

  • Use the completion interrupt generated by the device rather than
    polling for conversions to complete. As a backup we still check
    the state of the AUXADC if we don't get a completion, mostly for
    systems that don't have the WM8350 interrupt infrastructure hooked
    up.

    Signed-off-by: Mark Brown
    Signed-off-by: Samuel Ortiz

    Mark Brown
     

18 Jan, 2010

1 commit


14 Dec, 2009

2 commits


17 Sep, 2009

2 commits


20 May, 2009

1 commit

  • Due to the way that the WM8350 audio driver handles CODEC_ENA many of
    the WM8350 audio registers are marked as volatile when they aren't
    actually so. Allow the audio driver to see a cache of these values for
    inspection during interrupt context.

    To do this we need to stop satisfying any bits from volatile registers
    from cache - there's no real benefit from doing so anyway, we did the
    read already.

    Signed-off-by: Mark Brown
    Signed-off-by: Samuel Ortiz

    Mark Brown
     

05 Apr, 2009

3 commits


13 Mar, 2009

1 commit


17 Feb, 2009

4 commits


08 Jan, 2009

1 commit

  • The voltage and current regulators on the WM8350 AudioPlus PMIC can be
    used in concert to provide a power efficient LED driver. This driver
    implements support for this within the standard LED class.

    Platform initialisation code should configure the LED hardware in the
    init callback provided by the WM8350 core driver. The callback should
    use wm8350_isink_set_flash(), wm8350_dcdc25_set_mode() and
    wm8350_dcdc_set_slot() to configure the operating parameters of the
    regulators for their hardware and then then use wm8350_register_led() to
    instantiate the LED driver.

    This driver was originally written by Liam Girdwood, though it has been
    extensively modified since then.

    Signed-off-by: Mark Brown
    Signed-off-by: Richard Purdie

    Mark Brown
     

04 Jan, 2009

10 commits


22 Oct, 2008

2 commits

  • This makes the contents of the cache clearer and fixes incorrect
    initialisation of the cache for partially volatile registers.

    Signed-off-by: Mark Brown
    Signed-off-by: Samuel Ortiz

    Mark Brown
     
  • October 10th linux-next build (powerpc allyesconfig) failed like this:

    drivers/mfd/wm8350-core.c:1131: error: __ksymtab_wm8350_create_cache causes a section type conflict

    Caused by commit 89b4012befb1abca5e86d232bc0e2a797b0d9825 ("mfd: Core
    support for the WM8350 AudioPlus PMIC"). wm8350_create_cache is not used
    elsewhere, so remove the EXPORT_SYMBOL.

    Signed-off-by: Stephen Rothwell
    Signed-off-by: Mark Brown
    Signed-off-by: Samuel Ortiz

    Stephen Rothwell
     

20 Oct, 2008

1 commit

  • NO_IRQ is only defined on some architectures - the general way to test
    for an invalid IRQ in the modern kernel is by comparing with zero.

    Reported-by: Stephen Rothwell
    Signed-off-by: Mark Brown
    Signed-off-by: Samuel Ortiz

    Mark Brown
     

14 Oct, 2008

7 commits

  • Signed-off-by: Mark Brown
    Acked-by: Samuel Ortiz
    Signed-off-by: Liam Girdwood

    Mark Brown
     
  • In order to avoid merge problems further down the line add placeholders
    for several of the WM8350 client devices and register them, otherwise
    the patches adding the client devices will all try to update the same
    code.

    Also remove redundant checks for null regulator platform devices while
    we're at it.

    Signed-off-by: Mark Brown
    Acked-by: Samuel Ortiz
    Signed-off-by: Liam Girdwood

    Mark Brown
     
  • Most of the subdevices for the WM8350 code are registered in the same
    fashion so factor out the code to do the initial registration.

    Signed-off-by: Mark Brown
    Acked-by: Samuel Ortiz
    Signed-off-by: Liam Girdwood

    Mark Brown
     
  • The WM8350 features six DCDC convertors (four buck and two boost), four
    LDO voltage regulators and two constant current sinks. This driver adds
    support for these through the regulator API.

    This driver was written by Liam Girdwood with updates for submission
    from Mark Brown.

    Signed-off-by: Mark Brown
    Signed-off-by: Liam Girdwood

    Mark Brown
     
  • The WM8350 has an interrupt line to the CPU which is shared by the
    devices on the CPU. This patch adds support for the interrupt
    controller within the WM8350 which identifies which identifies the
    interrupt cause. In common with other similar chips this is done
    outside the standard interrupt framework due to the need to access
    the interrupt controller over an interrupt-driven bus.

    This code was all originally written by Liam Girdwood with updates for
    submission by me.

    Signed-off-by: Mark Brown
    Acked-by: Samuel Ortiz
    Signed-off-by: Liam Girdwood

    Mark Brown
     
  • Some functions of the WM8350 require board-specific initialisation on
    startup. Provide a callback to the WM8350 driver in platform data
    for platforms to use to configure the chip. Use of a callback allows
    platforms to control the ordering of initialisation which can be
    important.

    Signed-off-by: Mark Brown
    Acked-by: Samuel Ortiz
    Signed-off-by: Liam Girdwood

    Mark Brown
     
  • The WM8350 is an integrated audio and power management subsystem
    intended for use as the primary PMIC in mobile multimedia applications.
    The WM8350 can be controlled via either I2C or SPI - the control
    interface is provided by a separate module in order to allow greatest
    flexibility in configuring the kernel.

    This driver was originally written by Liam Girdwood and has since been
    updated to current kernel APIs and split up for submission by me. All
    the heavy lifting here was done by Liam.

    Signed-off-by: Mark Brown
    Acked-by: Samuel Ortiz
    Signed-off-by: Liam Girdwood

    Mark Brown