/*============================================================================*/
-/* Function prototypes */
-static int drxdap_fasi_write_block(struct i2c_device_addr *dev_addr, /* address of I2C device */
- u32 addr, /* address of register/memory */
- u16 datasize, /* size of data */
- u8 *data, /* data to send */
- u32 flags); /* special device flags */
-
-static int drxdap_fasi_read_block(struct i2c_device_addr *dev_addr, /* address of I2C device */
- u32 addr, /* address of register/memory */
- u16 datasize, /* size of data */
- u8 *data, /* data to send */
- u32 flags); /* special device flags */
-
-static int drxdap_fasi_write_reg8(struct i2c_device_addr *dev_addr, /* address of I2C device */
- u32 addr, /* address of register */
- u8 data, /* data to write */
- u32 flags); /* special device flags */
-
-static int drxdap_fasi_read_reg8(struct i2c_device_addr *dev_addr, /* address of I2C device */
- u32 addr, /* address of register */
- u8 *data, /* buffer to receive data */
- u32 flags); /* special device flags */
-
-static int drxdap_fasi_read_modify_write_reg8(struct i2c_device_addr *dev_addr, /* address of I2C device */
- u32 waddr, /* address of register */
- u32 raddr, /* address to read back from */
- u8 datain, /* data to send */
- u8 *dataout); /* data to receive back */
-
-static int drxdap_fasi_write_reg16(struct i2c_device_addr *dev_addr, /* address of I2C device */
- u32 addr, /* address of register */
- u16 data, /* data to write */
- u32 flags); /* special device flags */
-
-static int drxdap_fasi_read_reg16(struct i2c_device_addr *dev_addr, /* address of I2C device */
- u32 addr, /* address of register */
- u16 *data, /* buffer to receive data */
- u32 flags); /* special device flags */
-
-static int drxdap_fasi_read_modify_write_reg16(struct i2c_device_addr *dev_addr, /* address of I2C device */
- u32 waddr, /* address of register */
- u32 raddr, /* address to read back from */
- u16 datain, /* data to send */
- u16 *dataout); /* data to receive back */
-
-static int drxdap_fasi_write_reg32(struct i2c_device_addr *dev_addr, /* address of I2C device */
- u32 addr, /* address of register */
- u32 data, /* data to write */
- u32 flags); /* special device flags */
-
-static int drxdap_fasi_read_reg32(struct i2c_device_addr *dev_addr, /* address of I2C device */
- u32 addr, /* address of register */
- u32 *data, /* buffer to receive data */
- u32 flags); /* special device flags */
-
-static int drxdap_fasi_read_modify_write_reg32(struct i2c_device_addr *dev_addr, /* address of I2C device */
- u32 waddr, /* address of register */
- u32 raddr, /* address to read back from */
- u32 datain, /* data to send */
- u32 *dataout); /* data to receive back */
-
-/* The structure containing the protocol interface */
-struct drx_access_func drx_dap_fasi_funct_g = {
- drxdap_fasi_write_block, /* Supported */
- drxdap_fasi_read_block, /* Supported */
- drxdap_fasi_write_reg8, /* Not supported */
- drxdap_fasi_read_reg8, /* Not supported */
- drxdap_fasi_read_modify_write_reg8, /* Not supported */
- drxdap_fasi_write_reg16, /* Supported */
- drxdap_fasi_read_reg16, /* Supported */
- drxdap_fasi_read_modify_write_reg16, /* Supported */
- drxdap_fasi_write_reg32, /* Supported */
- drxdap_fasi_read_reg32, /* Supported */
- drxdap_fasi_read_modify_write_reg32 /* Not supported */
-};
-
/*============================================================================*/
/* Functions not supported by protocol*/
return rc;
}
-/******************************
-*
-* int drxdap_fasi_read_modify_write_reg16 (
-* struct i2c_device_addr *dev_addr, -- address of I2C device
-* u32 waddr, -- address of chip register/memory
-* u32 raddr, -- chip address to read back from
-* u16 wdata, -- data to send
-* u16 *rdata) -- data to receive back
-*
-* Write 16-bit data, then read back the original contents of that location.
-* Requires long addressing format to be allowed.
-*
-* Before sending data, the data is converted to little endian. The
-* data received back is converted back to the target platform's endianness.
-*
-* WARNING: This function is only guaranteed to work if there is one
-* master on the I2C bus.
-*
-* Output:
-* - 0 if reading was successful
-* in that case: read back data is at *rdata
-* - -EIO if anything went wrong
-*
-******************************/
-
-static int drxdap_fasi_read_modify_write_reg16(struct i2c_device_addr *dev_addr,
- u32 waddr,
- u32 raddr,
- u16 wdata, u16 *rdata)
-{
- int rc = -EIO;
-
-#if (DRXDAPFASI_LONG_ADDR_ALLOWED == 1)
- if (rdata == NULL)
- return -EINVAL;
-
- rc = drxdap_fasi_write_reg16(dev_addr, waddr, wdata, DRXDAP_FASI_RMW);
- if (rc == 0)
- rc = drxdap_fasi_read_reg16(dev_addr, raddr, rdata, 0);
-#endif
-
- return rc;
-}
/******************************
*
return drxdap_fasi_write_block(dev_addr, addr, sizeof(data), buf, flags);
}
+/******************************
+*
+* int drxdap_fasi_read_modify_write_reg16 (
+* struct i2c_device_addr *dev_addr, -- address of I2C device
+* u32 waddr, -- address of chip register/memory
+* u32 raddr, -- chip address to read back from
+* u16 wdata, -- data to send
+* u16 *rdata) -- data to receive back
+*
+* Write 16-bit data, then read back the original contents of that location.
+* Requires long addressing format to be allowed.
+*
+* Before sending data, the data is converted to little endian. The
+* data received back is converted back to the target platform's endianness.
+*
+* WARNING: This function is only guaranteed to work if there is one
+* master on the I2C bus.
+*
+* Output:
+* - 0 if reading was successful
+* in that case: read back data is at *rdata
+* - -EIO if anything went wrong
+*
+******************************/
+
+static int drxdap_fasi_read_modify_write_reg16(struct i2c_device_addr *dev_addr,
+ u32 waddr,
+ u32 raddr,
+ u16 wdata, u16 *rdata)
+{
+ int rc = -EIO;
+
+#if (DRXDAPFASI_LONG_ADDR_ALLOWED == 1)
+ if (rdata == NULL)
+ return -EINVAL;
+
+ rc = drxdap_fasi_write_reg16(dev_addr, waddr, wdata, DRXDAP_FASI_RMW);
+ if (rc == 0)
+ rc = drxdap_fasi_read_reg16(dev_addr, raddr, rdata, 0);
+#endif
+
+ return rc;
+}
+
/******************************
*
* int drxdap_fasi_write_reg32 (
return drxdap_fasi_write_block(dev_addr, addr, sizeof(data), buf, flags);
}
+
+/* The structure containing the protocol interface */
+struct drx_access_func drx_dap_fasi_funct_g = {
+ drxdap_fasi_write_block, /* Supported */
+ drxdap_fasi_read_block, /* Supported */
+ drxdap_fasi_write_reg8, /* Not supported */
+ drxdap_fasi_read_reg8, /* Not supported */
+ drxdap_fasi_read_modify_write_reg8, /* Not supported */
+ drxdap_fasi_write_reg16, /* Supported */
+ drxdap_fasi_read_reg16, /* Supported */
+ drxdap_fasi_read_modify_write_reg16, /* Supported */
+ drxdap_fasi_write_reg32, /* Supported */
+ drxdap_fasi_read_reg32, /* Supported */
+ drxdap_fasi_read_modify_write_reg32 /* Not supported */
+};