From 527b68219f57f61d1b3f5b50779d22b170ac0f96 Mon Sep 17 00:00:00 2001 From: Angel Pons Date: Tue, 30 Mar 2021 21:18:30 +0200 Subject: sb/intel/x/smbus.c: Correct register access width The register is 16 bits wide. Change-Id: I58d44a17613965e0a27aab5246dcdce68e1a8201 Signed-off-by: Angel Pons Reviewed-on: https://review.coreboot.org/c/coreboot/+/51950 Tested-by: build bot (Jenkins) Reviewed-by: Nico Huber --- src/southbridge/intel/bd82x6x/smbus.c | 6 +----- src/southbridge/intel/ibexpeak/smbus.c | 5 +---- src/southbridge/intel/lynxpoint/smbus.c | 6 +----- 3 files changed, 3 insertions(+), 14 deletions(-) diff --git a/src/southbridge/intel/bd82x6x/smbus.c b/src/southbridge/intel/bd82x6x/smbus.c index 9ba9e12eb581..839b0c3df045 100644 --- a/src/southbridge/intel/bd82x6x/smbus.c +++ b/src/southbridge/intel/bd82x6x/smbus.c @@ -14,13 +14,9 @@ static void pch_smbus_init(struct device *dev) { struct resource *res; - u16 reg16; /* Enable clock gating */ - /* FIXME: Using 32-bit ops with a 16-bit variable is a bug! These should be 16-bit! */ - reg16 = pci_read_config32(dev, 0x80); - reg16 &= ~((1 << 8)|(1 << 10)|(1 << 12)|(1 << 14)); - pci_write_config32(dev, 0x80, reg16); + pci_and_config16(dev, 0x80, ~((1 << 8) | (1 << 10) | (1 << 12) | (1 << 14))); /* Set Receive Slave Address */ res = find_resource(dev, PCI_BASE_ADDRESS_4); diff --git a/src/southbridge/intel/ibexpeak/smbus.c b/src/southbridge/intel/ibexpeak/smbus.c index 352b5898a676..12734a0ce6cb 100644 --- a/src/southbridge/intel/ibexpeak/smbus.c +++ b/src/southbridge/intel/ibexpeak/smbus.c @@ -14,12 +14,9 @@ static void pch_smbus_init(struct device *dev) { struct resource *res; - u16 reg16; /* Enable clock gating */ - reg16 = pci_read_config32(dev, 0x80); - reg16 &= ~((1 << 8) | (1 << 10) | (1 << 12) | (1 << 14)); - pci_write_config32(dev, 0x80, reg16); + pci_and_config16(dev, 0x80, ~((1 << 8) | (1 << 10) | (1 << 12) | (1 << 14))); /* Set Receive Slave Address */ res = find_resource(dev, PCI_BASE_ADDRESS_4); diff --git a/src/southbridge/intel/lynxpoint/smbus.c b/src/southbridge/intel/lynxpoint/smbus.c index 32c9c14e40c2..d55aa6e3d085 100644 --- a/src/southbridge/intel/lynxpoint/smbus.c +++ b/src/southbridge/intel/lynxpoint/smbus.c @@ -13,13 +13,9 @@ static void pch_smbus_init(struct device *dev) { struct resource *res; - u16 reg16; /* Enable clock gating */ - /* FIXME: Using 32-bit ops with a 16-bit variable is a bug! These should be 16-bit! */ - reg16 = pci_read_config32(dev, 0x80); - reg16 &= ~((1 << 8) | (1 << 10) | (1 << 12) | (1 << 14)); - pci_write_config32(dev, 0x80, reg16); + pci_and_config16(dev, 0x80, ~((1 << 8) | (1 << 10) | (1 << 12) | (1 << 14))); /* Set Receive Slave Address */ res = find_resource(dev, PCI_BASE_ADDRESS_4); -- cgit v1.2.3