| Commit message (Collapse) | Author | Age | Files | Lines |
|\
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
p-android-omap-3.0-dev-espresso
Conflicts:
Makefile
arch/arm/include/asm/hardware/cache-l2x0.h
arch/arm/kernel/smp.c
arch/arm/mach-omap2/board-4430sdp.c
arch/arm/mach-omap2/board-omap4panda.c
arch/arm/mach-omap2/opp.c
arch/ia64/include/asm/futex.h
drivers/bluetooth/ath3k.c
drivers/bluetooth/btusb.c
drivers/firmware/efivars.c
drivers/gpu/drm/i915/intel_lvds.c
drivers/gpu/drm/radeon/radeon_atombios.c
drivers/gpu/drm/radeon/radeon_irq_kms.c
drivers/hwmon/fam15h_power.c
drivers/mfd/twl6030-irq.c
drivers/mmc/core/sdio.c
drivers/net/tun.c
drivers/net/usb/ipheth.c
drivers/net/usb/usbnet.c
drivers/usb/core/hub.c
drivers/usb/host/xhci-mem.c
drivers/usb/host/xhci.h
drivers/usb/musb/omap2430.c
drivers/usb/serial/ftdi_sio.c
drivers/usb/serial/ftdi_sio_ids.h
drivers/usb/serial/option.c
drivers/usb/serial/qcserial.c
drivers/usb/serial/ti_usb_3410_5052.c
drivers/usb/serial/ti_usb_3410_5052.h
drivers/video/omap2/dss/hdmi.c
fs/splice.c
include/asm-generic/pgtable.h
include/net/sch_generic.h
kernel/cgroup.c
kernel/futex.c
kernel/time/timekeeping.c
net/ipv4/route.c
net/ipv4/syncookies.c
net/ipv4/tcp_ipv4.c
net/wireless/util.c
security/commoncap.c
sound/soc/soc-dapm.c
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
commit 868fea0507308b6548bba7debe5f5c2d5ca47fca upstream.
ML7831 is companion chip for Intel Atom E6xx series.
Signed-off-by: Grant Likely <grant.likely@secretlab.ca>
Signed-off-by: Tomoya MORINAGA <tomoya.rohm@gmail.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
commit 6dd599f8af0166805951f4421a78ba716d78321a upstream.
When using nested threaded irqs, use handle_nested_irq(). This function
does not call the chip handler, so no handler is set.
Signed-off-by: David Jander <david@protonic.nl>
Signed-off-by: Grant Likely <grant.likely@secretlab.ca>
Cc: Steven Rostedt <rostedt@goodmis.org>
Cc: Yong Zhang <yong.zhang0@gmail.com>
Cc: Manfred Gruber <m.gruber@unverspurt.at>
Cc: Thomas Gleixner <tglx@linutronix.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
The recommended way to clear the GPIO IRQ status is to:
- Enable the IRQ
- clear the status
If this above sequence is not followed, i.e., if the status
is cleared after disabling the IRQ then sWAKEUP will not be
cleared and gates the module transition.
Change-Id: I8bd1b820ac8be70530cd6430f26ce541bfd3f9d9
Signed-off-by: Huzefa Kankroliwala <huzefank@ti.com>
Signed-off-by: Girish S G <girishsg@ti.com>
Signed-off-by: Andrii Anisov <andrii.anisov@ti.com>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
This function should be capable of both enabling and disabling interrupts
based upon the *enable* parameter. Right now the function only enables
the interrupt and *enable* is not used at all. So add the interrupt
disable capability also using the parameter.
Change-Id: I9b902184cabe8990205c9d488d261d79a84b94d4
Signed-off-by: Tarun Kanti DebBarma <tarun.kanti@ti.com>
Reviewed-by: Santosh Shilimkar <santosh.shilimkar@ti.com>
Acked-by: Felipe Balbi <balbi@ti.com>
Reviewed-by: Kevin Hilman <khilman@ti.com>
Signed-off-by: Kevin Hilman <khilman@ti.com>
Signed-off-by: Ruslan Bilovol <ruslan.bilovol@ti.com>
|
| |
| |
| |
| |
| |
| |
| | |
Kernel version updated to 3.0.31
Change-Id: Ifbd7150801f3beeec9cbaa566f249d8019ef9348
Signed-off-by: Roman Shaposhnikov <x0166637@ti.com>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
While in suspend, device should only be woken-up from those gpio
pins, who has explicitly marked itself has wakeup capable through
enable_irq_wake() functions from respective drivers.
In current implementation, it address the issue where interrupts
were lost when system had entered deeper c-state. So in CpuIdle
path all the pins with interrupts enabled where marked has wakeup
capable to get the system out of deeper c-states.
With this approach, it is observed that lots of spurious
interrupts are waking system from suspend, even though they not
suppose wake the device.
So based on, whether prepare idle is called from CpuIdle or
suspend mark gpio wakeup capable.
Change-Id: Ib3f9be6e56c0656f4b8736861740ed0b4394384f
Signed-off-by: Ambresh K <ambresh@ti.com>
Signed-off-by: Hema Kalliguddi <hemahk@ti.com>
|
| |
| |
| |
| |
| |
| |
| |
| |
| | |
This reverts commit e1b152cd3bd5552b515ac3e73097e576725d9b99.
Tablet2 specific hack in gpio fw.
Change-Id: Ie46212a2974672eff0485cfb2962c554172c4340
Signed-off-by: Ambresh K <ambresh@ti.com>
|
| |
| |
| |
| |
| |
| |
| |
| |
| | |
This reverts commit 057eb78f1f0467828574fe4134e410860d03cec2.
Tablet2 specific hack in gpio fw.
Change-Id: I858b97db9203ae3c38fc453a054936c389f45930
Signed-off-by: Ambresh K <ambresh@ti.com>
|
| |
| |
| |
| |
| |
| |
| |
| |
| | |
On Tablet2 GPIO 38 is used for secondary sensor and PAD wakeup
is not required for this pin as it is not intended to be wakeup
capable
Change-Id: I973cb8a131fa148e5205eaf5a35a63e6c88c2b9e
Signed-off-by: Huzefa Kankroliwala <huzefank@ti.com>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
On Tablet2 platform, GPIO63 is used for HDMI HPD detection.
The I/O PAD wakeup is not required for this pin as it is not
intended to be wakeup capable.
By enabling it causes spurious wakeup events when system is in
offmode.
Change-Id: I8cbd4e81092d7e5bf149f364fb5874c2dba93a24
Signed-off-by: Sunita Nadampalli <sunitan@ti.com>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
When the gpio controller is off we use the pad wakeup to wake up.
The current code only detects edges if the state of the gpio when
we wake up is different from the state we read before we turned
the gpio controller off. This will miss short pulses. We now use
the pad wakeupevent status to try to detect these pulses.
If the interrupt is configured for dual edge triggering this
will generate an interrupt for any pulse detected. If the
interrupt is configured for single edge detect we only
generate an interrupt if the old state matches the starting
state for the enabled edge detect. This will still miss a
pulse when the interrupt is configured for only the second
edge in that pulse. We may also falsely generate an interrupt
if an edge of the wrong polarity occured before reading the
initial state (since the pad wakeup is enabled before then).
Change-Id: Id9a68cd97b0281a7debb2f37d845979894b63bcc
Signed-off-by: Arve Hjønnevåg <arve@android.com>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
The wakeupenable bits set by this function do not take effect unless
omap4_trigger_ioctrl is called. This function cannot be safely called
after any gpio bank is disabled however, so enable the pad wakeup for
all the gpio banks, call omap4_trigger_ioctrl, then disable the gpio
banks.
Change-Id: I4dd5aac70ebfebe9187fc4058d6470e03f89035b
Signed-off-by: Arve Hjønnevåg <arve@android.com>
|
| |
| |
| |
| |
| |
| | |
idle modes.""
This reverts commit 6e26e777467737a46f68ca33e25dd9c6e677e51b.
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
modes."
Causes issues with accelerometer interrupts.
This reverts commit 72f0ac587209962b48ef6591449d29d5c6092aa0.
Change-Id: I6f60b065f3437a62b0b4079db3e90bda49444ecc
|
|\ \
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Conflicts:
arch/arm/mach-omap2/pm44xx.c
arch/arm/mach-omap2/smartreflex-class1p5.c
arch/arm/mach-omap2/smartreflex.h
arch/arm/mach-omap2/voltage.h
drivers/remoteproc/remoteproc.c
drivers/rpmsg/rpmsg_resmgr.c
include/video/dsscomp.h
Change-Id: I516310bbf02d4e6fc0d980e1755b2b35dfbc7ed4
Signed-off-by: Dan Murphy <dmurphy@ti.com>
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
When converting level triggered interrupts to edge triggered for
low power modes, only unmasked interrupts were set up.
Change-Id: Ib8acfa47e9dfe992422a40bab423f0de64293476
Signed-off-by: Arve Hjønnevåg <arve@android.com>
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Use the same omap2_gpio_prepare_for_idle sequence for idle as for
suspend. The existing suspend sequence will check if the gpio state
has changed while in the low power mode and force an interrupt to
be generated if needed.
Change-Id: I274f38ebcaa811d6d43550912b7de82ffdb120e9
Signed-off-by: Arve Hjønnevåg <arve@android.com>
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
omap2_gpio_prepare_for_idle() was calling omap2_gpio_set_wakeupenables()
on banks that weren't in use and cause external aborts.
Change-Id: Ifbb01f9d7d635a81cdd6798a582d22690d3a97cb
Signed-off-by: Mike J. Chen <mjchen@google.com>
|
|/ /
| |
| |
| |
| |
| |
| |
| |
| | |
Need to add the clock calls to the setwakeupenable GPIO functions
as on 4430 when going to idle the IRQ enable register is trying to
be accessed with clocks off causing a kernel panic.
Change-Id: Ia01ea21ff8674a4f48263addfc3bcc7b8475f17c
Signed-off-by: Dan Murphy <dmurphy@ti.com>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
If a level wake interrupt arrives after disable_irq has been called
but before suspend, the interrupt will be masked. The omap gpio
driver erases all triggering information when masking an interrupt.
Track the triggering state of gpio interrupts, and abort suspend
if a masked wakeup interrupt is active when suspending.
Change-Id: I117b592d21c455074796deaea8148edf0947eb35
Signed-off-by: Colin Cross <ccross@android.com>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
When transitioning to off mode, it is possible that the powerdomain
that contains the gpio block does not transition due to another
clock domain being on. In this case, we must do the same
configuration on the gpios as in the non-off mode case.
Modify omap2_gpio_set_edge_wakeup to use different variables
to save context vs. omap_save_context, and both set the edge
wakeups and call pm_runtime_put_sync when going to off mode.
Change-Id: I2890f7f3dd2c3dfe493cf748a523004a76e560c2
Signed-off-by: Colin Cross <ccross@android.com>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
THe pad wakeupenable bits are required to wake through a gpio when
in OFF or OSWR. If the wakeupenable bits are set when the controller
is not in idle, a PRCM and a GPIO interrupt will occur for every
interrupt. Set the wakeupenable bits for every active gpio
interrupt when entering any gpio idle mode.
Also sets the irq chip flag IRQCHIP_MASK_ON_SUSPEND to cause the
irq pm code to mask all non-wake gpios in suspend, which will
ensure the wakeupenable bit is not set on non-wake gpios.
Change-Id: I03b8d954a65f8cc47388319e983decf03308448f
Signed-off-by: Colin Cross <ccross@android.com>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
The gpio controller in omap4 can only wake from idle on edge
triggered lines. The level triggered interrupts are converted
to edge triggered in idle. It appears that the edge triggered
enable bits are ignored if the level triggered bit is also set,
so clear the level trigger bit in idle and restore it later.
If a level triggered interrupt is pending when the level detect
register is cleared the edge detect setting will not detect it,
and the interrupt will be lost. After clearing the level detect
bits, manually check the datain register against the saved
level detect values, and abort the transition if the interrupt
is pending.
Change-Id: I43fbee728cb6ebc407b8c4430a1cd37165354dc6
Signed-off-by: Colin Cross <ccross@android.com>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Call the same function to set up the gpio controllers for off
mode and retention, and get rid of the external apis to set
edge wakeups.
Calling both omap2_gpio_prepare_for_idle and
omap2_gpio_set_edge_wakeup, as was done when entering off mode,
was never safe because both functions save their context in the
same location.
Change-Id: I159bdc1863aec9827d7fb1ec0525afd632be6fa6
Signed-off-by: Colin Cross <ccross@android.com>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
put_sync might sleep and omap_gpio_free is calling it
between spinlocks thus changing it to put_sync_suspend
to avoid the following warning:
[ 104.568847] BUG: sleeping function called from invalid context at drivers/base/power/runtime.c:735
[ 104.578460] in_atomic(): 1, irqs_disabled(): 128, pid: 297, name: kworker/0:3
[ 104.586090] Backtrace:
[ 104.588775] [<c00531c4>] (dump_backtrace+0x0/0x110) from [<c0574ae8>] (dump_stack+0x18/0x1c)
[ 104.597747] r6:60000013 r5:ffff9e48 r4:00000000 r3:60000093
[ 104.603759] [<c0574ad0>] (dump_stack+0x0/0x1c) from [<c008337c>] (__might_sleep+0x130/0x134)
[ 104.612701] [<c008324c>] (__might_sleep+0x0/0x134) from [<c02cf1b0>] (__pm_runtime_idle+0x94/0x98)
[ 104.622192] r5:00000004 r4:c787ac08
[ 104.626007] [<c02cf11c>] (__pm_runtime_idle+0x0/0x98) from [<c0236cc8>] (omap_gpio_free+0xa0/0xb0)
[ 104.635467] r7:00000013 r6:60000013 r5:c7877268 r4:c7877200
[ 104.641510] [<c0236c28>] (omap_gpio_free+0x0/0xb0) from [<c0235438>] (gpio_free+0xa4/0x108)
[ 104.650329] r7:000000f9 r6:c787727c r5:c07acfe0 r4:00000053
[ 104.656372] [<c0235394>] (gpio_free+0x0/0x108) from [<c0277e3c>] (_resource_free+0x170/0x274)
[ 104.665405] [<c0277ccc>] (_resource_free+0x0/0x274) from [<c0278ddc>] (rprm_cb+0x56c/0x604)
[ 104.674255] r7:00000066 r6:c7a1ac08 r5:c7a14cd0 r4:00200200
[ 104.680267] [<c0278870>] (rprm_cb+0x0/0x604) from [<c0275910>] (rpmsg_recv_done+0xbc/0x17c)
[ 104.689117] [<c0275854>] (rpmsg_recv_done+0x0/0x17c) from [<c0274b54>] (vring_interrupt+0x44/0x54)
[ 104.698608] r8:00000004 r7:00000000 r6:00000002 r5:00000002 r4:c074f918
[ 104.705718] [<c0274b10>] (vring_interrupt+0x0/0x54) from [<c007b1cc>] (omap_rpmsg_mbox_callback+0x6c/0)
[ 104.715972] [<c007b160>] (omap_rpmsg_mbox_callback+0x0/0xb8) from [<c00b8088>] (notifier_call_chain+0x)
[ 104.726562] r5:00000000 r4:fffffffe
[ 104.730346] [<c00b803c>] (notifier_call_chain+0x0/0x8c) from [<c00b8480>] (__blocking_notifier_call_ch)
[ 104.741485] r8:c0749a88 r7:00000004 r6:00000002 r5:00000000 r4:c0749a68
[ 104.748413] r3:ffffffff
[ 104.751220] [<c00b842c>] (__blocking_notifier_call_chain+0x0/0x6c) from [<c00b84b8>] (blocking_notifie)
[ 104.763183] r8:00000004 r7:00000000 r6:c63ab434 r5:c6fcbefc r4:c63ab420
[ 104.770294] [<c00b8498>] (blocking_notifier_call_chain+0x0/0x28) from [<c007fe54>] (mbox_rx_work+0x84/)
[ 104.780639] [<c007fdd0>] (mbox_rx_work+0x0/0xe8) from [<c00aaf40>] (process_one_work+0x114/0x410)
[ 104.790008] r8:c007fdd0 r7:00000000 r6:c1837500 r5:c18335c0 r4:c6f3b580
[ 104.797149] [<c00aae2c>] (process_one_work+0x0/0x410) from [<c00ab5e4>] (worker_thread+0x1a8/0x490)
[ 104.806732] [<c00ab43c>] (worker_thread+0x0/0x490) from [<c00b2208>] (kthread+0x94/0x98)
[ 104.815307] [<c00b2174>] (kthread+0x0/0x98) from [<c009860c>] (do_exit+0x0/0x720)
[ 104.823211] r7:00000013 r6:c009860c r5:c00b2174 r4:c7909e94
Change-Id: I051f13d82d6b776641ebd65ff16f9ce0f02fdf57
Signed-off-by: Miguel Vadillo <vadillo@ti.com>
|
| |
| |
| |
| |
| | |
Change-Id: If12733e5bb468e6ba67bd2618f3c0ca8afd7d766
Signed-off-by: Todd Poynor <toddpoynor@google.com>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
On 4430 system was crashing in idle path while accessing
GPIO regiters w/o its clocks enabled. In Many platforms some banks
may not be used at all. Before acessing any GPIO bank register ensure
that the clocks are active. Once accessing is done disable the clocks.
Signed-off-by: Axel Haslem <axelhaslam@ti.com>
Signed-off-by: Rajeev Kulkarni <rajeevk@ti.com>
|
| |
| |
| |
| |
| |
| |
| |
| |
| | |
The edge detect bits should be left set if they were set entering
idle, even if wkup_status was cleared for any reason. Apply
wkup_status to the level detect bits only.
Change-Id: I11b0ae629004a42a7fd8d7d5b2a32208586d7697
Signed-off-by: Colin Cross <ccross@android.com>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Only edge trigger is supported for wakeup.
if a gpio is set as wakeup, and level trigger,
make sure we set the edge trigger so that we
can wake up.
Change-Id: Ibb61042be6ce053729ff20f3cb8d53899afe42b1
Signed-off-by: Axel Haslam <axelhaslam@ti.com>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
The use of the new GPIO_IRQWAKEN_0 register cannot
use the same logic as the GPIO_CLEARWKUPENA and
GPIO_SETWKUENA. To set GPIO_IRQWAKEN_0 we need to read
the register and OR the corresponding bit. to clear
the wakeup we need clear the bit NOT set it.
Change-Id: Iabbe553e3db283804f5b89dfba3f5fa35b88d9dc
Signed-off-by: Axel Haslam <axelhaslam@ti.com>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
omap_pm_was_context_lost
Drivers just need to know if thier context was lost
or not. There is not much point in maintaining a count
This removes omap_pm_get_dev_context_loss_count and
replaces it with omap_pm_was_context_lost
Adapt drivers to use the omap_pm_was_context_lost API,
which returns a bool value instead of relying on the
incrementing context lost counter. This makes
drivers a little more snappier as they do not need to
restore contexts when not needed.
WARNING: this changes the api set available to drivers
to use from OMAP PM layer.
Change-Id: I7fd9183d3e12982bb40651df9378637073121399
Signed-off-by: Axel Haslam <axelhaslam@ti.com>
|
| |
| |
| |
| |
| |
| |
| |
| |
| | |
save is usually called by arch's suspend path where interrupts
are disabled. we should use put_sync_suspend instead of put_sync
to prevent sleepable calls to callbacks.
Change-Id: I1194b23753d1ad94ffaa23bc9f36ead418d13974
Signed-off-by: Nishanth Menon <nm@ti.com>
|
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Setup the interrupt enable registers only after we have configured the
required edge and required configurations, not before, to prevent
spurious events as part of restore routine.
Change-Id: I3936d3b8f9b5c12052e2e388d79558b2e134fb35
Signed-off-by: Nishanth Menon <nm@ti.com>
|
| |
| |
| |
| |
| |
| |
| |
| | |
Setup the dataout register before setting the GPIO to output mode
in restore path.
Change-Id: I0d3ecd9eda97a466e73e1cd2e16b7b54be3c2139
Signed-off-by: Nishanth Menon <nm@ti.com>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
GPIO IP revisions such as those used in OMAP4 have a set_dataout
while the previous revisions used a single dataout register.
Depending on what is available restore the dataout settings
to the right register.
Change-Id: I07c8c0d90f4fe115533711bd587ae0d92f9e0232
Signed-off-by: Nishanth Menon <nm@ti.com>
|
| |
| |
| |
| |
| |
| |
| |
| | |
Status register has no meaning for save and restore. We
need to save and restore the wakeup_set register instead.
Change-Id: I50fa813aa77391622845dcc012cf1ee74377dd67
Signed-off-by: Nishanth Menon <nm@ti.com>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
GPIO debounce needs to be saved and restored as well
for proper restoration for driver expectation. To save
the registers, we cannot cut the clock before the save,
hence move the clk disable after the save.
Change-Id: I902ca8a4ab9750c49413f20a5782eb31f9241f1c
Signed-off-by: Nishanth Menon <nm@ti.com>
|
| |
| |
| |
| |
| |
| |
| | |
Mark the GPIO bank as restored once restoration is complete.
Change-Id: Id4dd1380fade04870beac1b5115f9d15325fbd49
Signed-off-by: Nishanth Menon <nm@ti.com>
|
|\ \
| |/ |
|
| |
| |
| |
| |
| |
| | |
Signed-off-by: Axel Lin <axel.lin@gmail.com>
Acked-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Signed-off-by: Grant Likely <grant.likely@secretlab.ca>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
GPIO uses put_sync in irq handler at the moment, this causes the following
warning with a check patch such as https://patchwork.kernel.org/patch/1001572/:
[ 4.036560] BUG: sleeping function called from invalid context at drivers/base/power/runtime.c:735
[ 4.046508] in_atomic(): 1, irqs_disabled(): 128, pid: 1, name: swapper
[ 4.053863] Backtrace:
[ 4.056762] [<c00508d0>] (dump_backtrace+0x0/0x10c) from [<c0533870>] (dump_stack+0x18/0x1c)
[ 4.066131] r7:00000000 r6:ffff6c05 r5:c06ce080 r4:de43a000
[ 4.072784] [<c0533858>] (dump_stack+0x0/0x1c) from [<c0079744>] (__might_sleep+0x108/0x128)
[ 4.082183] [<c007963c>] (__might_sleep+0x0/0x128) from [<c027b824>] (__pm_runtime_idle+0x90/0x98)
[ 4.092132] r6:c06d0720 r5:00000004 r4:de486808
[ 4.097534] [<c027b794>] (__pm_runtime_idle+0x0/0x98) from [<c0204ce0>] (gpio_irq_handler+0x1e8/0x270)
[ 4.107849] r7:00000000 r6:c06d0720 r5:c06e7220 r4:de474000
[ 4.114501] [<c0204af8>] (gpio_irq_handler+0x0/0x270) from [<c00cc570>] (generic_handle_irq+0x3c/0x48)
[ 4.124847] [<c00cc534>] (generic_handle_irq+0x0/0x48) from [<c0046054>] (asm_do_IRQ+0x54/0xb4)
[ 4.134521] [<c0046000>] (asm_do_IRQ+0x0/0xb4) from [<c004c448>] (__irq_svc+0x48/0xe0)
Instead, use put_sync_suspend and since the gpio devices are already marked as
used in irq enabled case, the change removes a potential invalid condition.
Acked-by: Nishanth Menon <nm@ti.com>
Signed-off-by: Colin Cross <ccross@google.com>
|
| |
| |
| |
| |
| |
| |
| |
| | |
The code does a wrong check and does not allow OMAP2+ to set
level type.
Acked-by: Santosh Shilimkar <santosh.shilimkar@ti.com>
Signed-off-by: Girish S G <girishsg@ti.com>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
On probe a call to runtime get sync will eventualy
result in a context restore. We do not want to
restore any context, if it was never saved on
the first place.
Acked-by: Santosh Shilimkar <santosh.shilimkar@ti.com>
Signed-off-by: Axel Haslam <axelhaslam@ti.com>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Simplify omap2_gpio_prepare_for_idle() and omap2_gpio_resume_after_idle()
by moving most of the stuff to *_pm_runtime_suspend() and *_pm_runtime_resume().
Also, omap_gpio_suspend() and omap_gpio_resume() optimized to operate per
GPIO bank instead of operating on entire list every time.
Signed-off-by: Tarun Kanti DebBarma <tarun.kanti@ti.com>
Signed-off-by: Charulatha V <charu@ti.com>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Call runtime pm APIs pm_runtime_get_sync() and pm_runtime_put_sync()
for enabling/disabling clocks appropriately. Remove syscore_ops and
instead use dev_pm_ops now.
[girishsg@ti.com: Fixed review comments]
Signed-off-by: Girish S G <girishsg@ti.com>
Signed-off-by: Charulatha V <charu@ti.com>
Signed-off-by: Tarun Kanti DebBarma <tarun.kanti@ti.com>
|
| |
| |
| |
| |
| |
| |
| |
| | |
The only bank->type (method) used in the OMAP GPIO driver is MPUIO type as they
need to be handled separately. Identify the same using a flag and remove all
METHOD_* macros.
Signed-off-by: Charulatha V <charu@ti.com>
|
| |
| |
| |
| |
| |
| |
| |
| | |
In gpio_irq_handler, isr register is always accessed as 32 bit register and only
for OMAP15xx the first 16 MSBs are masked. Correct this by using the appropriate
readl/readw registers as per the bank width.
Signed-off-by: Charulatha V <charu@ti.com>
|
| |
| |
| |
| |
| |
| | |
Use regs->pinctrl field instead of using the macro OMAP1510_GPIO_PIN_CONTROL
Signed-off-by: Charulatha V <charu@ti.com>
|
| |
| |
| |
| |
| |
| |
| |
| |
| | |
With register offsets now defined for respective OMAP versions we can get rid
of cpu_class_* checks. In addition, organized common initialization for the
different OMAP silicon versions.
Signed-off-by: Charulatha V <charu@ti.com>
Signed-off-by: Tarun Kanti DebBarma <tarun.kanti@ti.com>
|