12 Jan, 2012

1 commit

  • * 'next' of git://git.kernel.org/pub/scm/linux/kernel/git/davej/cpufreq: (23 commits)
    [CPUFREQ] EXYNOS: Removed useless headers and codes
    [CPUFREQ] EXYNOS: Make EXYNOS common cpufreq driver
    [CPUFREQ] powernow-k8: Update copyright, maintainer and documentation information
    [CPUFREQ] powernow-k8: Fix indexing issue
    [CPUFREQ] powernow-k8: Avoid Pstate MSR accesses on systems supporting CPB
    [CPUFREQ] update lpj only if frequency has changed
    [CPUFREQ] cpufreq:userspace: fix cpu_cur_freq updation
    [CPUFREQ] Remove wall variable from cpufreq_gov_dbs_init()
    [CPUFREQ] EXYNOS4210: cpufreq code is changed for stable working
    [CPUFREQ] EXYNOS4210: Update frequency table for cpu divider
    [CPUFREQ] EXYNOS4210: Remove code about bus on cpufreq
    [CPUFREQ] s3c64xx: Use pr_fmt() for consistent log messages
    cpufreq: OMAP: fixup for omap_device changes, include
    cpufreq: OMAP: fix freq_table leak
    cpufreq: OMAP: put clk if cpu_init failed
    cpufreq: OMAP: only supports OPP library
    cpufreq: OMAP: dont support !freq_table
    cpufreq: OMAP: deny initialization if no mpudev
    cpufreq: OMAP: move clk name decision to init
    cpufreq: OMAP: notify even with bad boot frequency
    ...

    Linus Torvalds
     

09 Jan, 2012

2 commits


08 Jan, 2012

1 commit

  • * 'driver-core-next' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/driver-core: (73 commits)
    arm: fix up some samsung merge sysdev conversion problems
    firmware: Fix an oops on reading fw_priv->fw in sysfs loading file
    Drivers:hv: Fix a bug in vmbus_driver_unregister()
    driver core: remove __must_check from device_create_file
    debugfs: add missing #ifdef HAS_IOMEM
    arm: time.h: remove device.h #include
    driver-core: remove sysdev.h usage.
    clockevents: remove sysdev.h
    arm: convert sysdev_class to a regular subsystem
    arm: leds: convert sysdev_class to a regular subsystem
    kobject: remove kset_find_obj_hinted()
    m86k: gpio - convert sysdev_class to a regular subsystem
    mips: txx9_sram - convert sysdev_class to a regular subsystem
    mips: 7segled - convert sysdev_class to a regular subsystem
    sh: dma - convert sysdev_class to a regular subsystem
    sh: intc - convert sysdev_class to a regular subsystem
    power: suspend - convert sysdev_class to a regular subsystem
    power: qe_ic - convert sysdev_class to a regular subsystem
    power: cmm - convert sysdev_class to a regular subsystem
    s390: time - convert sysdev_class to a regular subsystem
    ...

    Fix up conflicts with 'struct sysdev' removal from various platform
    drivers that got changed:
    - arch/arm/mach-exynos/cpu.c
    - arch/arm/mach-exynos/irq-eint.c
    - arch/arm/mach-s3c64xx/common.c
    - arch/arm/mach-s3c64xx/cpu.c
    - arch/arm/mach-s5p64x0/cpu.c
    - arch/arm/mach-s5pv210/common.c
    - arch/arm/plat-samsung/include/plat/cpu.h
    - arch/powerpc/kernel/sysfs.c
    and fix up cpu_is_hotpluggable() as per Greg in include/linux/cpu.h

    Linus Torvalds
     

07 Jan, 2012

1 commit

  • This resolves the conflict in the arch/arm/mach-s3c64xx/s3c6400.c file,
    and it fixes the build error in the arch/x86/kernel/microcode_core.c
    file, that the merge did not catch.

    The microcode_core.c patch was provided by Stephen Rothwell
    who was invaluable in the merge issues involved
    with the large sysdev removal process in the driver-core tree.

    Signed-off-by: Greg Kroah-Hartman

    Greg Kroah-Hartman
     

