zsq [Wed, 25 Mar 2015 09:09:26 +0000 (17:09 +0800)]
add rga2 pd_clk support
zxl [Wed, 25 Mar 2015 03:05:17 +0000 (11:05 +0800)]
RK3368 GPU version: L0.10
Init Power Rogue DDK code
Signed-off-by: zxl <zhuangxl@rock-chips.com>
Xiao Feng [Tue, 24 Mar 2015 13:06:42 +0000 (21:06 +0800)]
rk3368: dvfs: add temperature control
Signed-off-by: Xiao Feng <xf@rock-chips.com>
David Wu [Tue, 24 Mar 2015 11:11:00 +0000 (19:11 +0800)]
rk3368: pwm: add pwm interface for cabc
Signed-off-by: David Wu <wdc@rock-chips.com>
hjc [Tue, 24 Mar 2015 11:02:00 +0000 (19:02 +0800)]
rk3368 lcdc: CABC regulation pwm in frame start
Signed-off-by: hjc <hjc@rock-chips.com>
hjc [Tue, 24 Mar 2015 11:00:36 +0000 (19:00 +0800)]
rk3368 dts: add backlight node into lcdc
Signed-off-by: hjc <hjc@rock-chips.com>
hjc [Mon, 23 Mar 2015 08:29:34 +0000 (16:29 +0800)]
rk fb: add lut for CABC
Signed-off-by: hjc <hjc@rock-chips.com>
hjc [Mon, 23 Mar 2015 08:08:43 +0000 (16:08 +0800)]
rk fb: only use iommu need to check config
Signed-off-by: hjc <hjc@rock-chips.com>
hwg [Tue, 24 Mar 2015 07:58:26 +0000 (15:58 +0800)]
disabled gmac as default in rk3368.dtsi
guoyi [Tue, 24 Mar 2015 06:30:23 +0000 (14:30 +0800)]
sensor: add mpu6500 accel support
dalon.zhang [Mon, 23 Mar 2015 08:38:54 +0000 (16:38 +0800)]
rk3368:camera: change aclk_isp from <&gates17 0> to <&gates16 0>.
hwg [Tue, 24 Mar 2015 03:42:53 +0000 (11:42 +0800)]
default disable gmac in rk3368-p9_818.dts
dkl [Mon, 23 Mar 2015 10:13:03 +0000 (18:13 +0800)]
dts: rk3368: enable fclk_mcu\stclk_mcu\clk_jtag temporarily
Signed-off-by: dkl <dkl@rock-chips.com>
Huang, Tao [Mon, 23 Mar 2015 10:14:24 +0000 (18:14 +0800)]
arm64: rockchip: update rockchip_defconfig by savedefconfig
Signed-off-by: Huang, Tao <huangtao@rock-chips.com>
Huang, Tao [Mon, 23 Mar 2015 10:13:13 +0000 (18:13 +0800)]
arm64: rockchip: rockchip_defconfig enable DEBUG_INFO
Signed-off-by: Huang, Tao <huangtao@rock-chips.com>
Huang, Tao [Mon, 23 Mar 2015 09:59:35 +0000 (17:59 +0800)]
Merge branch develop-3.10
Conflicts:
arch/arm/mach-rockchip/dvfs.c
lyz [Mon, 23 Mar 2015 08:57:46 +0000 (16:57 +0800)]
usb: dwc_otg: fix bug in FORCE_HOST_MODE
lyz [Mon, 23 Mar 2015 08:48:19 +0000 (16:48 +0800)]
rk3368: usb: adjust usb phy parameter
Huang, Tao [Mon, 23 Mar 2015 09:16:25 +0000 (17:16 +0800)]
rk: arm64: disable set pm_power_off for compatible with old pmic driver
Signed-off-by: Huang, Tao <huangtao@rock-chips.com>
Huibin Hong [Mon, 23 Mar 2015 09:11:09 +0000 (17:11 +0800)]
DMA: pl330: add chan_status to mutex between pl330_tasklet and pl330_control DMA_TERMINATE_ALL
Signed-off-by: Huibin Hong <huibin.hong@rock-chips.com>
dalon.zhang [Mon, 23 Mar 2015 08:43:14 +0000 (16:43 +0800)]
camsys_drv: v0.0x1e.0
hjc [Mon, 23 Mar 2015 07:20:27 +0000 (15:20 +0800)]
rk fb: box product not need to load screen when switch screen par enable is zero
Signed-off-by: hjc <hjc@rock-chips.com>
hjc [Tue, 16 Dec 2014 02:00:55 +0000 (10:00 +0800)]
rk fb: fix open hdmi open backlight again in no dual mode
Signed-off-by: hjc <hjc@rock-chips.com>
hjc [Fri, 12 Dec 2014 07:01:28 +0000 (15:01 +0800)]
rk3368 lcdc: support win mirror and update NO_DUAL mode
Signed-off-by: hjc <hjc@rock-chips.com>
hjc [Thu, 25 Dec 2014 03:26:52 +0000 (11:26 +0800)]
rk fb: compatible when 32bit system call used on 64bit kernel
Signed-off-by: hjc <hjc@rock-chips.com>
hjc [Fri, 9 Jan 2015 06:44:04 +0000 (14:44 +0800)]
rk3368 lcdc: add CABC mode config
Signed-off-by: hjc <hjc@rock-chips.com>
hwg [Mon, 23 Mar 2015 06:59:10 +0000 (14:59 +0800)]
solve bluetooth hid problem:
when bluetooth hid device connected, the key is delayed to be reponse about 5 second
hwg [Mon, 23 Mar 2015 06:53:04 +0000 (14:53 +0800)]
revert drivers/hid/uhid.c of commit
522c0bb37a66e65b704a4bd0f1bee7fec526dd32
solve uhid Bad address error in 64bit cpu
hjc [Mon, 23 Mar 2015 07:20:27 +0000 (15:20 +0800)]
rk fb: box product not need to load screen when switch screen par enable is zero
Signed-off-by: hjc <hjc@rock-chips.com>
hwg [Mon, 23 Mar 2015 06:53:04 +0000 (14:53 +0800)]
revert drivers/hid/uhid.c of commit
522c0bb37a66e65b704a4bd0f1bee7fec526dd32
solve uhid Bad address error in 64bit cpu
hjc [Mon, 9 Mar 2015 10:09:37 +0000 (18:09 +0800)]
rk fb: if not want the config effect,set reserved[3] bit[0] 1
Signed-off-by: hjc <hjc@rock-chips.com>
hjc [Thu, 26 Feb 2015 10:27:40 +0000 (18:27 +0800)]
rk fb: if uboot-logo-on set 1, open iommu when iommu en
Signed-off-by: hjc <hjc@rock-chips.com>
hjc [Wed, 18 Mar 2015 08:26:49 +0000 (16:26 +0800)]
rk fb: update pixclock init value and scale mode only support ONE_DUAL mode
Signed-off-by: hjc <hjc@rock-chips.com>
hjc [Tue, 23 Dec 2014 06:26:48 +0000 (14:26 +0800)]
rk fb: add win mirror pos config
Signed-off-by: hjc <hjc@rock-chips.com>
hjc [Fri, 20 Mar 2015 02:53:50 +0000 (10:53 +0800)]
rk fb: add support phy address config
Signed-off-by: hjc <hjc@rock-chips.com>
hjc [Tue, 17 Mar 2015 06:31:01 +0000 (14:31 +0800)]
rk fb: compatible with 32 bit system
Signed-off-by: hjc <hjc@rock-chips.com>
lintao [Mon, 23 Mar 2015 02:45:44 +0000 (10:45 +0800)]
mmc: rk_sdmmc: remove hpclk ops in set_sdio_status callback
Signed-off-by: lintao <lintao@rock-chips.com>
lintao [Mon, 23 Mar 2015 01:53:48 +0000 (09:53 +0800)]
mmc: rk_sdmmc: close FJTAG when drv probe
Signed-off-by: lintao <lintao@rock-chips.com>
hjc [Mon, 23 Mar 2015 01:29:40 +0000 (09:29 +0800)]
rk fb: update check var screen info
Signed-off-by: hjc <hjc@rock-chips.com>
hwg [Sun, 22 Mar 2015 02:51:17 +0000 (10:51 +0800)]
solve realtek wifi driver compile error with rk3368
hwg [Sun, 22 Mar 2015 02:34:43 +0000 (10:34 +0800)]
Revert "Add flags parameter to get_country_code template"
This reverts commit
a3d5a3f5affd45d9aa21daf04d4eb543fd3ed444.
Conflicts:
include/linux/wlan_plat.h
Xiao Feng [Thu, 12 Mar 2015 11:56:11 +0000 (19:56 +0800)]
dvfs: add gpu temperate control
Signed-off-by: Xiao Feng <xf@rock-chips.com>
Huang, Tao [Sat, 21 Mar 2015 09:41:36 +0000 (17:41 +0800)]
arm64: rockchip: rk3368: set sleep idle latency as large as possible
Signed-off-by: Huang, Tao <huangtao@rock-chips.com>
Xiao Feng [Thu, 12 Mar 2015 11:56:11 +0000 (19:56 +0800)]
dvfs: add gpu temperate control
Signed-off-by: Xiao Feng <xf@rock-chips.com>
chenjh [Fri, 20 Mar 2015 10:11:46 +0000 (18:11 +0800)]
rk3368: support armoff
Signed-off-by: chenjh <chenjh@rock-chips.com>
Xiao Feng [Sat, 21 Mar 2015 08:47:16 +0000 (16:47 +0800)]
rk3368: update arm dvfs table and add gpu 576M
Signed-off-by: Xiao Feng <xf@rock-chips.com>
dkl [Sat, 21 Mar 2015 09:13:32 +0000 (17:13 +0800)]
pd: rk3368: add qos save support
Signed-off-by: dkl <dkl@rock-chips.com>
Signed-off-by: Huang, Tao <huangtao@rock-chips.com>
Huang, Tao [Sat, 21 Mar 2015 09:03:42 +0000 (17:03 +0800)]
rk: move cpu_axi.h from arch/arm/mach-rockchip to include/linux/rockchip
Signed-off-by: Huang, Tao <huangtao@rock-chips.com>
Huang, Tao [Sat, 21 Mar 2015 08:48:49 +0000 (16:48 +0800)]
rk_serial: support console write by thread
Signed-off-by: Huang, Tao <huangtao@rock-chips.com>
Huang, Tao [Sat, 21 Mar 2015 08:44:11 +0000 (16:44 +0800)]
rk: cpufreq: interactive: touch boost all cpus
Signed-off-by: Huang, Tao <huangtao@rock-chips.com>
Huang, Tao [Sat, 21 Mar 2015 07:54:17 +0000 (15:54 +0800)]
cpufreq: cpufreq_stats: prevent last_index = -1
Signed-off-by: Huang, Tao <huangtao@rock-chips.com>
Huang, Tao [Sat, 21 Mar 2015 07:45:52 +0000 (15:45 +0800)]
cpufreq: rockchip_big_little: fix panic when topology_physical_package_id return -1 if no cluster info in dts
Signed-off-by: Huang, Tao <huangtao@rock-chips.com>
Huang, Tao [Sat, 21 Mar 2015 07:04:28 +0000 (15:04 +0800)]
cpufreq: rockchip_big_little: add rockchip_bl_ prefix and indent
Signed-off-by: Huang, Tao <huangtao@rock-chips.com>
Heiko Stübner [Fri, 20 Dec 2013 15:26:47 +0000 (16:26 +0100)]
dt-bindings: add rockchip vendor prefix
It seems I forgot to add the vendor prefix for rockchip to the vendor-prefix
list. Therefore add it now.
Signed-off-by: Heiko Stuebner <heiko@sntech.de>
Signed-off-by: Rob Herring <robh@kernel.org>
(cherry picked from commit
e48ca29d30a10556eb7abd8d91980b8a57dabf10)
hjc [Fri, 20 Mar 2015 10:37:48 +0000 (18:37 +0800)]
rk3368 lcdc: enable irq when open lcdc device
Signed-off-by: hjc <hjc@rock-chips.com>
huangzhibao [Fri, 20 Mar 2015 06:12:34 +0000 (14:12 +0800)]
dts: rk3368-box.dts fix rk1000 tve probe error and reduce the frequency of EMMC to 100M
hjc [Fri, 20 Mar 2015 02:53:50 +0000 (10:53 +0800)]
rk fb: add support phy address config
Signed-off-by: hjc <hjc@rock-chips.com>
Huibin Hong [Thu, 19 Mar 2015 09:56:59 +0000 (17:56 +0800)]
spi: show spi test time and data rate after test
Signed-off-by: Huibin Hong <huibin.hong@rock-chips.com>
Huibin Hong [Thu, 19 Mar 2015 09:54:54 +0000 (17:54 +0800)]
RK3368: spi: spi0 2csn,spi1 2csn,sp2 1csn in dts config
Signed-off-by: Huibin Hong <huibin.hong@rock-chips.com>
Huibin Hong [Thu, 19 Mar 2015 09:53:14 +0000 (17:53 +0800)]
spi: add CONFIG_NEED_SG_DMA_LENGTH for dma_length
Signed-off-by: Huibin Hong <huibin.hong@rock-chips.com>
hjc [Thu, 19 Mar 2015 09:02:30 +0000 (17:02 +0800)]
rk31xx lvds: add power domain control for lvds
Signed-off-by: hjc <hjc@rock-chips.com>
hjc [Thu, 19 Mar 2015 08:47:22 +0000 (16:47 +0800)]
rk3368 lcdc: add power domain control for lcdc
Signed-off-by: hjc <hjc@rock-chips.com>
dalon.zhang [Thu, 19 Mar 2015 08:42:17 +0000 (16:42 +0800)]
Merge branch 'rk_develop-3.10' into rk_develop-3.10-next
Conflicts:
drivers/mmc/host/rk_sdmmc.c
dalon.zhang [Thu, 19 Mar 2015 08:13:19 +0000 (16:13 +0800)]
camera: rk3368: add aclk_rga
zsq [Thu, 19 Mar 2015 08:22:23 +0000 (16:22 +0800)]
fix rga timeout mmu buf free bug
dalon.zhang [Thu, 19 Mar 2015 08:17:47 +0000 (16:17 +0800)]
camsys_drv: v0.0x1d.0
Huang, Tao [Thu, 19 Mar 2015 07:58:47 +0000 (15:58 +0800)]
arm64: rockchip: rk3368 support psci-0.2
Signed-off-by: Huang, Tao <huangtao@rock-chips.com>
Huang, Tao [Thu, 19 Mar 2015 05:59:29 +0000 (13:59 +0800)]
arm64: rockchip: rk3368 fix qos reg define and increase peri priority
Signed-off-by: Huang, Tao <huangtao@rock-chips.com>
hwg [Thu, 19 Mar 2015 00:51:22 +0000 (08:51 +0800)]
wifi: remove make modules configs
dalon.zhang [Wed, 18 Mar 2015 13:22:06 +0000 (21:22 +0800)]
camsys_head: v0.0xb.0
chenjh [Wed, 18 Mar 2015 07:30:32 +0000 (15:30 +0800)]
rk3368: support cpu suspend to wfi
Signed-off-by: chenjh <chenjh@rock-chips.com>
Alpha Lin [Wed, 18 Mar 2015 10:15:20 +0000 (18:15 +0800)]
IEP: revise the dtsi clock gate number.
Incorrect clock gate provided in previous commit.
Signed-off-by: Alpha Lin <alpha.lin@rock-chips.com>
zhangqing [Wed, 18 Mar 2015 17:15:41 +0000 (10:15 -0700)]
rk3x:pmic:rk818:not init rk818_ldo3 in uboot
hjc [Wed, 18 Mar 2015 08:26:49 +0000 (16:26 +0800)]
rk fb: update pixclock init value and scale mode only support ONE_DUAL mode
Signed-off-by: hjc <hjc@rock-chips.com>
guoyi [Wed, 18 Mar 2015 06:39:25 +0000 (14:39 +0800)]
rk3368-p9: dts: change rk818 battery configs.
xiaoyao [Wed, 18 Mar 2015 03:43:16 +0000 (11:43 +0800)]
rk_sdmmc: recalculate audib rx_wmark
AudiB contain a less limitation in rx_wmark.
Signed-off-by: xiaoyao <xiaoyao@rock-chips.com>
Signed-off-by: lintao <lintao@rock-chips.com>
Lars-Peter Clausen [Fri, 24 May 2013 08:29:22 +0000 (10:29 +0200)]
regmap: Make regmap-mmio usable from atomic contexts
regmap-mmio uses a spinlock with spin_lock() and spin_unlock() for locking.
To be able to use the regmap API from different contexts (atomic vs non-atomic),
without the risk of race conditions, we need to use spin_lock_irqsave() and
spin_lock_irqrestore() instead. A new field, the spinlock_flags field, is added
to regmap struct to store the flags between regmap_{,un}lock_spinlock(). The
spinlock_flags field itself is also protected by the spinlock.
Thanks to Stephen Warren for the suggestion of this particular solution.
Signed-off-by: Lars-Peter Clausen <lars@metafoo.de>
Reviewed-by: Stephen Warren <swarren@nvidia.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
(cherry picked from commit
92ab1aab59c61b3e05200b9aa0e05ab770059142)
Huang, Tao [Tue, 17 Mar 2015 11:16:19 +0000 (19:16 +0800)]
arm64: rockchip: rk3368 support boot from little core
Signed-off-by: Huang, Tao <huangtao@rock-chips.com>
lyz [Tue, 17 Mar 2015 10:10:24 +0000 (18:10 +0800)]
usb: dwc_otg: enable clk and exit suspend when usb_core_reset
Avoid this warning message "WARN::dwc_otg_core_reset:5543:
dwc_otg_core_reset() HANG! AHB Idle GRSTCTL=
4000020"
Zheng Yang [Tue, 17 Mar 2015 09:05:53 +0000 (17:05 +0800)]
rk3368 hdmi: support pd_hdmi.
Signed-off-by: Zheng Yang <zhengyang@rock-chips.com>
lintao [Tue, 17 Mar 2015 08:49:37 +0000 (16:49 +0800)]
mmc: use ilog2 for fifoth calculation
Signed-off-by: lintao <lintao@rock-chips.com>
lintao [Sat, 7 Mar 2015 07:14:10 +0000 (15:14 +0800)]
dtsi: sdmmc: add card_detect for udbg
Signed-off-by: lintao <lintao@rock-chips.com>
Huang, Tao [Tue, 17 Mar 2015 07:16:39 +0000 (15:16 +0800)]
Merge branch develop-3.10
hjc [Tue, 17 Mar 2015 06:31:01 +0000 (14:31 +0800)]
rk fb: compatible with 32 bit system
Signed-off-by: hjc <hjc@rock-chips.com>
hjc [Mon, 16 Mar 2015 01:58:27 +0000 (09:58 +0800)]
rk3368 lcdc: add yuv420sp nv21 format at lcdc scale fac
Signed-off-by: hjc <hjc@rock-chips.com>
zsq [Tue, 17 Mar 2015 06:38:08 +0000 (14:38 +0800)]
rga2 support 32bit compile at 64bit platform
lintao [Tue, 17 Mar 2015 06:23:19 +0000 (14:23 +0800)]
fix conpile error
hwg [Tue, 17 Mar 2015 03:43:32 +0000 (11:43 +0800)]
wifi: use buildin instand of ko for compatibility
lintao [Tue, 17 Mar 2015 01:58:51 +0000 (09:58 +0800)]
mmc: rk_sdmmc: add uart & jtag soft-switch by routine card present signal
Reviewed-and-tested-by: <xiaoyao@rock-chips.com>
Signed-off-by: lintao <lintao@rock-chips.com>
lintao [Tue, 17 Mar 2015 01:57:46 +0000 (09:57 +0800)]
dtsi: rk3368: add uart & jtag pcl func for sdmmc mux
Signed-off-by: lintao <lintao@rock-chips.com>
Alpha Lin [Tue, 17 Mar 2015 01:43:18 +0000 (09:43 +0800)]
VPU: revise previous commit.
can not be built in previous commit.
Signed-off-by: Alpha Lin <alpha.lin@rock-chips.com>
huang zhibao [Tue, 17 Mar 2015 01:29:06 +0000 (09:29 +0800)]
dts: add work and power led in rk3128-box.dts
huang zhibao [Tue, 17 Mar 2015 01:18:32 +0000 (09:18 +0800)]
Merge branch 'develop-3.10' of ssh://10.10.10.29/rk/kernel into develop-3.10
Alpha Lin [Tue, 17 Mar 2015 01:06:18 +0000 (09:06 +0800)]
VPU, enable frequency raise for 4k h.264 decoding.
Signed-off-by: Alpha Lin <alpha.lin@rock-chips.com>
Lorenzo Pieralisi [Fri, 27 Sep 2013 09:25:02 +0000 (10:25 +0100)]
arm64: add PSCI CPU_SUSPEND based cpu_suspend support
This patch implements the cpu_suspend cpu operations method through
the PSCI CPU SUSPEND API. The PSCI implementation translates the idle state
index passed by the cpu_suspend core call into a valid PSCI state according to
the PSCI states initialized at boot through the cpu_init_idle() CPU
operations hook.
The PSCI CPU suspend operation hook checks if the PSCI state is a
standby state. If it is, it calls the PSCI suspend implementation
straight away, without saving any context. If the state is a power
down state the kernel calls the __cpu_suspend API (that saves the CPU
context) and passed the PSCI suspend finisher as a parameter so that PSCI
can be called by the __cpu_suspend implementation after saving and flushing
the context as last function before power down.
For power down states, entry point is set to cpu_resume physical address,
that represents the default kernel execution address following a CPU reset.
Reviewed-by: Ashwin Chaugule <ashwin.chaugule@linaro.org>
Reviewed-by: Catalin Marinas <catalin.marinas@arm.com>
Signed-off-by: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
(cherry picked from commit
18910ab0d916b1a87016d69efd027714a80521dd)
Signed-off-by: Huang, Tao <huangtao@rock-chips.com>
Conflicts:
arch/arm64/kernel/psci.c
Lorenzo Pieralisi [Fri, 19 Dec 2014 17:03:47 +0000 (17:03 +0000)]
arm64: kernel: fix __cpu_suspend mm switch on warm-boot
On arm64 the TTBR0_EL1 register is set to either the reserved TTBR0
page tables on boot or to the active_mm mappings belonging to user space
processes, it must never be set to swapper_pg_dir page tables mappings.
When a CPU is booted its active_mm is set to init_mm even though its
TTBR0_EL1 points at the reserved TTBR0 page mappings. This implies
that when __cpu_suspend is triggered the active_mm can point at
init_mm even if the current TTBR0_EL1 register contains the reserved
TTBR0_EL1 mappings.
Therefore, the mm save and restore executed in __cpu_suspend might
turn out to be erroneous in that, if the current->active_mm corresponds
to init_mm, on resume from low power it ends up restoring in the
TTBR0_EL1 the init_mm mappings that are global and can cause speculation
of TLB entries which end up being propagated to user space.
This patch fixes the issue by checking the active_mm pointer before
restoring the TTBR0 mappings. If the current active_mm == &init_mm,
the code sets the TTBR0_EL1 to the reserved TTBR0 mapping instead of
switching back to the active_mm, which is the expected behaviour
corresponding to the TTBR0_EL1 settings when __cpu_suspend was entered.
Fixes: 95322526ef62 ("arm64: kernel: cpu_{suspend/resume} implementation")
Cc: <stable@vger.kernel.org> # 3.14+: 18ab7db
Cc: <stable@vger.kernel.org> # 3.14+: 714f599
Cc: <stable@vger.kernel.org> # 3.14+: c3684fb
Cc: <stable@vger.kernel.org> # 3.14+
Cc: Will Deacon <will.deacon@arm.com>
Signed-off-by: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
(cherry picked from commit
f43c27188a49111b58e9611afa2f0365b0b55625)
Laura Abbott [Fri, 21 Nov 2014 21:50:40 +0000 (21:50 +0000)]
arm64: Move cpu_resume into the text section
The function cpu_resume currently lives in the .data section.
There's no reason for it to be there since we can use relative
instructions without a problem. Move a few cpu_resume data
structures out of the assembly file so the .data annotation
can be dropped completely and cpu_resume ends up in the read
only text section.
Reviewed-by: Kees Cook <keescook@chromium.org>
Reviewed-by: Mark Rutland <mark.rutland@arm.com>
Reviewed-by: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
Tested-by: Mark Rutland <mark.rutland@arm.com>
Tested-by: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
Tested-by: Kees Cook <keescook@chromium.org>
Acked-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
Signed-off-by: Laura Abbott <lauraa@codeaurora.org>
Signed-off-by: Will Deacon <will.deacon@arm.com>
(cherry picked from commit
c3684fbb446501b48dec6677a6a9f61c215053de)
Lorenzo Pieralisi [Thu, 7 Aug 2014 13:54:50 +0000 (14:54 +0100)]
arm64: kernel: refactor the CPU suspend API for retention states
CPU suspend is the standard kernel interface to be used to enter
low-power states on ARM64 systems. Current cpu_suspend implementation
by default assumes that all low power states are losing the CPU context,
so the CPU registers must be saved and cleaned to DRAM upon state
entry. Furthermore, the current cpu_suspend() implementation assumes
that if the CPU suspend back-end method returns when called, this has
to be considered an error regardless of the return code (which can be
successful) since the CPU was not expected to return from a code path that
is different from cpu_resume code path - eg returning from the reset vector.
All in all this means that the current API does not cope well with low-power
states that preserve the CPU context when entered (ie retention states),
since first of all the context is saved for nothing on state entry for
those states and a successful state entry can return as a normal function
return, which is considered an error by the current CPU suspend
implementation.
This patch refactors the cpu_suspend() API so that it can be split in
two separate functionalities. The arm64 cpu_suspend API just provides
a wrapper around CPU suspend operation hook. A new function is
introduced (for architecture code use only) for states that require
context saving upon entry:
__cpu_suspend(unsigned long arg, int (*fn)(unsigned long))
__cpu_suspend() saves the context on function entry and calls the
so called suspend finisher (ie fn) to complete the suspend operation.
The finisher is not expected to return, unless it fails in which case
the error is propagated back to the __cpu_suspend caller.
The API refactoring results in the following pseudo code call sequence for a
suspending CPU, when triggered from a kernel subsystem:
/*
* int cpu_suspend(unsigned long idx)
* @idx: idle state index
*/
{
-> cpu_suspend(idx)
|---> CPU operations suspend hook called, if present
|--> if (retention_state)
|--> direct suspend back-end call (eg PSCI suspend)
else
|--> __cpu_suspend(idx, &back_end_finisher);
}
By refactoring the cpu_suspend API this way, the CPU operations back-end
has a chance to detect whether idle states require state saving or not
and can call the required suspend operations accordingly either through
simple function call or indirectly through __cpu_suspend() which carries out
state saving and suspend finisher dispatching to complete idle state entry.
Reviewed-by: Catalin Marinas <catalin.marinas@arm.com>
Reviewed-by: Hanjun Guo <hanjun.guo@linaro.org>
Signed-off-by: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
(cherry picked from commit
714f59925595b9c2ea9c22b107b340d38e3b3bc9)
Lorenzo Pieralisi [Thu, 17 Jul 2014 17:19:20 +0000 (18:19 +0100)]
arm64: kernel: add missing __init section marker to cpu_suspend_init
Suspend init function must be marked as __init, since it is not needed
after the kernel has booted. This patch moves the cpu_suspend_init()
function to the __init section.
Signed-off-by: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
(cherry picked from commit
18ab7db6b749ac27aac08d572afbbd2f4d937934)
Sudeep KarkadaNagesha [Mon, 17 Jun 2013 11:58:45 +0000 (12:58 +0100)]
driver/core: cpu: initialize of_node in cpu's device struture
CPUs are also registered as devices but the of_node in these cpu
devices are not initialized. Currently different drivers requiring
to access cpu device node are parsing the nodes themselves and
initialising the of_node in cpu device.
The of_node in all the cpu devices needs to be initialized properly
and at one place. The best place to update this is CPU subsystem
driver when registering the cpu devices.
The OF/DT core library now provides of_get_cpu_node to retrieve a cpu
device node for a given logical index by abstracting the architecture
specific details.
This patch uses of_get_cpu_node to assign of_node when registering the
cpu devices.
Acked-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Acked-by: Rob Herring <rob.herring@calxeda.com>
Signed-off-by: Sudeep KarkadaNagesha <sudeep.karkadanagesha@arm.com>
(cherry picked from commit
f86e4718f24b83be0c42894d2b97accc993d65d3)
Signed-off-by: Huang, Tao <huangtao@rock-chips.com>
Conflicts:
drivers/base/cpu.c