04 Apr, 2013

2 commits

  • Dividers which have CLK_DIVIDER_ONE_BASED set have a redundant state,
    being a divider value of zero. Some hardware implementations allow a
    zero divider which simply doesn't alter the frequency. I.e. it acts like
    a divide by one or bypassing the divider.
    This flag is used to handle such HW in the clk-divider model.

    Signed-off-by: Soren Brinkmann
    Signed-off-by: Mike Turquette

    Soren Brinkmann
     
  • The use common of_clk_init() function simplifies the clock initialization
    and adds handling of the DT "fixed-clock".

    Signed-off-by: Jean-Francois Moine
    Signed-off-by: Mike Turquette
    [mturquette@linaro.org: fixed $SUBJECT to reflect correct file path]

    Jean-Francois Moine
     

03 Apr, 2013

3 commits

  • The kerneldoc comment for struct clk_mux documented the non-existent
    num_clks instead of flags. Correct this.

    Signed-off-by: James Hogan
    Signed-off-by: Mike Turquette

    James Hogan
     
  • Reentrancy into the clock framework is necessary for clock operations
    that result in nested calls to the clk api. A common example is a clock
    that is prepared via an i2c transaction, such as a clock inside of a
    discrete audio chip or a power management IC. The i2c subsystem itself
    will use the clk api resulting in a deadlock:

    clk_prepare(audio_clk)
    i2c_transfer(..)
    clk_prepare(i2c_controller_clk)

    The ability to reenter the clock framework prevents this deadlock.

    Other use cases exist such as allowing .set_rate callbacks to call
    clk_set_parent to achieve the best rate, or to save power in certain
    configurations. Yet another example is performing pinctrl operations
    from a clk_ops callback. Calls into the pinctrl subsystem may call
    clk_{un}prepare on an unrelated clock. Allowing for nested calls to
    reenter the clock framework enables both of these use cases.

    Reentrancy is implemented by two global pointers that track the owner
    currently holding a global lock. One pointer tracks the owner during
    sleepable, mutex-protected operations and the other one tracks the owner
    during non-interruptible, spinlock-protected operations.

    When the clk framework is entered we try to hold the global lock. If it
    is held we compare the current task against the current owner; a match
    implies a nested call and we reenter. If the values do not match then
    we block on the lock until it is released.

    Signed-off-by: Mike Turquette
    Cc: Rajagopal Venkat
    Cc: David Brown
    Tested-by: Laurent Pinchart
    Reviewed-by: Thomas Gleixner
    Reviewed-by: Ulf Hansson

    Mike Turquette
     
  • Create locking helpers for the global mutex and global spinlock. The
    definitions of these helpers will be expanded upon in the next patch
    which introduces reentrancy into the locking scheme.

    Signed-off-by: Mike Turquette
    Cc: Rajagopal Venkat
    Cc: David Brown
    Tested-by: Laurent Pinchart
    Reviewed-by: Thomas Gleixner
    Reviewed-by: Ulf Hansson

    Mike Turquette
     

27 Mar, 2013

