Lines Matching full:boe
3 * BOE BF060Y8M-AJ0 5.99" MIPI-DSI OLED Panel on SW43404 DriverIC
54 static void boe_bf060y8m_aj0_reset(struct boe_bf060y8m_aj0 *boe) in boe_bf060y8m_aj0_reset() argument
56 gpiod_set_value_cansleep(boe->reset_gpio, 0); in boe_bf060y8m_aj0_reset()
58 gpiod_set_value_cansleep(boe->reset_gpio, 1); in boe_bf060y8m_aj0_reset()
60 gpiod_set_value_cansleep(boe->reset_gpio, 0); in boe_bf060y8m_aj0_reset()
64 static int boe_bf060y8m_aj0_on(struct boe_bf060y8m_aj0 *boe) in boe_bf060y8m_aj0_on() argument
66 struct mipi_dsi_device *dsi = boe->dsi; in boe_bf060y8m_aj0_on()
108 static int boe_bf060y8m_aj0_off(struct boe_bf060y8m_aj0 *boe) in boe_bf060y8m_aj0_off() argument
110 struct mipi_dsi_device *dsi = boe->dsi; in boe_bf060y8m_aj0_off()
136 struct boe_bf060y8m_aj0 *boe = to_boe_bf060y8m_aj0(panel); in boe_bf060y8m_aj0_prepare() local
137 struct device *dev = &boe->dsi->dev; in boe_bf060y8m_aj0_prepare()
140 if (boe->prepared) in boe_bf060y8m_aj0_prepare()
148 ret = regulator_enable(boe->vregs[BF060Y8M_VREG_EL_VDD].consumer); in boe_bf060y8m_aj0_prepare()
151 ret = regulator_enable(boe->vregs[BF060Y8M_VREG_EL_VSS].consumer); in boe_bf060y8m_aj0_prepare()
155 ret = regulator_enable(boe->vregs[BF060Y8M_VREG_VCC].consumer); in boe_bf060y8m_aj0_prepare()
159 ret = regulator_enable(boe->vregs[BF060Y8M_VREG_VDDIO].consumer); in boe_bf060y8m_aj0_prepare()
163 ret = regulator_enable(boe->vregs[BF060Y8M_VREG_VCI].consumer); in boe_bf060y8m_aj0_prepare()
168 boe_bf060y8m_aj0_reset(boe); in boe_bf060y8m_aj0_prepare()
170 ret = boe_bf060y8m_aj0_on(boe); in boe_bf060y8m_aj0_prepare()
173 gpiod_set_value_cansleep(boe->reset_gpio, 1); in boe_bf060y8m_aj0_prepare()
177 boe->prepared = true; in boe_bf060y8m_aj0_prepare()
181 regulator_disable(boe->vregs[BF060Y8M_VREG_VDDIO].consumer); in boe_bf060y8m_aj0_prepare()
183 regulator_disable(boe->vregs[BF060Y8M_VREG_VCC].consumer); in boe_bf060y8m_aj0_prepare()
185 regulator_disable(boe->vregs[BF060Y8M_VREG_EL_VSS].consumer); in boe_bf060y8m_aj0_prepare()
187 regulator_disable(boe->vregs[BF060Y8M_VREG_EL_VDD].consumer); in boe_bf060y8m_aj0_prepare()
193 struct boe_bf060y8m_aj0 *boe = to_boe_bf060y8m_aj0(panel); in boe_bf060y8m_aj0_unprepare() local
194 struct device *dev = &boe->dsi->dev; in boe_bf060y8m_aj0_unprepare()
197 if (!boe->prepared) in boe_bf060y8m_aj0_unprepare()
200 ret = boe_bf060y8m_aj0_off(boe); in boe_bf060y8m_aj0_unprepare()
204 gpiod_set_value_cansleep(boe->reset_gpio, 1); in boe_bf060y8m_aj0_unprepare()
205 ret = regulator_bulk_disable(ARRAY_SIZE(boe->vregs), boe->vregs); in boe_bf060y8m_aj0_unprepare()
207 boe->prepared = false; in boe_bf060y8m_aj0_unprepare()
296 static int boe_bf060y8m_aj0_init_vregs(struct boe_bf060y8m_aj0 *boe, in boe_bf060y8m_aj0_init_vregs() argument
302 boe->vregs[BF060Y8M_VREG_VCC].supply = "vcc"; in boe_bf060y8m_aj0_init_vregs()
303 boe->vregs[BF060Y8M_VREG_VDDIO].supply = "vddio"; in boe_bf060y8m_aj0_init_vregs()
304 boe->vregs[BF060Y8M_VREG_VCI].supply = "vci"; in boe_bf060y8m_aj0_init_vregs()
305 boe->vregs[BF060Y8M_VREG_EL_VDD].supply = "elvdd"; in boe_bf060y8m_aj0_init_vregs()
306 boe->vregs[BF060Y8M_VREG_EL_VSS].supply = "elvss"; in boe_bf060y8m_aj0_init_vregs()
307 ret = devm_regulator_bulk_get(dev, ARRAY_SIZE(boe->vregs), in boe_bf060y8m_aj0_init_vregs()
308 boe->vregs); in boe_bf060y8m_aj0_init_vregs()
314 vreg = boe->vregs[BF060Y8M_VREG_VCC].consumer; in boe_bf060y8m_aj0_init_vregs()
319 vreg = boe->vregs[BF060Y8M_VREG_VDDIO].consumer; in boe_bf060y8m_aj0_init_vregs()
324 vreg = boe->vregs[BF060Y8M_VREG_VCI].consumer; in boe_bf060y8m_aj0_init_vregs()
329 vreg = boe->vregs[BF060Y8M_VREG_EL_VDD].consumer; in boe_bf060y8m_aj0_init_vregs()
335 vreg = boe->vregs[BF060Y8M_VREG_EL_VSS].consumer; in boe_bf060y8m_aj0_init_vregs()
349 vreg = boe->vregs[BF060Y8M_VREG_VDDIO].consumer; in boe_bf060y8m_aj0_init_vregs()
353 boe->vregs[1].supply, ret); in boe_bf060y8m_aj0_init_vregs()
355 vreg = boe->vregs[BF060Y8M_VREG_VCI].consumer; in boe_bf060y8m_aj0_init_vregs()
359 boe->vregs[2].supply, ret); in boe_bf060y8m_aj0_init_vregs()
367 struct boe_bf060y8m_aj0 *boe; in boe_bf060y8m_aj0_probe() local
370 boe = devm_kzalloc(dev, sizeof(*boe), GFP_KERNEL); in boe_bf060y8m_aj0_probe()
371 if (!boe) in boe_bf060y8m_aj0_probe()
374 ret = boe_bf060y8m_aj0_init_vregs(boe, dev); in boe_bf060y8m_aj0_probe()
379 boe->reset_gpio = devm_gpiod_get_optional(dev, "reset", GPIOD_ASIS); in boe_bf060y8m_aj0_probe()
380 if (IS_ERR(boe->reset_gpio)) in boe_bf060y8m_aj0_probe()
381 return dev_err_probe(dev, PTR_ERR(boe->reset_gpio), in boe_bf060y8m_aj0_probe()
384 boe->dsi = dsi; in boe_bf060y8m_aj0_probe()
385 mipi_dsi_set_drvdata(dsi, boe); in boe_bf060y8m_aj0_probe()
394 drm_panel_init(&boe->panel, dev, &boe_bf060y8m_aj0_panel_funcs, in boe_bf060y8m_aj0_probe()
397 boe->panel.backlight = boe_bf060y8m_aj0_create_backlight(dsi); in boe_bf060y8m_aj0_probe()
398 if (IS_ERR(boe->panel.backlight)) in boe_bf060y8m_aj0_probe()
399 return dev_err_probe(dev, PTR_ERR(boe->panel.backlight), in boe_bf060y8m_aj0_probe()
402 drm_panel_add(&boe->panel); in boe_bf060y8m_aj0_probe()
415 struct boe_bf060y8m_aj0 *boe = mipi_dsi_get_drvdata(dsi); in boe_bf060y8m_aj0_remove() local
422 drm_panel_remove(&boe->panel); in boe_bf060y8m_aj0_remove()
426 { .compatible = "boe,bf060y8m-aj0" },
435 .name = "panel-sw43404-boe-fhd-amoled",
442 MODULE_DESCRIPTION("BOE BF060Y8M-AJ0 MIPI-DSI OLED panel");