06 Jan, 2012

5 commits

  • Signed-off-by: Andreas Herrmann
    Signed-off-by: Dave Jones

    Andreas Herrmann
     
  • The driver uses the pstate number from the status register as index in
    its table of ACPI pstates (powernow_table). This is wrong as this is
    not a 1-to-1 mapping.

    For example we can have _PSS information to just utilize Pstate 0 and
    Pstate 4, ie.

    powernow-k8: Core Performance Boosting: on.
    powernow-k8: 0 : pstate 0 (2200 MHz)
    powernow-k8: 1 : pstate 4 (1400 MHz)

    In this example the driver's powernow_table has just 2 entries. Using
    the pstate number (4) as index into this table is just plain wrong.

    Signed-off-by: Andreas Herrmann
    Signed-off-by: Dave Jones

    Andreas Herrmann
     
  • Due to CPB we can't directly map SW Pstates to Pstate MSRs. Get rid of
    the paranoia check. (assuming that the ACPI Pstate information is
    correct.)

    Signed-off-by: Andreas Herrmann
    Signed-off-by: Dave Jones

    Andreas Herrmann
     
  • During scaling up of cpu frequency, loops_per_jiffy
    is updated upon invoking PRECHANGE notifier.
    If setting to new frequency fails in cpufreq driver,
    lpj is left at incorrect value.

    Hence update lpj only if cpu frequency is changed,
    i.e. upon invoking POSTCHANGE notifier.

    Penalty would be that during time period between
    changing cpu frequency & invocation of POSTCHANGE
    notifier, udelay(x) may not gurantee minimal delay
    of 'x' us for frequency scaling up operation.

    Perhaps a better solution would be to define
    CPUFREQ_ABORTCHANGE & handle accordingly, but then
    it would be more intrusive (using ABORTCHANGE may
    help drivers also; if any has registered notifier
    and expect POST for a PRECHANGE, their needs can
    be taken care using ABORT)

    Signed-off-by: Afzal Mohammed
    Signed-off-by: Dave Jones

    Afzal Mohammed
     
  • CPU frequency is guranteed to be changed on notifier callback with
    CPUFREQ_POSTCHANGE. Notifier callback with CPUFREQ_PRECHANGE does
    not gurantee a change in frequency; after it, if cpufreq driver is
    unable to change CPU to new frequency. This results in wrong
    information being fed to user (if setting CPU frequency fails)
    upon doing like,

    cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_setspeed

    Hence in userspace governer update cpu_cur_freq only if notifier
    has been called with POSTCHANGE.

    Signed-off-by: Afzal Mohammed
    Signed-off-by: Dave Jones

    Afzal Mohammed
     

22 Dec, 2011

1 commit

  • This moves the 'cpu sysdev_class' over to a regular 'cpu' subsystem
    and converts the devices to regular devices. The sysdev drivers are
    implemented as subsystem interfaces now.

    After all sysdev classes are ported to regular driver core entities, the
    sysdev implementation will be entirely removed from the kernel.

    Userspace relies on events and generic sysfs subsystem infrastructure
    from sysdev devices, which are made available with this conversion.

    Cc: Haavard Skinnemoen
    Cc: Hans-Christian Egtvedt
    Cc: Tony Luck
    Cc: Fenghua Yu
    Cc: Arnd Bergmann
    Cc: Benjamin Herrenschmidt
    Cc: Paul Mackerras
    Cc: Martin Schwidefsky
    Cc: Heiko Carstens
    Cc: Paul Mundt
    Cc: "David S. Miller"
    Cc: Chris Metcalf
    Cc: Thomas Gleixner
    Cc: Ingo Molnar
    Cc: "H. Peter Anvin"
    Cc: Borislav Petkov
    Cc: Tigran Aivazian
    Cc: Len Brown
    Cc: Zhang Rui
    Cc: Dave Jones
    Cc: Peter Zijlstra
    Cc: Russell King
    Cc: Andrew Morton
    Cc: Arjan van de Ven
    Cc: "Rafael J. Wysocki"
    Cc: "Srivatsa S. Bhat"
    Signed-off-by: Kay Sievers
    Signed-off-by: Greg Kroah-Hartman

    Kay Sievers
     

