repaper.c (d25654b3fad9906ca80912701fd4bd6e2419f54d) repaper.c (216b9bbaeaea96b7f05c220f61855d174be972d8)
1// SPDX-License-Identifier: GPL-2.0-or-later
2/*
3 * DRM driver for Pervasive Displays RePaper branded e-ink panels
4 *
5 * Copyright 2013-2017 Pervasive Displays, Inc.
6 * Copyright 2017 Noralf Trønnes
7 *
8 * The driver supports:

--- 607 unchanged lines hidden (view full) ---

616 repaper_spi_mosi_low(epd->spi);
617
618 /* Discharge pulse */
619 gpiod_set_value_cansleep(epd->discharge, 1);
620 msleep(150);
621 gpiod_set_value_cansleep(epd->discharge, 0);
622}
623
1// SPDX-License-Identifier: GPL-2.0-or-later
2/*
3 * DRM driver for Pervasive Displays RePaper branded e-ink panels
4 *
5 * Copyright 2013-2017 Pervasive Displays, Inc.
6 * Copyright 2017 Noralf Trønnes
7 *
8 * The driver supports:

--- 607 unchanged lines hidden (view full) ---

616 repaper_spi_mosi_low(epd->spi);
617
618 /* Discharge pulse */
619 gpiod_set_value_cansleep(epd->discharge, 1);
620 msleep(150);
621 gpiod_set_value_cansleep(epd->discharge, 0);
622}
623
624static enum drm_mode_status repaper_pipe_mode_valid(struct drm_simple_display_pipe *pipe,
625 const struct drm_display_mode *mode)
626{
627 struct drm_crtc *crtc = &pipe->crtc;
628 struct repaper_epd *epd = drm_to_epd(crtc->dev);
629
630 return drm_crtc_helper_mode_valid_fixed(crtc, mode, epd->mode);
631}
632
624static void repaper_pipe_enable(struct drm_simple_display_pipe *pipe,
625 struct drm_crtc_state *crtc_state,
626 struct drm_plane_state *plane_state)
627{
628 struct repaper_epd *epd = drm_to_epd(pipe->crtc.dev);
629 struct spi_device *spi = epd->spi;
630 struct device *dev = &spi->dev;
631 bool dc_ok = false;

--- 194 unchanged lines hidden (view full) ---

826 if (!pipe->crtc.state->active)
827 return;
828
829 if (drm_atomic_helper_damage_merged(old_state, state, &rect))
830 repaper_fb_dirty(state->fb);
831}
832
833static const struct drm_simple_display_pipe_funcs repaper_pipe_funcs = {
633static void repaper_pipe_enable(struct drm_simple_display_pipe *pipe,
634 struct drm_crtc_state *crtc_state,
635 struct drm_plane_state *plane_state)
636{
637 struct repaper_epd *epd = drm_to_epd(pipe->crtc.dev);
638 struct spi_device *spi = epd->spi;
639 struct device *dev = &spi->dev;
640 bool dc_ok = false;

--- 194 unchanged lines hidden (view full) ---

835 if (!pipe->crtc.state->active)
836 return;
837
838 if (drm_atomic_helper_damage_merged(old_state, state, &rect))
839 repaper_fb_dirty(state->fb);
840}
841
842static const struct drm_simple_display_pipe_funcs repaper_pipe_funcs = {
843 .mode_valid = repaper_pipe_mode_valid,
834 .enable = repaper_pipe_enable,
835 .disable = repaper_pipe_disable,
836 .update = repaper_pipe_update,
837};
838
839static int repaper_connector_get_modes(struct drm_connector *connector)
840{
841 struct repaper_epd *epd = drm_to_epd(connector->dev);

--- 298 unchanged lines hidden ---
844 .enable = repaper_pipe_enable,
845 .disable = repaper_pipe_disable,
846 .update = repaper_pipe_update,
847};
848
849static int repaper_connector_get_modes(struct drm_connector *connector)
850{
851 struct repaper_epd *epd = drm_to_epd(connector->dev);

--- 298 unchanged lines hidden ---