serial: 8250_exar: Don't return positive values as error codes
authorAndy Shevchenko <andriy.shevchenko@linux.intel.com>
Fri, 3 May 2024 17:15:53 +0000 (20:15 +0300)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Sat, 4 May 2024 16:09:29 +0000 (18:09 +0200)
PCI core may return positive codes for the specific errors.
There is a special API to convert them to negative stanrard ones.
Use that API to avoid returning positive values as error codes.

Fixes: f7ce07062988 ("serial: exar: add CTI specific setup code")
Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Tested-by: Parker Newman <pnewman@connecttech.com>
Link: https://lore.kernel.org/r/20240503171917.2921250-2-andriy.shevchenko@linux.intel.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/tty/serial/8250/8250_exar.c

index 5e42558cbb017cfe3144985ac159322ab389252a..9930668610ca878b71805900fc302021074db7e7 100644 (file)
@@ -1162,12 +1162,12 @@ static int cti_board_init_fpga(struct exar8250 *priv, struct pci_dev *pcidev)
        // Enable external interrupts in special cfg space register
        ret = pci_read_config_word(pcidev, CTI_FPGA_CFG_INT_EN_REG, &cfg_val);
        if (ret)
-               return ret;
+               return pcibios_err_to_errno(ret);
 
        cfg_val |= CTI_FPGA_CFG_INT_EN_EXT_BIT;
        ret = pci_write_config_word(pcidev, CTI_FPGA_CFG_INT_EN_REG, cfg_val);
        if (ret)
-               return ret;
+               return pcibios_err_to_errno(ret);
 
        // RS485 gate needs to be enabled; otherwise RTS/CTS will not work
        exar_write_reg(priv, CTI_FPGA_RS485_IO_REG, 0x01);