20 Dec, 2011

1 commit


15 Dec, 2011

1 commit


09 Dec, 2011

5 commits


06 Dec, 2011

1 commit

  • This patch changes fields in cpustat from a structure, to an
    u64 array. Math gets easier, and the code is more flexible.

    Signed-off-by: Glauber Costa
    Reviewed-by: KAMEZAWA Hiroyuki
    Cc: Linus Torvalds
    Cc: Andrew Morton
    Cc: Paul Tuner
    Signed-off-by: Peter Zijlstra
    Link: http://lkml.kernel.org/r/1322498719-2255-2-git-send-email-glommer@parallels.com
    Signed-off-by: Ingo Molnar

    Glauber Costa
     

03 Dec, 2011

1 commit


12 Nov, 2011

1 commit

  • The variable i is removed by commit ded8433
    "[CPUFREQ] db8500: remove unneeded for loop iteration over freq_table",
    but current code to print available frequencies still uses the i variable.
    Thus add the i variable back to fix below buld error:

    CC drivers/cpufreq/db8500-cpufreq.o
    drivers/cpufreq/db8500-cpufreq.c: In function 'db8500_cpufreq_init':
    drivers/cpufreq/db8500-cpufreq.c:123: error: 'i' undeclared (first use in this function)
    drivers/cpufreq/db8500-cpufreq.c:123: error: (Each undeclared identifier is reported only once
    drivers/cpufreq/db8500-cpufreq.c:123: error: for each function it appears in.)
    make[2]: *** [drivers/cpufreq/db8500-cpufreq.o] Error 1
    make[1]: *** [drivers/cpufreq] Error 2
    make: *** [drivers] Error 2

    This patch also fixes using uninitialized i variable as array index.

    Signed-off-by: Axel Lin
    Acked-by: Linus Walleij
    Signed-off-by: Dave Jones

    Axel Lin
     

11 Nov, 2011

1 commit


09 Nov, 2011

