diff options
author | Michael Sevakis <jethead71@rockbox.org> | 2009-02-02 02:38:21 +0000 |
---|---|---|
committer | Michael Sevakis <jethead71@rockbox.org> | 2009-02-02 02:38:21 +0000 |
commit | 1a00056f1f225ee0d1643d3e4e603de171f7ab9a (patch) | |
tree | a73a7d2124305c5578982f1fec872f640bca6b13 /firmware/target/arm/imx31/gigabeat-s/gpio-gigabeat-s.c | |
parent | 304aefe80256429e8c1cbdbb5afd1693d90041aa (diff) | |
download | rockbox-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.c | 6 |
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 */ |
30 | static const struct gpio_event gpio1_events[] = | 30 | static 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 | }; |