i2c: i801: make FEATURE_BLOCK_PROC dependent on FEATURE_BLOCK_BUFFER
authorHeiner Kallweit <hkallweit1@gmail.com>
Mon, 19 Dec 2022 18:15:25 +0000 (19:15 +0100)
committerWolfram Sang <wsa@kernel.org>
Sun, 12 Feb 2023 21:10:45 +0000 (22:10 +0100)
According to the datasheet the block process call requires block
buffer mode. The user may disable block buffer mode by module
parameter disable_features, in such a case we have to clear
FEATURE_BLOCK_PROC.

Signed-off-by: Heiner Kallweit <hkallweit1@gmail.com>
Reviewed-by: Jean Delvare <jdelvare@suse.de>
Signed-off-by: Wolfram Sang <wsa@kernel.org>
drivers/i2c/busses/i2c-i801.c

index 45c2ebe..2e9c585 100644 (file)
@@ -1658,6 +1658,10 @@ static int i801_probe(struct pci_dev *dev, const struct pci_device_id *id)
        }
        priv->features &= ~disable_features;
 
+       /* The block process call uses block buffer mode */
+       if (!(priv->features & FEATURE_BLOCK_BUFFER))
+               priv->features &= ~FEATURE_BLOCK_PROC;
+
        err = pcim_enable_device(dev);
        if (err) {
                dev_err(&dev->dev, "Failed to enable SMBus PCI device (%d)\n",