10 commits

  • We use a single frequency table for multiple CPUs. But, with
    OMAP4, since we have multiple CPUs, the cpu_init call for CPU1
    causes freq_table previously allocated for CPU0 to be overwritten.
    In addition, we dont free the table on exit path.

    We solve this by maintaining an atomic type counter to ensure
    just a single table exists at a given time.

    Signed-off-by: Nishanth Menon
    Signed-off-by: Kevin Hilman

    Nishanth Menon
     
  • Release the mpu_clk in fail paths.

    Reported-by: Todd Poynor
    Signed-off-by: Nishanth Menon
    Signed-off-by: Kevin Hilman

    Nishanth Menon
     
  • OMAP2 is the only family using clk_[init|exit]_cpufreq_table, however,
    the cpufreq code does not currently use clk_init_cpufreq_table. As a
    result, it is unusuable for OMAP2 and only usable only on platforms
    using OPP library.

    Remove the unbalanced clk_exit_cpufreq_table(). Any platforms where
    OPPs are not availble will fail on init because a freq table will not
    be properly initialized.

    Signed-off-by: Nishanth Menon
    [khilman@ti.com: changelog edits, and graceful failure mode changes]
    Signed-off-by: Kevin Hilman

    Nishanth Menon
     
  • OMAP2+ all have frequency tables, hence the hacks we had for older
    silicon do not need to be carried forward. As part of this change,
    use cpufreq_frequency_table_target to find the best match for
    frequency requested.

    Signed-off-by: Nishanth Menon
    Signed-off-by: Kevin Hilman

    Nishanth Menon
     
  • if we do not have mpu_dev we normally fail in cpu_init. It is better
    to fail driver registration if the devices are not available.

    Signed-off-by: Nishanth Menon
    Signed-off-by: Kevin Hilman

    Nishanth Menon
     
  • Clk name does'nt need to dynamically detected during clk init.
    move them off to driver initialization, if we dont have a clk name,
    there is no point in registering the driver anyways. The actual clk
    get and put is left at cpu_init and exit functions.

    Signed-off-by: Nishanth Menon
    Signed-off-by: Kevin Hilman

    Nishanth Menon
     
  • Sometimes, bootloaders starts up with a frequency which is not
    in the OPP table. At cpu_init, policy->cur contains the frequency
    we pick at boot. It is possible that system might have fixed
    it's boot frequency later on as part of power initialization.
    After this condition, the first call to omap_target results in the
    following:

    omap_getspeed(actual device frequency) != policy->cur(frequency that
    cpufreq thinks that the system is at), and it is possible that
    freqs.old == freqs.new (because the governor requested a scale down).

    We exit without triggering the notifiers in the current code, which
    does'nt let code which depends on cpufreq_notify_transition to have
    accurate information as to what the system frequency is.

    Instead, we do a normal transition if policy->cur is wrong, then,
    freqs.old will be the actual cpu frequency, freqs.new will be the
    actual new cpu frequency and all required notifiers have the accurate
    information.

    Acked-by: Nishanth Menon
    Signed-off-by: Colin Cross
    Signed-off-by: Kevin Hilman

    Colin Cross
     
  • Enable all CPUs in the shared policy in the CPU init callback.
    Otherwise, the governor CPUFREQ_GOV_START event is invoked with
    a policy that only includes the first CPU, leaving other CPUs
    uninitialized by the governor.

    Signed-off-by: Todd Poynor
    Acked-by: Santosh Shilimkar
    Signed-off-by: Kevin Hilman

    Todd Poynor
     
  • On OMAP SMP configuartion, both processors share the voltage
    and clock. So both CPUs needs to be scaled together and hence
    needs software co-ordination.

    Also, update lpj with reference value to avoid progressive error.

    Adjust _both_ the per-cpu loops_per_jiffy and global lpj. Calibrate
    them with with reference to the initial values to avoid a
    progressively bigger and bigger error in the value over time.

    While at this, re-use the notifiers for UP/SMP since on UP machine or
    UP_ON_SMP policy->cpus mask would contain only the boot CPU.

    Based on initial SMP support by Santosh Shilimkar.

    Signed-off-by: Russell King
    Signed-off-by: Santosh Shilimkar
    [khilman@ti.com: due to overlap/rework, combined original Santosh patch
    and Russell's rework]
    Signed-off-by: Kevin Hilman

    Russell King
     
  • Move OMAP cpufreq driver from arch/arm/mach-omap2 into
    drivers/cpufreq, along with a few cleanups:

    - generalize support for better handling of different SoCs in the OMAP
    - use OPP layer instead of OMAP clock internals for frequency table init

    Signed-off-by: Santosh Shilimkar
    [khilman@ti.com: move to drivers]
    Signed-off-by: Kevin Hilman

    Santosh Shilimkar
     

07 Nov, 2011

1 commit

  • * 'modsplit-Oct31_2011' of git://git.kernel.org/pub/scm/linux/kernel/git/paulg/linux: (230 commits)
    Revert "tracing: Include module.h in define_trace.h"
    irq: don't put module.h into irq.h for tracking irqgen modules.
    bluetooth: macroize two small inlines to avoid module.h
    ip_vs.h: fix implicit use of module_get/module_put from module.h
    nf_conntrack.h: fix up fallout from implicit moduleparam.h presence
    include: replace linux/module.h with "struct module" wherever possible
    include: convert various register fcns to macros to avoid include chaining
    crypto.h: remove unused crypto_tfm_alg_modname() inline
    uwb.h: fix implicit use of asm/page.h for PAGE_SIZE
    pm_runtime.h: explicitly requires notifier.h
    linux/dmaengine.h: fix implicit use of bitmap.h and asm/page.h
    miscdevice.h: fix up implicit use of lists and types
    stop_machine.h: fix implicit use of smp.h for smp_processor_id
    of: fix implicit use of errno.h in include/linux/of.h
    of_platform.h: delete needless include
    acpi: remove module.h include from platform/aclinux.h
    miscdevice.h: delete unnecessary inclusion of module.h
    device_cgroup.h: delete needless include
    net: sch_generic remove redundant use of
    net: inet_timewait_sock doesnt need
    ...

    Fix up trivial conflicts (other header files, and removal of the ab3550 mfd driver) in
    - drivers/media/dvb/frontends/dibx000_common.c
    - drivers/media/video/{mt9m111.c,ov6650.c}
    - drivers/mfd/ab3550-core.c
    - include/linux/dmaengine.h

    Linus Torvalds
     

04 Nov, 2011

2 commits

  • * 'next' of git://github.com/kernelslacker/cpufreq:
    [CPUFREQ] db8500: support all frequencies
    [CPUFREQ] db8500: remove unneeded for loop iteration over freq_table
    [CPUFREQ] ARM Exynos4210 PM/Suspend compatibility with different bootloaders
    [CPUFREQ] ARM: ux500: send cpufreq notification for all cpus
    [CPUFREQ] e_powersaver: Allow user to lower maximum voltage
    [CPUFREQ] e_powersaver: Check BIOS limit for CPU frequency
    [CPUFREQ] e_powersaver: Additional checks
    [CPUFREQ] exynos4210: Show list of available frequencies

    Linus Torvalds
     
  • * 'for-next' of git://git.infradead.org/users/sameo/mfd-2.6: (80 commits)
    mfd: Fix missing abx500 header file updates
    mfd: Add missing include to intel_msic
    x86, mrst: add platform support for MSIC MFD driver
    mfd: Expose TurnOnStatus in ab8500 sysfs
    mfd: Remove support for early drop ab8500 chip
    mfd: Add support for ab8500 v3.3
    mfd: Add ab8500 interrupt disable hook
    mfd: Convert db8500-prcmu panic() into pr_crit()
    mfd: Refactor db8500-prcmu request_clock() function
    mfd: Rename db8500-prcmu init function
    mfd: Fix db5500-prcmu defines
    mfd: db8500-prcmu voltage domain consumers additions
    mfd: db8500-prcmu reset code retrieval
    mfd: db8500-prcmu tweak for modem wakeup
    mfd: Add db8500-pcmu watchdog accessor functions for watchdog
    mfd: hwacc power state db8500-prcmu accessor
    mfd: Add db8500-prcmu accessors for PLL and SGA clock
    mfd: Move to the new db500 PRCMU API
    mfd: Create a common interface for dbx500 PRCMU drivers
    mfd: Initialize DB8500 PRCMU regs
    ...

    Fix up trivial conflicts in
    arch/arm/mach-imx/mach-mx31moboard.c
    arch/arm/mach-omap2/board-omap3beagle.c
    arch/arm/mach-u300/include/mach/irqs.h
    drivers/mfd/wm831x-spi.c

    Linus Torvalds
     

01 Nov, 2011

2 commits


27 Oct, 2011

3 commits

  • This adds support for the 200 MHz frequency mode of the
    DB8500 SoC, and prints the available frequencies at init
    time.

    Cc: Vincent Guittot
    Signed-off-by: Linus Walleij
    Signed-off-by: Dave Jones

    Linus Walleij
     
  • Don't know why to do the loop iteration here. It looks unneeded.

    Signed-off-by: Axel Lin
    Signed-off-by: Dave Jones

    Axel Lin
     
  • We have various bootloaders for Exynos4210 machines. Some of they
    set the ARM core frequency at boot time even when the boot is a resume
    from suspend-to-RAM. Such changes may create inconsistency in the
    data of CPUFREQ driver and have incurred hang issues with suspend-to-RAM.

    This patch enables to save and restore CPU frequencies with pm-notifier and
    sets the frequency at the initial (boot-time) value so that there wouldn't
    be any inconsistency between bootloader and kernel. This patch does not
    use CPUFREQ's suspend/resume callbacks because they are syscore-ops, which
    do not allow to use mutex that is being used by regulators that are used by
    the target function.

    This also prevents any CPUFREQ transitions during suspend-resume context,
    which could be dangerous at noirq-context along with regulator framework.

    Signed-off-by: MyungJoo Ham
    Signed-off-by: Kyungmin Park
    Signed-off-by: Dave Jones

    MyungJoo Ham