ata: pata_sil680: fix result type of sil680_sel{dev|reg}()

sil680_sel{dev|reg}() return a PCI config space address but needlessly
use the *unsigned long* type for that,  whereas the PCI config space
accessors take *int* for the address parameter.  Switch these functions
to returning *int*, updating the local variables at their call sites.
Get rid of the 'base' local variables in these functions, while at it...

Found by Linux Verification Center (linuxtesting.org) with the SVACE static
analysis tool.

Signed-off-by: Sergey Shtylyov <s.shtylyov@omp.ru>
Signed-off-by: Damien Le Moal <damien.lemoal@opensource.wdc.com>
This commit is contained in:
Sergey Shtylyov 2022-04-12 20:26:46 +03:00 committed by Damien Le Moal
parent a28c1ab312
commit dafbbf5c57

View file

@ -47,11 +47,9 @@
* criticial. * criticial.
*/ */
static unsigned long sil680_selreg(struct ata_port *ap, int r) static int sil680_selreg(struct ata_port *ap, int r)
{ {
unsigned long base = 0xA0 + r; return 0xA0 + (ap->port_no << 4) + r;
base += (ap->port_no << 4);
return base;
} }
/** /**
@ -65,12 +63,9 @@ static unsigned long sil680_selreg(struct ata_port *ap, int r)
* the unit shift. * the unit shift.
*/ */
static unsigned long sil680_seldev(struct ata_port *ap, struct ata_device *adev, int r) static int sil680_seldev(struct ata_port *ap, struct ata_device *adev, int r)
{ {
unsigned long base = 0xA0 + r; return 0xA0 + (ap->port_no << 4) + r + (adev->devno << 1);
base += (ap->port_no << 4);
base |= adev->devno ? 2 : 0;
return base;
} }
@ -85,8 +80,9 @@ static unsigned long sil680_seldev(struct ata_port *ap, struct ata_device *adev,
static int sil680_cable_detect(struct ata_port *ap) static int sil680_cable_detect(struct ata_port *ap)
{ {
struct pci_dev *pdev = to_pci_dev(ap->host->dev); struct pci_dev *pdev = to_pci_dev(ap->host->dev);
unsigned long addr = sil680_selreg(ap, 0); int addr = sil680_selreg(ap, 0);
u8 ata66; u8 ata66;
pci_read_config_byte(pdev, addr, &ata66); pci_read_config_byte(pdev, addr, &ata66);
if (ata66 & 1) if (ata66 & 1)
return ATA_CBL_PATA80; return ATA_CBL_PATA80;
@ -113,9 +109,9 @@ static void sil680_set_piomode(struct ata_port *ap, struct ata_device *adev)
0x328A, 0x2283, 0x1281, 0x10C3, 0x10C1 0x328A, 0x2283, 0x1281, 0x10C3, 0x10C1
}; };
unsigned long tfaddr = sil680_selreg(ap, 0x02); int tfaddr = sil680_selreg(ap, 0x02);
unsigned long addr = sil680_seldev(ap, adev, 0x04); int addr = sil680_seldev(ap, adev, 0x04);
unsigned long addr_mask = 0x80 + 4 * ap->port_no; int addr_mask = 0x80 + 4 * ap->port_no;
struct pci_dev *pdev = to_pci_dev(ap->host->dev); struct pci_dev *pdev = to_pci_dev(ap->host->dev);
int pio = adev->pio_mode - XFER_PIO_0; int pio = adev->pio_mode - XFER_PIO_0;
int lowest_pio = pio; int lowest_pio = pio;
@ -165,9 +161,9 @@ static void sil680_set_dmamode(struct ata_port *ap, struct ata_device *adev)
static const u16 dma_table[3] = { 0x2208, 0x10C2, 0x10C1 }; static const u16 dma_table[3] = { 0x2208, 0x10C2, 0x10C1 };
struct pci_dev *pdev = to_pci_dev(ap->host->dev); struct pci_dev *pdev = to_pci_dev(ap->host->dev);
unsigned long ma = sil680_seldev(ap, adev, 0x08); int ma = sil680_seldev(ap, adev, 0x08);
unsigned long ua = sil680_seldev(ap, adev, 0x0C); int ua = sil680_seldev(ap, adev, 0x0C);
unsigned long addr_mask = 0x80 + 4 * ap->port_no; int addr_mask = 0x80 + 4 * ap->port_no;
int port_shift = adev->devno * 4; int port_shift = adev->devno * 4;
u8 scsc, mode; u8 scsc, mode;
u16 multi, ultra; u16 multi, ultra;
@ -219,7 +215,7 @@ static void sil680_sff_exec_command(struct ata_port *ap,
static bool sil680_sff_irq_check(struct ata_port *ap) static bool sil680_sff_irq_check(struct ata_port *ap)
{ {
struct pci_dev *pdev = to_pci_dev(ap->host->dev); struct pci_dev *pdev = to_pci_dev(ap->host->dev);
unsigned long addr = sil680_selreg(ap, 1); int addr = sil680_selreg(ap, 1);
u8 val; u8 val;
pci_read_config_byte(pdev, addr, &val); pci_read_config_byte(pdev, addr, &val);