浏览代码

i2c: New-style devices can support driver model wakeup flags

We need to be able to flag I2C devices, such as RTCs, which can issue wake
events (usually through IRQ lines).  This adds an i2c_board_info.flags bit,
and uses it to initialize the i2c device node.  (And shrinks a few lines
that were overly long.)

Signed-off-by: David Brownell <dbrownell@users.sourceforge.net>
Signed-off-by: Jean Delvare <khali@linux-fr.org>
David Brownell 17 年之前
父节点
当前提交
3bbb835d4c
共有 2 个文件被更改,包括 7 次插入4 次删除
  1. 3 1
      drivers/i2c/i2c-core.c
  2. 4 3
      include/linux/i2c.h

+ 3 - 1
drivers/i2c/i2c-core.c

@@ -226,7 +226,9 @@ i2c_new_device(struct i2c_adapter *adap, struct i2c_board_info const *info)
 	client->adapter = adap;
 	client->adapter = adap;
 
 
 	client->dev.platform_data = info->platform_data;
 	client->dev.platform_data = info->platform_data;
-	client->flags = info->flags;
+	device_init_wakeup(&client->dev, info->flags & I2C_CLIENT_WAKE);
+
+	client->flags = info->flags & ~I2C_CLIENT_WAKE;
 	client->addr = info->addr;
 	client->addr = info->addr;
 	client->irq = info->irq;
 	client->irq = info->irq;
 
 

+ 4 - 3
include/linux/i2c.h

@@ -342,9 +342,10 @@ static inline void i2c_set_adapdata (struct i2c_adapter *dev, void *data)
 }
 }
 
 
 /*flags for the client struct: */
 /*flags for the client struct: */
-#define I2C_CLIENT_PEC  0x04			/* Use Packet Error Checking */
-#define I2C_CLIENT_TEN	0x10			/* we have a ten bit chip address	*/
-						/* Must equal I2C_M_TEN below */
+#define I2C_CLIENT_PEC	0x04		/* Use Packet Error Checking */
+#define I2C_CLIENT_TEN	0x10		/* we have a ten bit chip address */
+					/* Must equal I2C_M_TEN below */
+#define I2C_CLIENT_WAKE	0x80		/* for board_info; true iff can wake */
 
 
 /* i2c adapter classes (bitmask) */
 /* i2c adapter classes (bitmask) */
 #define I2C_CLASS_HWMON		(1<<0)	/* lm_sensors, ... */
 #define I2C_CLASS_HWMON		(1<<0)	/* lm_sensors, ... */