diff options
author | Dan Streetman <ddstreet@ieee.org> | 2015-02-17 15:38:53 -0500 |
---|---|---|
committer | Stewart Smith <stewart@linux.vnet.ibm.com> | 2015-02-19 12:20:28 +1100 |
commit | 34b3786798f09650c4bf0d0ff92654fdb79748d3 (patch) | |
tree | 47508c1ca700c7418527b6ad0990870f48a3cf80 /hw | |
parent | b3749779d1c9ba4b5b1b81de3ddfa0da1b830138 (diff) | |
download | skiboot-34b3786798f09650c4bf0d0ff92654fdb79748d3.zip skiboot-34b3786798f09650c4bf0d0ff92654fdb79748d3.tar.gz skiboot-34b3786798f09650c4bf0d0ff92654fdb79748d3.tar.bz2 |
change direct use of LSH to SETFIELD
In several places, a "bus/device/function" u16 was being directly
or'ed into an address using a left-shift. This should be using
SETFIELD, especially now that all _LSH have been removed.
Change use of BDFN (bus/device/function) field from using plain
left-shift to using SETFIELD(). Add proper BDFN field definitions.
Signed-off-by: Dan Streetman <ddstreet@ieee.org>
Signed-off-by: Stewart Smith <stewart@linux.vnet.ibm.com>
Diffstat (limited to 'hw')
-rw-r--r-- | hw/p5ioc2-phb.c | 5 | ||||
-rw-r--r-- | hw/p7ioc-phb.c | 6 | ||||
-rw-r--r-- | hw/phb3.c | 6 |
3 files changed, 11 insertions, 6 deletions
diff --git a/hw/p5ioc2-phb.c b/hw/p5ioc2-phb.c index 91921b1..0848b99 100644 --- a/hw/p5ioc2-phb.c +++ b/hw/p5ioc2-phb.c @@ -98,9 +98,10 @@ static int64_t p5ioc2_pcicfg_address(struct p5ioc2_phb *p, uint32_t bdfn, * bus number register ? */ - addr = CAP_PCADR_ENABLE | ((uint64_t)bdfn << CAP_PCADR_FUNC_LSH); + addr = CAP_PCADR_ENABLE; + addr = SETFIELD(CAP_PCADR_BDFN, addr, bdfn); + addr = SETFIELD(CAP_PCADR_EXTOFF, addr, offset >> 8); addr |= (offset & 0xff); - addr |= ((offset & 0xf00) << (CAP_PCADR_EXTOFF_LSH - 8)); out_le32(p->regs + CAP_PCADR, addr); return OPAL_SUCCESS; diff --git a/hw/p7ioc-phb.c b/hw/p7ioc-phb.c index 3f24767..6689ff3 100644 --- a/hw/p7ioc-phb.c +++ b/hw/p7ioc-phb.c @@ -138,7 +138,8 @@ static int64_t p7ioc_pcicfg_read##size(struct phb *phb, uint32_t bdfn, \ return OPAL_HARDWARE; \ } \ \ - addr = PHB_CA_ENABLE | ((uint64_t)bdfn << PHB_CA_FUNC_LSH); \ + addr = PHB_CA_ENABLE; \ + addr = SETFIELD(PHB_CA_BDFN, addr, bdfn); \ addr = SETFIELD(PHB_CA_REG, addr, offset); \ out_be64(base + PHB_CONFIG_ADDRESS, addr); \ *data = in_le##size(base + PHB_CONFIG_DATA + \ @@ -169,7 +170,8 @@ static int64_t p7ioc_pcicfg_write##size(struct phb *phb, uint32_t bdfn, \ return OPAL_HARDWARE; \ } \ \ - addr = PHB_CA_ENABLE | ((uint64_t)bdfn << PHB_CA_FUNC_LSH); \ + addr = PHB_CA_ENABLE; \ + addr = SETFIELD(PHB_CA_BDFN, addr, bdfn); \ addr = SETFIELD(PHB_CA_REG, addr, offset); \ out_be64(base + PHB_CONFIG_ADDRESS, addr); \ out_le##size(base + PHB_CONFIG_DATA + \ @@ -173,7 +173,8 @@ static int64_t phb3_pcicfg_read##size(struct phb *phb, uint32_t bdfn, \ return OPAL_HARDWARE; \ } \ \ - addr = PHB_CA_ENABLE | ((uint64_t)bdfn << PHB_CA_FUNC_LSH); \ + addr = PHB_CA_ENABLE; \ + addr = SETFIELD(PHB_CA_BDFN, addr, bdfn); \ addr = SETFIELD(PHB_CA_REG, addr, offset); \ addr = SETFIELD(PHB_CA_PE, addr, pe); \ if (use_asb) { \ @@ -212,7 +213,8 @@ static int64_t phb3_pcicfg_write##size(struct phb *phb, uint32_t bdfn, \ return OPAL_HARDWARE; \ } \ \ - addr = PHB_CA_ENABLE | ((uint64_t)bdfn << PHB_CA_FUNC_LSH); \ + addr = PHB_CA_ENABLE; \ + addr = SETFIELD(PHB_CA_BDFN, addr, bdfn); \ addr = SETFIELD(PHB_CA_REG, addr, offset); \ addr = SETFIELD(PHB_CA_PE, addr, pe); \ if (use_asb) { \ |