Lines Matching refs:tc
283 struct tc_data *tc = bridge_to_tc(bridge); in tc_bridge_pre_enable() local
284 struct device *dev = &tc->dsi->dev; in tc_bridge_pre_enable()
287 ret = regulator_enable(tc->vddio); in tc_bridge_pre_enable()
292 ret = regulator_enable(tc->vdd); in tc_bridge_pre_enable()
297 gpiod_set_value(tc->stby_gpio, 0); in tc_bridge_pre_enable()
300 gpiod_set_value(tc->reset_gpio, 0); in tc_bridge_pre_enable()
306 struct tc_data *tc = bridge_to_tc(bridge); in tc_bridge_post_disable() local
307 struct device *dev = &tc->dsi->dev; in tc_bridge_post_disable()
310 gpiod_set_value(tc->reset_gpio, 1); in tc_bridge_post_disable()
313 gpiod_set_value(tc->stby_gpio, 1); in tc_bridge_post_disable()
316 ret = regulator_disable(tc->vdd); in tc_bridge_post_disable()
321 ret = regulator_disable(tc->vddio); in tc_bridge_post_disable()
377 struct tc_data *tc = bridge_to_tc(bridge); in tc_bridge_enable() local
403 d2l_read(tc->i2c, IDREG, &val); in tc_bridge_enable()
405 dev_info(tc->dev, "DSI2LVDS Chip ID.%02x Revision ID. %02x **\n", in tc_bridge_enable()
408 d2l_write(tc->i2c, SYSRST, SYS_RST_REG | SYS_RST_DSIRX | SYS_RST_BM | in tc_bridge_enable()
412 d2l_write(tc->i2c, PPI_TX_RX_TA, TTA_GET | TTA_SURE); in tc_bridge_enable()
413 d2l_write(tc->i2c, PPI_LPTXTIMECNT, LPX_PERIOD); in tc_bridge_enable()
414 d2l_write(tc->i2c, PPI_D0S_CLRSIPOCOUNT, 3); in tc_bridge_enable()
415 d2l_write(tc->i2c, PPI_D1S_CLRSIPOCOUNT, 3); in tc_bridge_enable()
416 d2l_write(tc->i2c, PPI_D2S_CLRSIPOCOUNT, 3); in tc_bridge_enable()
417 d2l_write(tc->i2c, PPI_D3S_CLRSIPOCOUNT, 3); in tc_bridge_enable()
419 val = ((L0EN << tc->num_dsi_lanes) - L0EN) | DSI_CLEN_BIT; in tc_bridge_enable()
420 d2l_write(tc->i2c, PPI_LANEENABLE, val); in tc_bridge_enable()
421 d2l_write(tc->i2c, DSI_LANEENABLE, val); in tc_bridge_enable()
423 d2l_write(tc->i2c, PPI_STARTPPI, PPI_START_FUNCTION); in tc_bridge_enable()
424 d2l_write(tc->i2c, DSI_STARTDSI, DSI_RX_START); in tc_bridge_enable()
426 if (tc->bpc == 8) in tc_bridge_enable()
431 dsiclk = mode->crtc_clock * 3 * tc->bpc / tc->num_dsi_lanes / 1000; in tc_bridge_enable()
432 clkdiv = dsiclk / DIVIDE_BY_3 * tc->lvds_link; in tc_bridge_enable()
434 t1 = hactive * (tc->bpc * 3 / 8) / tc->num_dsi_lanes; in tc_bridge_enable()
436 t3 = ((t2 * byteclk) / 100) - (hactive * (tc->bpc * 3 / 8) / in tc_bridge_enable()
437 tc->num_dsi_lanes); in tc_bridge_enable()
442 d2l_write(tc->i2c, VPCTRL, val); in tc_bridge_enable()
444 d2l_write(tc->i2c, HTIM1, htime1); in tc_bridge_enable()
445 d2l_write(tc->i2c, VTIM1, vtime1); in tc_bridge_enable()
446 d2l_write(tc->i2c, HTIM2, htime2); in tc_bridge_enable()
447 d2l_write(tc->i2c, VTIM2, vtime2); in tc_bridge_enable()
449 d2l_write(tc->i2c, VFUEN, VFUEN_EN); in tc_bridge_enable()
450 d2l_write(tc->i2c, SYSRST, SYS_RST_LCD); in tc_bridge_enable()
451 d2l_write(tc->i2c, LVPHY0, LV_PHY0_PRBS_ON(4) | LV_PHY0_ND(6)); in tc_bridge_enable()
453 dev_dbg(tc->dev, "bus_formats %04x bpc %d\n", in tc_bridge_enable()
455 tc->bpc); in tc_bridge_enable()
463 d2l_write(tc->i2c, LV_MX0003, LV_MX(LVI_R0, LVI_R1, LVI_R2, LVI_R3)); in tc_bridge_enable()
464 d2l_write(tc->i2c, LV_MX0407, LV_MX(LVI_R4, LVI_R7, LVI_R5, LVI_G0)); in tc_bridge_enable()
465 d2l_write(tc->i2c, LV_MX0811, LV_MX(LVI_G1, LVI_G2, LVI_G6, LVI_G7)); in tc_bridge_enable()
466 d2l_write(tc->i2c, LV_MX1215, LV_MX(LVI_G3, LVI_G4, LVI_G5, LVI_B0)); in tc_bridge_enable()
467 d2l_write(tc->i2c, LV_MX1619, LV_MX(LVI_B6, LVI_B7, LVI_B1, LVI_B2)); in tc_bridge_enable()
468 d2l_write(tc->i2c, LV_MX2023, LV_MX(LVI_B3, LVI_B4, LVI_B5, LVI_L0)); in tc_bridge_enable()
469 d2l_write(tc->i2c, LV_MX2427, LV_MX(LVI_HS, LVI_VS, LVI_DE, LVI_R6)); in tc_bridge_enable()
471 d2l_write(tc->i2c, LV_MX0003, LV_MX(LVI_R0, LVI_R1, LVI_R2, LVI_R3)); in tc_bridge_enable()
472 d2l_write(tc->i2c, LV_MX0407, LV_MX(LVI_R4, LVI_L0, LVI_R5, LVI_G0)); in tc_bridge_enable()
473 d2l_write(tc->i2c, LV_MX0811, LV_MX(LVI_G1, LVI_G2, LVI_L0, LVI_L0)); in tc_bridge_enable()
474 d2l_write(tc->i2c, LV_MX1215, LV_MX(LVI_G3, LVI_G4, LVI_G5, LVI_B0)); in tc_bridge_enable()
475 d2l_write(tc->i2c, LV_MX1619, LV_MX(LVI_L0, LVI_L0, LVI_B1, LVI_B2)); in tc_bridge_enable()
476 d2l_write(tc->i2c, LV_MX2023, LV_MX(LVI_B3, LVI_B4, LVI_B5, LVI_L0)); in tc_bridge_enable()
477 d2l_write(tc->i2c, LV_MX2427, LV_MX(LVI_HS, LVI_VS, LVI_DE, LVI_L0)); in tc_bridge_enable()
480 d2l_write(tc->i2c, VFUEN, VFUEN_EN); in tc_bridge_enable()
483 if (tc->lvds_link == DUAL_LINK) { in tc_bridge_enable()
489 d2l_write(tc->i2c, LVCFG, val); in tc_bridge_enable()
497 struct tc_data *tc = bridge_to_tc(bridge); in tc_mode_valid() local
503 if ((mode->clock > 135000 && tc->lvds_link == SINGLE_LINK) || in tc_mode_valid()
504 (mode->clock > 270000 && tc->lvds_link == DUAL_LINK)) in tc_mode_valid()
511 tc->bpc = 8; in tc_mode_valid()
515 tc->bpc = 6; in tc_mode_valid()
518 dev_warn(tc->dev, in tc_mode_valid()
527 static int tc358775_parse_dt(struct device_node *np, struct tc_data *tc) in tc358775_parse_dt() argument
539 endpoint = of_graph_get_endpoint_by_regs(tc->dev->of_node, in tc358775_parse_dt()
554 dev_err(tc->dev, in tc358775_parse_dt()
562 tc->num_dsi_lanes = len / sizeof(u32); in tc358775_parse_dt()
564 if (tc->num_dsi_lanes < 1 || tc->num_dsi_lanes > 4) in tc358775_parse_dt()
567 tc->host_node = of_graph_get_remote_node(np, 0, 0); in tc358775_parse_dt()
568 if (!tc->host_node) in tc358775_parse_dt()
571 of_node_put(tc->host_node); in tc358775_parse_dt()
573 tc->lvds_link = SINGLE_LINK; in tc358775_parse_dt()
574 endpoint = of_graph_get_endpoint_by_regs(tc->dev->of_node, in tc358775_parse_dt()
582 tc->lvds_link = DUAL_LINK; in tc358775_parse_dt()
587 dev_dbg(tc->dev, "no.of dsi lanes: %d\n", tc->num_dsi_lanes); in tc358775_parse_dt()
588 dev_dbg(tc->dev, "operating in %d-link mode\n", tc->lvds_link); in tc358775_parse_dt()
596 struct tc_data *tc = bridge_to_tc(bridge); in tc_bridge_attach() local
597 struct device *dev = &tc->i2c->dev; in tc_bridge_attach()
607 host = of_find_mipi_dsi_host_by_node(tc->host_node); in tc_bridge_attach()
620 tc->dsi = dsi; in tc_bridge_attach()
622 dsi->lanes = tc->num_dsi_lanes; in tc_bridge_attach()
633 return drm_bridge_attach(bridge->encoder, tc->panel_bridge, in tc_bridge_attach()
634 &tc->bridge, flags); in tc_bridge_attach()
653 struct tc_data *tc; in tc_probe() local
656 tc = devm_kzalloc(dev, sizeof(*tc), GFP_KERNEL); in tc_probe()
657 if (!tc) in tc_probe()
660 tc->dev = dev; in tc_probe()
661 tc->i2c = client; in tc_probe()
670 tc->panel_bridge = devm_drm_panel_bridge_add(dev, panel); in tc_probe()
671 if (IS_ERR(tc->panel_bridge)) in tc_probe()
672 return PTR_ERR(tc->panel_bridge); in tc_probe()
674 ret = tc358775_parse_dt(dev->of_node, tc); in tc_probe()
678 tc->vddio = devm_regulator_get(dev, "vddio-supply"); in tc_probe()
679 if (IS_ERR(tc->vddio)) { in tc_probe()
680 ret = PTR_ERR(tc->vddio); in tc_probe()
685 tc->vdd = devm_regulator_get(dev, "vdd-supply"); in tc_probe()
686 if (IS_ERR(tc->vdd)) { in tc_probe()
687 ret = PTR_ERR(tc->vdd); in tc_probe()
692 tc->stby_gpio = devm_gpiod_get(dev, "stby", GPIOD_OUT_HIGH); in tc_probe()
693 if (IS_ERR(tc->stby_gpio)) { in tc_probe()
694 ret = PTR_ERR(tc->stby_gpio); in tc_probe()
699 tc->reset_gpio = devm_gpiod_get(dev, "reset", GPIOD_OUT_HIGH); in tc_probe()
700 if (IS_ERR(tc->reset_gpio)) { in tc_probe()
701 ret = PTR_ERR(tc->reset_gpio); in tc_probe()
706 tc->bridge.funcs = &tc_bridge_funcs; in tc_probe()
707 tc->bridge.of_node = dev->of_node; in tc_probe()
708 drm_bridge_add(&tc->bridge); in tc_probe()
710 i2c_set_clientdata(client, tc); in tc_probe()
717 struct tc_data *tc = i2c_get_clientdata(client); in tc_remove() local
719 drm_bridge_remove(&tc->bridge); in tc_remove()