Lines Matching refs:dsi
445 struct dsi_data *dsi = dsi_get_dsidrv_data(dsidev); in dsi_write_reg() local
449 case DSI_PROTO: base = dsi->proto_base; break; in dsi_write_reg()
450 case DSI_PHY: base = dsi->phy_base; break; in dsi_write_reg()
451 case DSI_PLL: base = dsi->pll_base; break; in dsi_write_reg()
461 struct dsi_data *dsi = dsi_get_dsidrv_data(dsidev); in dsi_read_reg() local
465 case DSI_PROTO: base = dsi->proto_base; break; in dsi_read_reg()
466 case DSI_PHY: base = dsi->phy_base; break; in dsi_read_reg()
467 case DSI_PLL: base = dsi->pll_base; break; in dsi_read_reg()
477 struct dsi_data *dsi = dsi_get_dsidrv_data(dsidev); in dsi_bus_lock() local
479 down(&dsi->bus_lock); in dsi_bus_lock()
485 struct dsi_data *dsi = dsi_get_dsidrv_data(dsidev); in dsi_bus_unlock() local
487 up(&dsi->bus_lock); in dsi_bus_unlock()
492 struct dsi_data *dsi = dsi_get_dsidrv_data(dsidev); in dsi_bus_is_locked() local
494 return dsi->bus_lock.count == 0; in dsi_bus_is_locked()
549 struct dsi_data *dsi = dsi_get_dsidrv_data(dsidev); in dsi_perf_mark_setup() local
550 dsi->perf_setup_time = ktime_get(); in dsi_perf_mark_setup()
555 struct dsi_data *dsi = dsi_get_dsidrv_data(dsidev); in dsi_perf_mark_start() local
556 dsi->perf_start_time = ktime_get(); in dsi_perf_mark_start()
561 struct dsi_data *dsi = dsi_get_dsidrv_data(dsidev); in dsi_perf_show() local
571 setup_time = ktime_sub(dsi->perf_start_time, dsi->perf_setup_time); in dsi_perf_show()
576 trans_time = ktime_sub(t, dsi->perf_start_time); in dsi_perf_show()
583 total_bytes = dsi->update_bytes; in dsi_perf_show()
705 struct dsi_data *dsi = dsi_get_dsidrv_data(dsidev); in dsi_collect_irq_stats() local
708 spin_lock(&dsi->irq_stats_lock); in dsi_collect_irq_stats()
710 dsi->irq_stats.irq_count++; in dsi_collect_irq_stats()
711 dss_collect_irq_stats(irqstatus, dsi->irq_stats.dsi_irqs); in dsi_collect_irq_stats()
714 dss_collect_irq_stats(vcstatus[i], dsi->irq_stats.vc_irqs[i]); in dsi_collect_irq_stats()
716 dss_collect_irq_stats(ciostatus, dsi->irq_stats.cio_irqs); in dsi_collect_irq_stats()
718 spin_unlock(&dsi->irq_stats_lock); in dsi_collect_irq_stats()
729 struct dsi_data *dsi = dsi_get_dsidrv_data(dsidev); in dsi_handle_irq_errors() local
735 spin_lock(&dsi->errors_lock); in dsi_handle_irq_errors()
736 dsi->errors |= irqstatus & DSI_IRQ_ERROR_MASK; in dsi_handle_irq_errors()
737 spin_unlock(&dsi->errors_lock); in dsi_handle_irq_errors()
799 struct dsi_data *dsi; in omap_dsi_irq_handler() local
804 dsi = dsi_get_dsidrv_data(dsidev); in omap_dsi_irq_handler()
806 if (!dsi->is_enabled) in omap_dsi_irq_handler()
809 spin_lock(&dsi->irq_lock); in omap_dsi_irq_handler()
815 spin_unlock(&dsi->irq_lock); in omap_dsi_irq_handler()
848 del_timer(&dsi->te_timer); in omap_dsi_irq_handler()
853 memcpy(&dsi->isr_tables_copy, &dsi->isr_tables, in omap_dsi_irq_handler()
854 sizeof(dsi->isr_tables)); in omap_dsi_irq_handler()
856 spin_unlock(&dsi->irq_lock); in omap_dsi_irq_handler()
858 dsi_handle_isrs(&dsi->isr_tables_copy, irqstatus, vcstatus, ciostatus); in omap_dsi_irq_handler()
903 struct dsi_data *dsi = dsi_get_dsidrv_data(dsidev); in _omap_dsi_set_irqs() local
908 _omap_dsi_configure_irqs(dsidev, dsi->isr_tables.isr_table, in _omap_dsi_set_irqs()
909 ARRAY_SIZE(dsi->isr_tables.isr_table), mask, in _omap_dsi_set_irqs()
916 struct dsi_data *dsi = dsi_get_dsidrv_data(dsidev); in _omap_dsi_set_irqs_vc() local
918 _omap_dsi_configure_irqs(dsidev, dsi->isr_tables.isr_table_vc[vc], in _omap_dsi_set_irqs_vc()
919 ARRAY_SIZE(dsi->isr_tables.isr_table_vc[vc]), in _omap_dsi_set_irqs_vc()
927 struct dsi_data *dsi = dsi_get_dsidrv_data(dsidev); in _omap_dsi_set_irqs_cio() local
929 _omap_dsi_configure_irqs(dsidev, dsi->isr_tables.isr_table_cio, in _omap_dsi_set_irqs_cio()
930 ARRAY_SIZE(dsi->isr_tables.isr_table_cio), in _omap_dsi_set_irqs_cio()
937 struct dsi_data *dsi = dsi_get_dsidrv_data(dsidev); in _dsi_initialize_irq() local
941 spin_lock_irqsave(&dsi->irq_lock, flags); in _dsi_initialize_irq()
943 memset(&dsi->isr_tables, 0, sizeof(dsi->isr_tables)); in _dsi_initialize_irq()
950 spin_unlock_irqrestore(&dsi->irq_lock, flags); in _dsi_initialize_irq()
1012 struct dsi_data *dsi = dsi_get_dsidrv_data(dsidev); in dsi_register_isr() local
1016 spin_lock_irqsave(&dsi->irq_lock, flags); in dsi_register_isr()
1018 r = _dsi_register_isr(isr, arg, mask, dsi->isr_tables.isr_table, in dsi_register_isr()
1019 ARRAY_SIZE(dsi->isr_tables.isr_table)); in dsi_register_isr()
1024 spin_unlock_irqrestore(&dsi->irq_lock, flags); in dsi_register_isr()
1032 struct dsi_data *dsi = dsi_get_dsidrv_data(dsidev); in dsi_unregister_isr() local
1036 spin_lock_irqsave(&dsi->irq_lock, flags); in dsi_unregister_isr()
1038 r = _dsi_unregister_isr(isr, arg, mask, dsi->isr_tables.isr_table, in dsi_unregister_isr()
1039 ARRAY_SIZE(dsi->isr_tables.isr_table)); in dsi_unregister_isr()
1044 spin_unlock_irqrestore(&dsi->irq_lock, flags); in dsi_unregister_isr()
1052 struct dsi_data *dsi = dsi_get_dsidrv_data(dsidev); in dsi_register_isr_vc() local
1056 spin_lock_irqsave(&dsi->irq_lock, flags); in dsi_register_isr_vc()
1059 dsi->isr_tables.isr_table_vc[channel], in dsi_register_isr_vc()
1060 ARRAY_SIZE(dsi->isr_tables.isr_table_vc[channel])); in dsi_register_isr_vc()
1065 spin_unlock_irqrestore(&dsi->irq_lock, flags); in dsi_register_isr_vc()
1073 struct dsi_data *dsi = dsi_get_dsidrv_data(dsidev); in dsi_unregister_isr_vc() local
1077 spin_lock_irqsave(&dsi->irq_lock, flags); in dsi_unregister_isr_vc()
1080 dsi->isr_tables.isr_table_vc[channel], in dsi_unregister_isr_vc()
1081 ARRAY_SIZE(dsi->isr_tables.isr_table_vc[channel])); in dsi_unregister_isr_vc()
1086 spin_unlock_irqrestore(&dsi->irq_lock, flags); in dsi_unregister_isr_vc()
1094 struct dsi_data *dsi = dsi_get_dsidrv_data(dsidev); in dsi_register_isr_cio() local
1098 spin_lock_irqsave(&dsi->irq_lock, flags); in dsi_register_isr_cio()
1100 r = _dsi_register_isr(isr, arg, mask, dsi->isr_tables.isr_table_cio, in dsi_register_isr_cio()
1101 ARRAY_SIZE(dsi->isr_tables.isr_table_cio)); in dsi_register_isr_cio()
1106 spin_unlock_irqrestore(&dsi->irq_lock, flags); in dsi_register_isr_cio()
1114 struct dsi_data *dsi = dsi_get_dsidrv_data(dsidev); in dsi_unregister_isr_cio() local
1118 spin_lock_irqsave(&dsi->irq_lock, flags); in dsi_unregister_isr_cio()
1120 r = _dsi_unregister_isr(isr, arg, mask, dsi->isr_tables.isr_table_cio, in dsi_unregister_isr_cio()
1121 ARRAY_SIZE(dsi->isr_tables.isr_table_cio)); in dsi_unregister_isr_cio()
1126 spin_unlock_irqrestore(&dsi->irq_lock, flags); in dsi_unregister_isr_cio()
1133 struct dsi_data *dsi = dsi_get_dsidrv_data(dsidev); in dsi_get_errors() local
1136 spin_lock_irqsave(&dsi->errors_lock, flags); in dsi_get_errors()
1137 e = dsi->errors; in dsi_get_errors()
1138 dsi->errors = 0; in dsi_get_errors()
1139 spin_unlock_irqrestore(&dsi->errors_lock, flags); in dsi_get_errors()
1146 struct dsi_data *dsi = dsi_get_dsidrv_data(dsidev); in dsi_runtime_get() local
1150 r = pm_runtime_get_sync(&dsi->pdev->dev); in dsi_runtime_get()
1157 struct dsi_data *dsi = dsi_get_dsidrv_data(dsidev); in dsi_runtime_put() local
1162 r = pm_runtime_put_sync(&dsi->pdev->dev); in dsi_runtime_put()
1168 struct dsi_data *dsi = dsi_get_dsidrv_data(dsidev); in dsi_regulator_init() local
1172 if (dsi->vdds_dsi_reg != NULL) in dsi_regulator_init()
1175 vdds_dsi = devm_regulator_get(&dsi->pdev->dev, "vdd"); in dsi_regulator_init()
1192 dsi->vdds_dsi_reg = vdds_dsi; in dsi_regulator_init()
1250 struct dsi_data *dsi = dsi_get_dsidrv_data(dsidev); in dsi_get_pll_hsdiv_dispc_rate() local
1252 return dsi->pll.cinfo.clkout[HSDIV_DISPC]; in dsi_get_pll_hsdiv_dispc_rate()
1257 struct dsi_data *dsi = dsi_get_dsidrv_data(dsidev); in dsi_get_pll_hsdiv_dsi_rate() local
1259 return dsi->pll.cinfo.clkout[HSDIV_DSI]; in dsi_get_pll_hsdiv_dsi_rate()
1264 struct dsi_data *dsi = dsi_get_dsidrv_data(dsidev); in dsi_get_txbyteclkhs() local
1266 return dsi->pll.cinfo.clkdco / 16; in dsi_get_txbyteclkhs()
1272 struct dsi_data *dsi = dsi_get_dsidrv_data(dsidev); in dsi_fclk_rate() local
1274 if (dss_get_dsi_clk_source(dsi->module_id) == OMAP_DSS_CLK_SRC_FCK) { in dsi_fclk_rate()
1276 r = clk_get_rate(dsi->dss_clk); in dsi_fclk_rate()
1306 struct dsi_data *dsi = dsi_get_dsidrv_data(dsidev); in dsi_set_lp_clk_divisor() local
1313 lp_clk_div = dsi->user_lp_cinfo.lp_clk_div; in dsi_set_lp_clk_divisor()
1323 dsi->current_lp_cinfo.lp_clk = lp_clk; in dsi_set_lp_clk_divisor()
1324 dsi->current_lp_cinfo.lp_clk_div = lp_clk_div; in dsi_set_lp_clk_divisor()
1337 struct dsi_data *dsi = dsi_get_dsidrv_data(dsidev); in dsi_enable_scp_clk() local
1339 if (dsi->scp_clk_refcount++ == 0) in dsi_enable_scp_clk()
1345 struct dsi_data *dsi = dsi_get_dsidrv_data(dsidev); in dsi_disable_scp_clk() local
1347 WARN_ON(dsi->scp_clk_refcount == 0); in dsi_disable_scp_clk()
1348 if (--dsi->scp_clk_refcount == 0) in dsi_disable_scp_clk()
1398 struct dsi_data *dsi = container_of(pll, struct dsi_data, pll); in dsi_pll_enable() local
1399 struct platform_device *dsidev = dsi->pdev; in dsi_pll_enable()
1417 if (!dsi->vdds_dsi_enabled) { in dsi_pll_enable()
1418 r = regulator_enable(dsi->vdds_dsi_reg); in dsi_pll_enable()
1421 dsi->vdds_dsi_enabled = true; in dsi_pll_enable()
1447 if (dsi->vdds_dsi_enabled) { in dsi_pll_enable()
1448 regulator_disable(dsi->vdds_dsi_reg); in dsi_pll_enable()
1449 dsi->vdds_dsi_enabled = false; in dsi_pll_enable()
1459 struct dsi_data *dsi = dsi_get_dsidrv_data(dsidev); in dsi_pll_uninit() local
1463 WARN_ON(!dsi->vdds_dsi_enabled); in dsi_pll_uninit()
1464 regulator_disable(dsi->vdds_dsi_reg); in dsi_pll_uninit()
1465 dsi->vdds_dsi_enabled = false; in dsi_pll_uninit()
1476 struct dsi_data *dsi = container_of(pll, struct dsi_data, pll); in dsi_pll_disable() local
1477 struct platform_device *dsidev = dsi->pdev; in dsi_pll_disable()
1485 struct dsi_data *dsi = dsi_get_dsidrv_data(dsidev); in dsi_dump_dsidev_clocks() local
1486 struct dss_pll_clock_info *cinfo = &dsi->pll.cinfo; in dsi_dump_dsidev_clocks()
1488 int dsi_module = dsi->module_id; in dsi_dump_dsidev_clocks()
1489 struct dss_pll *pll = &dsi->pll; in dsi_dump_dsidev_clocks()
1537 seq_printf(s, "LP_CLK\t\t%lu\n", dsi->current_lp_cinfo.lp_clk); in dsi_dump_dsidev_clocks()
1558 struct dsi_data *dsi = dsi_get_dsidrv_data(dsidev); in dsi_dump_dsidev_irqs() local
1562 spin_lock_irqsave(&dsi->irq_stats_lock, flags); in dsi_dump_dsidev_irqs()
1564 stats = dsi->irq_stats; in dsi_dump_dsidev_irqs()
1565 memset(&dsi->irq_stats, 0, sizeof(dsi->irq_stats)); in dsi_dump_dsidev_irqs()
1566 dsi->irq_stats.last_reset = jiffies; in dsi_dump_dsidev_irqs()
1568 spin_unlock_irqrestore(&dsi->irq_stats_lock, flags); in dsi_dump_dsidev_irqs()
1577 seq_printf(s, "-- DSI%d interrupts --\n", dsi->module_id + 1); in dsi_dump_dsidev_irqs()
1821 struct dsi_data *dsi = dsi_get_dsidrv_data(dsidev); in dsi_set_lane_config() local
1835 for (i = 0; i < dsi->num_lanes_used; ++i) { in dsi_set_lane_config()
1840 for (t = 0; t < dsi->num_lanes_supported; ++t) in dsi_set_lane_config()
1841 if (dsi->lanes[t].function == functions[i]) in dsi_set_lane_config()
1844 if (t == dsi->num_lanes_supported) in dsi_set_lane_config()
1848 polarity = dsi->lanes[t].polarity; in dsi_set_lane_config()
1855 for (; i < dsi->num_lanes_supported; ++i) { in dsi_set_lane_config()
1869 struct dsi_data *dsi = dsi_get_dsidrv_data(dsidev); in ns2ddr() local
1872 unsigned long ddr_clk = dsi->pll.cinfo.clkdco / 4; in ns2ddr()
1878 struct dsi_data *dsi = dsi_get_dsidrv_data(dsidev); in ddr2ns() local
1880 unsigned long ddr_clk = dsi->pll.cinfo.clkdco / 4; in ddr2ns()
1965 struct dsi_data *dsi = dsi_get_dsidrv_data(dsidev); in dsi_cio_enable_lane_override() local
1968 u8 lptxscp_start = dsi->num_lanes_supported == 3 ? 22 : 26; in dsi_cio_enable_lane_override()
1972 for (i = 0; i < dsi->num_lanes_supported; ++i) { in dsi_cio_enable_lane_override()
1973 unsigned p = dsi->lanes[i].polarity; in dsi_cio_enable_lane_override()
2013 struct dsi_data *dsi = dsi_get_dsidrv_data(dsidev); in dsi_cio_wait_tx_clk_esc_reset() local
2025 for (i = 0; i < dsi->num_lanes_supported; ++i) in dsi_cio_wait_tx_clk_esc_reset()
2026 in_use[i] = dsi->lanes[i].function != DSI_LANE_UNUSED; in dsi_cio_wait_tx_clk_esc_reset()
2036 for (i = 0; i < dsi->num_lanes_supported; ++i) { in dsi_cio_wait_tx_clk_esc_reset()
2041 if (ok == dsi->num_lanes_supported) in dsi_cio_wait_tx_clk_esc_reset()
2045 for (i = 0; i < dsi->num_lanes_supported; ++i) { in dsi_cio_wait_tx_clk_esc_reset()
2062 struct dsi_data *dsi = dsi_get_dsidrv_data(dsidev); in dsi_get_lane_mask() local
2066 for (i = 0; i < dsi->num_lanes_supported; ++i) { in dsi_get_lane_mask()
2067 if (dsi->lanes[i].function != DSI_LANE_UNUSED) in dsi_get_lane_mask()
2076 struct dsi_data *dsi = dsi_get_dsidrv_data(dsidev); in dsi_cio_init() local
2082 r = dss_dsi_enable_pads(dsi->module_id, dsi_get_lane_mask(dsidev)); in dsi_cio_init()
2111 if (dsi->ulps_enabled) { in dsi_cio_init()
2128 for (i = 0; i < dsi->num_lanes_supported; ++i) { in dsi_cio_init()
2129 if (dsi->lanes[i].function == DSI_LANE_UNUSED) in dsi_cio_init()
2155 if (dsi->ulps_enabled) { in dsi_cio_init()
2171 if (dsi->mode == OMAP_DSS_DSI_VIDEO_MODE) { in dsi_cio_init()
2174 dsi->vm_timings.ddr_clk_always_on, 13, 13); in dsi_cio_init()
2177 dsi->ulps_enabled = false; in dsi_cio_init()
2188 if (dsi->ulps_enabled) in dsi_cio_init()
2192 dss_dsi_disable_pads(dsi->module_id, dsi_get_lane_mask(dsidev)); in dsi_cio_init()
2198 struct dsi_data *dsi = dsi_get_dsidrv_data(dsidev); in dsi_cio_uninit() local
2205 dss_dsi_disable_pads(dsi->module_id, dsi_get_lane_mask(dsidev)); in dsi_cio_uninit()
2212 struct dsi_data *dsi = dsi_get_dsidrv_data(dsidev); in dsi_config_tx_fifo() local
2217 dsi->vc[0].tx_fifo_size = size1; in dsi_config_tx_fifo()
2218 dsi->vc[1].tx_fifo_size = size2; in dsi_config_tx_fifo()
2219 dsi->vc[2].tx_fifo_size = size3; in dsi_config_tx_fifo()
2220 dsi->vc[3].tx_fifo_size = size4; in dsi_config_tx_fifo()
2224 int size = dsi->vc[i].tx_fifo_size; in dsi_config_tx_fifo()
2245 struct dsi_data *dsi = dsi_get_dsidrv_data(dsidev); in dsi_config_rx_fifo() local
2250 dsi->vc[0].rx_fifo_size = size1; in dsi_config_rx_fifo()
2251 dsi->vc[1].rx_fifo_size = size2; in dsi_config_rx_fifo()
2252 dsi->vc[2].rx_fifo_size = size3; in dsi_config_rx_fifo()
2253 dsi->vc[3].rx_fifo_size = size4; in dsi_config_rx_fifo()
2257 int size = dsi->vc[i].rx_fifo_size; in dsi_config_rx_fifo()
2299 struct dsi_data *dsi = dsi_get_dsidrv_data(vp_data->dsidev); in dsi_packet_sent_handler_vp() local
2300 const int channel = dsi->update_channel; in dsi_packet_sent_handler_vp()
2301 u8 bit = dsi->te_enabled ? 30 : 31; in dsi_packet_sent_handler_vp()
2309 struct dsi_data *dsi = dsi_get_dsidrv_data(dsidev); in dsi_sync_vc_vp() local
2318 bit = dsi->te_enabled ? 30 : 31; in dsi_sync_vc_vp()
2350 struct dsi_data *dsi = dsi_get_dsidrv_data(l4_data->dsidev); in dsi_packet_sent_handler_l4() local
2351 const int channel = dsi->update_channel; in dsi_packet_sent_handler_l4()
2394 struct dsi_data *dsi = dsi_get_dsidrv_data(dsidev); in dsi_sync_vc() local
2403 switch (dsi->vc[channel].source) { in dsi_sync_vc()
2435 struct dsi_data *dsi = dsi_get_dsidrv_data(dsidev); in dsi_vc_initial_config() local
2461 dsi->vc[channel].source = DSI_VC_SOURCE_L4; in dsi_vc_initial_config()
2467 struct dsi_data *dsi = dsi_get_dsidrv_data(dsidev); in dsi_vc_config_source() local
2469 if (dsi->vc[channel].source == source) in dsi_vc_config_source()
2495 dsi->vc[channel].source = source; in dsi_vc_config_source()
2504 struct dsi_data *dsi = dsi_get_dsidrv_data(dsidev); in dsi_vc_enable_hs() local
2521 if (dsi->vm_timings.ddr_clk_always_on && enable) in dsi_vc_enable_hs()
2607 struct dsi_data *dsi = dsi_get_dsidrv_data(dsidev); in dsi_vc_send_bta() local
2609 if (dsi->debug_write || dsi->debug_read) in dsi_vc_send_bta()
2675 struct dsi_data *dsi = dsi_get_dsidrv_data(dsidev); in dsi_vc_write_long_header() local
2681 data_id = data_type | dsi->vc[channel].vc_id << 6; in dsi_vc_write_long_header()
2706 struct dsi_data *dsi = dsi_get_dsidrv_data(dsidev); in dsi_vc_send_long() local
2712 if (dsi->debug_write) in dsi_vc_send_long()
2716 if (dsi->vc[channel].tx_fifo_size * 32 * 4 < len + 4) { in dsi_vc_send_long()
2727 if (dsi->debug_write) in dsi_vc_send_long()
2742 if (dsi->debug_write) in dsi_vc_send_long()
2769 struct dsi_data *dsi = dsi_get_dsidrv_data(dsidev); in dsi_vc_send_short() local
2775 if (dsi->debug_write) in dsi_vc_send_short()
2787 data_id = data_type | dsi->vc[channel].vc_id << 6; in dsi_vc_send_short()
2898 struct dsi_data *dsi = dsi_get_dsidrv_data(dsidev); in dsi_vc_dcs_send_read_request() local
2901 if (dsi->debug_read) in dsi_vc_dcs_send_read_request()
2918 struct dsi_data *dsi = dsi_get_dsidrv_data(dsidev); in dsi_vc_generic_send_read_request() local
2923 if (dsi->debug_read) in dsi_vc_generic_send_read_request()
2954 struct dsi_data *dsi = dsi_get_dsidrv_data(dsidev); in dsi_vc_read_rx_fifo() local
2967 if (dsi->debug_read) in dsi_vc_read_rx_fifo()
2980 if (dsi->debug_read) in dsi_vc_read_rx_fifo()
2997 if (dsi->debug_read) in dsi_vc_read_rx_fifo()
3016 if (dsi->debug_read) in dsi_vc_read_rx_fifo()
3031 if (dsi->debug_read) in dsi_vc_read_rx_fifo()
3128 struct dsi_data *dsi = dsi_get_dsidrv_data(dsidev); in dsi_enter_ulps() local
3137 WARN_ON(dsi->ulps_enabled); in dsi_enter_ulps()
3139 if (dsi->ulps_enabled) in dsi_enter_ulps()
3178 for (i = 0; i < dsi->num_lanes_supported; ++i) { in dsi_enter_ulps()
3179 if (dsi->lanes[i].function == DSI_LANE_UNUSED) in dsi_enter_ulps()
3210 dsi->ulps_enabled = true; in dsi_enter_ulps()
3330 struct dsi_data *dsi = dsi_get_dsidrv_data(dsidev); in dsi_config_vp_num_line_buffers() local
3333 if (dsi->mode == OMAP_DSS_DSI_VIDEO_MODE) { in dsi_config_vp_num_line_buffers()
3334 int bpp = dsi_get_pixel_size(dsi->pix_fmt); in dsi_config_vp_num_line_buffers()
3335 struct omap_video_timings *timings = &dsi->timings; in dsi_config_vp_num_line_buffers()
3340 if (dsi->line_buffer_size <= timings->x_res * bpp / 8) in dsi_config_vp_num_line_buffers()
3355 struct dsi_data *dsi = dsi_get_dsidrv_data(dsidev); in dsi_config_vp_sync_events() local
3359 if (dsi->vm_timings.trans_mode == OMAP_DSS_DSI_PULSE_MODE) in dsi_config_vp_sync_events()
3377 struct dsi_data *dsi = dsi_get_dsidrv_data(dsidev); in dsi_config_blanking_modes() local
3378 int blanking_mode = dsi->vm_timings.blanking_mode; in dsi_config_blanking_modes()
3379 int hfp_blanking_mode = dsi->vm_timings.hfp_blanking_mode; in dsi_config_blanking_modes()
3380 int hbp_blanking_mode = dsi->vm_timings.hbp_blanking_mode; in dsi_config_blanking_modes()
3381 int hsa_blanking_mode = dsi->vm_timings.hsa_blanking_mode; in dsi_config_blanking_modes()
3460 struct dsi_data *dsi = dsi_get_dsidrv_data(dsidev); in dsi_config_cmd_mode_interleaving() local
3467 struct omap_video_timings *timings = &dsi->timings; in dsi_config_cmd_mode_interleaving()
3468 int bpp = dsi_get_pixel_size(dsi->pix_fmt); in dsi_config_cmd_mode_interleaving()
3469 int ndl = dsi->num_lanes_used - 1; in dsi_config_cmd_mode_interleaving()
3470 int dsi_fclk_hsdiv = dsi->user_dsi_cinfo.mX[HSDIV_DSI] + 1; in dsi_config_cmd_mode_interleaving()
3577 struct dsi_data *dsi = dsi_get_dsidrv_data(dsidev); in dsi_proto_config() local
3597 switch (dsi_get_pixel_size(dsi->pix_fmt)) { in dsi_proto_config()
3631 if (dsi->mode == OMAP_DSS_DSI_VIDEO_MODE) { in dsi_proto_config()
3647 struct dsi_data *dsi = dsi_get_dsidrv_data(dsidev); in dsi_proto_timings() local
3655 int ndl = dsi->num_lanes_used - 1; in dsi_proto_timings()
3709 if (dsi->mode == OMAP_DSS_DSI_VIDEO_MODE) { in dsi_proto_timings()
3711 int hsa = dsi->vm_timings.hsa; in dsi_proto_timings()
3712 int hfp = dsi->vm_timings.hfp; in dsi_proto_timings()
3713 int hbp = dsi->vm_timings.hbp; in dsi_proto_timings()
3714 int vsa = dsi->vm_timings.vsa; in dsi_proto_timings()
3715 int vfp = dsi->vm_timings.vfp; in dsi_proto_timings()
3716 int vbp = dsi->vm_timings.vbp; in dsi_proto_timings()
3717 int window_sync = dsi->vm_timings.window_sync; in dsi_proto_timings()
3719 struct omap_video_timings *timings = &dsi->timings; in dsi_proto_timings()
3720 int bpp = dsi_get_pixel_size(dsi->pix_fmt); in dsi_proto_timings()
3723 hsync_end = dsi->vm_timings.trans_mode == OMAP_DSS_DSI_PULSE_MODE; in dsi_proto_timings()
3762 struct dsi_data *dsi = dsi_get_dsidrv_data(dsidev); in dsi_configure_pins() local
3780 if (num_pins < 4 || num_pins > dsi->num_lanes_supported * 2 in dsi_configure_pins()
3796 if (dx < 0 || dx >= dsi->num_lanes_supported * 2) in dsi_configure_pins()
3799 if (dy < 0 || dy >= dsi->num_lanes_supported * 2) in dsi_configure_pins()
3819 memcpy(dsi->lanes, lanes, sizeof(dsi->lanes)); in dsi_configure_pins()
3820 dsi->num_lanes_used = num_lanes; in dsi_configure_pins()
3828 struct dsi_data *dsi = dsi_get_dsidrv_data(dsidev); in dsi_enable_video_output() local
3829 struct omap_overlay_manager *mgr = dsi->output.manager; in dsi_enable_video_output()
3830 int bpp = dsi_get_pixel_size(dsi->pix_fmt); in dsi_enable_video_output()
3831 struct omap_dss_device *out = &dsi->output; in dsi_enable_video_output()
3845 if (dsi->mode == OMAP_DSS_DSI_VIDEO_MODE) { in dsi_enable_video_output()
3846 switch (dsi->pix_fmt) { in dsi_enable_video_output()
3870 word_count = DIV_ROUND_UP(dsi->timings.x_res * bpp, 8); in dsi_enable_video_output()
3886 if (dsi->mode == OMAP_DSS_DSI_VIDEO_MODE) { in dsi_enable_video_output()
3899 struct dsi_data *dsi = dsi_get_dsidrv_data(dsidev); in dsi_disable_video_output() local
3900 struct omap_overlay_manager *mgr = dsi->output.manager; in dsi_disable_video_output()
3902 if (dsi->mode == OMAP_DSS_DSI_VIDEO_MODE) { in dsi_disable_video_output()
3920 struct dsi_data *dsi = dsi_get_dsidrv_data(dsidev); in dsi_update_screen_dispc() local
3921 struct omap_overlay_manager *mgr = dsi->output.manager; in dsi_update_screen_dispc()
3930 const unsigned channel = dsi->update_channel; in dsi_update_screen_dispc()
3931 const unsigned line_buf_size = dsi->line_buffer_size; in dsi_update_screen_dispc()
3932 u16 w = dsi->timings.x_res; in dsi_update_screen_dispc()
3933 u16 h = dsi->timings.y_res; in dsi_update_screen_dispc()
3939 bytespp = dsi_get_pixel_size(dsi->pix_fmt) / 8; in dsi_update_screen_dispc()
3963 if (dsi->te_enabled) in dsi_update_screen_dispc()
3979 r = schedule_delayed_work(&dsi->framedone_timeout_work, in dsi_update_screen_dispc()
3983 dss_mgr_set_timings(mgr, &dsi->timings); in dsi_update_screen_dispc()
3987 if (dsi->te_enabled) { in dsi_update_screen_dispc()
3995 mod_timer(&dsi->te_timer, jiffies + msecs_to_jiffies(250)); in dsi_update_screen_dispc()
4009 struct dsi_data *dsi = dsi_get_dsidrv_data(dsidev); in dsi_handle_framedone() local
4014 if (dsi->te_enabled) { in dsi_handle_framedone()
4019 dsi->framedone_callback(error, dsi->framedone_data); in dsi_handle_framedone()
4027 struct dsi_data *dsi = container_of(work, struct dsi_data, in dsi_framedone_timeout_work_callback() local
4038 dsi_handle_framedone(dsi->pdev, -ETIMEDOUT); in dsi_framedone_timeout_work_callback()
4044 struct dsi_data *dsi = dsi_get_dsidrv_data(dsidev); in dsi_framedone_irq_callback() local
4051 cancel_delayed_work(&dsi->framedone_timeout_work); in dsi_framedone_irq_callback()
4060 struct dsi_data *dsi = dsi_get_dsidrv_data(dsidev); in dsi_update() local
4065 dsi->update_channel = channel; in dsi_update()
4067 dsi->framedone_callback = callback; in dsi_update()
4068 dsi->framedone_data = data; in dsi_update()
4070 dw = dsi->timings.x_res; in dsi_update()
4071 dh = dsi->timings.y_res; in dsi_update()
4074 dsi->update_bytes = dw * dh * in dsi_update()
4075 dsi_get_pixel_size(dsi->pix_fmt) / 8; in dsi_update()
4086 struct dsi_data *dsi = dsi_get_dsidrv_data(dsidev); in dsi_configure_dispc_clocks() local
4093 dispc_cinfo.lck_div = dsi->user_dispc_cinfo.lck_div; in dsi_configure_dispc_clocks()
4094 dispc_cinfo.pck_div = dsi->user_dispc_cinfo.pck_div; in dsi_configure_dispc_clocks()
4102 dsi->mgr_config.clock_info = dispc_cinfo; in dsi_configure_dispc_clocks()
4110 struct dsi_data *dsi = dsi_get_dsidrv_data(dsidev); in dsi_display_init_dispc() local
4113 dss_select_lcd_clk_source(mgr->id, dsi->module_id == 0 ? in dsi_display_init_dispc()
4117 if (dsi->mode == OMAP_DSS_DSI_CMD_MODE) { in dsi_display_init_dispc()
4125 dsi->mgr_config.stallmode = true; in dsi_display_init_dispc()
4126 dsi->mgr_config.fifohandcheck = true; in dsi_display_init_dispc()
4128 dsi->mgr_config.stallmode = false; in dsi_display_init_dispc()
4129 dsi->mgr_config.fifohandcheck = false; in dsi_display_init_dispc()
4136 dsi->timings.interlace = false; in dsi_display_init_dispc()
4137 dsi->timings.hsync_level = OMAPDSS_SIG_ACTIVE_HIGH; in dsi_display_init_dispc()
4138 dsi->timings.vsync_level = OMAPDSS_SIG_ACTIVE_HIGH; in dsi_display_init_dispc()
4139 dsi->timings.data_pclk_edge = OMAPDSS_DRIVE_SIG_RISING_EDGE; in dsi_display_init_dispc()
4140 dsi->timings.de_level = OMAPDSS_SIG_ACTIVE_HIGH; in dsi_display_init_dispc()
4141 dsi->timings.sync_pclk_edge = OMAPDSS_DRIVE_SIG_FALLING_EDGE; in dsi_display_init_dispc()
4143 dss_mgr_set_timings(mgr, &dsi->timings); in dsi_display_init_dispc()
4149 dsi->mgr_config.io_pad_mode = DSS_IO_PAD_MODE_BYPASS; in dsi_display_init_dispc()
4150 dsi->mgr_config.video_port_width = in dsi_display_init_dispc()
4151 dsi_get_pixel_size(dsi->pix_fmt); in dsi_display_init_dispc()
4152 dsi->mgr_config.lcden_sig_polarity = 0; in dsi_display_init_dispc()
4154 dss_mgr_set_lcd_config(mgr, &dsi->mgr_config); in dsi_display_init_dispc()
4158 if (dsi->mode == OMAP_DSS_DSI_CMD_MODE) in dsi_display_init_dispc()
4169 struct dsi_data *dsi = dsi_get_dsidrv_data(dsidev); in dsi_display_uninit_dispc() local
4171 if (dsi->mode == OMAP_DSS_DSI_CMD_MODE) in dsi_display_uninit_dispc()
4180 struct dsi_data *dsi = dsi_get_dsidrv_data(dsidev); in dsi_configure_dsi_clocks() local
4184 cinfo = dsi->user_dsi_cinfo; in dsi_configure_dsi_clocks()
4186 r = dss_pll_set_config(&dsi->pll, &cinfo); in dsi_configure_dsi_clocks()
4197 struct dsi_data *dsi = dsi_get_dsidrv_data(dsidev); in dsi_display_init_dsi() local
4200 r = dss_pll_enable(&dsi->pll); in dsi_display_init_dsi()
4208 dss_select_dsi_clk_source(dsi->module_id, dsi->module_id == 0 ? in dsi_display_init_dsi()
4242 dss_select_dsi_clk_source(dsi->module_id, OMAP_DSS_CLK_SRC_FCK); in dsi_display_init_dsi()
4244 dss_pll_disable(&dsi->pll); in dsi_display_init_dsi()
4252 struct dsi_data *dsi = dsi_get_dsidrv_data(dsidev); in dsi_display_uninit_dsi() local
4254 if (enter_ulps && !dsi->ulps_enabled) in dsi_display_uninit_dsi()
4264 dss_select_dsi_clk_source(dsi->module_id, OMAP_DSS_CLK_SRC_FCK); in dsi_display_uninit_dsi()
4272 struct dsi_data *dsi = dsi_get_dsidrv_data(dsidev); in dsi_display_enable() local
4279 mutex_lock(&dsi->lock); in dsi_display_enable()
4291 mutex_unlock(&dsi->lock); in dsi_display_enable()
4298 mutex_unlock(&dsi->lock); in dsi_display_enable()
4307 struct dsi_data *dsi = dsi_get_dsidrv_data(dsidev); in dsi_display_disable() local
4313 mutex_lock(&dsi->lock); in dsi_display_disable()
4324 mutex_unlock(&dsi->lock); in dsi_display_disable()
4330 struct dsi_data *dsi = dsi_get_dsidrv_data(dsidev); in dsi_enable_te() local
4332 dsi->te_enabled = enable; in dsi_enable_te()
4470 static bool dsi_cm_calc(struct dsi_data *dsi, in dsi_cm_calc() argument
4479 clkin = clk_get_rate(dsi->pll.clkin); in dsi_cm_calc()
4481 ndl = dsi->num_lanes_used - 1; in dsi_cm_calc()
4494 ctx->dsidev = dsi->pdev; in dsi_cm_calc()
4495 ctx->pll = &dsi->pll; in dsi_cm_calc()
4511 struct dsi_data *dsi = dsi_get_dsidrv_data(ctx->dsidev); in dsi_vm_calc_blanking() local
4514 int ndl = dsi->num_lanes_used - 1; in dsi_vm_calc_blanking()
4550 if (dsi->line_buffer_size < xres * bitspp / 8) { in dsi_vm_calc_blanking()
4768 static bool dsi_vm_calc(struct dsi_data *dsi, in dsi_vm_calc() argument
4776 int ndl = dsi->num_lanes_used - 1; in dsi_vm_calc()
4780 clkin = clk_get_rate(dsi->pll.clkin); in dsi_vm_calc()
4783 ctx->dsidev = dsi->pdev; in dsi_vm_calc()
4784 ctx->pll = &dsi->pll; in dsi_vm_calc()
4814 struct dsi_data *dsi = dsi_get_dsidrv_data(dsidev); in dsi_set_config() local
4819 mutex_lock(&dsi->lock); in dsi_set_config()
4821 dsi->pix_fmt = config->pixel_format; in dsi_set_config()
4822 dsi->mode = config->mode; in dsi_set_config()
4825 ok = dsi_vm_calc(dsi, config, &ctx); in dsi_set_config()
4827 ok = dsi_cm_calc(dsi, config, &ctx); in dsi_set_config()
4838 config->lp_clk_min, config->lp_clk_max, &dsi->user_lp_cinfo); in dsi_set_config()
4844 dsi->user_dsi_cinfo = ctx.dsi_cinfo; in dsi_set_config()
4845 dsi->user_dispc_cinfo = ctx.dispc_cinfo; in dsi_set_config()
4847 dsi->timings = ctx.dispc_vm; in dsi_set_config()
4848 dsi->vm_timings = ctx.dsi_vm; in dsi_set_config()
4850 mutex_unlock(&dsi->lock); in dsi_set_config()
4854 mutex_unlock(&dsi->lock); in dsi_set_config()
4912 struct dsi_data *dsi = dsi_get_dsidrv_data(dsidev); in dsi_request_vc() local
4915 for (i = 0; i < ARRAY_SIZE(dsi->vc); i++) { in dsi_request_vc()
4916 if (!dsi->vc[i].dssdev) { in dsi_request_vc()
4917 dsi->vc[i].dssdev = dssdev; in dsi_request_vc()
4930 struct dsi_data *dsi = dsi_get_dsidrv_data(dsidev); in dsi_set_vc_id() local
4942 if (dsi->vc[channel].dssdev != dssdev) { in dsi_set_vc_id()
4948 dsi->vc[channel].vc_id = vc_id; in dsi_set_vc_id()
4956 struct dsi_data *dsi = dsi_get_dsidrv_data(dsidev); in dsi_release_vc() local
4959 dsi->vc[channel].dssdev == dssdev) { in dsi_release_vc()
4960 dsi->vc[channel].dssdev = NULL; in dsi_release_vc()
4961 dsi->vc[channel].vc_id = 0; in dsi_release_vc()
4968 struct dsi_data *dsi = dsi_get_dsidrv_data(dsidev); in dsi_get_clocks() local
4977 dsi->dss_clk = clk; in dsi_get_clocks()
5067 struct dsi_data *dsi = dsi_get_dsidrv_data(dsidev); in dsi_init_output() local
5068 struct omap_dss_device *out = &dsi->output; in dsi_init_output()
5071 out->id = dsi->module_id == 0 ? in dsi_init_output()
5075 out->name = dsi->module_id == 0 ? "dsi.0" : "dsi.1"; in dsi_init_output()
5076 out->dispc_channel = dsi_get_channel(dsi->module_id); in dsi_init_output()
5077 out->ops.dsi = &dsi_ops; in dsi_init_output()
5085 struct dsi_data *dsi = dsi_get_dsidrv_data(dsidev); in dsi_uninit_output() local
5086 struct omap_dss_device *out = &dsi->output; in dsi_uninit_output()
5094 struct dsi_data *dsi = dsi_get_dsidrv_data(pdev); in dsi_probe_of() local
5116 num_pins > dsi->num_lanes_supported * 2) { in dsi_probe_of()
5132 r = dsi_configure_pins(&dsi->output, &pin_cfg); in dsi_probe_of()
5230 struct dsi_data *dsi = dsi_get_dsidrv_data(dsidev); in dsi_init_pll_data() local
5231 struct dss_pll *pll = &dsi->pll; in dsi_init_pll_data()
5241 pll->name = dsi->module_id == 0 ? "dsi0" : "dsi1"; in dsi_init_pll_data()
5242 pll->id = dsi->module_id == 0 ? DSS_PLL_DSI1 : DSS_PLL_DSI2; in dsi_init_pll_data()
5244 pll->base = dsi->pll_base; in dsi_init_pll_data()
5283 struct dsi_data *dsi; in dsi_bind() local
5288 dsi = devm_kzalloc(&dsidev->dev, sizeof(*dsi), GFP_KERNEL); in dsi_bind()
5289 if (!dsi) in dsi_bind()
5292 dsi->pdev = dsidev; in dsi_bind()
5293 dev_set_drvdata(&dsidev->dev, dsi); in dsi_bind()
5295 spin_lock_init(&dsi->irq_lock); in dsi_bind()
5296 spin_lock_init(&dsi->errors_lock); in dsi_bind()
5297 dsi->errors = 0; in dsi_bind()
5300 spin_lock_init(&dsi->irq_stats_lock); in dsi_bind()
5301 dsi->irq_stats.last_reset = jiffies; in dsi_bind()
5304 mutex_init(&dsi->lock); in dsi_bind()
5305 sema_init(&dsi->bus_lock, 1); in dsi_bind()
5307 INIT_DEFERRABLE_WORK(&dsi->framedone_timeout_work, in dsi_bind()
5311 init_timer(&dsi->te_timer); in dsi_bind()
5312 dsi->te_timer.function = dsi_te_timeout; in dsi_bind()
5313 dsi->te_timer.data = 0; in dsi_bind()
5331 dsi->proto_base = devm_ioremap(&dsidev->dev, res->start, in dsi_bind()
5333 if (!dsi->proto_base) { in dsi_bind()
5351 dsi->phy_base = devm_ioremap(&dsidev->dev, res->start, in dsi_bind()
5353 if (!dsi->proto_base) { in dsi_bind()
5371 dsi->pll_base = devm_ioremap(&dsidev->dev, res->start, in dsi_bind()
5373 if (!dsi->proto_base) { in dsi_bind()
5378 dsi->irq = platform_get_irq(dsi->pdev, 0); in dsi_bind()
5379 if (dsi->irq < 0) { in dsi_bind()
5384 r = devm_request_irq(&dsidev->dev, dsi->irq, omap_dsi_irq_handler, in dsi_bind()
5385 IRQF_SHARED, dev_name(&dsidev->dev), dsi->pdev); in dsi_bind()
5411 dsi->module_id = d->id; in dsi_bind()
5413 dsi->module_id = dsidev->id; in dsi_bind()
5417 for (i = 0; i < ARRAY_SIZE(dsi->vc); i++) { in dsi_bind()
5418 dsi->vc[i].source = DSI_VC_SOURCE_L4; in dsi_bind()
5419 dsi->vc[i].dssdev = NULL; in dsi_bind()
5420 dsi->vc[i].vc_id = 0; in dsi_bind()
5443 dsi->num_lanes_supported = 1 + REG_GET(dsidev, DSI_GNQ, 11, 9); in dsi_bind()
5445 dsi->num_lanes_supported = 3; in dsi_bind()
5447 dsi->line_buffer_size = dsi_get_line_buf_size(dsidev); in dsi_bind()
5466 if (dsi->module_id == 0) in dsi_bind()
5468 else if (dsi->module_id == 1) in dsi_bind()
5472 if (dsi->module_id == 0) in dsi_bind()
5474 else if (dsi->module_id == 1) in dsi_bind()
5492 struct dsi_data *dsi = dsi_get_dsidrv_data(dsidev); in dsi_unbind() local
5496 WARN_ON(dsi->scp_clk_refcount > 0); in dsi_unbind()
5498 dss_pll_unregister(&dsi->pll); in dsi_unbind()
5504 if (dsi->vdds_dsi_reg != NULL && dsi->vdds_dsi_enabled) { in dsi_unbind()
5505 regulator_disable(dsi->vdds_dsi_reg); in dsi_unbind()
5506 dsi->vdds_dsi_enabled = false; in dsi_unbind()
5529 struct dsi_data *dsi = dsi_get_dsidrv_data(pdev); in dsi_runtime_suspend() local
5531 dsi->is_enabled = false; in dsi_runtime_suspend()
5535 synchronize_irq(dsi->irq); in dsi_runtime_suspend()
5545 struct dsi_data *dsi = dsi_get_dsidrv_data(pdev); in dsi_runtime_resume() local
5552 dsi->is_enabled = true; in dsi_runtime_resume()