7 commits

  • Include zynq clk header where init function is declared.

    It removes this sparse warning:
    drivers/clk/clk-zynq.c:373:13: warning: symbol
    'xilinx_zynq_clocks_init' was not declared. Should it be static?

    Signed-off-by: Michal Simek
    Signed-off-by: Mike Turquette

    Michal Simek
     
  • During the introduction of the Allwinner SoC platforms, sunxi was
    initially meant as a generic name for all the variants of the Allwinner
    SoC.

    It was ok at the time of the support of only the A10 and A13 that
    look pretty much the same; but it's beginning to be troublesome with
    the future addition of the Allwinner A31 (sun6i) that is quite
    different, and would introduce some weird logic, where sunxi would
    actually mean in some case sun4i and sun5i but without sun6i...

    Moreover, it makes the compatible strings naming scheme not consistent
    with other architectures, where usually for this kind of compability, we
    just use the oldest SoC name that has this IP, so let's do just this.

    Signed-off-by: Emilio López
    Signed-off-by: Mike Turquette

    Emilio López
     
  • This patch contains useful bits of information about the sunxi clocks
    that may help and/or be interesting for current and future developers.

    Signed-off-by: Emilio López
    Acked-by: Maxime Ripard
    Signed-off-by: Mike Turquette

    Emilio López
     
  • This commit implements the base CPU clocks for sunxi devices. It has
    been tested using a slightly modified cpufreq driver from the
    linux-sunxi 3.0 tree.

    Additionally, document the new bindings introduced by this patch.

    Idling:
    / # cat /sys/kernel/debug/clk/clk_summary
    clock enable_cnt prepare_cnt rate
    ---------------------------------------------------------------------
    osc32k 0 0 32768
    osc24M_fixed 0 0 24000000
    osc24M 0 0 24000000
    apb1_mux 0 0 24000000
    apb1 0 0 24000000
    pll1 0 0 60000000
    cpu 0 0 60000000
    axi 0 0 60000000
    ahb 0 0 60000000
    apb0 0 0 30000000
    dummy 0 0 0

    After "yes >/dev/null &":
    / # cat /sys/kernel/debug/clk/clk_summary
    clock enable_cnt prepare_cnt rate
    ---------------------------------------------------------------------
    osc32k 0 0 32768
    osc24M_fixed 0 0 24000000
    osc24M 0 0 24000000
    apb1_mux 0 0 24000000
    apb1 0 0 24000000
    pll1 0 0 1008000000
    cpu 0 0 1008000000
    axi 0 0 336000000
    ahb 0 0 168000000
    apb0 0 0 84000000
    dummy 0 0 0

    Signed-off-by: Emilio López
    Acked-by: Maxime Ripard
    Signed-off-by: Mike Turquette

    Emilio López
     
  • In clk_reg_prcmu(), clk->hw.init field is assigned with a
    reference local to clk_reg_prcmu() function.

    This patch replaces references to clk->hw.init with calls
    to __clk_get_name when called after clock registration.

    This patch applies on top of v3.9-rc4.

    Signed-off-by: Maxime Coquelin
    Acked-by: Ulf Hansson
    Signed-off-by: Mike Turquette
    [mturquette@linaro.org: resolved trivial merge issues]

    Maxime Coquelin
     
  • Commit ce4f3313b05 (clk: add table lookup to mux) caused the following build
    error on imx_v4_v5_defconfig/imx_v6_v7_defconfig:

    arch/arm/mach-imx/clk-busy.c:172:11: error: 'struct clk_mux' has no member named 'width'

    Fix it by passing the 'mask' field.

    Signed-off-by: Fabio Estevam
    Acked-by: Peter De Schrijver
    Signed-off-by: Mike Turquette
    [mturquette@linaro.org: shortened $SUBJECT line]

    Fabio Estevam
     
  • Not all clocks are required to be decomposed into basic clock
    types but at the same time want to use the functionality
    provided by these basic clock types instead of duplicating.

    For example, Tegra SoC has ~100 clocks which can be decomposed
    into Mux -> Div -> Gate clock types making the clock count to
    ~300. Also, parent change operation can not be performed on gate
    clock which forces to use mux clock in driver if want to change
    the parent.

    Instead aggregate the basic clock types functionality into one
    clock and just use this clock for all operations. This clock
    type re-uses the functionality of basic clock types and not
    limited to basic clock types but any hardware-specific
    implementation.

    Signed-off-by: Prashant Gaikwad
    Signed-off-by: Mike Turquette

    Prashant Gaikwad
     

23 Mar, 2013

3 commits

  • Add a table lookup feature to the mux clock. Also allow arbitrary masks
    instead of the width. This will be used by some clocks on Tegra114. Also
    adapt the tegra periph clk because it uses struct clk_mux directly.

    Signed-off-by: Peter De Schrijver
    Tested-by: Stephen Warren
    Signed-off-by: Mike Turquette

    Peter De Schrijver
     
  • Return type of function clk_propagate_rate_change is a pointer.
    But 0 was being returned. Change it to NULL.
    Silences the following warning:
    drivers/clk/clk.c:977:24: warning: Using plain integer as NULL pointer

    Signed-off-by: Sachin Kamat
    Reviewed-by: Pankaj Jangra
    Signed-off-by: Mike Turquette

    Sachin Kamat
     
  • In case of error, the function clk_get() returns ERR_PTR()
    not NULL. The NULL test in the return value check should
    be replaced with IS_ERR().

    Signed-off-by: Wei Yongjun
    Acked-by: Barry Song
    Signed-off-by: Mike Turquette
    [mturquette@linaro.org: added missing parenthesis to fix compile break]

    Wei Yongjun
     

22 Mar, 2013

2 commits


20 Mar, 2013

