mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-09-06 19:07:52 +00:00
i2c: mediatek: disable zero-length transfers for mt8183
Quoting from mt8183 datasheet, the number of transfers to be transferred in one transaction should be set to bigger than 1, so we should forbid zero-length transfer and update functionality. Reported-by: Alexandru M Stan <amstan@chromium.org> Signed-off-by: Hsin-Yi Wang <hsinyi@chromium.org> Reviewed-by: Qii Wang <qii.wang@mediatek.com> [wsa: shortened commit message a little] Signed-off-by: Wolfram Sang <wsa@the-dreams.de>
This commit is contained in:
parent
b3d604d405
commit
abf4923e97
1 changed files with 10 additions and 1 deletions
|
@ -234,6 +234,10 @@ static const struct i2c_adapter_quirks mt7622_i2c_quirks = {
|
||||||
.max_num_msgs = 255,
|
.max_num_msgs = 255,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
static const struct i2c_adapter_quirks mt8183_i2c_quirks = {
|
||||||
|
.flags = I2C_AQ_NO_ZERO_LEN,
|
||||||
|
};
|
||||||
|
|
||||||
static const struct mtk_i2c_compatible mt2712_compat = {
|
static const struct mtk_i2c_compatible mt2712_compat = {
|
||||||
.regs = mt_i2c_regs_v1,
|
.regs = mt_i2c_regs_v1,
|
||||||
.pmic_i2c = 0,
|
.pmic_i2c = 0,
|
||||||
|
@ -298,6 +302,7 @@ static const struct mtk_i2c_compatible mt8173_compat = {
|
||||||
};
|
};
|
||||||
|
|
||||||
static const struct mtk_i2c_compatible mt8183_compat = {
|
static const struct mtk_i2c_compatible mt8183_compat = {
|
||||||
|
.quirks = &mt8183_i2c_quirks,
|
||||||
.regs = mt_i2c_regs_v2,
|
.regs = mt_i2c_regs_v2,
|
||||||
.pmic_i2c = 0,
|
.pmic_i2c = 0,
|
||||||
.dcm = 0,
|
.dcm = 0,
|
||||||
|
@ -870,7 +875,11 @@ static irqreturn_t mtk_i2c_irq(int irqno, void *dev_id)
|
||||||
|
|
||||||
static u32 mtk_i2c_functionality(struct i2c_adapter *adap)
|
static u32 mtk_i2c_functionality(struct i2c_adapter *adap)
|
||||||
{
|
{
|
||||||
return I2C_FUNC_I2C | I2C_FUNC_SMBUS_EMUL;
|
if (adap->quirks->flags & I2C_AQ_NO_ZERO_LEN)
|
||||||
|
return I2C_FUNC_I2C |
|
||||||
|
(I2C_FUNC_SMBUS_EMUL & ~I2C_FUNC_SMBUS_QUICK);
|
||||||
|
else
|
||||||
|
return I2C_FUNC_I2C | I2C_FUNC_SMBUS_EMUL;
|
||||||
}
|
}
|
||||||
|
|
||||||
static const struct i2c_algorithm mtk_i2c_algorithm = {
|
static const struct i2c_algorithm mtk_i2c_algorithm = {
|
||||||
|
|
Loading…
Reference in a new issue