Re: [PATCH] i2c: Single-wire Serial Bus Interface for Qualcomm MSMchipsets

From: Kenneth Heitke
Date: Fri Jul 23 2010 - 14:32:40 EST


Daniel Glöckner wrote:
On 07/21/2010 07:52 PM, Kenneth Heitke wrote:
Unlike I2C, SSBI is a point-to-point connection, and therefore there is no
need to specify a slave device address. The SSBI implementation
overrides the slave device address to be a device register address
instead. This restricts the client drivers from using the SMBus
communication APIs unless they update the address field (addr) of the
i2c_client structure prior to every SMBus function call.


+static int
+i2c_ssbi_write_bytes(struct i2c_ssbi_dev *ssbi, struct i2c_msg *msg)
+{
+ int ret = 0;
+ u8 *buf = msg->buf;
+ u16 len = msg->len;
+ u16 addr = msg->addr;
+
+ if (ssbi->controller_type == MSM_SBI_CTRL_SSBI2) {
+ u32 mode2 = readl(ssbi->base + SSBI2_MODE2);
+ writel(SSBI_MODE2_REG_ADDR_15_8(mode2, addr),
+ ssbi->base + SSBI2_MODE2);
+ }
+
+ while (len) {

Where do you set the address if controller_type == MSM_SBI_CTRL_SSBI?

Daniel



The SSBI_MODE2_REG_ADDR register contains the upper 8-bits of the address which is only supported by SSBI 2.0. The lower 8 address bits are written as part of the SSBI_CMD_WRITE macro which is common for both of the controller types.

--
Sent by an employee of the Qualcomm Innovation Center, Inc.
The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum.
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/