6 commits

  • This driver adds support for the AXI clkgen pcore to the common clock framework.
    The AXI clkgen pcore is a AXI front-end to the MMCM_ADV frequency synthesizer
    commonly found in Xilinx FPGAs.

    The AXI clkgen pcore is used in Analog Devices' reference designs targeting
    Xilinx FPGAs.

    Signed-off-by: Lars-Peter Clausen
    Signed-off-by: Mike Turquette

    Lars-Peter Clausen
     
  • To be able to gate unused prcmu clocks from the clk_disable_unused sequence,
    clk-prcmu now implements the is_prepared callback.

    Signed-off-by: Ulf Hansson
    Signed-off-by: Mike Turquette

    Ulf Hansson
     
  • An unprepare_unused callback is introduced due to the same reasons to
    why the disable_unused callback was added.

    During the clk_disable_unused sequence, those clk_hw that needs specific
    treatment with regards to being unprepared, shall implement the
    unprepare_unused callback.

    Signed-off-by: Ulf Hansson
    Acked-by: Linus Walleij
    Signed-off-by: Mike Turquette

    Ulf Hansson
     
  • The unused ungated fast clocks are already being disabled from
    clk_disable_unused at late init. This patch extend this sequence
    to the slow unused prepared clocks to be unprepared.

    Unless the optional .is_prepared callback is implemented by a
    clk_hw the clk_disable_unused sequence will not unprepare any
    unused clocks, since it will fall back to use the software
    prepare counter.

    Signed-off-by: Ulf Hansson
    Acked-by: Linus Walleij
    Signed-off-by: Mike Turquette
    [mturquette@linaro.org: fixed hlist accessors per b67bfe0d]

    Ulf Hansson
     
  • To reflect whether a clk_hw is prepared the clk_hw may implement
    the optional is_prepared callback. If not implemented we fall back
    to use the software prepare counter.

    Signed-off-by: Ulf Hansson
    Acked-by: Linus Walleij
    Signed-off-by: Mike Turquette

    Ulf Hansson
     
  • Fix the following sparse warnings:

    drivers/clk/mxs/clk.c:17:1: warning: symbol 'mxs_lock' was not declared. Should it be static?
    drivers/clk/mxs/clk.c:19:5: warning: symbol 'mxs_clk_wait' was not declared. Should it be static?

    Signed-off-by: Fabio Estevam
    Acked-by: Shawn Guo
    Signed-off-by: Mike Turquette

    Fabio Estevam
     

18 Mar, 2013

