/* Greybus i2c request types */
#define GB_I2C_TYPE_FUNCTIONALITY 0x02
-#define GB_I2C_TYPE_TIMEOUT 0x03
#define GB_I2C_TYPE_RETRIES 0x04
#define GB_I2C_TYPE_TRANSFER 0x05
#define GB_I2C_RETRIES_DEFAULT 3
-#define GB_I2C_TIMEOUT_DEFAULT 1000 /* milliseconds */
/* functionality request has no payload */
struct gb_i2c_functionality_response {
__le32 functionality;
} __packed;
-struct gb_i2c_timeout_request {
- __le16 msec;
-} __packed;
-/* timeout response has no payload */
-
struct gb_i2c_retries_request {
__u8 retries;
} __packed;
struct gb_connection *connection;
u32 functionality;
- u16 timeout_msec;
u8 retries;
struct i2c_adapter adapter;
return 0;
}
-static int gb_i2c_timeout_operation(struct gb_i2c_device *gb_i2c_dev, u16 msec)
-{
- struct device *dev = &gb_i2c_dev->connection->bundle->dev;
- struct gb_i2c_timeout_request request;
- int ret;
-
- request.msec = cpu_to_le16(msec);
- ret = gb_operation_sync(gb_i2c_dev->connection, GB_I2C_TYPE_TIMEOUT,
- &request, sizeof(request), NULL, 0);
- if (ret)
- dev_err(dev, "timeout operation failed (%d)\n", ret);
- else
- gb_i2c_dev->timeout_msec = msec;
-
- return ret;
-}
-
static int gb_i2c_retries_operation(struct gb_i2c_device *gb_i2c_dev,
u8 retries)
{
/*
* Do initial setup of the i2c device. This includes verifying we
* can support it (based on the protocol version it advertises).
- * If that's OK, we get and cached its functionality bits, and
- * set up the retry count and timeout.
+ * If that's OK, we get and cached its functionality bits and
+ * set up the retry count.
*
* Note: gb_i2c_dev->connection is assumed to have been valid.
*/
if (ret)
return ret;
- /* Set up our default retry count and timeout */
- ret = gb_i2c_retries_operation(gb_i2c_dev, GB_I2C_RETRIES_DEFAULT);
- if (ret)
- return ret;
-
- return gb_i2c_timeout_operation(gb_i2c_dev, GB_I2C_TIMEOUT_DEFAULT);
+ /* Set up our default retry count */
+ return gb_i2c_retries_operation(gb_i2c_dev, GB_I2C_RETRIES_DEFAULT);
}
static int gb_i2c_connection_init(struct gb_connection *connection)
adapter->class = I2C_CLASS_HWMON | I2C_CLASS_SPD;
adapter->algo = &gb_i2c_algorithm;
/* adapter->algo_data = what? */
- adapter->timeout = gb_i2c_dev->timeout_msec * HZ / 1000;
adapter->retries = gb_i2c_dev->retries;
adapter->dev.parent = &connection->bundle->dev;