]> asedeno.scripts.mit.edu Git - linux.git/commitdiff
usb: host: xhci-tegra: Add Tegra186 XUSB support
authorJC Kuo <jckuo@nvidia.com>
Mon, 1 Apr 2019 10:40:47 +0000 (12:40 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Tue, 16 Apr 2019 10:15:53 +0000 (12:15 +0200)
This commit adds Tegra186 XUSB host mode controller support. This is
very similar to the existing support for Tegra124 and Tegra210, except
that the number of ports and PHYs differs and the IPFS wrapper being
gone.

Signed-off-by: JC Kuo <jckuo@nvidia.com>
Acked-by: Mathias Nyman <mathias.nyman@linux.intel.com>
Signed-off-by: Thierry Reding <treding@nvidia.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/usb/host/xhci-tegra.c

index 4d133bbabdda7406acbc5c7d87dff6edc6908275..294158113d62c19c69122151c4a394013162145a 100644 (file)
@@ -1423,9 +1423,34 @@ static const struct tegra_xusb_soc tegra210_soc = {
 };
 MODULE_FIRMWARE("nvidia/tegra210/xusb.bin");
 
+static const char * const tegra186_supply_names[] = {
+};
+
+static const struct tegra_xusb_phy_type tegra186_phy_types[] = {
+       { .name = "usb3", .num = 3, },
+       { .name = "usb2", .num = 3, },
+       { .name = "hsic", .num = 1, },
+};
+
+static const struct tegra_xusb_soc tegra186_soc = {
+       .firmware = "nvidia/tegra186/xusb.bin",
+       .supply_names = tegra186_supply_names,
+       .num_supplies = ARRAY_SIZE(tegra186_supply_names),
+       .phy_types = tegra186_phy_types,
+       .num_types = ARRAY_SIZE(tegra186_phy_types),
+       .ports = {
+               .usb3 = { .offset = 0, .count = 3, },
+               .usb2 = { .offset = 3, .count = 3, },
+               .hsic = { .offset = 6, .count = 1, },
+       },
+       .scale_ss_clock = false,
+       .has_ipfs = false,
+};
+
 static const struct of_device_id tegra_xusb_of_match[] = {
        { .compatible = "nvidia,tegra124-xusb", .data = &tegra124_soc },
        { .compatible = "nvidia,tegra210-xusb", .data = &tegra210_soc },
+       { .compatible = "nvidia,tegra186-xusb", .data = &tegra186_soc },
        { },
 };
 MODULE_DEVICE_TABLE(of, tegra_xusb_of_match);