static int i801_block_transaction_by_block(struct i801_priv *priv,
                                           union i2c_smbus_data *data,
-                                          char read_write, int command,
-                                          int hwpec)
+                                          char read_write, int command)
 {
-       int i, len;
-       int status;
-       int xact = hwpec ? SMBHSTCNT_PEC_EN : 0;
+       int i, len, status, xact;
 
        switch (command) {
        case I2C_SMBUS_BLOCK_PROC_CALL:
-               xact |= I801_BLOCK_PROC_CALL;
+               xact = I801_BLOCK_PROC_CALL;
                break;
        case I2C_SMBUS_BLOCK_DATA:
-               xact |= I801_BLOCK_DATA;
+               xact = I801_BLOCK_DATA;
                break;
        default:
                return -EOPNOTSUPP;
  */
 static int i801_block_transaction_byte_by_byte(struct i801_priv *priv,
                                               union i2c_smbus_data *data,
-                                              char read_write, int command,
-                                              int hwpec)
+                                              char read_write, int command)
 {
        int i, len;
        int smbcmd;
 }
 
 /* Block transaction function */
-static int i801_block_transaction(struct i801_priv *priv,
-                                 union i2c_smbus_data *data, char read_write,
-                                 int command, int hwpec)
+static int i801_block_transaction(struct i801_priv *priv, union i2c_smbus_data *data,
+                                 char read_write, int command)
 {
        int result = 0;
        unsigned char hostc;
         && i801_set_block_buffer_mode(priv) == 0)
                result = i801_block_transaction_by_block(priv, data,
                                                         read_write,
-                                                        command, hwpec);
+                                                        command);
        else
                result = i801_block_transaction_byte_by_byte(priv, data,
                                                             read_write,
-                                                            command, hwpec);
+                                                            command);
 
        if (command == I2C_SMBUS_I2C_BLOCK_DATA
         && read_write == I2C_SMBUS_WRITE) {
                       SMBAUXCTL(priv));
 
        if (block)
-               ret = i801_block_transaction(priv, data, read_write, size,
-                                            hwpec);
+               ret = i801_block_transaction(priv, data, read_write, size);
        else
                ret = i801_transaction(priv, xact);
 
        unsigned char hstcfg = priv->original_hstcfg;
 
        hstcfg &= ~SMBHSTCFG_I2C_EN;    /* SMBus timing */
+       hstcfg &= ~SMBHSTCNT_PEC_EN;    /* Disable software PEC */
        hstcfg |= SMBHSTCFG_HST_EN;
        pci_write_config_byte(priv->pci_dev, SMBHSTCFG, hstcfg);
 }