I forgot to remove this during earlier cleanup patches and only checked
various builds for errors, not warnings.
Reported-by: kbuild test robot <fengguang.wu@intel.com>
Signed-off-by: Thierry Reding <thierry.reding@gmail.com>
Use SIMPLE_DEV_PM_OPS macro will initialize the member "freeze"
and "thaw" of pwm_backlight_pm_ops as below,
.freeze = suspend_fn,
.thaw = resume_fn,
then during the process of making hibernation snapshot, screen
will be blank at the moment of freezing, and then light at the
moment of thawing.
this is not the right user experience for suspending to disk.
so this patch drops freeze and thaw callback, make the LCD is
always lighting before the final shutdown.
Signed-off-by: Huayi Li <huayi.li@csr.com>
Signed-off-by: Barry Song <Baohua.Song@csr.com>
Signed-off-by: Thierry Reding <thierry.reding@gmail.com>
Split adjustment of the brightness (by changing the PWM duty cycle) from
the power on sequence. This fixes an issue where the brightness can no
longer be updated once the backlight has been enabled.
Reported-by: Marc Dietrich <marvin24@gmx.de>
Signed-off-by: Thierry Reding <treding@nvidia.com>
Conflicts:
drivers/video/backlight/pwm_bl.c
Currently the driver assumes that the values specified in the
brightness-levels device tree property increase as they are parsed from
left to right. But boards that invert the signal between the PWM output
and the backlight will need to specify decreasing brightness-levels.
This patch removes the assumption that the last element of the array is
the maximum value, and instead searches the array for the maximum value
and uses that in the duty cycle calculation.
Signed-off-by: Mike Dunn <mikedunn@newsguy.com>
Signed-off-by: Thierry Reding <treding@nvidia.com>
Make use of the new enable_gpio field and allow it to be set from DT as
well. Now that all legacy users of platform data have been converted to
initialize this field to an invalid value, it is safe to use the field
from the driver.
Signed-off-by: Thierry Reding <treding@nvidia.com>
To support a wider variety of backlight setups, introduce an optional
enable GPIO. Legacy users of the platform data already have a means of
supporting GPIOs by using the .init(), .exit() and .notify() hooks. DT
users however cannot use those, so an alternative method is required.
In order to ease the introduction of the optional enable GPIO, make it
available in the platform data first, so that existing users can be
converted. Once that has happened a second patch will add code to make
use of it in the driver.
Signed-off-by: Thierry Reding <treding@nvidia.com>
Follow up patches will add support for more complex means of powering
the backlight on and off such as using a regulator. To prevent calls to
the regulator API from becoming unbalanced, keep track of the enabled
state internally.
Signed-off-by: Thierry Reding <treding@nvidia.com>
In preparation for adding an optional regulator and enable GPIO to the
driver, split the power on and power off sequences into separate
functions to reduce code duplication at the multiple call sites.
Signed-off-by: Thierry Reding <treding@nvidia.com>
Add more blank lines to increase readability. While at it, remove a
trailing blank line at the end of the file.
Signed-off-by: Thierry Reding <treding@nvidia.com>
BUG: sleeping function called from invalid context at mm/slub.c:926
in_atomic(): 1, irqs_disabled(): 128, pid: 0, name: swapper/3
INFO: lockdep is turned off.
irq event stamp: 45900
hardirqs last enabled at (45899): [<c009fe18>] rcu_preempt_note_context_switch+0x174/0x18c
hardirqs last disabled at (45900): [<c0605a64>] _raw_spin_lock_irq+0x18/0x50
softirqs last enabled at (45744): [<c002c424>] irq_enter+0x50/0x78
softirqs last disabled at (45743): [<c002c418>] irq_enter+0x44/0x78
CPU: 3 PID: 0 Comm: swapper/3 Tainted: G O 3.10.0 #405
[<c0013fe8>] (unwind_backtrace+0x0/0xe0) from [<c0011930>] (show_stack+0x10/0x14)
[<c0011930>] (show_stack+0x10/0x14) from [<c00fa3dc>] (__kmalloc+0x70/0x228)
[<c00fa3dc>] (__kmalloc+0x70/0x228) from [<c0148d2c>] (__proc_create+0x94/0xf0)
[<c0148d2c>] (__proc_create+0x94/0xf0) from [<c0149000>] (proc_mkdir_data+0x30/0x74)
[<c0149000>] (proc_mkdir_data+0x30/0x74) from [<c009babc>] (register_handler_proc+0xe8/0x114)
[<c009babc>] (register_handler_proc+0xe8/0x114) from [<c00982b0>] (__setup_irq+0x334/0x3fc)
[<c00982b0>] (__setup_irq+0x334/0x3fc) from [<c0098558>] (setup_irq+0x58/0x80)
[<c0098558>] (setup_irq+0x58/0x80) from [<c05ef51c>] (rk_timer_init_clockevent+0x98/0xcc)
[<c05ef51c>] (rk_timer_init_clockevent+0x98/0xcc) from [<c05ed0dc>] (percpu_timer_setup+0x54/0xa8)
[<c05ed0dc>] (percpu_timer_setup+0x54/0xa8) from [<c05ed4d8>] (secondary_start_kernel+0x128/0x160)
[<c05ed4d8>] (secondary_start_kernel+0x128/0x160) from [<600081bc>] (0x600081bc)