4 commits

  • Linus Torvalds
     
  • Commit 1d9d8639c063 ("perf,x86: fix kernel crash with PEBS/BTS after
    suspend/resume") introduces a link failure since
    perf_restore_debug_store() is only defined for CONFIG_CPU_SUP_INTEL:

    arch/x86/power/built-in.o: In function `restore_processor_state':
    (.text+0x45c): undefined reference to `perf_restore_debug_store'

    Fix it by defining the dummy function appropriately.

    Signed-off-by: David Rientjes
    Cc: stable@vger.kernel.org
    Signed-off-by: Linus Torvalds

    David Rientjes
     
  • Commit 1d9d8639c063 ("perf,x86: fix kernel crash with PEBS/BTS after
    suspend/resume") fixed a crash when doing PEBS performance profiling
    after resuming, but in using init_debug_store_on_cpu() to restore the
    DS_AREA mtrr it also resulted in a new WARN_ON() triggering.

    init_debug_store_on_cpu() uses "wrmsr_on_cpu()", which in turn uses CPU
    cross-calls to do the MSR update. Which is not really valid at the
    early resume stage, and the warning is quite reasonable. Now, it all
    happens to _work_, for the simple reason that smp_call_function_single()
    ends up just doing the call directly on the CPU when the CPU number
    matches, but we really should just do the wrmsr() directly instead.

    This duplicates the wrmsr() logic, but hopefully we can just remove the
    wrmsr_on_cpu() version eventually.

    Reported-and-tested-by: Parag Warudkar
    Cc: stable@vger.kernel.org
    Signed-off-by: Linus Torvalds

    Linus Torvalds
     
  • Pull btrfs fixes from Chris Mason:
    "Eric's rcu barrier patch fixes a long standing problem with our
    unmount code hanging on to devices in workqueue helpers. Liu Bo
    nailed down a difficult assertion for in-memory extent mappings."

    * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mason/linux-btrfs:
    Btrfs: fix warning of free_extent_map
    Btrfs: fix warning when creating snapshots
    Btrfs: return as soon as possible when edquot happens
    Btrfs: return EIO if we have extent tree corruption
    btrfs: use rcu_barrier() to wait for bdev puts at unmount
    Btrfs: remove btrfs_try_spin_lock
    Btrfs: get better concurrency for snapshot-aware defrag work

    Linus Torvalds
     

16 Mar, 2013

9 commits

  • Users report that an extent map's list is still linked when it's actually
    going to be freed from cache.

    The story is that

    a) when we're going to drop an extent map and may split this large one into
    smaller ems, and if this large one is flagged as EXTENT_FLAG_LOGGING which means
    that it's on the list to be logged, then the smaller ems split from it will also
    be flagged as EXTENT_FLAG_LOGGING, and this is _not_ expected.

    b) we'll keep ems from unlinking the list and freeing when they are flagged with
    EXTENT_FLAG_LOGGING, because the log code holds one reference.

    The end result is the warning, but the truth is that we set the flag
    EXTENT_FLAG_LOGGING only during fsync.

    So clear flag EXTENT_FLAG_LOGGING for extent maps split from a large one.

    Reported-by: Johannes Hirte
    Reported-by: Darrick J. Wong
    Signed-off-by: Liu Bo
    Signed-off-by: Chris Mason

    Liu Bo
     
  • Pull kbuild fix from Michal Marek:
    "One fix for for make headers_install/headers_check to not require make
    3.81. The requirement has been accidentally introduced in 3.7."

    * 'kbuild' of git://git.kernel.org/pub/scm/linux/kernel/git/mmarek/kbuild:
    kbuild: fix make headers_check with make 3.80

    Linus Torvalds
     
  • Pull OpenRISC bug fixes from Jonas Bonn:

    - The GPIO descriptor work has exposed how broken the non-GPIOLIB bits
    for OpenRISC were. We now require GPIOLIB as this is the preferred
    way forward.

    - The system.h split introduced a bug in llist.h for arches using
    asm-generic/cmpxchg.h directly, which is currently only OpenRISC.
    The patch here moves two defines from asm-generic/atomic.h to
    asm-generic/cmpxchg.h to make things work as they should.

    - The VIRT_TO_BUS selector was added for OpenRISC, but OpenRISC does
    not have the virt_to_bus methods, so there's a patch to remove it
    again.

    * tag 'for-3.9-rc3' of git://openrisc.net/jonas/linux:
    openrisc: remove HAVE_VIRT_TO_BUS
    asm-generic: move cmpxchg*_local defs to cmpxchg.h
    openrisc: require gpiolib

    Linus Torvalds
     
  • Pull char/misc fixes from Greg Kroah-Hartman:
    "Here are some tiny fixes for the w1 drivers and the final removal
    patch for getting rid of CONFIG_EXPERIMENTAL (all users of it are now
    gone from your tree, this just drops the Kconfig item itself.)

    All have been in the linux-next tree for a while"

    * tag 'char-misc-3.9-rc2' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/char-misc:
    final removal of CONFIG_EXPERIMENTAL
    w1: fix oops when w1_search is called from netlink connector
    w1-gpio: fix unused variable warning
    w1-gpio: remove erroneous __exit and __exit_p()
    ARM: w1-gpio: fix erroneous gpio requests

    Linus Torvalds
     
  • Pull sound fixes from Takashi Iwai:
    "A collection of small fixes, as expected for the middle rc:
    - A couple of fixes for potential NULL dereferences and out-of-range
    array accesses revealed by static code parsers
    - A fix for the wrong error handling detected by trinity
    - A regression fix for missing audio on some MacBooks
    - CA0132 DSP loader fixes
    - Fix for EAPD control of IDT codecs on machines w/o speaker
    - Fix a regression in the HD-audio widget list parser code
    - Workaround for the NuForce UDH-100 USB audio"

    * tag 'sound-3.9' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound:
    ALSA: hda - Fix missing EAPD/GPIO setup for Cirrus codecs
    sound: sequencer: cap array index in seq_chn_common_event()
    ALSA: hda/ca0132 - Remove extra setting of dsp_state.
    ALSA: hda/ca0132 - Check download state of DSP.
    ALSA: hda/ca0132 - Check if dspload_image succeeded.
    ALSA: hda - Disable IDT eapd_switch if there are no internal speakers
    ALSA: hda - Fix snd_hda_get_num_raw_conns() to return a correct value
    ALSA: usb-audio: add a workaround for the NuForce UDH-100
    ALSA: asihpi - fix potential NULL pointer dereference
    ALSA: seq: Fix missing error handling in snd_seq_timer_open()

    Linus Torvalds
     
  • Pull DMA-mapping fix from Marek Szyprowski:
    "An important fix for all ARM architectures which use ZONE_DMA.
    Without it dma_alloc_* calls with GFP_ATOMIC flag might have allocated
    buffers outsize DMA zone."

    * 'fixes-for-3.9' of git://git.linaro.org/people/mszyprowski/linux-dma-mapping:
    ARM: DMA-mapping: add missing GFP_DMA flag for atomic buffer allocation

    Linus Torvalds
     
  • Pull MFD fixes from Samuel Ortiz:
    "This is the first batch of MFD fixes for 3.9.

    With this one we have:

    - An ab8500 build failure fix.
    - An ab8500 device tree parsing fix.
    - A fix for twl4030_madc remove routine to work properly (when
    built-in).
    - A fix for properly registering palmas interrupt handler.
    - A fix for omap-usb init routine to actually write into the
    hostconfig register.
    - A couple of warning fixes for ab8500-gpadc and tps65912"

    * tag 'mfd-fixes-3.9-1' of git://git.kernel.org/pub/scm/linux/kernel/git/sameo/mfd-fixes:
    mfd: twl4030-madc: Remove __exit_p annotation
    mfd: ab8500: Kill "reg" property from binding
    mfd: ab8500-gpadc: Complain if we fail to enable vtvout LDO
    mfd: wm831x: Don't forward declare enum wm831x_auxadc
    mfd: twl4030-audio: Fix argument type for twl4030_audio_disable_resource()
    mfd: tps65912: Declare and use tps65912_irq_exit()
    mfd: palmas: Provide irq flags through DT/platform data
    mfd: Make AB8500_CORE select POWER_SUPPLY to fix build error
    mfd: omap-usb-host: Actually update hostconfig

    Linus Torvalds
     
  • Pull hwmon fixes from Guenter Roeck:
    "Bug fixes for pmbus, ltc2978, and lineage-pem drivers

    Added specific maintainer for some hwmon drivers"

    * tag 'hwmon-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/groeck/linux-staging:
    hwmon: (pmbus/ltc2978) Fix temperature reporting
    hwmon: (pmbus) Fix krealloc() misuse in pmbus_add_attribute()
    hwmon: (lineage-pem) Add missing terminating entry for pem_[input|fan]_attributes
    MAINTAINERS: Add maintainer for MAX6697, INA209, and INA2XX drivers

    Linus Torvalds
     
  • This patch fixes a kernel crash when using precise sampling (PEBS)
    after a suspend/resume. Turns out the CPU notifier code is not invoked
    on CPU0 (BP). Therefore, the DS_AREA (used by PEBS) is not restored properly
    by the kernel and keeps it power-on/resume value of 0 causing any PEBS
    measurement to crash when running on CPU0.

    The workaround is to add a hook in the actual resume code to restore
    the DS Area MSR value. It is invoked for all CPUS. So for all but CPU0,
    the DS_AREA will be restored twice but this is harmless.

    Reported-by: Linus Torvalds
    Signed-off-by: Stephane Eranian
    Signed-off-by: Linus Torvalds

    Stephane Eranian
     

