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:
Родитель
3ef3e5cd72
Коммит
6e6664700d
|
@ -173,9 +173,6 @@ static int xlr_i2c_tx(struct xlr_i2c_private *priv, u16 len,
|
|||
u8 offset;
|
||||
u32 xfer;
|
||||
|
||||
if (!len)
|
||||
return -EOPNOTSUPP;
|
||||
|
||||
offset = buf[0];
|
||||
xlr_i2c_wreg(priv->iobase, XLR_I2C_ADDR, offset);
|
||||
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;
|
||||
int nbytes, timedout;
|
||||
|
||||
if (!len)
|
||||
return -EOPNOTSUPP;
|
||||
|
||||
xlr_i2c_wreg(priv->iobase, XLR_I2C_CFG,
|
||||
XLR_I2C_CFG_NOADDR | priv->cfg->cfg_extra);
|
||||
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,
|
||||
};
|
||||
|
||||
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 = {
|
||||
.status_busy = XLR_I2C_BUS_BUSY,
|
||||
.cfg_extra = 0,
|
||||
|
@ -427,6 +425,7 @@ static int xlr_i2c_probe(struct platform_device *pdev)
|
|||
priv->adap.owner = THIS_MODULE;
|
||||
priv->adap.algo_data = priv;
|
||||
priv->adap.algo = &xlr_i2c_algo;
|
||||
priv->adap.quirks = &xlr_i2c_quirks;
|
||||
priv->adap.nr = pdev->id;
|
||||
priv->adap.class = I2C_CLASS_HWMON;
|
||||
snprintf(priv->adap.name, sizeof(priv->adap.name), "xlr-i2c");
|
||||
|
|
Загрузка…
Ссылка в новой задаче