Lines Matching refs:dsi
444 struct dsi_data *dsi = dsi_get_dsidrv_data(dsidev); in dsi_write_reg() local
448 case DSI_PROTO: base = dsi->proto_base; break; in dsi_write_reg()
449 case DSI_PHY: base = dsi->phy_base; break; in dsi_write_reg()
450 case DSI_PLL: base = dsi->pll_base; break; in dsi_write_reg()
460 struct dsi_data *dsi = dsi_get_dsidrv_data(dsidev); in dsi_read_reg() local
464 case DSI_PROTO: base = dsi->proto_base; break; in dsi_read_reg()
465 case DSI_PHY: base = dsi->phy_base; break; in dsi_read_reg()
466 case DSI_PLL: base = dsi->pll_base; break; in dsi_read_reg()
476 struct dsi_data *dsi = dsi_get_dsidrv_data(dsidev); in dsi_bus_lock() local
478 down(&dsi->bus_lock); in dsi_bus_lock()
484 struct dsi_data *dsi = dsi_get_dsidrv_data(dsidev); in dsi_bus_unlock() local
486 up(&dsi->bus_lock); in dsi_bus_unlock()
491 struct dsi_data *dsi = dsi_get_dsidrv_data(dsidev); in dsi_bus_is_locked() local
493 return dsi->bus_lock.count == 0; in dsi_bus_is_locked()
548 struct dsi_data *dsi = dsi_get_dsidrv_data(dsidev); in dsi_perf_mark_setup() local
549 dsi->perf_setup_time = ktime_get(); in dsi_perf_mark_setup()
554 struct dsi_data *dsi = dsi_get_dsidrv_data(dsidev); in dsi_perf_mark_start() local
555 dsi->perf_start_time = ktime_get(); in dsi_perf_mark_start()
560 struct dsi_data *dsi = dsi_get_dsidrv_data(dsidev); in dsi_perf_show() local
570 setup_time = ktime_sub(dsi->perf_start_time, dsi->perf_setup_time); in dsi_perf_show()
575 trans_time = ktime_sub(t, dsi->perf_start_time); in dsi_perf_show()
582 total_bytes = dsi->update_bytes; in dsi_perf_show()
704 struct dsi_data *dsi = dsi_get_dsidrv_data(dsidev); in dsi_collect_irq_stats() local
707 spin_lock(&dsi->irq_stats_lock); in dsi_collect_irq_stats()
709 dsi->irq_stats.irq_count++; in dsi_collect_irq_stats()
710 dss_collect_irq_stats(irqstatus, dsi->irq_stats.dsi_irqs); in dsi_collect_irq_stats()
713 dss_collect_irq_stats(vcstatus[i], dsi->irq_stats.vc_irqs[i]); in dsi_collect_irq_stats()
715 dss_collect_irq_stats(ciostatus, dsi->irq_stats.cio_irqs); in dsi_collect_irq_stats()
717 spin_unlock(&dsi->irq_stats_lock); in dsi_collect_irq_stats()
728 struct dsi_data *dsi = dsi_get_dsidrv_data(dsidev); in dsi_handle_irq_errors() local
734 spin_lock(&dsi->errors_lock); in dsi_handle_irq_errors()
735 dsi->errors |= irqstatus & DSI_IRQ_ERROR_MASK; in dsi_handle_irq_errors()
736 spin_unlock(&dsi->errors_lock); in dsi_handle_irq_errors()
798 struct dsi_data *dsi; in omap_dsi_irq_handler() local
803 dsi = dsi_get_dsidrv_data(dsidev); in omap_dsi_irq_handler()
805 if (!dsi->is_enabled) in omap_dsi_irq_handler()
808 spin_lock(&dsi->irq_lock); in omap_dsi_irq_handler()
814 spin_unlock(&dsi->irq_lock); in omap_dsi_irq_handler()
847 del_timer(&dsi->te_timer); in omap_dsi_irq_handler()
852 memcpy(&dsi->isr_tables_copy, &dsi->isr_tables, in omap_dsi_irq_handler()
853 sizeof(dsi->isr_tables)); in omap_dsi_irq_handler()
855 spin_unlock(&dsi->irq_lock); in omap_dsi_irq_handler()
857 dsi_handle_isrs(&dsi->isr_tables_copy, irqstatus, vcstatus, ciostatus); in omap_dsi_irq_handler()
902 struct dsi_data *dsi = dsi_get_dsidrv_data(dsidev); in _omap_dsi_set_irqs() local
907 _omap_dsi_configure_irqs(dsidev, dsi->isr_tables.isr_table, in _omap_dsi_set_irqs()
908 ARRAY_SIZE(dsi->isr_tables.isr_table), mask, in _omap_dsi_set_irqs()
915 struct dsi_data *dsi = dsi_get_dsidrv_data(dsidev); in _omap_dsi_set_irqs_vc() local
917 _omap_dsi_configure_irqs(dsidev, dsi->isr_tables.isr_table_vc[vc], in _omap_dsi_set_irqs_vc()
918 ARRAY_SIZE(dsi->isr_tables.isr_table_vc[vc]), in _omap_dsi_set_irqs_vc()
926 struct dsi_data *dsi = dsi_get_dsidrv_data(dsidev); in _omap_dsi_set_irqs_cio() local
928 _omap_dsi_configure_irqs(dsidev, dsi->isr_tables.isr_table_cio, in _omap_dsi_set_irqs_cio()
929 ARRAY_SIZE(dsi->isr_tables.isr_table_cio), in _omap_dsi_set_irqs_cio()
936 struct dsi_data *dsi = dsi_get_dsidrv_data(dsidev); in _dsi_initialize_irq() local
940 spin_lock_irqsave(&dsi->irq_lock, flags); in _dsi_initialize_irq()
942 memset(&dsi->isr_tables, 0, sizeof(dsi->isr_tables)); in _dsi_initialize_irq()
949 spin_unlock_irqrestore(&dsi->irq_lock, flags); in _dsi_initialize_irq()
1011 struct dsi_data *dsi = dsi_get_dsidrv_data(dsidev); in dsi_register_isr() local
1015 spin_lock_irqsave(&dsi->irq_lock, flags); in dsi_register_isr()
1017 r = _dsi_register_isr(isr, arg, mask, dsi->isr_tables.isr_table, in dsi_register_isr()
1018 ARRAY_SIZE(dsi->isr_tables.isr_table)); in dsi_register_isr()
1023 spin_unlock_irqrestore(&dsi->irq_lock, flags); in dsi_register_isr()
1031 struct dsi_data *dsi = dsi_get_dsidrv_data(dsidev); in dsi_unregister_isr() local
1035 spin_lock_irqsave(&dsi->irq_lock, flags); in dsi_unregister_isr()
1037 r = _dsi_unregister_isr(isr, arg, mask, dsi->isr_tables.isr_table, in dsi_unregister_isr()
1038 ARRAY_SIZE(dsi->isr_tables.isr_table)); in dsi_unregister_isr()
1043 spin_unlock_irqrestore(&dsi->irq_lock, flags); in dsi_unregister_isr()
1051 struct dsi_data *dsi = dsi_get_dsidrv_data(dsidev); in dsi_register_isr_vc() local
1055 spin_lock_irqsave(&dsi->irq_lock, flags); in dsi_register_isr_vc()
1058 dsi->isr_tables.isr_table_vc[channel], in dsi_register_isr_vc()
1059 ARRAY_SIZE(dsi->isr_tables.isr_table_vc[channel])); in dsi_register_isr_vc()
1064 spin_unlock_irqrestore(&dsi->irq_lock, flags); in dsi_register_isr_vc()
1072 struct dsi_data *dsi = dsi_get_dsidrv_data(dsidev); in dsi_unregister_isr_vc() local
1076 spin_lock_irqsave(&dsi->irq_lock, flags); in dsi_unregister_isr_vc()
1079 dsi->isr_tables.isr_table_vc[channel], in dsi_unregister_isr_vc()
1080 ARRAY_SIZE(dsi->isr_tables.isr_table_vc[channel])); in dsi_unregister_isr_vc()
1085 spin_unlock_irqrestore(&dsi->irq_lock, flags); in dsi_unregister_isr_vc()
1093 struct dsi_data *dsi = dsi_get_dsidrv_data(dsidev); in dsi_register_isr_cio() local
1097 spin_lock_irqsave(&dsi->irq_lock, flags); in dsi_register_isr_cio()
1099 r = _dsi_register_isr(isr, arg, mask, dsi->isr_tables.isr_table_cio, in dsi_register_isr_cio()
1100 ARRAY_SIZE(dsi->isr_tables.isr_table_cio)); in dsi_register_isr_cio()
1105 spin_unlock_irqrestore(&dsi->irq_lock, flags); in dsi_register_isr_cio()
1113 struct dsi_data *dsi = dsi_get_dsidrv_data(dsidev); in dsi_unregister_isr_cio() local
1117 spin_lock_irqsave(&dsi->irq_lock, flags); in dsi_unregister_isr_cio()
1119 r = _dsi_unregister_isr(isr, arg, mask, dsi->isr_tables.isr_table_cio, in dsi_unregister_isr_cio()
1120 ARRAY_SIZE(dsi->isr_tables.isr_table_cio)); in dsi_unregister_isr_cio()
1125 spin_unlock_irqrestore(&dsi->irq_lock, flags); in dsi_unregister_isr_cio()
1132 struct dsi_data *dsi = dsi_get_dsidrv_data(dsidev); in dsi_get_errors() local
1135 spin_lock_irqsave(&dsi->errors_lock, flags); in dsi_get_errors()
1136 e = dsi->errors; in dsi_get_errors()
1137 dsi->errors = 0; in dsi_get_errors()
1138 spin_unlock_irqrestore(&dsi->errors_lock, flags); in dsi_get_errors()
1145 struct dsi_data *dsi = dsi_get_dsidrv_data(dsidev); in dsi_runtime_get() local
1149 r = pm_runtime_get_sync(&dsi->pdev->dev); in dsi_runtime_get()
1156 struct dsi_data *dsi = dsi_get_dsidrv_data(dsidev); in dsi_runtime_put() local
1161 r = pm_runtime_put_sync(&dsi->pdev->dev); in dsi_runtime_put()
1167 struct dsi_data *dsi = dsi_get_dsidrv_data(dsidev); in dsi_regulator_init() local
1171 if (dsi->vdds_dsi_reg != NULL) in dsi_regulator_init()
1174 vdds_dsi = devm_regulator_get(&dsi->pdev->dev, "vdd"); in dsi_regulator_init()
1191 dsi->vdds_dsi_reg = vdds_dsi; in dsi_regulator_init()
1249 struct dsi_data *dsi = dsi_get_dsidrv_data(dsidev); in dsi_get_pll_hsdiv_dispc_rate() local
1251 return dsi->pll.cinfo.clkout[HSDIV_DISPC]; in dsi_get_pll_hsdiv_dispc_rate()
1256 struct dsi_data *dsi = dsi_get_dsidrv_data(dsidev); in dsi_get_pll_hsdiv_dsi_rate() local
1258 return dsi->pll.cinfo.clkout[HSDIV_DSI]; in dsi_get_pll_hsdiv_dsi_rate()
1263 struct dsi_data *dsi = dsi_get_dsidrv_data(dsidev); in dsi_get_txbyteclkhs() local
1265 return dsi->pll.cinfo.clkdco / 16; in dsi_get_txbyteclkhs()
1271 struct dsi_data *dsi = dsi_get_dsidrv_data(dsidev); in dsi_fclk_rate() local
1273 if (dss_get_dsi_clk_source(dsi->module_id) == OMAP_DSS_CLK_SRC_FCK) { in dsi_fclk_rate()
1275 r = clk_get_rate(dsi->dss_clk); in dsi_fclk_rate()
1305 struct dsi_data *dsi = dsi_get_dsidrv_data(dsidev); in dsi_set_lp_clk_divisor() local
1312 lp_clk_div = dsi->user_lp_cinfo.lp_clk_div; in dsi_set_lp_clk_divisor()
1322 dsi->current_lp_cinfo.lp_clk = lp_clk; in dsi_set_lp_clk_divisor()
1323 dsi->current_lp_cinfo.lp_clk_div = lp_clk_div; in dsi_set_lp_clk_divisor()
1336 struct dsi_data *dsi = dsi_get_dsidrv_data(dsidev); in dsi_enable_scp_clk() local
1338 if (dsi->scp_clk_refcount++ == 0) in dsi_enable_scp_clk()
1344 struct dsi_data *dsi = dsi_get_dsidrv_data(dsidev); in dsi_disable_scp_clk() local
1346 WARN_ON(dsi->scp_clk_refcount == 0); in dsi_disable_scp_clk()
1347 if (--dsi->scp_clk_refcount == 0) in dsi_disable_scp_clk()
1397 struct dsi_data *dsi = container_of(pll, struct dsi_data, pll); in dsi_pll_enable() local
1398 struct platform_device *dsidev = dsi->pdev; in dsi_pll_enable()
1416 if (!dsi->vdds_dsi_enabled) { in dsi_pll_enable()
1417 r = regulator_enable(dsi->vdds_dsi_reg); in dsi_pll_enable()
1420 dsi->vdds_dsi_enabled = true; in dsi_pll_enable()
1446 if (dsi->vdds_dsi_enabled) { in dsi_pll_enable()
1447 regulator_disable(dsi->vdds_dsi_reg); in dsi_pll_enable()
1448 dsi->vdds_dsi_enabled = false; in dsi_pll_enable()
1458 struct dsi_data *dsi = dsi_get_dsidrv_data(dsidev); in dsi_pll_uninit() local
1462 WARN_ON(!dsi->vdds_dsi_enabled); in dsi_pll_uninit()
1463 regulator_disable(dsi->vdds_dsi_reg); in dsi_pll_uninit()
1464 dsi->vdds_dsi_enabled = false; in dsi_pll_uninit()
1475 struct dsi_data *dsi = container_of(pll, struct dsi_data, pll); in dsi_pll_disable() local
1476 struct platform_device *dsidev = dsi->pdev; in dsi_pll_disable()
1484 struct dsi_data *dsi = dsi_get_dsidrv_data(dsidev); in dsi_dump_dsidev_clocks() local
1485 struct dss_pll_clock_info *cinfo = &dsi->pll.cinfo; in dsi_dump_dsidev_clocks()
1487 int dsi_module = dsi->module_id; in dsi_dump_dsidev_clocks()
1488 struct dss_pll *pll = &dsi->pll; in dsi_dump_dsidev_clocks()
1536 seq_printf(s, "LP_CLK\t\t%lu\n", dsi->current_lp_cinfo.lp_clk); in dsi_dump_dsidev_clocks()
1557 struct dsi_data *dsi = dsi_get_dsidrv_data(dsidev); in dsi_dump_dsidev_irqs() local
1561 spin_lock_irqsave(&dsi->irq_stats_lock, flags); in dsi_dump_dsidev_irqs()
1563 stats = dsi->irq_stats; in dsi_dump_dsidev_irqs()
1564 memset(&dsi->irq_stats, 0, sizeof(dsi->irq_stats)); in dsi_dump_dsidev_irqs()
1565 dsi->irq_stats.last_reset = jiffies; in dsi_dump_dsidev_irqs()
1567 spin_unlock_irqrestore(&dsi->irq_stats_lock, flags); in dsi_dump_dsidev_irqs()
1576 seq_printf(s, "-- DSI%d interrupts --\n", dsi->module_id + 1); in dsi_dump_dsidev_irqs()
1820 struct dsi_data *dsi = dsi_get_dsidrv_data(dsidev); in dsi_set_lane_config() local
1834 for (i = 0; i < dsi->num_lanes_used; ++i) { in dsi_set_lane_config()
1839 for (t = 0; t < dsi->num_lanes_supported; ++t) in dsi_set_lane_config()
1840 if (dsi->lanes[t].function == functions[i]) in dsi_set_lane_config()
1843 if (t == dsi->num_lanes_supported) in dsi_set_lane_config()
1847 polarity = dsi->lanes[t].polarity; in dsi_set_lane_config()
1854 for (; i < dsi->num_lanes_supported; ++i) { in dsi_set_lane_config()
1868 struct dsi_data *dsi = dsi_get_dsidrv_data(dsidev); in ns2ddr() local
1871 unsigned long ddr_clk = dsi->pll.cinfo.clkdco / 4; in ns2ddr()
1877 struct dsi_data *dsi = dsi_get_dsidrv_data(dsidev); in ddr2ns() local
1879 unsigned long ddr_clk = dsi->pll.cinfo.clkdco / 4; in ddr2ns()
1964 struct dsi_data *dsi = dsi_get_dsidrv_data(dsidev); in dsi_cio_enable_lane_override() local
1967 u8 lptxscp_start = dsi->num_lanes_supported == 3 ? 22 : 26; in dsi_cio_enable_lane_override()
1971 for (i = 0; i < dsi->num_lanes_supported; ++i) { in dsi_cio_enable_lane_override()
1972 unsigned p = dsi->lanes[i].polarity; in dsi_cio_enable_lane_override()
2012 struct dsi_data *dsi = dsi_get_dsidrv_data(dsidev); in dsi_cio_wait_tx_clk_esc_reset() local
2024 for (i = 0; i < dsi->num_lanes_supported; ++i) in dsi_cio_wait_tx_clk_esc_reset()
2025 in_use[i] = dsi->lanes[i].function != DSI_LANE_UNUSED; in dsi_cio_wait_tx_clk_esc_reset()
2035 for (i = 0; i < dsi->num_lanes_supported; ++i) { in dsi_cio_wait_tx_clk_esc_reset()
2040 if (ok == dsi->num_lanes_supported) in dsi_cio_wait_tx_clk_esc_reset()
2044 for (i = 0; i < dsi->num_lanes_supported; ++i) { in dsi_cio_wait_tx_clk_esc_reset()
2061 struct dsi_data *dsi = dsi_get_dsidrv_data(dsidev); in dsi_get_lane_mask() local
2065 for (i = 0; i < dsi->num_lanes_supported; ++i) { in dsi_get_lane_mask()
2066 if (dsi->lanes[i].function != DSI_LANE_UNUSED) in dsi_get_lane_mask()
2075 struct dsi_data *dsi = dsi_get_dsidrv_data(dsidev); in dsi_cio_init() local
2081 r = dss_dsi_enable_pads(dsi->module_id, dsi_get_lane_mask(dsidev)); in dsi_cio_init()
2110 if (dsi->ulps_enabled) { in dsi_cio_init()
2127 for (i = 0; i < dsi->num_lanes_supported; ++i) { in dsi_cio_init()
2128 if (dsi->lanes[i].function == DSI_LANE_UNUSED) in dsi_cio_init()
2154 if (dsi->ulps_enabled) { in dsi_cio_init()
2170 if (dsi->mode == OMAP_DSS_DSI_VIDEO_MODE) { in dsi_cio_init()
2173 dsi->vm_timings.ddr_clk_always_on, 13, 13); in dsi_cio_init()
2176 dsi->ulps_enabled = false; in dsi_cio_init()
2187 if (dsi->ulps_enabled) in dsi_cio_init()
2191 dss_dsi_disable_pads(dsi->module_id, dsi_get_lane_mask(dsidev)); in dsi_cio_init()
2197 struct dsi_data *dsi = dsi_get_dsidrv_data(dsidev); in dsi_cio_uninit() local
2204 dss_dsi_disable_pads(dsi->module_id, dsi_get_lane_mask(dsidev)); in dsi_cio_uninit()
2211 struct dsi_data *dsi = dsi_get_dsidrv_data(dsidev); in dsi_config_tx_fifo() local
2216 dsi->vc[0].tx_fifo_size = size1; in dsi_config_tx_fifo()
2217 dsi->vc[1].tx_fifo_size = size2; in dsi_config_tx_fifo()
2218 dsi->vc[2].tx_fifo_size = size3; in dsi_config_tx_fifo()
2219 dsi->vc[3].tx_fifo_size = size4; in dsi_config_tx_fifo()
2223 int size = dsi->vc[i].tx_fifo_size; in dsi_config_tx_fifo()
2244 struct dsi_data *dsi = dsi_get_dsidrv_data(dsidev); in dsi_config_rx_fifo() local
2249 dsi->vc[0].rx_fifo_size = size1; in dsi_config_rx_fifo()
2250 dsi->vc[1].rx_fifo_size = size2; in dsi_config_rx_fifo()
2251 dsi->vc[2].rx_fifo_size = size3; in dsi_config_rx_fifo()
2252 dsi->vc[3].rx_fifo_size = size4; in dsi_config_rx_fifo()
2256 int size = dsi->vc[i].rx_fifo_size; in dsi_config_rx_fifo()
2298 struct dsi_data *dsi = dsi_get_dsidrv_data(vp_data->dsidev); in dsi_packet_sent_handler_vp() local
2299 const int channel = dsi->update_channel; in dsi_packet_sent_handler_vp()
2300 u8 bit = dsi->te_enabled ? 30 : 31; in dsi_packet_sent_handler_vp()
2308 struct dsi_data *dsi = dsi_get_dsidrv_data(dsidev); in dsi_sync_vc_vp() local
2317 bit = dsi->te_enabled ? 30 : 31; in dsi_sync_vc_vp()
2349 struct dsi_data *dsi = dsi_get_dsidrv_data(l4_data->dsidev); in dsi_packet_sent_handler_l4() local
2350 const int channel = dsi->update_channel; in dsi_packet_sent_handler_l4()
2393 struct dsi_data *dsi = dsi_get_dsidrv_data(dsidev); in dsi_sync_vc() local
2402 switch (dsi->vc[channel].source) { in dsi_sync_vc()
2434 struct dsi_data *dsi = dsi_get_dsidrv_data(dsidev); in dsi_vc_initial_config() local
2460 dsi->vc[channel].source = DSI_VC_SOURCE_L4; in dsi_vc_initial_config()
2466 struct dsi_data *dsi = dsi_get_dsidrv_data(dsidev); in dsi_vc_config_source() local
2468 if (dsi->vc[channel].source == source) in dsi_vc_config_source()
2494 dsi->vc[channel].source = source; in dsi_vc_config_source()
2503 struct dsi_data *dsi = dsi_get_dsidrv_data(dsidev); in dsi_vc_enable_hs() local
2520 if (dsi->vm_timings.ddr_clk_always_on && enable) in dsi_vc_enable_hs()
2606 struct dsi_data *dsi = dsi_get_dsidrv_data(dsidev); in dsi_vc_send_bta() local
2608 if (dsi->debug_write || dsi->debug_read) in dsi_vc_send_bta()
2674 struct dsi_data *dsi = dsi_get_dsidrv_data(dsidev); in dsi_vc_write_long_header() local
2680 data_id = data_type | dsi->vc[channel].vc_id << 6; in dsi_vc_write_long_header()
2705 struct dsi_data *dsi = dsi_get_dsidrv_data(dsidev); in dsi_vc_send_long() local
2711 if (dsi->debug_write) in dsi_vc_send_long()
2715 if (dsi->vc[channel].tx_fifo_size * 32 * 4 < len + 4) { in dsi_vc_send_long()
2726 if (dsi->debug_write) in dsi_vc_send_long()
2741 if (dsi->debug_write) in dsi_vc_send_long()
2768 struct dsi_data *dsi = dsi_get_dsidrv_data(dsidev); in dsi_vc_send_short() local
2774 if (dsi->debug_write) in dsi_vc_send_short()
2786 data_id = data_type | dsi->vc[channel].vc_id << 6; in dsi_vc_send_short()
2897 struct dsi_data *dsi = dsi_get_dsidrv_data(dsidev); in dsi_vc_dcs_send_read_request() local
2900 if (dsi->debug_read) in dsi_vc_dcs_send_read_request()
2917 struct dsi_data *dsi = dsi_get_dsidrv_data(dsidev); in dsi_vc_generic_send_read_request() local
2922 if (dsi->debug_read) in dsi_vc_generic_send_read_request()
2953 struct dsi_data *dsi = dsi_get_dsidrv_data(dsidev); in dsi_vc_read_rx_fifo() local
2966 if (dsi->debug_read) in dsi_vc_read_rx_fifo()
2979 if (dsi->debug_read) in dsi_vc_read_rx_fifo()
2996 if (dsi->debug_read) in dsi_vc_read_rx_fifo()
3015 if (dsi->debug_read) in dsi_vc_read_rx_fifo()
3030 if (dsi->debug_read) in dsi_vc_read_rx_fifo()
3127 struct dsi_data *dsi = dsi_get_dsidrv_data(dsidev); in dsi_enter_ulps() local
3136 WARN_ON(dsi->ulps_enabled); in dsi_enter_ulps()
3138 if (dsi->ulps_enabled) in dsi_enter_ulps()
3177 for (i = 0; i < dsi->num_lanes_supported; ++i) { in dsi_enter_ulps()
3178 if (dsi->lanes[i].function == DSI_LANE_UNUSED) in dsi_enter_ulps()
3209 dsi->ulps_enabled = true; in dsi_enter_ulps()
3329 struct dsi_data *dsi = dsi_get_dsidrv_data(dsidev); in dsi_config_vp_num_line_buffers() local
3332 if (dsi->mode == OMAP_DSS_DSI_VIDEO_MODE) { in dsi_config_vp_num_line_buffers()
3333 int bpp = dsi_get_pixel_size(dsi->pix_fmt); in dsi_config_vp_num_line_buffers()
3334 struct omap_video_timings *timings = &dsi->timings; in dsi_config_vp_num_line_buffers()
3339 if (dsi->line_buffer_size <= timings->x_res * bpp / 8) in dsi_config_vp_num_line_buffers()
3354 struct dsi_data *dsi = dsi_get_dsidrv_data(dsidev); in dsi_config_vp_sync_events() local
3358 if (dsi->vm_timings.trans_mode == OMAP_DSS_DSI_PULSE_MODE) in dsi_config_vp_sync_events()
3376 struct dsi_data *dsi = dsi_get_dsidrv_data(dsidev); in dsi_config_blanking_modes() local
3377 int blanking_mode = dsi->vm_timings.blanking_mode; in dsi_config_blanking_modes()
3378 int hfp_blanking_mode = dsi->vm_timings.hfp_blanking_mode; in dsi_config_blanking_modes()
3379 int hbp_blanking_mode = dsi->vm_timings.hbp_blanking_mode; in dsi_config_blanking_modes()
3380 int hsa_blanking_mode = dsi->vm_timings.hsa_blanking_mode; in dsi_config_blanking_modes()
3459 struct dsi_data *dsi = dsi_get_dsidrv_data(dsidev); in dsi_config_cmd_mode_interleaving() local
3466 struct omap_video_timings *timings = &dsi->timings; in dsi_config_cmd_mode_interleaving()
3467 int bpp = dsi_get_pixel_size(dsi->pix_fmt); in dsi_config_cmd_mode_interleaving()
3468 int ndl = dsi->num_lanes_used - 1; in dsi_config_cmd_mode_interleaving()
3469 int dsi_fclk_hsdiv = dsi->user_dsi_cinfo.mX[HSDIV_DSI] + 1; in dsi_config_cmd_mode_interleaving()
3576 struct dsi_data *dsi = dsi_get_dsidrv_data(dsidev); in dsi_proto_config() local
3596 switch (dsi_get_pixel_size(dsi->pix_fmt)) { in dsi_proto_config()
3630 if (dsi->mode == OMAP_DSS_DSI_VIDEO_MODE) { in dsi_proto_config()
3646 struct dsi_data *dsi = dsi_get_dsidrv_data(dsidev); in dsi_proto_timings() local
3654 int ndl = dsi->num_lanes_used - 1; in dsi_proto_timings()
3708 if (dsi->mode == OMAP_DSS_DSI_VIDEO_MODE) { in dsi_proto_timings()
3710 int hsa = dsi->vm_timings.hsa; in dsi_proto_timings()
3711 int hfp = dsi->vm_timings.hfp; in dsi_proto_timings()
3712 int hbp = dsi->vm_timings.hbp; in dsi_proto_timings()
3713 int vsa = dsi->vm_timings.vsa; in dsi_proto_timings()
3714 int vfp = dsi->vm_timings.vfp; in dsi_proto_timings()
3715 int vbp = dsi->vm_timings.vbp; in dsi_proto_timings()
3716 int window_sync = dsi->vm_timings.window_sync; in dsi_proto_timings()
3718 struct omap_video_timings *timings = &dsi->timings; in dsi_proto_timings()
3719 int bpp = dsi_get_pixel_size(dsi->pix_fmt); in dsi_proto_timings()
3722 hsync_end = dsi->vm_timings.trans_mode == OMAP_DSS_DSI_PULSE_MODE; in dsi_proto_timings()
3761 struct dsi_data *dsi = dsi_get_dsidrv_data(dsidev); in dsi_configure_pins() local
3779 if (num_pins < 4 || num_pins > dsi->num_lanes_supported * 2 in dsi_configure_pins()
3795 if (dx < 0 || dx >= dsi->num_lanes_supported * 2) in dsi_configure_pins()
3798 if (dy < 0 || dy >= dsi->num_lanes_supported * 2) in dsi_configure_pins()
3818 memcpy(dsi->lanes, lanes, sizeof(dsi->lanes)); in dsi_configure_pins()
3819 dsi->num_lanes_used = num_lanes; in dsi_configure_pins()
3827 struct dsi_data *dsi = dsi_get_dsidrv_data(dsidev); in dsi_enable_video_output() local
3828 struct omap_overlay_manager *mgr = dsi->output.manager; in dsi_enable_video_output()
3829 int bpp = dsi_get_pixel_size(dsi->pix_fmt); in dsi_enable_video_output()
3830 struct omap_dss_device *out = &dsi->output; in dsi_enable_video_output()
3844 if (dsi->mode == OMAP_DSS_DSI_VIDEO_MODE) { in dsi_enable_video_output()
3845 switch (dsi->pix_fmt) { in dsi_enable_video_output()
3869 word_count = DIV_ROUND_UP(dsi->timings.x_res * bpp, 8); in dsi_enable_video_output()
3885 if (dsi->mode == OMAP_DSS_DSI_VIDEO_MODE) { in dsi_enable_video_output()
3898 struct dsi_data *dsi = dsi_get_dsidrv_data(dsidev); in dsi_disable_video_output() local
3899 struct omap_overlay_manager *mgr = dsi->output.manager; in dsi_disable_video_output()
3901 if (dsi->mode == OMAP_DSS_DSI_VIDEO_MODE) { in dsi_disable_video_output()
3919 struct dsi_data *dsi = dsi_get_dsidrv_data(dsidev); in dsi_update_screen_dispc() local
3920 struct omap_overlay_manager *mgr = dsi->output.manager; in dsi_update_screen_dispc()
3929 const unsigned channel = dsi->update_channel; in dsi_update_screen_dispc()
3930 const unsigned line_buf_size = dsi->line_buffer_size; in dsi_update_screen_dispc()
3931 u16 w = dsi->timings.x_res; in dsi_update_screen_dispc()
3932 u16 h = dsi->timings.y_res; in dsi_update_screen_dispc()
3938 bytespp = dsi_get_pixel_size(dsi->pix_fmt) / 8; in dsi_update_screen_dispc()
3962 if (dsi->te_enabled) in dsi_update_screen_dispc()
3978 r = schedule_delayed_work(&dsi->framedone_timeout_work, in dsi_update_screen_dispc()
3982 dss_mgr_set_timings(mgr, &dsi->timings); in dsi_update_screen_dispc()
3986 if (dsi->te_enabled) { in dsi_update_screen_dispc()
3994 mod_timer(&dsi->te_timer, jiffies + msecs_to_jiffies(250)); in dsi_update_screen_dispc()
4008 struct dsi_data *dsi = dsi_get_dsidrv_data(dsidev); in dsi_handle_framedone() local
4013 if (dsi->te_enabled) { in dsi_handle_framedone()
4018 dsi->framedone_callback(error, dsi->framedone_data); in dsi_handle_framedone()
4026 struct dsi_data *dsi = container_of(work, struct dsi_data, in dsi_framedone_timeout_work_callback() local
4037 dsi_handle_framedone(dsi->pdev, -ETIMEDOUT); in dsi_framedone_timeout_work_callback()
4043 struct dsi_data *dsi = dsi_get_dsidrv_data(dsidev); in dsi_framedone_irq_callback() local
4050 cancel_delayed_work(&dsi->framedone_timeout_work); in dsi_framedone_irq_callback()
4059 struct dsi_data *dsi = dsi_get_dsidrv_data(dsidev); in dsi_update() local
4064 dsi->update_channel = channel; in dsi_update()
4066 dsi->framedone_callback = callback; in dsi_update()
4067 dsi->framedone_data = data; in dsi_update()
4069 dw = dsi->timings.x_res; in dsi_update()
4070 dh = dsi->timings.y_res; in dsi_update()
4073 dsi->update_bytes = dw * dh * in dsi_update()
4074 dsi_get_pixel_size(dsi->pix_fmt) / 8; in dsi_update()
4085 struct dsi_data *dsi = dsi_get_dsidrv_data(dsidev); in dsi_configure_dispc_clocks() local
4092 dispc_cinfo.lck_div = dsi->user_dispc_cinfo.lck_div; in dsi_configure_dispc_clocks()
4093 dispc_cinfo.pck_div = dsi->user_dispc_cinfo.pck_div; in dsi_configure_dispc_clocks()
4101 dsi->mgr_config.clock_info = dispc_cinfo; in dsi_configure_dispc_clocks()
4109 struct dsi_data *dsi = dsi_get_dsidrv_data(dsidev); in dsi_display_init_dispc() local
4112 dss_select_lcd_clk_source(mgr->id, dsi->module_id == 0 ? in dsi_display_init_dispc()
4116 if (dsi->mode == OMAP_DSS_DSI_CMD_MODE) { in dsi_display_init_dispc()
4124 dsi->mgr_config.stallmode = true; in dsi_display_init_dispc()
4125 dsi->mgr_config.fifohandcheck = true; in dsi_display_init_dispc()
4127 dsi->mgr_config.stallmode = false; in dsi_display_init_dispc()
4128 dsi->mgr_config.fifohandcheck = false; in dsi_display_init_dispc()
4135 dsi->timings.interlace = false; in dsi_display_init_dispc()
4136 dsi->timings.hsync_level = OMAPDSS_SIG_ACTIVE_HIGH; in dsi_display_init_dispc()
4137 dsi->timings.vsync_level = OMAPDSS_SIG_ACTIVE_HIGH; in dsi_display_init_dispc()
4138 dsi->timings.data_pclk_edge = OMAPDSS_DRIVE_SIG_RISING_EDGE; in dsi_display_init_dispc()
4139 dsi->timings.de_level = OMAPDSS_SIG_ACTIVE_HIGH; in dsi_display_init_dispc()
4140 dsi->timings.sync_pclk_edge = OMAPDSS_DRIVE_SIG_FALLING_EDGE; in dsi_display_init_dispc()
4142 dss_mgr_set_timings(mgr, &dsi->timings); in dsi_display_init_dispc()
4148 dsi->mgr_config.io_pad_mode = DSS_IO_PAD_MODE_BYPASS; in dsi_display_init_dispc()
4149 dsi->mgr_config.video_port_width = in dsi_display_init_dispc()
4150 dsi_get_pixel_size(dsi->pix_fmt); in dsi_display_init_dispc()
4151 dsi->mgr_config.lcden_sig_polarity = 0; in dsi_display_init_dispc()
4153 dss_mgr_set_lcd_config(mgr, &dsi->mgr_config); in dsi_display_init_dispc()
4157 if (dsi->mode == OMAP_DSS_DSI_CMD_MODE) in dsi_display_init_dispc()
4168 struct dsi_data *dsi = dsi_get_dsidrv_data(dsidev); in dsi_display_uninit_dispc() local
4170 if (dsi->mode == OMAP_DSS_DSI_CMD_MODE) in dsi_display_uninit_dispc()
4179 struct dsi_data *dsi = dsi_get_dsidrv_data(dsidev); in dsi_configure_dsi_clocks() local
4183 cinfo = dsi->user_dsi_cinfo; in dsi_configure_dsi_clocks()
4185 r = dss_pll_set_config(&dsi->pll, &cinfo); in dsi_configure_dsi_clocks()
4196 struct dsi_data *dsi = dsi_get_dsidrv_data(dsidev); in dsi_display_init_dsi() local
4199 r = dss_pll_enable(&dsi->pll); in dsi_display_init_dsi()
4207 dss_select_dsi_clk_source(dsi->module_id, dsi->module_id == 0 ? in dsi_display_init_dsi()
4241 dss_select_dsi_clk_source(dsi->module_id, OMAP_DSS_CLK_SRC_FCK); in dsi_display_init_dsi()
4243 dss_pll_disable(&dsi->pll); in dsi_display_init_dsi()
4251 struct dsi_data *dsi = dsi_get_dsidrv_data(dsidev); in dsi_display_uninit_dsi() local
4253 if (enter_ulps && !dsi->ulps_enabled) in dsi_display_uninit_dsi()
4263 dss_select_dsi_clk_source(dsi->module_id, OMAP_DSS_CLK_SRC_FCK); in dsi_display_uninit_dsi()
4271 struct dsi_data *dsi = dsi_get_dsidrv_data(dsidev); in dsi_display_enable() local
4278 mutex_lock(&dsi->lock); in dsi_display_enable()
4290 mutex_unlock(&dsi->lock); in dsi_display_enable()
4297 mutex_unlock(&dsi->lock); in dsi_display_enable()
4306 struct dsi_data *dsi = dsi_get_dsidrv_data(dsidev); in dsi_display_disable() local
4312 mutex_lock(&dsi->lock); in dsi_display_disable()
4323 mutex_unlock(&dsi->lock); in dsi_display_disable()
4329 struct dsi_data *dsi = dsi_get_dsidrv_data(dsidev); in dsi_enable_te() local
4331 dsi->te_enabled = enable; in dsi_enable_te()
4469 static bool dsi_cm_calc(struct dsi_data *dsi, in dsi_cm_calc() argument
4478 clkin = clk_get_rate(dsi->pll.clkin); in dsi_cm_calc()
4480 ndl = dsi->num_lanes_used - 1; in dsi_cm_calc()
4493 ctx->dsidev = dsi->pdev; in dsi_cm_calc()
4494 ctx->pll = &dsi->pll; in dsi_cm_calc()
4510 struct dsi_data *dsi = dsi_get_dsidrv_data(ctx->dsidev); in dsi_vm_calc_blanking() local
4513 int ndl = dsi->num_lanes_used - 1; in dsi_vm_calc_blanking()
4549 if (dsi->line_buffer_size < xres * bitspp / 8) { in dsi_vm_calc_blanking()
4767 static bool dsi_vm_calc(struct dsi_data *dsi, in dsi_vm_calc() argument
4775 int ndl = dsi->num_lanes_used - 1; in dsi_vm_calc()
4779 clkin = clk_get_rate(dsi->pll.clkin); in dsi_vm_calc()
4782 ctx->dsidev = dsi->pdev; in dsi_vm_calc()
4783 ctx->pll = &dsi->pll; in dsi_vm_calc()
4813 struct dsi_data *dsi = dsi_get_dsidrv_data(dsidev); in dsi_set_config() local
4818 mutex_lock(&dsi->lock); in dsi_set_config()
4820 dsi->pix_fmt = config->pixel_format; in dsi_set_config()
4821 dsi->mode = config->mode; in dsi_set_config()
4824 ok = dsi_vm_calc(dsi, config, &ctx); in dsi_set_config()
4826 ok = dsi_cm_calc(dsi, config, &ctx); in dsi_set_config()
4837 config->lp_clk_min, config->lp_clk_max, &dsi->user_lp_cinfo); in dsi_set_config()
4843 dsi->user_dsi_cinfo = ctx.dsi_cinfo; in dsi_set_config()
4844 dsi->user_dispc_cinfo = ctx.dispc_cinfo; in dsi_set_config()
4846 dsi->timings = ctx.dispc_vm; in dsi_set_config()
4847 dsi->vm_timings = ctx.dsi_vm; in dsi_set_config()
4849 mutex_unlock(&dsi->lock); in dsi_set_config()
4853 mutex_unlock(&dsi->lock); in dsi_set_config()
4911 struct dsi_data *dsi = dsi_get_dsidrv_data(dsidev); in dsi_request_vc() local
4914 for (i = 0; i < ARRAY_SIZE(dsi->vc); i++) { in dsi_request_vc()
4915 if (!dsi->vc[i].dssdev) { in dsi_request_vc()
4916 dsi->vc[i].dssdev = dssdev; in dsi_request_vc()
4929 struct dsi_data *dsi = dsi_get_dsidrv_data(dsidev); in dsi_set_vc_id() local
4941 if (dsi->vc[channel].dssdev != dssdev) { in dsi_set_vc_id()
4947 dsi->vc[channel].vc_id = vc_id; in dsi_set_vc_id()
4955 struct dsi_data *dsi = dsi_get_dsidrv_data(dsidev); in dsi_release_vc() local
4958 dsi->vc[channel].dssdev == dssdev) { in dsi_release_vc()
4959 dsi->vc[channel].dssdev = NULL; in dsi_release_vc()
4960 dsi->vc[channel].vc_id = 0; in dsi_release_vc()
4967 struct dsi_data *dsi = dsi_get_dsidrv_data(dsidev); in dsi_get_clocks() local
4976 dsi->dss_clk = clk; in dsi_get_clocks()
5066 struct dsi_data *dsi = dsi_get_dsidrv_data(dsidev); in dsi_init_output() local
5067 struct omap_dss_device *out = &dsi->output; in dsi_init_output()
5070 out->id = dsi->module_id == 0 ? in dsi_init_output()
5074 out->name = dsi->module_id == 0 ? "dsi.0" : "dsi.1"; in dsi_init_output()
5075 out->dispc_channel = dsi_get_channel(dsi->module_id); in dsi_init_output()
5076 out->ops.dsi = &dsi_ops; in dsi_init_output()
5084 struct dsi_data *dsi = dsi_get_dsidrv_data(dsidev); in dsi_uninit_output() local
5085 struct omap_dss_device *out = &dsi->output; in dsi_uninit_output()
5093 struct dsi_data *dsi = dsi_get_dsidrv_data(pdev); in dsi_probe_of() local
5115 num_pins > dsi->num_lanes_supported * 2) { in dsi_probe_of()
5131 r = dsi_configure_pins(&dsi->output, &pin_cfg); in dsi_probe_of()
5229 struct dsi_data *dsi = dsi_get_dsidrv_data(dsidev); in dsi_init_pll_data() local
5230 struct dss_pll *pll = &dsi->pll; in dsi_init_pll_data()
5240 pll->name = dsi->module_id == 0 ? "dsi0" : "dsi1"; in dsi_init_pll_data()
5241 pll->id = dsi->module_id == 0 ? DSS_PLL_DSI1 : DSS_PLL_DSI2; in dsi_init_pll_data()
5243 pll->base = dsi->pll_base; in dsi_init_pll_data()
5281 struct dsi_data *dsi; in omap_dsihw_probe() local
5286 dsi = devm_kzalloc(&dsidev->dev, sizeof(*dsi), GFP_KERNEL); in omap_dsihw_probe()
5287 if (!dsi) in omap_dsihw_probe()
5290 dsi->pdev = dsidev; in omap_dsihw_probe()
5291 dev_set_drvdata(&dsidev->dev, dsi); in omap_dsihw_probe()
5293 spin_lock_init(&dsi->irq_lock); in omap_dsihw_probe()
5294 spin_lock_init(&dsi->errors_lock); in omap_dsihw_probe()
5295 dsi->errors = 0; in omap_dsihw_probe()
5298 spin_lock_init(&dsi->irq_stats_lock); in omap_dsihw_probe()
5299 dsi->irq_stats.last_reset = jiffies; in omap_dsihw_probe()
5302 mutex_init(&dsi->lock); in omap_dsihw_probe()
5303 sema_init(&dsi->bus_lock, 1); in omap_dsihw_probe()
5305 INIT_DEFERRABLE_WORK(&dsi->framedone_timeout_work, in omap_dsihw_probe()
5309 init_timer(&dsi->te_timer); in omap_dsihw_probe()
5310 dsi->te_timer.function = dsi_te_timeout; in omap_dsihw_probe()
5311 dsi->te_timer.data = 0; in omap_dsihw_probe()
5329 dsi->proto_base = devm_ioremap(&dsidev->dev, res->start, in omap_dsihw_probe()
5331 if (!dsi->proto_base) { in omap_dsihw_probe()
5349 dsi->phy_base = devm_ioremap(&dsidev->dev, res->start, in omap_dsihw_probe()
5351 if (!dsi->proto_base) { in omap_dsihw_probe()
5369 dsi->pll_base = devm_ioremap(&dsidev->dev, res->start, in omap_dsihw_probe()
5371 if (!dsi->proto_base) { in omap_dsihw_probe()
5376 dsi->irq = platform_get_irq(dsi->pdev, 0); in omap_dsihw_probe()
5377 if (dsi->irq < 0) { in omap_dsihw_probe()
5382 r = devm_request_irq(&dsidev->dev, dsi->irq, omap_dsi_irq_handler, in omap_dsihw_probe()
5383 IRQF_SHARED, dev_name(&dsidev->dev), dsi->pdev); in omap_dsihw_probe()
5409 dsi->module_id = d->id; in omap_dsihw_probe()
5411 dsi->module_id = dsidev->id; in omap_dsihw_probe()
5415 for (i = 0; i < ARRAY_SIZE(dsi->vc); i++) { in omap_dsihw_probe()
5416 dsi->vc[i].source = DSI_VC_SOURCE_L4; in omap_dsihw_probe()
5417 dsi->vc[i].dssdev = NULL; in omap_dsihw_probe()
5418 dsi->vc[i].vc_id = 0; in omap_dsihw_probe()
5441 dsi->num_lanes_supported = 1 + REG_GET(dsidev, DSI_GNQ, 11, 9); in omap_dsihw_probe()
5443 dsi->num_lanes_supported = 3; in omap_dsihw_probe()
5445 dsi->line_buffer_size = dsi_get_line_buf_size(dsidev); in omap_dsihw_probe()
5464 if (dsi->module_id == 0) in omap_dsihw_probe()
5466 else if (dsi->module_id == 1) in omap_dsihw_probe()
5470 if (dsi->module_id == 0) in omap_dsihw_probe()
5472 else if (dsi->module_id == 1) in omap_dsihw_probe()
5489 struct dsi_data *dsi = dsi_get_dsidrv_data(dsidev); in omap_dsihw_remove() local
5493 WARN_ON(dsi->scp_clk_refcount > 0); in omap_dsihw_remove()
5495 dss_pll_unregister(&dsi->pll); in omap_dsihw_remove()
5501 if (dsi->vdds_dsi_reg != NULL && dsi->vdds_dsi_enabled) { in omap_dsihw_remove()
5502 regulator_disable(dsi->vdds_dsi_reg); in omap_dsihw_remove()
5503 dsi->vdds_dsi_enabled = false; in omap_dsihw_remove()
5512 struct dsi_data *dsi = dsi_get_dsidrv_data(pdev); in dsi_runtime_suspend() local
5514 dsi->is_enabled = false; in dsi_runtime_suspend()
5518 synchronize_irq(dsi->irq); in dsi_runtime_suspend()
5528 struct dsi_data *dsi = dsi_get_dsidrv_data(pdev); in dsi_runtime_resume() local
5535 dsi->is_enabled = true; in dsi_runtime_resume()