git.openpandora.org
/
pandora-kernel.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Merge branch 'i2c-next' of git://aeryn.fluff.org.uk/bjdooks/linux
[pandora-kernel.git]
/
drivers
/
i2c
/
busses
/
i2c-s3c2410.c
diff --git
a/drivers/i2c/busses/i2c-s3c2410.c
b/drivers/i2c/busses/i2c-s3c2410.c
index
2a0de64
..
f69f91f
100644
(file)
--- a/
drivers/i2c/busses/i2c-s3c2410.c
+++ b/
drivers/i2c/busses/i2c-s3c2410.c
@@
-38,8
+38,8
@@
#include <asm/irq.h>
#include <asm/io.h>
#include <asm/irq.h>
#include <asm/io.h>
-#include <
asm/plat-s3c
/regs-iic.h>
-#include <
asm/plat-s3c
/iic.h>
+#include <
plat
/regs-iic.h>
+#include <
plat
/iic.h>
/* i2c controller state */
/* i2c controller state */
@@
-54,6
+54,7
@@
enum s3c24xx_i2c_state {
struct s3c24xx_i2c {
spinlock_t lock;
wait_queue_head_t wait;
struct s3c24xx_i2c {
spinlock_t lock;
wait_queue_head_t wait;
+ unsigned int suspended:1;
struct i2c_msg *msg;
unsigned int msg_num;
struct i2c_msg *msg;
unsigned int msg_num;
@@
-476,7
+477,7
@@
static int s3c24xx_i2c_doxfer(struct s3c24xx_i2c *i2c,
unsigned long timeout;
int ret;
unsigned long timeout;
int ret;
- if (
!(readl(i2c->regs + S3C2410_IICCON) & S3C2410_IICCON_IRQEN)
)
+ if (
i2c->suspended
)
return -EIO;
ret = s3c24xx_i2c_set_master(i2c);
return -EIO;
ret = s3c24xx_i2c_set_master(i2c);
@@
-957,17
+958,26
@@
static int s3c24xx_i2c_remove(struct platform_device *pdev)
}
#ifdef CONFIG_PM
}
#ifdef CONFIG_PM
+static int s3c24xx_i2c_suspend_late(struct platform_device *dev,
+ pm_message_t msg)
+{
+ struct s3c24xx_i2c *i2c = platform_get_drvdata(dev);
+ i2c->suspended = 1;
+ return 0;
+}
+
static int s3c24xx_i2c_resume(struct platform_device *dev)
{
struct s3c24xx_i2c *i2c = platform_get_drvdata(dev);
static int s3c24xx_i2c_resume(struct platform_device *dev)
{
struct s3c24xx_i2c *i2c = platform_get_drvdata(dev);
- i
f (i2c != NULL)
-
s3c24xx_i2c_init(i2c);
+ i
2c->suspended = 0;
+ s3c24xx_i2c_init(i2c);
return 0;
}
#else
return 0;
}
#else
+#define s3c24xx_i2c_suspend_late NULL
#define s3c24xx_i2c_resume NULL
#endif
#define s3c24xx_i2c_resume NULL
#endif
@@
-976,6
+986,7
@@
static int s3c24xx_i2c_resume(struct platform_device *dev)
static struct platform_driver s3c2410_i2c_driver = {
.probe = s3c24xx_i2c_probe,
.remove = s3c24xx_i2c_remove,
static struct platform_driver s3c2410_i2c_driver = {
.probe = s3c24xx_i2c_probe,
.remove = s3c24xx_i2c_remove,
+ .suspend_late = s3c24xx_i2c_suspend_late,
.resume = s3c24xx_i2c_resume,
.driver = {
.owner = THIS_MODULE,
.resume = s3c24xx_i2c_resume,
.driver = {
.owner = THIS_MODULE,
@@
-986,6
+997,7
@@
static struct platform_driver s3c2410_i2c_driver = {
static struct platform_driver s3c2440_i2c_driver = {
.probe = s3c24xx_i2c_probe,
.remove = s3c24xx_i2c_remove,
static struct platform_driver s3c2440_i2c_driver = {
.probe = s3c24xx_i2c_probe,
.remove = s3c24xx_i2c_remove,
+ .suspend_late = s3c24xx_i2c_suspend_late,
.resume = s3c24xx_i2c_resume,
.driver = {
.owner = THIS_MODULE,
.resume = s3c24xx_i2c_resume,
.driver = {
.owner = THIS_MODULE,