summaryrefslogtreecommitdiff
AgeCommit message (Collapse)AuthorFilesLines
2013-10-21ARM: imx: ensure dsm_request signal is not asserted when setting LPMShawn Guo3-2/+31
There is a defect in imx6 LPM design. When SW tries to enter low power mode with following sequence, the chip will enter low power mode before A9 CPU execute WFI instruction: 1. Set CCM_CLPCR[1:0] to 2'b00; 2. ARM CPU enters WFI; 3. ARM CPU wakeup from an interrupt event, which is masked by GPC or not visible to GPC, such as interrupt from local timer; 4. Set CCM_CLPCR[1:0] to 2'b01 or 2'b10; 5. ARM CPU execute WFI. Before the last step, the chip will enter WAIT mode if CCM_CLPCR[1:0] is set to 2'b01, or enter STOP mode if CCM_CLPCR[1:0] is set to 2'b10. The patch implements a recommended workaround for this issue. 1. SW triggers irq #32(IOMUX) to be always pending manually by setting IOMUX_GPR1_GINT bit; 2. SW should then unmask it in GPC before setting CCM LPM; 3. SW should mask it right after CCM LPM is set (bit0-1 of CCM_CLPCR). Signed-off-by: Shawn Guo <shawn.guo@linaro.org>
2013-10-21ARM: imx6q: call WB and RBC configuration from imx6q_pm_enter()Shawn Guo1-15/+4
The WB and RBC configuration calls are currently made from imx6q_set_lpm() for WAIT_CLOCKED and WAIT_UNCLOCKED mode with a simple state tracking. This becomes unnecessary since we can make the calls from imx6q_pm_enter() directly now for suspend. More importantly, the current call of imx6q_enable_wb() from imx6q_set_lpm() is buggy. The CLPCR register bits configured by imx6q_enable_wb() will get lost, because imx6q_set_lpm() caches the same register and write it back at the end of the function. That's why the imx6dl suspend/resume does not work currently - the wakeup from suspend triggers a reset on imx6dl. Moves the WB and RBC calls into imx6q_pm_enter() to save the state tracking and fixes above bug, so that suspend/resume can start working on imx6dl. Signed-off-by: Shawn Guo <shawn.guo@linaro.org>
2013-10-21ARM: imx6q: move low-power code out of clock driverShawn Guo3-154/+156
The LPM (Low Power Mode) code that currently sits in imx6q clock driver will be reused by imx6sl. Let's move it into pm-imx6q.c, so that we can keep clock driver SoC specific and reuse pm-imx6q.c on imx6sl. In order to avoid adding another ioremap for CCM block, imx6q_pm_set_ccm_base() is created to let clock driver set up ccm_base for pm code. During the move, the unused CCGR macros get removed. Signed-off-by: Shawn Guo <shawn.guo@linaro.org>
2013-10-21ARM: imx: drop extern with function prototypes in common.hShawn Guo1-85/+85
Since commit 70dc8a4 (checkpatch: warn when using extern with function prototypes in .h files), we will get checkpatch warning when updating common.h following the existing convention which has extern for function prototypes. Let's change the convention to not use extern with function prototypes in this header. Signed-off-by: Shawn Guo <shawn.guo@linaro.org>
2013-10-21ARM: imx: reset core along with enable/disable operationShawn Guo1-0/+1
From hotplug stress test result, resetting core during enable/disable operation can improve cpu hotplug stability. So let's set SRC reset bit in imx_enable_cpu() for the core when its enable bit is accessed. Signed-off-by: Shawn Guo <shawn.guo@linaro.org>
2013-10-21ARM: imx: do not return from imx_cpu_die() callShawn Guo1-1/+3
When imx_cpu_die() is being called, the cpu should never return from the call but just in WFI and wait for hardware to take it down. So let's do cpu_do_idle() repeatly in the call. Doing this help improve the relibility of hotplug operation. Signed-off-by: Shawn Guo <shawn.guo@linaro.org>
2013-10-21ARM: imx_v6_v7_defconfig: Select CONFIG_PROVE_LOCKINGFabio Estevam1-0/+1
This is very useful for detecting 'circular locking dependency' issues. Signed-off-by: Fabio Estevam <fabio.estevam@freescale.com> Signed-off-by: Shawn Guo <shawn.guo@linaro.org>
2013-10-21ARM: imx_v6_v7_defconfig: Enable LEDS_GPIO related optionsFabio Estevam1-0/+7
Signed-off-by: Fabio Estevam <fabio.estevam@freescale.com> Signed-off-by: Shawn Guo <shawn.guo@linaro.org>
2013-10-21ARM: mxs_defconfig: Turn off CONFIG_DEBUG_GPIOFabio Estevam1-1/+0
Having CONFIG_DEBUG_GPIO=y leads to several debug messages polluting kernel log: [ 0.580325] of_get_named_gpio_flags: can't parse gpios property of node '/regulators/3p3v[0]' [ 0.581185] 3P3V: 3300 mV [ 0.584827] of_get_named_gpio_flags exited with status 124 [ 0.585852] vddio-sd0: 3300 mV [ 0.590023] of_get_named_gpio_flags exited with status 79 [ 0.590770] fec-3v3: 3300 mV [ 0.594805] of_get_named_gpio_flags exited with status 105 [ 0.595491] usb0_vbus: 5000 mV [ 0.599687] of_get_named_gpio_flags exited with status 104 [ 0.600380] usb1_vbus: 5000 mV [ 0.604463] of_get_named_gpio_flags exited with status 126 [ 0.605153] lcd-3v3: 3300 mV [ 0.608970] of_get_named_gpio_flags exited with status 77 Turn this option off, as these messages are not really useful for normal usage. Signed-off-by: Fabio Estevam <fabio.estevam@freescale.com> Signed-off-by: Shawn Guo <shawn.guo@linaro.org>
2013-10-21ARM: imx: replace imx6q_restart() with mxc_restart()Shawn Guo3-32/+12
The imx6q_restart() works fine with normal reboot but will run into problem with emergency reboot like sysrq-b. In that case, of_iomap() gets called from interrupt context and hence triggers the BUG_ON in __get_vm_area_node(). Actually, since commit c1e31d1 (ARM: imx: create mxc_arch_reset_init_dt() for DT boot), imx6q/dl should try to use mxc_restart() by calling mxc_arch_reset_init_dt() beforehand, where things like of_iomap() can be done. The patch updates mxc_restart() a little bit to get it work for imx6q/dl and kill imx6q_restart() completely. Reported-by: Nathan Lynch <nathan_lynch@mentor.com> Signed-off-by: Shawn Guo <shawn.guo@linaro.org>
2013-10-21ARM: mach-imx: mm-imx5: Retrieve iomuxc base address from dtFabio Estevam1-1/+8
As mx53 is a dt-only SoC, we should retrieve the iomuxc base address from the device tree, instead of using the old MX53_IO_ADDRESS method. Signed-off-by: Fabio Estevam <fabio.estevam@freescale.com> Signed-off-by: Shawn Guo <shawn.guo@linaro.org>
2013-10-21ARM: mach-imx: mm-imx5: Retrieve tzic base address from dtFabio Estevam1-1/+9
As mx53 is a dt-only SoC, we should retrieve the tzic base address from the device tree, instead of using the old MX53_IO_ADDRESS method. Signed-off-by: Fabio Estevam <fabio.estevam@freescale.com> Signed-off-by: Shawn Guo <shawn.guo@linaro.org>
2013-10-21ARM: mach-imx: clk-imx51-imx53: Retrieve base address and irq from dtFabio Estevam1-4/+11
As mx53 is a dt-only SoC, we should retrieve the gpt base address and irq from the device tree, instead of using the old MX53_IO_ADDRESS method. Signed-off-by: Fabio Estevam <fabio.estevam@freescale.com> Signed-off-by: Shawn Guo <shawn.guo@linaro.org>
2013-10-21ARM: mxs_defconfig: Add CHIPIDEA_UDC supportFabio Estevam1-2/+4
Generated by doing: make mxs_defconfig Manually selected the CHIPIDEA_UDC driver make savedefconfig cp defconfig arch/arm/configs/mxs_defconfig Signed-off-by: Fabio Estevam <fabio.estevam@freescale.com> Signed-off-by: Shawn Guo <shawn.guo@linaro.org>
2013-10-21ARM: imx: Include linux/err.hThierry Reding1-1/+1
The IS_ERR() macro is defined in the linux/err.h header file, so include it explicitly. Signed-off-by: Thierry Reding <treding@nvidia.com> Signed-off-by: Shawn Guo <shawn.guo@linaro.org>
2013-10-21ARM: imx_v6_v7_defconfig: Add CHIPIDEA_UDC supportFabio Estevam1-1/+4
Generated by doing: make imx_v6_v7_defconfig Manually selected the CHIPIDEA_UDC driver make savedefconfig cp defconfig arch/arm/configs/imx_v6_v7_defconfig Signed-off-by: Fabio Estevam <fabio.estevam@freescale.com> Signed-off-by: Shawn Guo <shawn.guo@linaro.org>
2013-10-21ARM: imx_v6_v7_defconfig: Add SPDIF supportFabio Estevam1-2/+1
Generated by doing: make imx_v6_v7_defconfig Manually selected the IMX_SPDIF driver make savedefconfig cp defconfig arch/arm/configs/imx_v6_v7_defconfig Signed-off-by: Fabio Estevam <fabio.estevam@freescale.com> Signed-off-by: Shawn Guo <shawn.guo@linaro.org>
2013-10-21ARM: imx6q: clock and Kconfig update for PCIe supportSean Cross2-0/+6
Update imx6q clock initialization and Kconfig for PCIe support. Signed-off-by: Sean Cross <xobs@kosagi.com> Signed-off-by: Shawn Guo <shawn.guo@linaro.org>
2013-10-21ARM: imx: Add LVDS general-purpose clocks to i.MX6QSean Cross2-1/+23
The i.MX6 has two general-purpose LVDS clocks that can be driven from a variety of sources. This patch adds a mux and a gate for both of these clocks. Signed-off-by: Sean Cross <xobs@kosagi.com> Signed-off-by: Shawn Guo <shawn.guo@linaro.org>
2013-10-21ARM: imx: remove stale mx53_display_revision() declarationShawn Guo1-1/+0
The mx53_display_revision() declaration in common.h is stale and used nowhere, so remove it. Signed-off-by: Shawn Guo <shawn.guo@linaro.org>
2013-10-21ARM: imx6: report soc info via soc deviceShawn Guo6-2/+98
The patch enables soc bus infrastructure and adds a function imx_soc_device_init() to report soc info via soc device interface for imx6qdl and imx6sl. With the support, user space can get soc related info by looking at sysfs like below. $ cat /sys/devices/soc0/machine Freescale i.MX6 Quad SABRE Smart Device Board $ cat /sys/devices/soc0/family Freescale i.MX $ cat /sys/devices/soc0/soc_id i.MX6Q $ cat /sys/devices/soc0/revision 1.2 Signed-off-by: Shawn Guo <shawn.guo@linaro.org>
2013-10-21ARM: imx: use imx_init_revision_from_anatop() on imx6slShawn Guo3-2/+9
Add imx6sl support into imx_init_revision_from_anatop(), so that it can be used to initialize cpu type and revision on imx6sl. Signed-off-by: Shawn Guo <shawn.guo@linaro.org>
2013-10-21ARM: imx: add a common function to initialize revision from anatopShawn Guo3-31/+23
The patch creates a common function imx_init_revision_from_anatop() by merging imx6q_init_revision() and imx_anatop_get_digprog(), so that any SoC that encodes revision info in anatop can use it to initialize revision. Signed-off-by: Shawn Guo <shawn.guo@linaro.org>
2013-10-21ARM: imx6q: use common soc revision helpersShawn Guo3-12/+7
It calls imx_set_soc_revision() to set up soc revision in imx6q_init_revision(), and replaces all the occurrences of imx6q_revision() with common helper imx_get_soc_revision(). Signed-off-by: Shawn Guo <shawn.guo@linaro.org>
2013-10-21ARM: imx: add soc revision helper functionsShawn Guo2-0/+14
Similar to what we do for cpu type, the patch adds helper functions imx_set_soc_revision() and imx_get_soc_revision() to maintain imx_soc_revision in cpu.c. Signed-off-by: Shawn Guo <shawn.guo@linaro.org>
2013-10-21ARM: imx: add low-level debug for vybridShawn Guo2-0/+34
Add low-level debug support for vybrid, so that earlyprintk can be enabled for debugging early boot issue. Signed-off-by: Shawn Guo <shawn.guo@linaro.org>
2013-10-21ARM: imx: remove IRQF_DISABLEDMichael Opdenacker7-10/+7
This flag is a NOOP since 2.6.35 and can be removed. This is an update for 3.11 of a patch already sent for 3.10 Signed-off-by: Michael Opdenacker <michael.opdenacker@free-electrons.com> Acked-by: Sascha Hauer <s.hauer@pengutronix.de> Signed-off-by: Shawn Guo <shawn.guo@linaro.org>
2013-10-21ARM: imx6sl: config iomux-gpr1 to select clock for fecFugang Duan1-0/+21
Config iomux-gpr1 to select clock source for fec system clock. Clear gpr1[14], gpr1[18-17] bit to select the fec clock source from internal anatop PLL. Signed-off-by: Fugang Duan <B38611@freescale.com> Signed-off-by: Shawn Guo <shawn.guo@linaro.org>
2013-10-21ARM: imx6sl: add imx6sl iomux-gpr field defineFugang Duan1-0/+5
Add imx6sl iomux-gpr register field define in "imx6q-iomuxc-gpr.h" header file, which is not fully define all iomux-gpr registers and fields, only add fec related macro define. Signed-off-by: Fugang Duan <B38611@freescale.com> Signed-off-by: Shawn Guo <shawn.guo@linaro.org>
2013-10-21ARM: imx6q: Add pll4_audio_div to clock treeNicolin Chen2-4/+6
There's a pll4_audio_div clock, an extra divider for pll4, missing in current clock tree, thus add it. Signed-off-by: Nicolin Chen <b42378@freescale.com> Signed-off-by: Shawn Guo <shawn.guo@linaro.org>
2013-10-21Merge remote-tracking branch 'shesselba/clk-of-init-v2_for-3.13' into imx/socShawn Guo44-465/+224
2013-09-29ARM: vt8500: remove custom .init_time hookSebastian Hesselbarth1-9/+0
With arch/arm calling of_clk_init(NULL) from time_init(), we can now remove custom .init_time hooks. Signed-off-by: Sebastian Hesselbarth <sebastian.hesselbarth@gmail.com> Acked-by: Tony Prisk <linux@prisktech.co.nz>
2013-09-29ARM: vexpress: remove custom .init_time hookSebastian Hesselbarth1-13/+1
With arch/arm calling of_clk_init(NULL) from time_init(), we can now remove custom .init_time hooks. The call to versatile_sched_clock_init is moved to .init_early instead, were it is also for non-DT boards. Signed-off-by: Sebastian Hesselbarth <sebastian.hesselbarth@gmail.com> Tested-by: Jon Medhurst (Tixy) <tixy@linaro.org> Acked-by: Pawel Moll <pawel.moll@arm.com>
2013-09-29ARM: tegra: remove custom .init_time hookSebastian Hesselbarth1-9/+0
With arch/arm calling of_clk_init(NULL) from time_init(), we can now remove custom .init_time hooks. Signed-off-by: Sebastian Hesselbarth <sebastian.hesselbarth@gmail.com> Acked-by: Stephen Warren <swarren@nvidia.com>
2013-09-29ARM: sunxi: remove custom .init_time hookSebastian Hesselbarth1-8/+0
With arch/arm calling of_clk_init(NULL) from time_init(), we can now remove custom .init_time hooks. Signed-off-by: Sebastian Hesselbarth <sebastian.hesselbarth@gmail.com> Acked-by: Maxime Ripard <maxime.ripard@free-electrons.com>
2013-09-29ARM: sti: remove custom .init_time hookSebastian Hesselbarth1-6/+4
With arch/arm calling of_clk_init(NULL) from time_init(), we can now remove custom .init_time hooks. To get rid of it, move l2cc init to .init_machine hook instead. Signed-off-by: Sebastian Hesselbarth <sebastian.hesselbarth@gmail.com> Acked-by: Srinivas Kandagatla <srinivas.kandagatla@st.com>
2013-09-29ARM: socfpga: remove custom .init_time hookSebastian Hesselbarth1-9/+0
With arch/arm calling of_clk_init(NULL) from time_init(), we can now remove custom .init_time hooks. Signed-off-by: Sebastian Hesselbarth <sebastian.hesselbarth@gmail.com> Acked-by: Dinh Nguyen <dinguyen@altera.com>
2013-09-29ARM: rockchip: remove custom .init_time hookSebastian Hesselbarth1-9/+0
With arch/arm calling of_clk_init(NULL) from time_init(), we can now remove custom .init_time hooks. Signed-off-by: Sebastian Hesselbarth <sebastian.hesselbarth@gmail.com> Acked-by: Heiko Stuebner <heiko@sntech.de>
2013-09-29ARM: prima2: remove custom .init_time hookSebastian Hesselbarth1-11/+0
With arch/arm calling of_clk_init(NULL) from time_init(), we can now remove custom .init_time hooks. Signed-off-by: Sebastian Hesselbarth <sebastian.hesselbarth@gmail.com> Acked-by: Barry Song <baohua.song@csr.com>
2013-09-29ARM: nspire: remove custom .init_time hookSebastian Hesselbarth1-9/+0
With arch/arm calling of_clk_init(NULL) from time_init(), we can now remove custom .init_time hooks. Signed-off-by: Sebastian Hesselbarth <sebastian.hesselbarth@gmail.com>
2013-09-29ARM: nomadik: remove custom .init_time hookSebastian Hesselbarth1-9/+0
With arch/arm calling of_clk_init(NULL) from time_init(), we can now remove custom .init_time hooks. Signed-off-by: Sebastian Hesselbarth <sebastian.hesselbarth@gmail.com> Acked-by: Linus Walleij <linus.walleij@linaro.org>
2013-09-29ARM: mxs: remove custom .init_time hookSebastian Hesselbarth4-30/+16
This patch converts clk-imx2[38] clocksource_of_init compatible init associated with fsl,imx2[38]-clkctrl. With arch/arm calling of_clk_init(NULL) from time_init(), we can now also remove custom .init_time hooks. Signed-off-by: Sebastian Hesselbarth <sebastian.hesselbarth@gmail.com> Acked-by: Mike Turquette <mturquette@linaro.org> Acked-by: Shawn Guo <shawn.guo@linaro.org>
2013-09-29ARM: kirkwood: remove custom .init_time hookSebastian Hesselbarth1-8/+0
With arch/arm calling of_clk_init(NULL) from time_init(), we can now remove custom .init_time hooks. Signed-off-by: Sebastian Hesselbarth <sebastian.hesselbarth@gmail.com> Tested-by: Andrew Lunn <andrew@lunn.ch> Acked-by: Jason Cooper <jason@lakedaemon.net>
2013-09-29ARM: imx: remove custom .init_time hookSebastian Hesselbarth7-62/+13
With arch/arm calling of_clk_init(NULL) from time_init(), we can now remove custom .init_time hooks. Signed-off-by: Sebastian Hesselbarth <sebastian.hesselbarth@gmail.com> Acked-by: Shawn Guo <shawn.guo@linaro.org>
2013-09-29ARM: highbank: remove custom .init_time hookSebastian Hesselbarth2-19/+14
With arch/arm calling of_clk_init(NULL) from time_init(), we can now remove custom .init_time hooks. Highbank clock provider need a reference to system registers, as a workaround current clk driver maps those independent of arch code now. Signed-off-by: Sebastian Hesselbarth <sebastian.hesselbarth@gmail.com> Acked-by: Rob Herring <rob.herring@calxeda.com> Acked-by: Mike Turquette <mturquette@linaro.org>
2013-09-29ARM: exynos: remove custom .init_time hookSebastian Hesselbarth4-13/+0
With arch/arm calling of_clk_init(NULL) from time_init(), we can now remove custom .init_time hooks. While at it, also remove some now redundant includes. Signed-off-by: Sebastian Hesselbarth <sebastian.hesselbarth@gmail.com> Reviewed-by: Tomasz Figa <t.figa@samsung.com>
2013-09-29ARM: dove: remove custom .init_time hookSebastian Hesselbarth1-11/+0
With arch/arm calling of_clk_init(NULL) from time_init(), we can now remove custom .init_time hooks. While at it, also remove some obsolete includes. Signed-off-by: Sebastian Hesselbarth <sebastian.hesselbarth@gmail.com> Tested-by: Andrew Lunn <andrew@lunn.ch> Acked-by: Jason Cooper <jason@lakedaemon.net>
2013-09-29ARM: bcm2835: remove custom .init_time hookSebastian Hesselbarth2-10/+0
With arch/arm calling of_clk_init(NULL) from time_init(), we can now remove custom .init_time hooks. Also remove call to of_clk_init from clk-bcm2835 with core fixed_clock match, as this has already been registered now. Signed-off-by: Sebastian Hesselbarth <sebastian.hesselbarth@gmail.com> Acked-by: Stephen Warren <swarren@wwwdotorg.org> Acked-by: Mike Turquette <mturquette@linaro.org>
2013-09-29ARM: bcm: provide common arch init for DT clocksMatt Porter1-1/+0
With arch/arm calling of_clk_init(NULL) and clocksource_of_init() this is no longer needed. The former is useful because we can make use of dummy fixed clocks for drivers until the bcm281xx common clock driver is ready. Signed-off-by: Matt Porter <matt.porter@linaro.org> Reviewed-by: Markus Mayer <markus.mayer@linaro.org> Acked-by: Christian Daudt <csd@broadcom.com>
2013-09-29ARM: call of_clk_init from default time_init handlerSebastian Hesselbarth1-12/+17
Most DT ARM machs require common clock providers initialized before timers. Currently, arch/arm machs use .init_time to call of_clk_init right before clocksource_of_init. This prevents to remove that callback and use the default one instead. This patch adds a call to of_clk_init() to the default .init_time callback for COMMON_CLK enabled machs to allow to remove custom callbacks where applicable. While at it, also reorder includes alphabetically. Signed-off-by: Sebastian Hesselbarth <sebastian.hesselbarth@gmail.com>