Lines Matching refs:mipi

131 	struct tegra_mipi *mipi;  member
136 static inline u32 tegra_mipi_readl(struct tegra_mipi *mipi, in tegra_mipi_readl() argument
139 return readl(mipi->regs + (offset << 2)); in tegra_mipi_readl()
142 static inline void tegra_mipi_writel(struct tegra_mipi *mipi, u32 value, in tegra_mipi_writel() argument
145 writel(value, mipi->regs + (offset << 2)); in tegra_mipi_writel()
148 static int tegra_mipi_power_up(struct tegra_mipi *mipi) in tegra_mipi_power_up() argument
153 err = clk_enable(mipi->clk); in tegra_mipi_power_up()
157 value = tegra_mipi_readl(mipi, MIPI_CAL_BIAS_PAD_CFG0); in tegra_mipi_power_up()
160 if (mipi->soc->needs_vclamp_ref) in tegra_mipi_power_up()
163 tegra_mipi_writel(mipi, value, MIPI_CAL_BIAS_PAD_CFG0); in tegra_mipi_power_up()
165 value = tegra_mipi_readl(mipi, MIPI_CAL_BIAS_PAD_CFG2); in tegra_mipi_power_up()
167 tegra_mipi_writel(mipi, value, MIPI_CAL_BIAS_PAD_CFG2); in tegra_mipi_power_up()
169 clk_disable(mipi->clk); in tegra_mipi_power_up()
174 static int tegra_mipi_power_down(struct tegra_mipi *mipi) in tegra_mipi_power_down() argument
179 err = clk_enable(mipi->clk); in tegra_mipi_power_down()
188 value = tegra_mipi_readl(mipi, MIPI_CAL_BIAS_PAD_CFG2); in tegra_mipi_power_down()
190 tegra_mipi_writel(mipi, value, MIPI_CAL_BIAS_PAD_CFG2); in tegra_mipi_power_down()
198 value = tegra_mipi_readl(mipi, MIPI_CAL_BIAS_PAD_CFG0); in tegra_mipi_power_down()
200 if (mipi->soc->needs_vclamp_ref) in tegra_mipi_power_down()
204 tegra_mipi_writel(mipi, value, MIPI_CAL_BIAS_PAD_CFG0); in tegra_mipi_power_down()
234 dev->mipi = platform_get_drvdata(dev->pdev); in tegra_mipi_request()
235 if (!dev->mipi) { in tegra_mipi_request()
268 mutex_lock(&dev->mipi->lock); in tegra_mipi_enable()
270 if (dev->mipi->usage_count++ == 0) in tegra_mipi_enable()
271 err = tegra_mipi_power_up(dev->mipi); in tegra_mipi_enable()
273 mutex_unlock(&dev->mipi->lock); in tegra_mipi_enable()
284 mutex_lock(&dev->mipi->lock); in tegra_mipi_disable()
286 if (--dev->mipi->usage_count == 0) in tegra_mipi_disable()
287 err = tegra_mipi_power_down(dev->mipi); in tegra_mipi_disable()
289 mutex_unlock(&dev->mipi->lock); in tegra_mipi_disable()
298 struct tegra_mipi *mipi = device->mipi; in tegra_mipi_finish_calibration() local
299 void __iomem *status_reg = mipi->regs + (MIPI_CAL_STATUS << 2); in tegra_mipi_finish_calibration()
307 mutex_unlock(&device->mipi->lock); in tegra_mipi_finish_calibration()
308 clk_disable(device->mipi->clk); in tegra_mipi_finish_calibration()
316 const struct tegra_mipi_soc *soc = device->mipi->soc; in tegra_mipi_start_calibration()
321 err = clk_enable(device->mipi->clk); in tegra_mipi_start_calibration()
325 mutex_lock(&device->mipi->lock); in tegra_mipi_start_calibration()
329 tegra_mipi_writel(device->mipi, value, MIPI_CAL_BIAS_PAD_CFG1); in tegra_mipi_start_calibration()
331 value = tegra_mipi_readl(device->mipi, MIPI_CAL_BIAS_PAD_CFG2); in tegra_mipi_start_calibration()
336 tegra_mipi_writel(device->mipi, value, MIPI_CAL_BIAS_PAD_CFG2); in tegra_mipi_start_calibration()
351 tegra_mipi_writel(device->mipi, data, soc->pads[i].data); in tegra_mipi_start_calibration()
354 tegra_mipi_writel(device->mipi, clk, soc->pads[i].clk); in tegra_mipi_start_calibration()
357 value = tegra_mipi_readl(device->mipi, MIPI_CAL_CTRL); in tegra_mipi_start_calibration()
368 tegra_mipi_writel(device->mipi, value, MIPI_CAL_CTRL); in tegra_mipi_start_calibration()
371 value = tegra_mipi_readl(device->mipi, MIPI_CAL_STATUS); in tegra_mipi_start_calibration()
372 tegra_mipi_writel(device->mipi, value, MIPI_CAL_STATUS); in tegra_mipi_start_calibration()
374 value = tegra_mipi_readl(device->mipi, MIPI_CAL_CTRL); in tegra_mipi_start_calibration()
376 tegra_mipi_writel(device->mipi, value, MIPI_CAL_CTRL); in tegra_mipi_start_calibration()
503 struct tegra_mipi *mipi; in tegra_mipi_probe() local
511 mipi = devm_kzalloc(&pdev->dev, sizeof(*mipi), GFP_KERNEL); in tegra_mipi_probe()
512 if (!mipi) in tegra_mipi_probe()
515 mipi->soc = match->data; in tegra_mipi_probe()
516 mipi->dev = &pdev->dev; in tegra_mipi_probe()
519 mipi->regs = devm_ioremap_resource(&pdev->dev, res); in tegra_mipi_probe()
520 if (IS_ERR(mipi->regs)) in tegra_mipi_probe()
521 return PTR_ERR(mipi->regs); in tegra_mipi_probe()
523 mutex_init(&mipi->lock); in tegra_mipi_probe()
525 mipi->clk = devm_clk_get(&pdev->dev, NULL); in tegra_mipi_probe()
526 if (IS_ERR(mipi->clk)) { in tegra_mipi_probe()
528 return PTR_ERR(mipi->clk); in tegra_mipi_probe()
531 err = clk_prepare(mipi->clk); in tegra_mipi_probe()
535 platform_set_drvdata(pdev, mipi); in tegra_mipi_probe()
542 struct tegra_mipi *mipi = platform_get_drvdata(pdev); in tegra_mipi_remove() local
544 clk_unprepare(mipi->clk); in tegra_mipi_remove()