i2c: xlr: use core to detect 'no zero length' quirk
And don't reimplement in the driver. Signed-off-by: Wolfram Sang <wsa+renesas@sang-engineering.com> Signed-off-by: Wolfram Sang <wsa@the-dreams.de>
This commit is contained in:
parent
3ef3e5cd72
commit
6e6664700d
|
@ -173,9 +173,6 @@ static int xlr_i2c_tx(struct xlr_i2c_private *priv, u16 len,
|
||||||
u8 offset;
|
u8 offset;
|
||||||
u32 xfer;
|
u32 xfer;
|
||||||
|
|
||||||
if (!len)
|
|
||||||
return -EOPNOTSUPP;
|
|
||||||
|
|
||||||
offset = buf[0];
|
offset = buf[0];
|
||||||
xlr_i2c_wreg(priv->iobase, XLR_I2C_ADDR, offset);
|
xlr_i2c_wreg(priv->iobase, XLR_I2C_ADDR, offset);
|
||||||
xlr_i2c_wreg(priv->iobase, XLR_I2C_DEVADDR, addr);
|
xlr_i2c_wreg(priv->iobase, XLR_I2C_DEVADDR, addr);
|
||||||
|
@ -241,9 +238,6 @@ static int xlr_i2c_rx(struct xlr_i2c_private *priv, u16 len, u8 *buf, u16 addr)
|
||||||
unsigned long timeout, stoptime, checktime;
|
unsigned long timeout, stoptime, checktime;
|
||||||
int nbytes, timedout;
|
int nbytes, timedout;
|
||||||
|
|
||||||
if (!len)
|
|
||||||
return -EOPNOTSUPP;
|
|
||||||
|
|
||||||
xlr_i2c_wreg(priv->iobase, XLR_I2C_CFG,
|
xlr_i2c_wreg(priv->iobase, XLR_I2C_CFG,
|
||||||
XLR_I2C_CFG_NOADDR | priv->cfg->cfg_extra);
|
XLR_I2C_CFG_NOADDR | priv->cfg->cfg_extra);
|
||||||
xlr_i2c_wreg(priv->iobase, XLR_I2C_BYTECNT, len - 1);
|
xlr_i2c_wreg(priv->iobase, XLR_I2C_BYTECNT, len - 1);
|
||||||
|
@ -340,6 +334,10 @@ static const struct i2c_algorithm xlr_i2c_algo = {
|
||||||
.functionality = xlr_func,
|
.functionality = xlr_func,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
static const struct i2c_adapter_quirks xlr_i2c_quirks = {
|
||||||
|
.flags = I2C_AQ_NO_ZERO_LEN,
|
||||||
|
};
|
||||||
|
|
||||||
static const struct xlr_i2c_config xlr_i2c_config_default = {
|
static const struct xlr_i2c_config xlr_i2c_config_default = {
|
||||||
.status_busy = XLR_I2C_BUS_BUSY,
|
.status_busy = XLR_I2C_BUS_BUSY,
|
||||||
.cfg_extra = 0,
|
.cfg_extra = 0,
|
||||||
|
@ -427,6 +425,7 @@ static int xlr_i2c_probe(struct platform_device *pdev)
|
||||||
priv->adap.owner = THIS_MODULE;
|
priv->adap.owner = THIS_MODULE;
|
||||||
priv->adap.algo_data = priv;
|
priv->adap.algo_data = priv;
|
||||||
priv->adap.algo = &xlr_i2c_algo;
|
priv->adap.algo = &xlr_i2c_algo;
|
||||||
|
priv->adap.quirks = &xlr_i2c_quirks;
|
||||||
priv->adap.nr = pdev->id;
|
priv->adap.nr = pdev->id;
|
||||||
priv->adap.class = I2C_CLASS_HWMON;
|
priv->adap.class = I2C_CLASS_HWMON;
|
||||||
snprintf(priv->adap.name, sizeof(priv->adap.name), "xlr-i2c");
|
snprintf(priv->adap.name, sizeof(priv->adap.name), "xlr-i2c");
|
||||||
|
|
Loading…
Reference in New Issue