linux/arch/arm
Nishanth Menon 49ded525d4 cpufreq: OMAP: instantiate omap-cpufreq as a platform_driver
As multi-platform build is being adopted by more and more ARM platforms,
initcall function should be used very carefully.  For example, when
CONFIG_ARM_OMAP2PLUS_CPUFREQ is built in the kernel, omap_cpufreq_init()
will be called on all the platforms to initialize omap-cpufreq driver.

Further, on OMAP, we now use Soc generic cpufreq-cpu0 driver using device
tree entries.  To allow cpufreq-cpu0 and omap-cpufreq drivers to co-exist
for OMAP in a single image, we need to ensure the following:
 1. With device tree boot, we use cpufreq-cpu0
 2. With non device tree boot, we use omap-cpufreq

In the case of (1), we will have cpu OPPs and regulator registered
as part of the device tree nodes, to ensure that omap-cpufreq
and cpufreq-cpu0 don't conflict in managing the frequency of the
same CPU, we should not permit omap-cpufreq to be probed.

In the case of (2), we will not have the cpufreq-cpu0 device, hence
only omap-cpufreq will be active.

To eliminate this undesired these effects, we change omap-cpufreq
driver to have it instantiated as a platform_driver and register
"omap-cpufreq" device only when booted without device tree nodes on
OMAP platforms.

This allows the following:
 a) Will only run on platforms that create the platform_device
    "omap-cpufreq".
 b) Since the platform_device is registered only when device tree nodes
    are *not* populated, omap-cpufreq driver does not conflict with
    the usage of cpufreq-cpu0 driver which is used on OMAP platforms when
    device tree nodes are present.

Inspired by commit 5553f9e26f
(cpufreq: instantiate cpufreq-cpu0 as a platform_driver)

