aboutsummaryrefslogtreecommitdiff
path: root/drivers
diff options
context:
space:
mode:
authorStephen Warren2015-10-05 17:00:44 -0600
committerTom Warren2015-11-12 09:21:05 -0700
commitd9eda6c441ad627731059d1696292cab7b6e9d5c (patch)
treed285d29b368df816ecbe5a0d85ec642c1a654a76 /drivers
parenta02e2635480e66a2921d62792fbc4a1e83dc4425 (diff)
pci: tegra: add/enable support for Tegra210
This needs a separate compatible value from Tegra124 since the new HW version has bugs that would prevent a driver for previous HW versions from operating at all. Signed-off-by: Stephen Warren <swarren@nvidia.com> Signed-off-by: Tom Warren <twarren@nvidia.com>
Diffstat (limited to 'drivers')
-rw-r--r--drivers/pci/pci_tegra.c22
1 files changed, 22 insertions, 0 deletions
diff --git a/drivers/pci/pci_tegra.c b/drivers/pci/pci_tegra.c
index bf078b3369b..690896f9f57 100644
--- a/drivers/pci/pci_tegra.c
+++ b/drivers/pci/pci_tegra.c
@@ -387,6 +387,7 @@ static int tegra_pcie_get_xbar_config(const void *fdt, int node, u32 lanes,
break;
case COMPAT_NVIDIA_TEGRA124_PCIE:
+ case COMPAT_NVIDIA_TEGRA210_PCIE:
switch (lanes) {
case 0x0000104:
debug("4x1, 1x1 configuration\n");
@@ -1033,6 +1034,17 @@ static const struct tegra_pcie_soc tegra124_pcie_soc = {
.force_pca_enable = false,
};
+static const struct tegra_pcie_soc tegra210_pcie_soc = {
+ .num_ports = 2,
+ .pads_pll_ctl = PADS_PLL_CTL_TEGRA30,
+ .tx_ref_sel = PADS_PLL_CTL_TXCLKREF_BUF_EN,
+ .has_pex_clkreq_en = true,
+ .has_pex_bias_ctrl = true,
+ .has_cml_clk = true,
+ .has_gen2 = true,
+ .force_pca_enable = true,
+};
+
static int process_nodes(const void *fdt, int nodes[], unsigned int count)
{
unsigned int i;
@@ -1068,6 +1080,10 @@ static int process_nodes(const void *fdt, int nodes[], unsigned int count)
soc = &tegra124_pcie_soc;
break;
+ case COMPAT_NVIDIA_TEGRA210_PCIE:
+ soc = &tegra210_pcie_soc;
+ break;
+
default:
error("unsupported compatible: %s",
fdtdec_get_compatible(id));
@@ -1165,6 +1181,12 @@ void pci_init_board(void)
tegra_pcie_board_init();
count = fdtdec_find_aliases_for_id(fdt, "pcie-controller",
+ COMPAT_NVIDIA_TEGRA210_PCIE,
+ nodes, ARRAY_SIZE(nodes));
+ if (process_nodes(fdt, nodes, count))
+ return;
+
+ count = fdtdec_find_aliases_for_id(fdt, "pcie-controller",
COMPAT_NVIDIA_TEGRA124_PCIE,
nodes, ARRAY_SIZE(nodes));
if (process_nodes(fdt, nodes, count))