Tuesday, May 14, 2013 11:17 PM, Vikas Sajjan wrote:
>
> Hi Vikas,
>
> On Tuesday 14 of May 2013 18:25:51 Vikas Sajjan wrote:
> > Adds GPIO parsing functionality for "LCD backlight" and "LCD enable"
> > GPIO pins of exynos dp controller.
> >
> > Signed-off-by: Vikas Sajjan <vikas.sajjan(a)linaro.org>
> > ---
> > drivers/video/exynos/exynos_dp_core.c | 45
> > +++++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+)
> >
>
> I don't think that Exynos DP driver is right place for such code. Backlight
> and LCD drivers are responsible for backlight and LCD power control using
> backlight and LCD subsystems.
>
> IMHO the correct solution would be to either extend existing backlight/lcd
> drivers found in drivers/video/backlight to support direct GPIO control and
> parse GPIO pins from device tree or create new gpio_bl and gpio_lcd drivers.
Hi Vikas Sajian,
I agree with Tomasz Figa's opinion.
Backlight/LCD framework should be used.
eDP panel backlight on SMDK5210 board can be controlled by PWM;
thus, pwm-backlight driver should be used.
Also, eDP panel reset pin should be controlled by using
platform-lcd driver.
>
> CCing Richard, Florian and linux-fbdev.
Also, I have been doing backlight reviews instead of Richard,
please do CC'ing me.
Best regards,
Jingoo Han
>
> Best regards,
> Tomasz
Ping.
On 17 April 2013 21:16, Linus Walleij <linus.walleij(a)linaro.org> wrote:
> On Tue, Apr 16, 2013 at 3:48 PM, Naresh Kamboju
> <naresh.kamboju(a)linaro.org> wrote:
>> On 12 April 2013 04:07, Linus Walleij <linus.walleij(a)linaro.org> wrote:
>>> Hey it works. Didn't see this before I fixed it tho :-)
>>> http://marc.info/?l=linux-kernel&m=136567139910888&w=2
>>
>> This commit not yet been merged in to linux-next "next-20130416".
>> Due to this reason still snowball build fails at above error.
>
> That is outside of my jurisdiction, only the MFD maintainer Samuel
> Ortiz can merge this patch.
>
> Yours,
> Linus Walleij
This patch-set implements early printk support for virtio console
devices by adding and using emergency write register to virtio console's
config space.
The current virtio early printk code in kernel expects that hypervisor
will provide some mechanism generally a hypercall to support early printk.
This patch-set does not break existing hypercall based early print support.
This implementation adds:
1. Emergency writeonly register named emerg_wr in
virtio console's config space.
2. Host feature flags namely VIRTIO_CONSOLE_F_EMERG_WRITE
for telling guest about early-write capability in console device.
Emergency write mechanism:
1. When a guest wants to out some character, it has to simply write
the character to emerg_wr register in config space of
virtio console device.
Pranavkumar Sawargaonkar (3):
virtio: console: Add emergency writeonly register to config space
Documentation: virtio: Add emergency write (emerg_wr) config register
in virtio console.
arm64: earlyprintk support for virtio-mmio console.
Documentation/virtual/virtio-spec.txt | 8 +++++++-
arch/arm64/kernel/early_printk.c | 35 +++++++++++++++++++++++++++++++++
include/uapi/linux/virtio_console.h | 3 +++
3 files changed, 45 insertions(+), 1 deletion(-)
--
1.7.9.5
In order to safely support the use of NEON or VFP instructions in
kernel mode, some precautions need to be taken:
- the userland context that may be present in the registers (even
if the NEON/VFP is currently disabled) must be stored under the
correct task (which may not be 'current' in the UP case),
- to avoid having to keep track of additional vfpstates for the
kernel side, disallow the use of NEON/VFP in interrupt context
and run with preemption disabled,
- after use, re-enable preemption and re-enable the lazy restore
machinery by disabling the NEON/VFP unit.
This patch adds the functions kernel_vfp_begin() and kernel_vfp_end()
which take care of the above.
Signed-off-by: Ard Biesheuvel <ard.biesheuvel(a)linaro.org>
---
arch/arm/include/asm/vfp.h | 5 +++++
arch/arm/vfp/vfpmodule.c | 40 ++++++++++++++++++++++++++++++++++++++++
2 files changed, 45 insertions(+)
diff --git a/arch/arm/include/asm/vfp.h b/arch/arm/include/asm/vfp.h
index f4ab34f..421506b 100644
--- a/arch/arm/include/asm/vfp.h
+++ b/arch/arm/include/asm/vfp.h
@@ -5,6 +5,11 @@
* First, the standard VFP set.
*/
+#ifndef __ASSEMBLY__
+void kernel_vfp_begin(void);
+void kernel_vfp_end(void);
+#endif
+
#define FPSID cr0
#define FPSCR cr1
#define MVFR1 cr6
diff --git a/arch/arm/vfp/vfpmodule.c b/arch/arm/vfp/vfpmodule.c
index 5dfbb0b..e30a6335 100644
--- a/arch/arm/vfp/vfpmodule.c
+++ b/arch/arm/vfp/vfpmodule.c
@@ -20,6 +20,7 @@
#include <linux/init.h>
#include <linux/uaccess.h>
#include <linux/user.h>
+#include <linux/export.h>
#include <asm/cp15.h>
#include <asm/cputype.h>
@@ -649,6 +650,45 @@ static int vfp_hotplug(struct notifier_block *b, unsigned long action,
}
/*
+ * Kernel-side NEON/VFP support functions
+ */
+void kernel_vfp_begin(void)
+{
+ struct thread_info *thread = current_thread_info();
+ unsigned int cpu = get_cpu();
+ u32 fpexc;
+
+ /* Avoid using the NEON/VFP in interrupt context */
+ might_sleep();
+ preempt_disable();
+
+ fpexc = fmrx(FPEXC) | FPEXC_EN;
+ fmxr(FPEXC, fpexc);
+
+ /*
+ * Save the userland NEON/VFP state. Under UP, the owner could be a task
+ * other than 'current'
+ */
+ if (vfp_state_in_hw(cpu, thread))
+ vfp_save_state(&thread->vfpstate, fpexc);
+#ifndef CONFIG_SMP
+ else if (vfp_current_hw_state[cpu] != NULL)
+ vfp_save_state(vfp_current_hw_state[cpu], fpexc);
+#endif
+ vfp_current_hw_state[cpu] = NULL;
+ put_cpu();
+}
+EXPORT_SYMBOL(kernel_vfp_begin);
+
+void kernel_vfp_end(void)
+{
+ /* Disable the NEON/VFP unit. */
+ fmxr(FPEXC, fmrx(FPEXC) & ~FPEXC_EN);
+ preempt_enable();
+}
+EXPORT_SYMBOL(kernel_vfp_end);
+
+/*
* VFP support code initialisation.
*/
static int __init vfp_init(void)
--
1.8.1.2
Hi,
I am working on kexec for ARM(armv7 architecture ) on Linux-2.6.32.59.
I am unable to boot secondary kernel zImage using kexec.
It got hanged after "Uncompressing Linux.....done, b
ooting the kernel."
I debugged through hardware debugger and found issue in
"arch/arm/kernel/head.S" at __turn_mmu_on
which is failing to initialized the mmu.
I will highly appreciate if you can suggest some pointers
to debug this issue.
kexec command use:
kexec -l /home/zImage --command-line=`cat /proc/cmdline`
kexec -e
Thanks and Regards,
Pankaj Pandey
This patchset was called: "Create sched_select_cpu() and use it for workqueues"
for the first three versions.
Earlier discussions over v3, v2 and v1 can be found here:
https://lkml.org/lkml/2013/3/18/364http://lists.linaro.org/pipermail/linaro-dev/2012-November/014344.htmlhttp://www.mail-archive.com/linaro-dev@lists.linaro.org/msg13342.html
V4 is here:
https://lkml.org/lkml/2013/3/31/55
Workqueues can be performance or power oriented. For performance we may want to
keep them running on a single cpu, so that it remains cache hot. For power we
can give scheduler the liberty to choose target cpu for running work handler.
Later one (Power oriented WQ) can be achieved if the workqueue is allocated with
WQ_UNBOUND flag. Enabling CONFIG_WQ_POWER_EFFICIENT will set
'wq_power_efficient' to 'true'. Setting 'power_efficient' boot param will
override value of 'wq_power_efficient' variable. When 'wq_power_efficient' is
set to 'true', we will convert WQ_POWER_EFFICIENT flag to WQ_UNBOUND on wq
allocation. And so scheduler will have the liberty to choose where to run this
work.
Here we are migrating few users of workqueues to WQ_POWER_EFFICIENT. These
drivers are found to be very much active on idle or lightly busy system and
using WQ_POWER_EFFICIENT for these gave impressive results.
These would be used in power saving mode only if relevant configs are enabled
at compile time or in bootargs. Otherwise behavior is unchanged.
Setup:
-----
- ARM Vexpress TC2 - big.LITTLE CPU
- Core 0-1: A15, 2-4: A7
- rootfs: linaro-ubuntu-devel
This patchset has been tested on a big LITTLE system (heterogeneous) but is
useful for all other homogeneous systems as well. During these tests audio was
played in background using aplay.
Results:
-------
Cluster A15 Energy Cluster A7 Energy Total
------------------------- ----------------------- ------
Without this patchset (Energy in Joules):
---------------------------------------------------
0.151162 2.183545 2.334707
0.223730 2.687067 2.910797
0.289687 2.732702 3.022389
0.454198 2.745908 3.200106
0.495552 2.746465 3.242017
Average:
0.322866 2.619137 2.942003
With this patchset (Energy in Joules):
-----------------------------------------------
0.226421 2.283658 2.510079
0.151361 2.236656 2.388017
0.197726 2.249849 2.447575
0.221915 2.229446 2.451361
0.347098 2.257707 2.604805
Average:
0.2289042 2.2514632 2.4803674
Above tests are repeated multiple times and events are tracked using trace-cmd
and analysed using kernelshark. And it was easily noticeable that idle time for
many cpus has increased considerably, which eventually saved some power.
V4->V5:
-------
- Created new wq flag: WQ_POWER_EFFICIENT, config option:
CONFIG_WQ_POWER_EFFICIENT and kernel param workqueue.power_efficient.
- Created few system wide workqueues aligned towards power saving.
V3->V4:
-------
- Dropped changes to kernel/sched directory and hence
sched_select_non_idle_cpu().
- Dropped queue_work_on_any_cpu()
- Created system_freezable_unbound_wq
- Changed all patches accordingly.
V2->V3:
-------
- Dropped changes into core queue_work() API, rather create *_on_any_cpu()
APIs
- Dropped running timers migration patch as that was broken
- Migrated few users of workqueues to use *_on_any_cpu() APIs.
Viresh Kumar (5):
workqueues: Introduce new flag WQ_POWER_EFFICIENT for power oriented
workqueues
workqueue: Add system wide power_efficient workqueues
PHYLIB: queue work on system_power_efficient_wq
block: queue work on power efficient wq
fbcon: queue work on power efficient wq
Documentation/kernel-parameters.txt | 17 +++++++++++++++++
block/blk-core.c | 3 ++-
block/blk-ioc.c | 3 ++-
block/genhd.c | 12 ++++++++----
drivers/net/phy/phy.c | 9 +++++----
drivers/video/console/fbcon.c | 2 +-
include/linux/workqueue.h | 10 ++++++++++
kernel/power/Kconfig | 19 +++++++++++++++++++
kernel/workqueue.c | 24 +++++++++++++++++++++++-
9 files changed, 87 insertions(+), 12 deletions(-)
--
1.7.12.rc2.18.g61b472e
This patch series adds LCD backlight and LCD enable gpios pins to dp-controller
DT node of exynos5250-smdk5250 and parsing of these gpio pins in exynos-dp driver
tested on exynos5250-smdk5250 Board.
rebased on kgene-next branch of
https://git.kernel.org/cgit/linux/kernel/git/kgene/linux-samsung.git/
Vikas Sajjan (2):
video: exynos_dp: Add parsing of gpios pins to exynos-dp driver
ARM: dts: Add LCD backlight and LCD enable gpios pins to
dp-controller DT node
arch/arm/boot/dts/exynos5250-smdk5250.dts | 3 ++
drivers/video/exynos/exynos_dp_core.c | 45 +++++++++++++++++++++++++++++
2 files changed, 48 insertions(+)
--
1.7.9.5