|
@@ -16,6 +16,7 @@
|
|
|
#include <linux/pm_runtime.h>
|
|
|
#include <linux/platform_device.h>
|
|
|
#include <linux/gpio/consumer.h>
|
|
|
+#include <linux/gpio/machine.h>
|
|
|
#include <linux/acpi.h>
|
|
|
#include <linux/delay.h>
|
|
|
|
|
@@ -64,6 +65,15 @@ static const struct acpi_gpio_mapping acpi_dwc3_byt_gpios[] = {
|
|
|
{ },
|
|
|
};
|
|
|
|
|
|
+static struct gpiod_lookup_table platform_bytcr_gpios = {
|
|
|
+ .dev_id = "0000:00:16.0",
|
|
|
+ .table = {
|
|
|
+ GPIO_LOOKUP("INT33FC:00", 54, "reset", GPIO_ACTIVE_HIGH),
|
|
|
+ GPIO_LOOKUP("INT33FC:02", 14, "cs", GPIO_ACTIVE_HIGH),
|
|
|
+ {}
|
|
|
+ },
|
|
|
+};
|
|
|
+
|
|
|
static int dwc3_pci_quirks(struct dwc3_pci *dwc)
|
|
|
{
|
|
|
struct platform_device *dwc3 = dwc->dwc3;
|
|
@@ -124,6 +134,13 @@ static int dwc3_pci_quirks(struct dwc3_pci *dwc)
|
|
|
if (ret)
|
|
|
dev_dbg(&pdev->dev, "failed to add mapping table\n");
|
|
|
|
|
|
+ /*
|
|
|
+ * A lot of BYT devices lack ACPI resource entries for
|
|
|
+ * the GPIOs, add a fallback mapping to the reference
|
|
|
+ * design GPIOs which all boards seem to use.
|
|
|
+ */
|
|
|
+ gpiod_add_lookup_table(&platform_bytcr_gpios);
|
|
|
+
|
|
|
/*
|
|
|
* These GPIOs will turn on the USB2 PHY. Note that we have to
|
|
|
* put the gpio descriptors again here because the phy driver
|
|
@@ -239,6 +256,7 @@ static void dwc3_pci_remove(struct pci_dev *pci)
|
|
|
{
|
|
|
struct dwc3_pci *dwc = pci_get_drvdata(pci);
|
|
|
|
|
|
+ gpiod_remove_lookup_table(&platform_bytcr_gpios);
|
|
|
#ifdef CONFIG_PM
|
|
|
cancel_work_sync(&dwc->wakeup_work);
|
|
|
#endif
|