mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-09-05 10:29:37 +00:00
powerpc/powernv: Fix endian issue in opal_xscom_read
opal_xscom_read uses a pointer to return the data so we need to byteswap it on LE builds. Signed-off-by: Anton Blanchard <anton@samba.org> Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
This commit is contained in:
parent
a29e30efa3
commit
01a9dbccbd
2 changed files with 4 additions and 2 deletions
|
@ -720,7 +720,7 @@ int64_t opal_pci_next_error(uint64_t phb_id, uint64_t *first_frozen_pe,
|
||||||
int64_t opal_pci_poll(uint64_t phb_id);
|
int64_t opal_pci_poll(uint64_t phb_id);
|
||||||
int64_t opal_return_cpu(void);
|
int64_t opal_return_cpu(void);
|
||||||
|
|
||||||
int64_t opal_xscom_read(uint32_t gcid, uint32_t pcb_addr, uint64_t *val);
|
int64_t opal_xscom_read(uint32_t gcid, uint32_t pcb_addr, __be64 *val);
|
||||||
int64_t opal_xscom_write(uint32_t gcid, uint32_t pcb_addr, uint64_t val);
|
int64_t opal_xscom_write(uint32_t gcid, uint32_t pcb_addr, uint64_t val);
|
||||||
|
|
||||||
int64_t opal_lpc_write(uint32_t chip_id, enum OpalLPCAddressType addr_type,
|
int64_t opal_lpc_write(uint32_t chip_id, enum OpalLPCAddressType addr_type,
|
||||||
|
|
|
@ -96,9 +96,11 @@ static int opal_scom_read(scom_map_t map, u64 reg, u64 *value)
|
||||||
{
|
{
|
||||||
struct opal_scom_map *m = map;
|
struct opal_scom_map *m = map;
|
||||||
int64_t rc;
|
int64_t rc;
|
||||||
|
__be64 v;
|
||||||
|
|
||||||
reg = opal_scom_unmangle(reg);
|
reg = opal_scom_unmangle(reg);
|
||||||
rc = opal_xscom_read(m->chip, m->addr + reg, (uint64_t *)__pa(value));
|
rc = opal_xscom_read(m->chip, m->addr + reg, (__be64 *)__pa(&v));
|
||||||
|
*value = be64_to_cpu(v);
|
||||||
return opal_xscom_err_xlate(rc);
|
return opal_xscom_err_xlate(rc);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue