Lines Matching +full:ips +full:- +full:supply
1 // SPDX-License-Identifier: GPL-2.0
3 * Asia Better Technology Ltd. Y030XX067A IPS LCD panel driver
12 #include <linux/media-bus-format.h>
128 struct regulator *supply;
165 struct device *dev = &priv->spi->dev;
168 err = regulator_enable(priv->supply);
170 dev_err(dev, "Failed to enable power supply: %d\n", err);
175 gpiod_set_value_cansleep(priv->reset_gpio, 1);
177 gpiod_set_value_cansleep(priv->reset_gpio, 0);
180 err = regmap_multi_reg_write(priv->map, y030xx067a_init_sequence,
190 regulator_disable(priv->supply);
198 gpiod_set_value_cansleep(priv->reset_gpio, 1);
199 regulator_disable(priv->supply);
208 regmap_set_bits(priv->map, 0x06, REG06_XPSAVE);
210 if (panel->backlight) {
222 regmap_clear_bits(priv->map, 0x06, REG06_XPSAVE);
231 const struct y030xx067a_info *panel_info = priv->panel_info;
235 for (i = 0; i < panel_info->num_modes; i++) {
236 mode = drm_mode_duplicate(connector->dev,
237 &panel_info->display_modes[i]);
239 return -ENOMEM;
243 mode->type = DRM_MODE_TYPE_DRIVER;
244 if (panel_info->num_modes == 1)
245 mode->type |= DRM_MODE_TYPE_PREFERRED;
250 connector->display_info.bpc = 8;
251 connector->display_info.width_mm = panel_info->width_mm;
252 connector->display_info.height_mm = panel_info->height_mm;
254 drm_display_info_set_bus_formats(&connector->display_info,
255 &panel_info->bus_format, 1);
256 connector->display_info.bus_flags = panel_info->bus_flags;
258 return panel_info->num_modes;
278 struct device *dev = &spi->dev;
287 priv->spi = spi;
290 priv->map = devm_regmap_init_spi(spi, &y030xx067a_regmap_config);
291 if (IS_ERR(priv->map)) {
293 return PTR_ERR(priv->map);
296 priv->panel_info = of_device_get_match_data(dev);
297 if (!priv->panel_info)
298 return -EINVAL;
300 priv->supply = devm_regulator_get(dev, "power");
301 if (IS_ERR(priv->supply))
302 return dev_err_probe(dev, PTR_ERR(priv->supply),
303 "Failed to get power supply\n");
305 priv->reset_gpio = devm_gpiod_get(dev, "reset", GPIOD_OUT_HIGH);
306 if (IS_ERR(priv->reset_gpio))
307 return dev_err_probe(dev, PTR_ERR(priv->reset_gpio),
310 err = drm_panel_of_backlight(&priv->panel);
314 drm_panel_add(&priv->panel);
323 drm_panel_remove(&priv->panel);
324 drm_panel_disable(&priv->panel);
325 drm_panel_unprepare(&priv->panel);
372 .name = "abt-y030xx067a",
382 MODULE_DESCRIPTION("Asia Better Technology Ltd. Y030XX067A IPS LCD panel driver");