Lines Matching full:boe
1716 static int boe_panel_init_dcs_cmd(struct boe_panel *boe) in boe_panel_init_dcs_cmd() argument
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()
1755 static int boe_panel_enter_sleep_mode(struct boe_panel *boe) in boe_panel_enter_sleep_mode() argument
1757 struct mipi_dsi_device *dsi = boe->dsi; in boe_panel_enter_sleep_mode()
1775 struct boe_panel *boe = to_boe_panel(panel); in boe_panel_disable() local
1778 ret = boe_panel_enter_sleep_mode(boe); in boe_panel_disable()
1791 struct boe_panel *boe = to_boe_panel(panel); in boe_panel_unprepare() local
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()
1821 struct boe_panel *boe = to_boe_panel(panel); in boe_panel_prepare() local
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 mipi_dsi_dcs_nop(boe->dsi); in boe_panel_prepare()
1853 gpiod_set_value(boe->enable_gpio, 1); in boe_panel_prepare()
1855 gpiod_set_value(boe->enable_gpio, 0); in boe_panel_prepare()
1857 gpiod_set_value(boe->enable_gpio, 1); in boe_panel_prepare()
1860 ret = boe_panel_init_dcs_cmd(boe); in boe_panel_prepare()
1866 boe->prepared = true; in boe_panel_prepare()
1871 regulator_disable(boe->avee); in boe_panel_prepare()
1873 regulator_disable(boe->avdd); in boe_panel_prepare()
1876 regulator_disable(boe->pp1800); in boe_panel_prepare()
1877 gpiod_set_value(boe->enable_gpio, 0); in boe_panel_prepare()
2167 struct boe_panel *boe = to_boe_panel(panel); in boe_panel_get_modes() local
2168 const struct drm_display_mode *m = boe->desc->modes; in boe_panel_get_modes()
2182 connector->display_info.width_mm = boe->desc->size.width_mm; in boe_panel_get_modes()
2183 connector->display_info.height_mm = boe->desc->size.height_mm; in boe_panel_get_modes()
2184 connector->display_info.bpc = boe->desc->bpc; in boe_panel_get_modes()
2189 drm_connector_set_panel_orientation(connector, boe->orientation); in boe_panel_get_modes()
2196 struct boe_panel *boe = to_boe_panel(panel); in boe_panel_get_orientation() local
2198 return boe->orientation; in boe_panel_get_orientation()
2210 static int boe_panel_add(struct boe_panel *boe) in boe_panel_add() argument
2212 struct device *dev = &boe->dsi->dev; in boe_panel_add()
2215 boe->avdd = devm_regulator_get(dev, "avdd"); in boe_panel_add()
2216 if (IS_ERR(boe->avdd)) in boe_panel_add()
2217 return PTR_ERR(boe->avdd); in boe_panel_add()
2219 boe->avee = devm_regulator_get(dev, "avee"); in boe_panel_add()
2220 if (IS_ERR(boe->avee)) in boe_panel_add()
2221 return PTR_ERR(boe->avee); in boe_panel_add()
2223 boe->pp3300 = devm_regulator_get(dev, "pp3300"); in boe_panel_add()
2224 if (IS_ERR(boe->pp3300)) in boe_panel_add()
2225 return PTR_ERR(boe->pp3300); in boe_panel_add()
2227 boe->pp1800 = devm_regulator_get(dev, "pp1800"); in boe_panel_add()
2228 if (IS_ERR(boe->pp1800)) in boe_panel_add()
2229 return PTR_ERR(boe->pp1800); in boe_panel_add()
2231 boe->enable_gpio = devm_gpiod_get(dev, "enable", GPIOD_OUT_LOW); in boe_panel_add()
2232 if (IS_ERR(boe->enable_gpio)) { in boe_panel_add()
2234 PTR_ERR(boe->enable_gpio)); in boe_panel_add()
2235 return PTR_ERR(boe->enable_gpio); in boe_panel_add()
2238 gpiod_set_value(boe->enable_gpio, 0); in boe_panel_add()
2240 drm_panel_init(&boe->base, dev, &boe_panel_funcs, in boe_panel_add()
2242 err = of_drm_get_panel_orientation(dev->of_node, &boe->orientation); in boe_panel_add()
2248 err = drm_panel_of_backlight(&boe->base); in boe_panel_add()
2252 boe->base.funcs = &boe_panel_funcs; in boe_panel_add()
2253 boe->base.dev = &boe->dsi->dev; in boe_panel_add()
2255 drm_panel_add(&boe->base); in boe_panel_add()
2262 struct boe_panel *boe; in boe_panel_probe() local
2266 boe = devm_kzalloc(&dsi->dev, sizeof(*boe), GFP_KERNEL); in boe_panel_probe()
2267 if (!boe) in boe_panel_probe()
2274 boe->desc = desc; in boe_panel_probe()
2275 boe->dsi = dsi; in boe_panel_probe()
2276 ret = boe_panel_add(boe); in boe_panel_probe()
2280 mipi_dsi_set_drvdata(dsi, boe); in boe_panel_probe()
2284 drm_panel_remove(&boe->base); in boe_panel_probe()
2291 struct boe_panel *boe = mipi_dsi_get_drvdata(dsi); in boe_panel_shutdown() local
2293 drm_panel_disable(&boe->base); in boe_panel_shutdown()
2294 drm_panel_unprepare(&boe->base); in boe_panel_shutdown()
2299 struct boe_panel *boe = mipi_dsi_get_drvdata(dsi); in boe_panel_remove() local
2308 if (boe->base.dev) in boe_panel_remove()
2309 drm_panel_remove(&boe->base); in boe_panel_remove()
2313 { .compatible = "boe,tv101wum-nl6",
2319 { .compatible = "boe,tv101wum-n53",
2325 { .compatible = "boe,tv105wum-nw0",
2328 { .compatible = "boe,tv110c9m-ll3",
2349 .name = "panel-boe-tv101wum-nl6",
2359 MODULE_DESCRIPTION("BOE tv101wum-nl6 1200x1920 video mode panel driver");