aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/gpu/host1x/mipi.c36
1 files changed, 35 insertions, 1 deletions
diff --git a/drivers/gpu/host1x/mipi.c b/drivers/gpu/host1x/mipi.c
index b07e793c1d5b..0989b8151b4c 100644
--- a/drivers/gpu/host1x/mipi.c
+++ b/drivers/gpu/host1x/mipi.c
@@ -47,6 +47,7 @@
47#define MIPI_CAL_CONFIG_CSIC 0x07 47#define MIPI_CAL_CONFIG_CSIC 0x07
48#define MIPI_CAL_CONFIG_CSID 0x08 48#define MIPI_CAL_CONFIG_CSID 0x08
49#define MIPI_CAL_CONFIG_CSIE 0x09 49#define MIPI_CAL_CONFIG_CSIE 0x09
50#define MIPI_CAL_CONFIG_CSIF 0x0a
50#define MIPI_CAL_CONFIG_DSIA 0x0e 51#define MIPI_CAL_CONFIG_DSIA 0x0e
51#define MIPI_CAL_CONFIG_DSIB 0x0f 52#define MIPI_CAL_CONFIG_DSIB 0x0f
52#define MIPI_CAL_CONFIG_DSIC 0x10 53#define MIPI_CAL_CONFIG_DSIC 0x10
@@ -55,7 +56,9 @@
55#define MIPI_CAL_CONFIG_DSIA_CLK 0x19 56#define MIPI_CAL_CONFIG_DSIA_CLK 0x19
56#define MIPI_CAL_CONFIG_DSIB_CLK 0x1a 57#define MIPI_CAL_CONFIG_DSIB_CLK 0x1a
57#define MIPI_CAL_CONFIG_CSIAB_CLK 0x1b 58#define MIPI_CAL_CONFIG_CSIAB_CLK 0x1b
59#define MIPI_CAL_CONFIG_DSIC_CLK 0x1c
58#define MIPI_CAL_CONFIG_CSICD_CLK 0x1c 60#define MIPI_CAL_CONFIG_CSICD_CLK 0x1c
61#define MIPI_CAL_CONFIG_DSID_CLK 0x1d
59#define MIPI_CAL_CONFIG_CSIE_CLK 0x1d 62#define MIPI_CAL_CONFIG_CSIE_CLK 0x1d
60 63
61/* for data and clock lanes */ 64/* for data and clock lanes */
@@ -262,7 +265,7 @@ int tegra_mipi_calibrate(struct tegra_mipi_device *device)
262 265
263 tegra_mipi_writel(device->mipi, data, soc->pads[i].data); 266 tegra_mipi_writel(device->mipi, data, soc->pads[i].data);
264 267
265 if (soc->has_clk_lane) 268 if (soc->has_clk_lane && soc->pads[i].clk != 0)
266 tegra_mipi_writel(device->mipi, clk, soc->pads[i].clk); 269 tegra_mipi_writel(device->mipi, clk, soc->pads[i].clk);
267 } 270 }
268 271
@@ -369,10 +372,41 @@ static const struct tegra_mipi_soc tegra132_mipi_soc = {
369 .hsclkpuos = 0x2, 372 .hsclkpuos = 0x2,
370}; 373};
371 374
375static const struct tegra_mipi_pad tegra210_mipi_pads[] = {
376 { .data = MIPI_CAL_CONFIG_CSIA, .clk = 0 },
377 { .data = MIPI_CAL_CONFIG_CSIB, .clk = 0 },
378 { .data = MIPI_CAL_CONFIG_CSIC, .clk = 0 },
379 { .data = MIPI_CAL_CONFIG_CSID, .clk = 0 },
380 { .data = MIPI_CAL_CONFIG_CSIE, .clk = 0 },
381 { .data = MIPI_CAL_CONFIG_CSIF, .clk = 0 },
382 { .data = MIPI_CAL_CONFIG_DSIA, .clk = MIPI_CAL_CONFIG_DSIA_CLK },
383 { .data = MIPI_CAL_CONFIG_DSIB, .clk = MIPI_CAL_CONFIG_DSIB_CLK },
384 { .data = MIPI_CAL_CONFIG_DSIC, .clk = MIPI_CAL_CONFIG_DSIC_CLK },
385 { .data = MIPI_CAL_CONFIG_DSID, .clk = MIPI_CAL_CONFIG_DSID_CLK },
386};
387
388static const struct tegra_mipi_soc tegra210_mipi_soc = {
389 .has_clk_lane = true,
390 .pads = tegra210_mipi_pads,
391 .num_pads = ARRAY_SIZE(tegra210_mipi_pads),
392 .clock_enable_override = true,
393 .needs_vclamp_ref = false,
394 .pad_drive_down_ref = 0x0,
395 .pad_drive_up_ref = 0x3,
396 .pad_vclamp_level = 0x1,
397 .pad_vauxp_level = 0x1,
398 .hspdos = 0x0,
399 .hspuos = 0x2,
400 .termos = 0x0,
401 .hsclkpdos = 0x0,
402 .hsclkpuos = 0x2,
403};
404
372static const struct of_device_id tegra_mipi_of_match[] = { 405static const struct of_device_id tegra_mipi_of_match[] = {
373 { .compatible = "nvidia,tegra114-mipi", .data = &tegra114_mipi_soc }, 406 { .compatible = "nvidia,tegra114-mipi", .data = &tegra114_mipi_soc },
374 { .compatible = "nvidia,tegra124-mipi", .data = &tegra124_mipi_soc }, 407 { .compatible = "nvidia,tegra124-mipi", .data = &tegra124_mipi_soc },
375 { .compatible = "nvidia,tegra132-mipi", .data = &tegra132_mipi_soc }, 408 { .compatible = "nvidia,tegra132-mipi", .data = &tegra132_mipi_soc },
409 { .compatible = "nvidia,tegra210-mipi", .data = &tegra210_mipi_soc },
376 { }, 410 { },
377}; 411};
378 412