Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

i2c: piix4: Pre-shift the port number

Shift the port number at initialization time, so that it is ready to
use at run time. That way we don't have to do it again for every SMBus
transaction.

Signed-off-by: Jean Delvare <jdelvare@suse.de>
Reviewed-by: Mika Westerberg <mika.westerberg@linux.intel.com>
Signed-off-by: Wolfram Sang <wsa@the-dreams.de>

authored by

Jean Delvare and committed by
Wolfram Sang
33f5ccc3 62194e86

+5 -5
+5 -5
drivers/i2c/busses/i2c-piix4.c
··· 159 159 160 160 /* SB800 */ 161 161 bool sb800_main; 162 - u8 port; 162 + u8 port; /* Port number, shifted */ 163 163 }; 164 164 165 165 static int piix4_setup(struct pci_dev *PIIX4_dev, ··· 595 595 smba_en_lo = inb_p(SB800_PIIX4_SMB_IDX + 1); 596 596 597 597 port = adapdata->port; 598 - if ((smba_en_lo & SB800_PIIX4_PORT_IDX_MASK) != (port << 1)) 599 - outb_p((smba_en_lo & ~SB800_PIIX4_PORT_IDX_MASK) | (port << 1), 598 + if ((smba_en_lo & SB800_PIIX4_PORT_IDX_MASK) != port) 599 + outb_p((smba_en_lo & ~SB800_PIIX4_PORT_IDX_MASK) | port, 600 600 SB800_PIIX4_SMB_IDX + 1); 601 601 602 602 retval = piix4_access(adap, addr, flags, read_write, ··· 682 682 683 683 adapdata->smba = smba; 684 684 adapdata->sb800_main = sb800_main; 685 - adapdata->port = port; 685 + adapdata->port = port << 1; 686 686 687 687 /* set up the sysfs linkage to our parent device */ 688 688 adap->dev.parent = &dev->dev; ··· 818 818 819 819 if (adapdata->smba) { 820 820 i2c_del_adapter(adap); 821 - if (adapdata->port == 0) { 821 + if (adapdata->port == (0 << 1)) { 822 822 release_region(adapdata->smba, SMBIOSIZE); 823 823 if (adapdata->sb800_main) 824 824 release_region(SB800_PIIX4_SMB_IDX, 2);