[robherring2@gmail.com: reported conflict of omap-cpufreq vs other
driver in an non-device tree supported boot]
Reported-by: Rob Herring <robherring2@gmail.com>
Signed-off-by: Nishanth Menon <nm@ti.com>
Acked-by: Viresh Kumar <viresh.kumar@linaro.org>
Signed-off-by: Kevin Hilman <khilman@linaro.org>
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
2013-04-10 13:41:00 +02:00
..
boot arm-soc: bug fixes for 3.9-rc4 2013-03-25 09:26:10 -07:00
common ARM: GIC: fix GIC cpumask initialization 2013-02-08 10:17:22 +00:00
configs Fix few regressions, omap3 pm init with device tree, and some 2013-03-05 23:22:00 +01:00
crypto ARM: 7626/1: arm/crypto: Make asm SHA-1 and AES code Thumb-2 compatible 2013-01-13 12:41:22 +00:00
include Fixes: 2013-03-12 20:25:53 -07:00
kernel ARM: 7674/1: smp: Avoid dummy clockevent being preferred over real hardware clock-event 2013-03-15 17:19:31 +00:00
kvm ARM: KVM: fix compilation after removal of user_alloc from struct kvm_memory_slot 2013-02-25 11:48:41 +02:00
lib ARM: 7670/1: fix the memset fix 2013-03-12 12:18:47 +00:00
mach-at91 arm-soc: bug fixes for 3.9-rc3 2013-03-18 08:17:14 -07:00
mach-bcm Merge remote-tracking branches 'arm-soc/irqchip/gic-vic-move' and 'arm-soc/timer/cleanup' into soc 2013-01-24 17:57:20 +09:00
mach-bcm2835 arm-soc: soc-specific updates 2013-02-21 15:27:22 -08:00
mach-clps711x The series cleans up ARCH_HAS_DECOMP_WDOG and arch_decomp_wdog which 2013-02-05 10:26:20 -08:00
mach-cns3xxx The series cleans up ARCH_HAS_DECOMP_WDOG and arch_decomp_wdog which 2013-02-05 10:26:20 -08:00
mach-davinci cpufreq: davinci: move cpufreq driver to drivers/cpufreq 2013-04-08 13:02:31 +02:00
mach-dove arm-soc: mvebu platform changes 2013-02-28 20:09:24 -08:00
mach-ebsa110 The series cleans up ARCH_HAS_DECOMP_WDOG and arch_decomp_wdog which 2013-02-05 10:26:20 -08:00
mach-ep93xx The series cleans up ARCH_HAS_DECOMP_WDOG and arch_decomp_wdog which 2013-02-05 10:26:20 -08:00
mach-exynos arm: exynos: Enable OPP library support for exynos5440 2013-04-10 13:19:27 +02:00
mach-footbridge ARM: fix CONFIG_VIRT_TO_BUS handling 2013-03-18 13:49:57 +00:00
mach-gemini The series cleans up ARCH_HAS_DECOMP_WDOG and arch_decomp_wdog which 2013-02-05 10:26:20 -08:00
mach-h720x The series cleans up ARCH_HAS_DECOMP_WDOG and arch_decomp_wdog which 2013-02-05 10:26:20 -08:00
mach-highbank Merge branch 'timer/cleanup' into late/mvebu2 2013-02-28 18:54:15 +01:00
mach-imx cpufreq: drivers: Remove unnecessary assignments of policy-> members 2013-04-02 15:26:32 +02:00
mach-integrator cpufreq: integrator: move cpufreq driver to drivers/cpufreq 2013-04-08 13:02:31 +02:00
mach-iop13xx Merge branch 'timer/cleanup' into late/mvebu2 2013-02-28 18:54:15 +01:00
mach-iop32x The series cleans up ARCH_HAS_DECOMP_WDOG and arch_decomp_wdog which 2013-02-05 10:26:20 -08:00
mach-iop33x The series cleans up ARCH_HAS_DECOMP_WDOG and arch_decomp_wdog which 2013-02-05 10:26:20 -08:00
mach-ixp4xx ARM: w1-gpio: fix erroneous gpio requests 2013-03-12 16:20:45 -07:00
mach-kirkwood ARM: kirkwood: fix to retain gbe MAC addresses for DT kernels 2013-03-08 21:34:16 +00:00
mach-ks8695 Merge branch 'timer/cleanup' into late/mvebu2 2013-02-28 18:54:15 +01:00
mach-l7200/include/mach
mach-lpc32xx The series cleans up ARCH_HAS_DECOMP_WDOG and arch_decomp_wdog which 2013-02-05 10:26:20 -08:00
mach-mmp ARM: mmp: add platform_device head file in gplugd 2013-03-15 16:27:53 +08:00
mach-msm Merge branch 'timer/cleanup' into late/mvebu2 2013-02-28 18:54:15 +01:00
mach-mv78xx0 Merge branch 'timer/cleanup' into late/mvebu2 2013-02-28 18:54:15 +01:00
mach-mvebu arm-soc: mvebu platform changes 2013-02-28 20:09:24 -08:00
mach-mxs ARM: video: mxs: Fix mxsfb misconfiguring VDCTRL0 2013-03-19 11:07:58 +08:00
mach-netx ARM: 7642/1: netx: bump IRQ offset to 64 2013-03-03 22:54:11 +00:00
mach-nomadik Merge branch 'timer/cleanup' into late/mvebu2 2013-02-28 18:54:15 +01:00
mach-omap1 ARM: OMAP1: Fix build related to kgdb.h no longer including serial_8250.h 2013-03-04 11:12:16 -08:00
mach-omap2 cpufreq: OMAP: instantiate omap-cpufreq as a platform_driver 2013-04-10 13:41:00 +02:00
mach-orion5x Merge branch 'timer/cleanup' into late/mvebu2 2013-02-28 18:54:15 +01:00
mach-picoxcell Merge remote-tracking branches 'arm-soc/irqchip/gic-vic-move' and 'arm-soc/timer/cleanup' into soc 2013-01-24 17:57:20 +09:00
mach-prima2 Merge branch 'timer/cleanup' into late/mvebu2 2013-02-28 18:54:15 +01:00
mach-pxa cpufreq: pxa2xx: move cpufreq driver to drivers/cpufreq 2013-04-08 13:02:31 +02:00
mach-realview arm-soc: cleanups 2013-02-21 14:58:40 -08:00
mach-rpc The series cleans up ARCH_HAS_DECOMP_WDOG and arch_decomp_wdog which 2013-02-05 10:26:20 -08:00
mach-s3c24xx cpufreq: Notify all policy->cpus in cpufreq_notify_transition() 2013-04-02 15:24:00 +02:00
mach-s3c64xx Merge branch 'timer/cleanup' into late/mvebu2 2013-02-28 18:54:15 +01:00
mach-s5p64x0 arm-soc: cleanups 2013-02-21 14:58:40 -08:00
mach-s5pc100 Merge remote-tracking branches 'arm-soc/irqchip/gic-vic-move' and 'arm-soc/timer/cleanup' into soc 2013-01-24 17:57:20 +09:00
mach-s5pv210 Merge branch 'v3.9-samsung-fixes-1' of git://git.kernel.org/pub/scm/linux/kernel/git/kgene/linux-samsung into fixes 2013-03-14 23:57:57 +01:00
mach-sa1100 cpufreq: sa11x0: move cpufreq driver to drivers/cpufreq 2013-04-10 13:19:24 +02:00
mach-shark The series cleans up ARCH_HAS_DECOMP_WDOG and arch_decomp_wdog which 2013-02-05 10:26:20 -08:00
mach-shmobile ARM: shmobile: marzen: Include mmc/host.h 2013-03-08 16:29:23 +01:00
mach-socfpga Merge branch 'socfpga/hw' into next/soc 2013-02-11 19:37:51 -08:00
mach-spear3xx ARM: spear3xx: Use correct pl080 header file 2013-03-12 10:56:32 +01:00
mach-spear6xx Merge branch 'next' of git://git.infradead.org/users/vkoul/slave-dma 2013-02-26 09:24:48 -08:00
mach-spear13xx Revert "ARM: SPEAr13xx: Pass DW DMAC platform data from DT" 2013-02-20 15:48:02 +05:30
mach-sunxi Merge branch 'timer/cleanup' into late/mvebu2 2013-02-28 18:54:15 +01:00
mach-tegra cpufreq: tegra: Move driver to drivers/cpufreq 2013-04-08 13:02:30 +02:00
mach-u300 Merge branch 'timer/cleanup' into late/mvebu2 2013-02-28 18:54:15 +01:00
mach-ux500 Merge branch 'timer/cleanup' into late/mvebu2 2013-02-28 18:54:15 +01:00
mach-versatile Merge branch 'timer/cleanup' into late/mvebu2 2013-02-28 18:54:15 +01:00
mach-vexpress Merge branch 'timer/cleanup' into late/mvebu2 2013-02-28 18:54:15 +01:00
mach-virt ARM: mach-virt: fixup machine descriptor after removal of sys_timer 2013-02-11 10:39:30 -08:00
mach-vt8500 arm-soc: soc-specific updates 2013-02-21 15:27:22 -08:00
mach-w90x900 arm-soc: cleanups 2013-02-21 14:58:40 -08:00
mach-zynq arm: zynq: Add missing irqchip.h to common.c 2013-01-29 10:55:28 -08:00
mm Merge branch 'fixes-for-3.9' of git://git.linaro.org/people/mszyprowski/linux-dma-mapping 2013-03-15 17:35:03 -07:00
net ARM:net: an issue for k which is u32, never < 0 2013-03-12 11:33:05 -04:00
nwfpe
oprofile
plat-iop ARM: use clockevents_config_and_register() where possible 2013-01-14 10:12:42 -08:00
plat-omap arm-soc: late OMAP changes 2013-02-28 20:00:40 -08:00
plat-orion arm: plat-orion: fix address decoding when > 4GB is used 2013-03-08 22:07:19 +00:00
plat-pxa
plat-samsung Merge branch 'timer/cleanup' into late/mvebu2 2013-02-28 18:54:15 +01:00
plat-spear ARM: SPEAr13xx: Fix typo "ARCH_HAVE_CPUFREQ" 2013-03-05 23:30:24 +01:00
plat-versatile Merge branch 'for-arm-soc/arch-timers' of git://git.kernel.org/pub/scm/linux/kernel/git/will/linux into kvm-arm/timer 2013-02-11 19:03:52 +00:00
tools
vfp ARM: Fix broken commit 0cc41e4a21 corrupting kernel messages 2013-03-01 21:09:59 +00:00
xen xen: implement updated XENMEM_add_to_physmap_range ABI 2013-02-19 22:01:55 -05:00
Kconfig cpufreq: sa11x0: move cpufreq driver to drivers/cpufreq 2013-04-10 13:19:24 +02:00
Kconfig-nommu
Kconfig.debug ARM: imx: add dependency check for DEBUG_IMX_UART_PORT 2013-03-19 13:56:05 +08:00
Makefile arm-soc: virtualization changes 2013-02-21 15:40:16 -08:00