linux/drivers/usb/typec
Heikki Krogerus 1f9f9d168c usb: typec: ucsi: acpi: Workaround for cache mode issue
This fixes an issue where the driver fails with an error:

	ioremap error for 0x3f799000-0x3f79a000, requested 0x2, got 0x0

On some platforms the UCSI ACPI mailbox SystemMemory
Operation Region may be setup before the driver has been
loaded. That will lead into the driver failing to map the
mailbox region, as it has been already marked as write-back
memory. acpi_os_ioremap() for x86 uses ioremap_cache()
unconditionally.

When the issue happens, the embedded controller has a
pending query event for the UCSI notification right after
boot-up which causes the operation region to be setup before
UCSI driver has been loaded.

The fix is to notify acpi core that the driver is about to
access memory region which potentially overlaps with an
operation region right before mapping it.
acpi_release_memory() will check if the memory has already
been setup (mapped) by acpi core, and deactivate it (unmap)
if it has. The driver is then able to map the memory with
ioremap_nocache() and set the memtype to uncached for the
region.

Reported-by: Paul Menzel <pmenzel@molgen.mpg.de>
Fixes: 8243edf441 ("usb: typec: ucsi: Add ACPI driver")
Cc: stable@vger.kernel.org
Signed-off-by: Heikki Krogerus <heikki.krogerus@linux.intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2018-06-25 21:30:12 +08:00
..
fusb302 USB: typec: fsusb302: no need to check return value of debugfs_create_dir() 2018-05-31 16:03:59 +02:00
mux usb: typec: driver for Pericom PI3USB30532 Type-C cross switch 2018-03-22 13:49:28 +01:00
ucsi usb: typec: ucsi: acpi: Workaround for cache mode issue 2018-06-25 21:30:12 +08:00
class.c usb: typec: Separate the definitions for data and power roles 2018-03-22 13:40:10 +01:00
Kconfig typec: tcpm: Represent source supply through power_supply 2018-04-25 14:20:20 +02:00
Makefile usb: typec: driver for Pericom PI3USB30532 Type-C cross switch 2018-03-22 13:49:28 +01:00
mux.c usb: typec: Fix htmldocs warning 2018-05-24 18:14:28 +02:00
tcpm.c USB: typec: tcpm: no need to check return value of debugfs_create_dir() 2018-05-31 12:54:21 +02:00
tps6598x.c usb: typec: tps6598x: handle block reads separately with plain-I2C adapters 2018-05-03 10:55:31 -07:00
typec_wcove.c usb: typec: wcove: Remove dependency on HW FSM 2018-05-24 18:17:00 +02:00