Commit fba236f9 authored by Bjorn Helgaas's avatar Bjorn Helgaas

Merge branch 'remotes/lorenzo/pci/mvebu'

- Fix endianness of emulated bridge iolimitupper, iobaseupper, memlimit and
  membase members (Pali Rohár)

* remotes/lorenzo/pci/mvebu:
  PCI: mvebu: Fix endianness when accessing PCI emul bridge members
parents 7cb0a666 2e379ac6
...@@ -523,7 +523,7 @@ static int mvebu_pcie_handle_iobase_change(struct mvebu_pcie_port *port) ...@@ -523,7 +523,7 @@ static int mvebu_pcie_handle_iobase_change(struct mvebu_pcie_port *port)
/* Are the new iobase/iolimit values invalid? */ /* Are the new iobase/iolimit values invalid? */
if (conf->iolimit < conf->iobase || if (conf->iolimit < conf->iobase ||
conf->iolimitupper < conf->iobaseupper) le16_to_cpu(conf->iolimitupper) < le16_to_cpu(conf->iobaseupper))
return mvebu_pcie_set_window(port, port->io_target, port->io_attr, return mvebu_pcie_set_window(port, port->io_target, port->io_attr,
&desired, &port->iowin); &desired, &port->iowin);
...@@ -535,10 +535,10 @@ static int mvebu_pcie_handle_iobase_change(struct mvebu_pcie_port *port) ...@@ -535,10 +535,10 @@ static int mvebu_pcie_handle_iobase_change(struct mvebu_pcie_port *port)
* is the CPU address. * is the CPU address.
*/ */
desired.remap = ((conf->iobase & 0xF0) << 8) | desired.remap = ((conf->iobase & 0xF0) << 8) |
(conf->iobaseupper << 16); (le16_to_cpu(conf->iobaseupper) << 16);
desired.base = port->pcie->io.start + desired.remap; desired.base = port->pcie->io.start + desired.remap;
desired.size = ((0xFFF | ((conf->iolimit & 0xF0) << 8) | desired.size = ((0xFFF | ((conf->iolimit & 0xF0) << 8) |
(conf->iolimitupper << 16)) - (le16_to_cpu(conf->iolimitupper) << 16)) -
desired.remap) + desired.remap) +
1; 1;
...@@ -552,7 +552,7 @@ static int mvebu_pcie_handle_membase_change(struct mvebu_pcie_port *port) ...@@ -552,7 +552,7 @@ static int mvebu_pcie_handle_membase_change(struct mvebu_pcie_port *port)
struct pci_bridge_emul_conf *conf = &port->bridge.conf; struct pci_bridge_emul_conf *conf = &port->bridge.conf;
/* Are the new membase/memlimit values invalid? */ /* Are the new membase/memlimit values invalid? */
if (conf->memlimit < conf->membase) if (le16_to_cpu(conf->memlimit) < le16_to_cpu(conf->membase))
return mvebu_pcie_set_window(port, port->mem_target, port->mem_attr, return mvebu_pcie_set_window(port, port->mem_target, port->mem_attr,
&desired, &port->memwin); &desired, &port->memwin);
...@@ -562,8 +562,8 @@ static int mvebu_pcie_handle_membase_change(struct mvebu_pcie_port *port) ...@@ -562,8 +562,8 @@ static int mvebu_pcie_handle_membase_change(struct mvebu_pcie_port *port)
* window to setup, according to the PCI-to-PCI bridge * window to setup, according to the PCI-to-PCI bridge
* specifications. * specifications.
*/ */
desired.base = ((conf->membase & 0xFFF0) << 16); desired.base = ((le16_to_cpu(conf->membase) & 0xFFF0) << 16);
desired.size = (((conf->memlimit & 0xFFF0) << 16) | 0xFFFFF) - desired.size = (((le16_to_cpu(conf->memlimit) & 0xFFF0) << 16) | 0xFFFFF) -
desired.base + 1; desired.base + 1;
return mvebu_pcie_set_window(port, port->mem_target, port->mem_attr, &desired, return mvebu_pcie_set_window(port, port->mem_target, port->mem_attr, &desired,
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment