summaryrefslogtreecommitdiff
path: root/firmware/target/arm/imx31/gigabeat-s/gpio-gigabeat-s.c
diff options
context:
space:
mode:
authorMichael Sevakis <jethead71@rockbox.org>2009-02-02 02:38:21 +0000
committerMichael Sevakis <jethead71@rockbox.org>2009-02-02 02:38:21 +0000
commit1a00056f1f225ee0d1643d3e4e603de171f7ab9a (patch)
treea73a7d2124305c5578982f1fec872f640bca6b13 /firmware/target/arm/imx31/gigabeat-s/gpio-gigabeat-s.c
parent304aefe80256429e8c1cbdbb5afd1693d90041aa (diff)
downloadrockbox-1a00056f1f225ee0d1643d3e4e603de171f7ab9a.tar.gz
rockbox-1a00056f1f225ee0d1643d3e4e603de171f7ab9a.zip
i.MX31: Make SPI more tolerant by resetting and forcing a reconfigure of the interface if an error ever happens. Better handle PMIC GPIO interrupt; it definitely doesn't low-pulse PRIINT (remains high if sources become active again or stay active while acking) so needed rising edge may never happen in such a case-- use high-level detection rather than rising edge. Optimize the reg/clr/set/mod functions a bit since they get more regular use now.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@19903 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'firmware/target/arm/imx31/gigabeat-s/gpio-gigabeat-s.c')
-rw-r--r--firmware/target/arm/imx31/gigabeat-s/gpio-gigabeat-s.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/firmware/target/arm/imx31/gigabeat-s/gpio-gigabeat-s.c b/firmware/target/arm/imx31/gigabeat-s/gpio-gigabeat-s.c
index 37f6a00c3d..446932b308 100644
--- a/firmware/target/arm/imx31/gigabeat-s/gpio-gigabeat-s.c
+++ b/firmware/target/arm/imx31/gigabeat-s/gpio-gigabeat-s.c
@@ -29,10 +29,14 @@
29/* Describes single events for each GPIO1 pin */ 29/* Describes single events for each GPIO1 pin */
30static const struct gpio_event gpio1_events[] = 30static const struct gpio_event gpio1_events[] =
31{ 31{
32 /* mc13783 keeps the PRIINT high (no low pulse) if other unmasked
33 * interrupts become active when clearing them or if a source being
34 * cleared becomes active at that time. Edge-detection will not get
35 * a rising edge in that case so use high-level sense. */
32 [MC13783_EVENT_ID-GPIO1_EVENT_FIRST] = 36 [MC13783_EVENT_ID-GPIO1_EVENT_FIRST] =
33 { 37 {
34 .mask = 1 << MC13783_GPIO_LINE, 38 .mask = 1 << MC13783_GPIO_LINE,
35 .sense = GPIO_SENSE_RISING, 39 .sense = GPIO_SENSE_HIGH_LEVEL,
36 .callback = mc13783_event, 40 .callback = mc13783_event,
37 } 41 }
38}; 42};