Merge branch 'i2c/for-next' of git://git.kernel.org/pub/scm/linux/kernel/git/wsa...
[linux-2.6-block.git] / drivers / i2c / busses / i2c-cros-ec-tunnel.c
index 8ca5cbbcec915072cfa8a8de4d9d8df7c708dd82..875c22ae54004d4aba33c4a72c4bc398d47ac0a8 100644 (file)
@@ -96,7 +96,7 @@ static int ec_i2c_construct_message(u8 *buf, const struct i2c_msg i2c_msgs[],
                msg->addr_flags = i2c_msg->addr;
 
                if (i2c_msg->flags & I2C_M_TEN)
-                       msg->addr_flags |= EC_I2C_FLAG_10BIT;
+                       return -EINVAL;
 
                if (i2c_msg->flags & I2C_M_RD) {
                        msg->addr_flags |= EC_I2C_FLAG_READ;
@@ -220,7 +220,9 @@ static int ec_i2c_xfer(struct i2c_adapter *adap, struct i2c_msg i2c_msgs[],
                }
        }
 
-       ec_i2c_construct_message(request, i2c_msgs, num, bus_num);
+       result = ec_i2c_construct_message(request, i2c_msgs, num, bus_num);
+       if (result)
+               goto exit;
 
        msg.version = 0;
        msg.command = EC_CMD_I2C_PASSTHRU;
@@ -313,11 +315,20 @@ static int ec_i2c_remove(struct platform_device *dev)
        return 0;
 }
 
+#ifdef CONFIG_OF
+static const struct of_device_id cros_ec_i2c_of_match[] = {
+       { .compatible = "google,cros-ec-i2c-tunnel" },
+       {},
+};
+MODULE_DEVICE_TABLE(of, cros_ec_i2c_of_match);
+#endif
+
 static struct platform_driver ec_i2c_tunnel_driver = {
        .probe = ec_i2c_probe,
        .remove = ec_i2c_remove,
        .driver = {
                .name = "cros-ec-i2c-tunnel",
+               .of_match_table = of_match_ptr(cros_ec_i2c_of_match),
        },
 };