15 Mar, 2013

4 commits

  • During the transition to the generic parser, the hook to the codec
    specific automute function was forgotten. This resulted in the silent
    output on some MacBooks.

    Signed-off-by: Takashi Iwai

    Takashi Iwai
     
  • "chn" here is a number between 0 and 255, but ->chn_info[] only has
    16 elements so there is a potential write beyond the end of the
    array.

    If the seq_mode isn't SEQ_2 then we let the individual drivers
    (either opl3.c or midi_synth.c) handle it. Those functions all
    do a bounds check on "chn" so I haven't changed anything here.
    The opl3.c driver has up to 18 channels and not 16.

    Signed-off-by: Dan Carpenter
    Signed-off-by: Takashi Iwai

    Dan Carpenter
     
  • 4740f73fe5 "mfd: remove use of __devexit" removed the __devexit annotation
    on the twl4030_madc_remove function, but left an __exit_p() present on the
    pointer to this function. Using __exit_p was as wrong with the devexit in
    place as it is now, but now we get a gcc warning about an unused function.

    In order for the twl4030_madc_remove to work correctly in built-in code, we
    have to remove the __exit_p.

    Cc: Bill Pemberton
    Cc: Greg Kroah-Hartman
    Signed-off-by: Arnd Bergmann
    Signed-off-by: Samuel Ortiz

    Arnd Bergmann
     
  • spec->dsp_state is initialized to DSP_DOWNLOAD_INIT, no need to reset
    and check it in ca0132_download_dsp().

    Signed-off-by: Dylan Reid
    Signed-off-by: Takashi Iwai

    Dylan Reid