Lines Matching +full:tv101wum +full:- +full:nl6
1 // SPDX-License-Identifier: GPL-2.0
1718 struct mipi_dsi_device *dsi = boe->dsi; in boe_panel_init_dcs_cmd()
1719 struct drm_panel *panel = &boe->base; in boe_panel_init_dcs_cmd()
1722 if (boe->desc->init_cmds) { in boe_panel_init_dcs_cmd()
1723 const struct panel_init_cmd *init_cmds = boe->desc->init_cmds; in boe_panel_init_dcs_cmd()
1728 switch (cmd->type) { in boe_panel_init_dcs_cmd()
1730 msleep(cmd->data[0]); in boe_panel_init_dcs_cmd()
1735 err = mipi_dsi_dcs_write(dsi, cmd->data[0], in boe_panel_init_dcs_cmd()
1736 cmd->len <= 1 ? NULL : in boe_panel_init_dcs_cmd()
1737 &cmd->data[1], in boe_panel_init_dcs_cmd()
1738 cmd->len - 1); in boe_panel_init_dcs_cmd()
1742 err = -EINVAL; in boe_panel_init_dcs_cmd()
1746 dev_err(panel->dev, in boe_panel_init_dcs_cmd()
1757 struct mipi_dsi_device *dsi = boe->dsi; in boe_panel_enter_sleep_mode()
1760 dsi->mode_flags &= ~MIPI_DSI_MODE_LPM; in boe_panel_enter_sleep_mode()
1780 dev_err(panel->dev, "failed to set panel off: %d\n", ret); in boe_panel_disable()
1793 if (!boe->prepared) in boe_panel_unprepare()
1796 if (boe->desc->discharge_on_disable) { in boe_panel_unprepare()
1797 regulator_disable(boe->avee); in boe_panel_unprepare()
1798 regulator_disable(boe->avdd); in boe_panel_unprepare()
1800 gpiod_set_value(boe->enable_gpio, 0); in boe_panel_unprepare()
1802 regulator_disable(boe->pp1800); in boe_panel_unprepare()
1803 regulator_disable(boe->pp3300); in boe_panel_unprepare()
1805 gpiod_set_value(boe->enable_gpio, 0); in boe_panel_unprepare()
1807 regulator_disable(boe->avee); in boe_panel_unprepare()
1808 regulator_disable(boe->avdd); in boe_panel_unprepare()
1810 regulator_disable(boe->pp1800); in boe_panel_unprepare()
1811 regulator_disable(boe->pp3300); in boe_panel_unprepare()
1814 boe->prepared = false; in boe_panel_unprepare()
1824 if (boe->prepared) in boe_panel_prepare()
1827 gpiod_set_value(boe->enable_gpio, 0); in boe_panel_prepare()
1830 ret = regulator_enable(boe->pp3300); in boe_panel_prepare()
1834 ret = regulator_enable(boe->pp1800); in boe_panel_prepare()
1840 ret = regulator_enable(boe->avdd); in boe_panel_prepare()
1843 ret = regulator_enable(boe->avee); in boe_panel_prepare()
1849 if (boe->desc->lp11_before_reset) { in boe_panel_prepare()
1850 ret = mipi_dsi_dcs_nop(boe->dsi); in boe_panel_prepare()
1852 dev_err(&boe->dsi->dev, "Failed to send NOP: %d\n", ret); in boe_panel_prepare()
1857 gpiod_set_value(boe->enable_gpio, 1); in boe_panel_prepare()
1859 gpiod_set_value(boe->enable_gpio, 0); in boe_panel_prepare()
1861 gpiod_set_value(boe->enable_gpio, 1); in boe_panel_prepare()
1866 dev_err(panel->dev, "failed to init panel: %d\n", ret); in boe_panel_prepare()
1870 boe->prepared = true; in boe_panel_prepare()
1875 gpiod_set_value(boe->enable_gpio, 0); in boe_panel_prepare()
1876 regulator_disable(boe->avee); in boe_panel_prepare()
1878 regulator_disable(boe->avdd); in boe_panel_prepare()
1881 regulator_disable(boe->pp1800); in boe_panel_prepare()
2174 const struct drm_display_mode *m = boe->desc->modes; in boe_panel_get_modes()
2177 mode = drm_mode_duplicate(connector->dev, m); in boe_panel_get_modes()
2179 dev_err(panel->dev, "failed to add mode %ux%u@%u\n", in boe_panel_get_modes()
2180 m->hdisplay, m->vdisplay, drm_mode_vrefresh(m)); in boe_panel_get_modes()
2181 return -ENOMEM; in boe_panel_get_modes()
2184 mode->type = DRM_MODE_TYPE_DRIVER | DRM_MODE_TYPE_PREFERRED; in boe_panel_get_modes()
2188 connector->display_info.width_mm = boe->desc->size.width_mm; in boe_panel_get_modes()
2189 connector->display_info.height_mm = boe->desc->size.height_mm; in boe_panel_get_modes()
2190 connector->display_info.bpc = boe->desc->bpc; in boe_panel_get_modes()
2195 drm_connector_set_panel_orientation(connector, boe->orientation); in boe_panel_get_modes()
2204 return boe->orientation; in boe_panel_get_orientation()
2218 struct device *dev = &boe->dsi->dev; in boe_panel_add()
2221 boe->avdd = devm_regulator_get(dev, "avdd"); in boe_panel_add()
2222 if (IS_ERR(boe->avdd)) in boe_panel_add()
2223 return PTR_ERR(boe->avdd); in boe_panel_add()
2225 boe->avee = devm_regulator_get(dev, "avee"); in boe_panel_add()
2226 if (IS_ERR(boe->avee)) in boe_panel_add()
2227 return PTR_ERR(boe->avee); in boe_panel_add()
2229 boe->pp3300 = devm_regulator_get(dev, "pp3300"); in boe_panel_add()
2230 if (IS_ERR(boe->pp3300)) in boe_panel_add()
2231 return PTR_ERR(boe->pp3300); in boe_panel_add()
2233 boe->pp1800 = devm_regulator_get(dev, "pp1800"); in boe_panel_add()
2234 if (IS_ERR(boe->pp1800)) in boe_panel_add()
2235 return PTR_ERR(boe->pp1800); in boe_panel_add()
2237 boe->enable_gpio = devm_gpiod_get(dev, "enable", GPIOD_OUT_LOW); in boe_panel_add()
2238 if (IS_ERR(boe->enable_gpio)) { in boe_panel_add()
2239 dev_err(dev, "cannot get reset-gpios %ld\n", in boe_panel_add()
2240 PTR_ERR(boe->enable_gpio)); in boe_panel_add()
2241 return PTR_ERR(boe->enable_gpio); in boe_panel_add()
2244 gpiod_set_value(boe->enable_gpio, 0); in boe_panel_add()
2246 boe->base.prepare_prev_first = true; in boe_panel_add()
2248 drm_panel_init(&boe->base, dev, &boe_panel_funcs, in boe_panel_add()
2250 err = of_drm_get_panel_orientation(dev->of_node, &boe->orientation); in boe_panel_add()
2252 dev_err(dev, "%pOF: failed to get orientation %d\n", dev->of_node, err); in boe_panel_add()
2256 err = drm_panel_of_backlight(&boe->base); in boe_panel_add()
2260 boe->base.funcs = &boe_panel_funcs; in boe_panel_add()
2261 boe->base.dev = &boe->dsi->dev; in boe_panel_add()
2263 drm_panel_add(&boe->base); in boe_panel_add()
2274 boe = devm_kzalloc(&dsi->dev, sizeof(*boe), GFP_KERNEL); in boe_panel_probe()
2276 return -ENOMEM; in boe_panel_probe()
2278 desc = of_device_get_match_data(&dsi->dev); in boe_panel_probe()
2279 dsi->lanes = desc->lanes; in boe_panel_probe()
2280 dsi->format = desc->format; in boe_panel_probe()
2281 dsi->mode_flags = desc->mode_flags; in boe_panel_probe()
2282 boe->desc = desc; in boe_panel_probe()
2283 boe->dsi = dsi; in boe_panel_probe()
2292 drm_panel_remove(&boe->base); in boe_panel_probe()
2301 drm_panel_disable(&boe->base); in boe_panel_shutdown()
2302 drm_panel_unprepare(&boe->base); in boe_panel_shutdown()
2314 dev_err(&dsi->dev, "failed to detach from DSI host: %d\n", ret); in boe_panel_remove()
2316 if (boe->base.dev) in boe_panel_remove()
2317 drm_panel_remove(&boe->base); in boe_panel_remove()
2321 { .compatible = "boe,tv101wum-nl6",
2324 { .compatible = "auo,kd101n80-45na",
2327 { .compatible = "boe,tv101wum-n53",
2333 { .compatible = "boe,tv105wum-nw0",
2336 { .compatible = "boe,tv110c9m-ll3",
2339 { .compatible = "innolux,hj110iz-01a",
2342 { .compatible = "starry,2081101qfh032011-53g",
2345 { .compatible = "starry,himax83102-j02",
2357 .name = "panel-boe-tv101wum-nl6",
2367 MODULE_DESCRIPTION("BOE tv101wum-nl6 1200x1920 video mode panel driver");