The Neon bit sliced AES decryption store the key schedule in BS_KEY struct,
it introduces a competitive risk,such as dm-crypt without samecpu option.
So backport from linux stable version 4.14.13.
Change-Id: I8c728669ae626f56b38c24ed391aa3078a60f623
Signed-off-by: Cliff Chen <cliff.chen@rock-chips.com>
If a regulator is supplied by the DCDC_REG5, and the regulator registers
behind the DCDC_REG5, then some devices can not have the regulator_get()
because the regulator has not get its suplly. The case happen in
rdev_init_debugfs() typically.
Change-Id: I02e336ad97e956c53351ca18af6c651126b3149d
Signed-off-by: Tony Xie <tony.xie@rock-chips.com>
Add "suspended" flag in suspend_noirq()/resume_noirq() callback
to prevent new i2c job started, and use i2c_lock_adapter() to wait
for current i2c transfer finished.
If any i2c client try to access I2C after suspend_noirq() or
before resume_noirq() callback, return the error, and they
should fix it, not to start i2c access at this moment.
Change-Id: Idd1142058d10547d085895a498201c2ade6b9e96
Signed-off-by: David Wu <david.wu@rock-chips.com>
with following modifications :
fix some compile errors when ARCH=arm;
replace "mali_base" with "midgard_base" in Kbuild files;
fix a compile error when MALI_PWRSOFT_765 enabled;
set "default n" for MALI_KUTF and MALI_IRQ_LATENCY.
Change-Id: I858c72aab939002c8e6241cd75fa8877ebbf6c35
Signed-off-by: Zhen Chen <chenzhen@rock-chips.com>
This patch add support for rockchip voice activity detection.
The vad is used to detect the amplitude of voice which is
received by analog mic, i2s digital mic or pdm digital mic
when soc is in low power mode. if the amplitude of voice is
over threshold, the vad will assert interrupt to wake up soc,
then soc will exit low power mode.
Change-Id: Idb7a3adb87ec4c07274eefd82da4672d493c7627
Signed-off-by: Sugar Zhang <sugar.zhang@rock-chips.com>
Make sure kernel panic and reboot when something wrong.
Change-Id: Iaed051431fa4ae2fb5bdd952737deb07a24a33c1
Signed-off-by: Tao Huang <huangtao@rock-chips.com>
The ATF must contain the following commit:
35e0de42e8ac ("plat: rk3308: dfs: add ddr_get_rate implement")
Change-Id: Idf22418b830c9a1f4ebd2c9b19dc7345bc4cf1c6
Signed-off-by: Finley Xiao <finley.xiao@rock-chips.com>
Single entry is for target voltage and three entries are for
<target min max> voltages. Change cpu opp-microvolt form one entry to
three entries and set maximum acceptable voltage to a high value so that
regulator device can supply multiple consumers at the same time.
Change-Id: I3a0dc4e161bae33e36b232c36a0a05a3102359ef
Signed-off-by: Finley Xiao <finley.xiao@rock-chips.com>
dump path: /data/vop_buf
debug nod: d/dri/0/ff900000.vop/vop_dump/dump
echo dump > dump to dump one frame
echo dumpon > dump to start vop keep dumping
echo dumpoff > dump to stop keep dumping
echo dumpn > dump n is the number of dump times
if fd err -3 try rm -r /data/vopbuf echo dump1 > dump can fix it
if fd err -28 save needed data try rm -r /data/vopbuf
Change-Id: Id5fefa428db1b5669ceae418cd8bddfa52e52f61
Signed-off-by: Shixiang Zheng <shixiang.zheng@rock-chips.com>
This patch adds the ov5695 releated configure with rk3326 mipi/isp.
Change-Id: I62d6d8854d7e66fac521b3fea0f4dd35dc2799c4
Signed-off-by: Caesar Wang <wxt@rock-chips.com>
This new set of tracepoints will help all gadget
drivers and UDC drivers when problem appears. Note
that, in order to be able to add tracepoints to
udc-core.c we had to rename that to core.c and
statically link it with trace.c to form
udc-core.o. This is to make sure that module name
stays the same.
Change-Id: I23eb801151a75629a8a2f6e7d9203f58281ed3d2
Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
Signed-off-by: William Wu <william.wu@rock-chips.com>
(cherry picked from commit 5e42d710a1)
instead of defining all functions as static inlines,
let's move them to udc-core and export them with
EXPORT_SYMBOL_GPL, that way we can make sure that
only GPL drivers will use them.
As a side effect, it'll be nicer to add tracepoints
to the gadget API.
While at that, also fix Kconfig dependencies to
avoid randconfig build failures.
Change-Id: I3fcc99c0730608076cfa8624908e58b7ee6f1bef
Acked-By: Sebastian Reichel <sre@kernel.org>
Acked-by: Peter Chen <peter.chen@nxp.com>
Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
Signed-off-by: William Wu <william.wu@rock-chips.com>
(cherry-picked from commit 5a8d651a2b)
we set cru reset as tshut's default mode, i.e. hw-tshut-mode = <0>, and
otp_gpio mode is set accordingly. if gpio mode is set,
i.e. hw-tshut-mode = <1>, otp_out is set accordingly.
Change-Id: I3cb4588fec171e2867a326f55c2115b1da927ac3
Signed-off-by: Rocky Hao <rocky.hao@rock-chips.com>
Impletement rk_iommu_map_sg for rk_iommu_ops, which only
flush TLB once after each sg been mapped, that speed up
the map operation.
Change-Id: Ief123ad363018d2b3227066c07338ccbd75c9d84
Signed-off-by: Simon Xue <xxm@rock-chips.com>
I finally got around to creating trampolines for dynamically allocated
ftrace_ops with using synchronize_rcu_tasks(). For users of the ftrace
function hook callbacks, like perf, that allocate the ftrace_ops
descriptor via kmalloc() and friends, ftrace was not able to optimize
the functions being traced to use a trampoline because they would also
need to be allocated dynamically. The problem is that they cannot be
freed when CONFIG_PREEMPT is set, as there's no way to tell if a task
was preempted on the trampoline. That was before Paul McKenney
implemented synchronize_rcu_tasks() that would make sure all tasks
(except idle) have scheduled out or have entered user space.
While testing this, I triggered this bug:
BUG: unable to handle kernel paging request at ffffffffa0230077
...
RIP: 0010:0xffffffffa0230077
...
Call Trace:
schedule+0x5/0xe0
schedule_preempt_disabled+0x18/0x30
do_idle+0x172/0x220
What happened was that the idle task was preempted on the trampoline.
As synchronize_rcu_tasks() ignores the idle thread, there's nothing
that lets ftrace know that the idle task was preempted on a trampoline.
The idle task shouldn't need to ever enable preemption. The idle task
is simply a loop that calls schedule or places the cpu into idle mode.
In fact, having preemption enabled is inefficient, because it can
happen when idle is just about to call schedule anyway, which would
cause schedule to be called twice. Once for when the interrupt came in
and was returning back to normal context, and then again in the normal
path that the idle loop is running in, which would be pointless, as it
had already scheduled.
The only reason schedule_preempt_disable() enables preemption is to be
able to call sched_submit_work(), which requires preemption enabled. As
this is a nop when the task is in the RUNNING state, and idle is always
in the running state, there's no reason that idle needs to enable
preemption. But that means it cannot use schedule_preempt_disable() as
other callers of that function require calling sched_submit_work().
Adding a new function local to kernel/sched/ that allows idle to call
the scheduler without enabling preemption, fixes the
synchronize_rcu_tasks() issue, as well as removes the pointless spurious
schedule calls caused by interrupts happening in the brief window where
preemption is enabled just before it calls schedule.
Reviewed: Thomas Gleixner <tglx@linutronix.de>
Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
Acked-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
Cc: Andrew Morton <akpm@linux-foundation.org>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Thomas Gleixner <tglx@linutronix.de>
Link: http://lkml.kernel.org/r/20170414084809.3dacde2a@gandalf.local.home
Signed-off-by: Ingo Molnar <mingo@kernel.org>
-----Shawn: trace on 4.4 for RK3308 -------------------------
[ 151.389904] BUG: scheduling while atomic: swapper/0/0/0x00000000
[ 151.390478] Modules linked in:
[ 151.390813] CPU: 0 PID: 0 Comm: swapper/0 Not tainted 4.4.126 #1327
[ 151.390830] Hardware name: Rockchip RK3308 evb digital-i2s mic board
(DT)
[ 151.390844] Call trace:
[ 151.390868] [<ffffff800808731c>] dump_backtrace+0x0/0x1c4
[ 151.390883] [<ffffff80080874f4>] show_stack+0x14/0x1c
[ 151.390900] [<ffffff80081e4274>] dump_stack+0x94/0xbc
[ 151.390919] [<ffffff80080b4c6c>] __schedule_bug+0x3c/0x54
[ 151.390938] [<ffffff800857e978>] __schedule+0x88/0x45c
[ 151.390953] [<ffffff800857edc0>] schedule+0x74/0x94
[ 151.390971] [<ffffff800857f118>] schedule_preempt_disabled+0x20/0x38
[ 151.390987] [<ffffff80080c9d74>] cpu_startup_entry+0x44/0x204
[ 151.391007] [<ffffff800857cda0>] rest_init+0x80/0x8c
[ 151.391025] [<ffffff8008750b04>] start_kernel+0x31c/0x330
[ 151.391040] [<ffffff80087501c4>] __primary_switched+0x30/0x6c
-------------------------------------------------------
Change-Id: I12971dfe9c2039920162326aabe1df0ecaf79804
Signed-off-by: Shawn Lin <shawn.lin@rock-chips.com>
(cherry-picked from 8663effb24)