Merge remote-tracking branch 'drm/drm-next' into drm-misc-next
drm-next is forwarded to v4.20-rc1, and we need this to make a patch series apply. Signed-off-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
This commit is contained in:
@@ -56,6 +56,8 @@ struct panel_desc {
|
||||
/**
|
||||
* @prepare: the time (in milliseconds) that it takes for the panel to
|
||||
* become ready and start receiving video data
|
||||
* @hpd_absent_delay: Add this to the prepare delay if we know Hot
|
||||
* Plug Detect isn't used.
|
||||
* @enable: the time (in milliseconds) that it takes for the panel to
|
||||
* display the first valid frame after starting to receive
|
||||
* video data
|
||||
@@ -66,6 +68,7 @@ struct panel_desc {
|
||||
*/
|
||||
struct {
|
||||
unsigned int prepare;
|
||||
unsigned int hpd_absent_delay;
|
||||
unsigned int enable;
|
||||
unsigned int disable;
|
||||
unsigned int unprepare;
|
||||
@@ -79,6 +82,7 @@ struct panel_simple {
|
||||
struct drm_panel base;
|
||||
bool prepared;
|
||||
bool enabled;
|
||||
bool no_hpd;
|
||||
|
||||
const struct panel_desc *desc;
|
||||
|
||||
@@ -202,6 +206,7 @@ static int panel_simple_unprepare(struct drm_panel *panel)
|
||||
static int panel_simple_prepare(struct drm_panel *panel)
|
||||
{
|
||||
struct panel_simple *p = to_panel_simple(panel);
|
||||
unsigned int delay;
|
||||
int err;
|
||||
|
||||
if (p->prepared)
|
||||
@@ -215,8 +220,11 @@ static int panel_simple_prepare(struct drm_panel *panel)
|
||||
|
||||
gpiod_set_value_cansleep(p->enable_gpio, 1);
|
||||
|
||||
if (p->desc->delay.prepare)
|
||||
msleep(p->desc->delay.prepare);
|
||||
delay = p->desc->delay.prepare;
|
||||
if (p->no_hpd)
|
||||
delay += p->desc->delay.hpd_absent_delay;
|
||||
if (delay)
|
||||
msleep(delay);
|
||||
|
||||
p->prepared = true;
|
||||
|
||||
@@ -305,6 +313,8 @@ static int panel_simple_probe(struct device *dev, const struct panel_desc *desc)
|
||||
panel->prepared = false;
|
||||
panel->desc = desc;
|
||||
|
||||
panel->no_hpd = of_property_read_bool(dev->of_node, "no-hpd");
|
||||
|
||||
panel->supply = devm_regulator_get(dev, "power");
|
||||
if (IS_ERR(panel->supply))
|
||||
return PTR_ERR(panel->supply);
|
||||
@@ -1464,7 +1474,7 @@ static const struct panel_desc innolux_n156bge_l21 = {
|
||||
},
|
||||
};
|
||||
|
||||
static const struct drm_display_mode innolux_tv123wam_mode = {
|
||||
static const struct drm_display_mode innolux_p120zdg_bf1_mode = {
|
||||
.clock = 206016,
|
||||
.hdisplay = 2160,
|
||||
.hsync_start = 2160 + 48,
|
||||
@@ -1478,15 +1488,16 @@ static const struct drm_display_mode innolux_tv123wam_mode = {
|
||||
.flags = DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC,
|
||||
};
|
||||
|
||||
static const struct panel_desc innolux_tv123wam = {
|
||||
.modes = &innolux_tv123wam_mode,
|
||||
static const struct panel_desc innolux_p120zdg_bf1 = {
|
||||
.modes = &innolux_p120zdg_bf1_mode,
|
||||
.num_modes = 1,
|
||||
.bpc = 8,
|
||||
.size = {
|
||||
.width = 259,
|
||||
.height = 173,
|
||||
.width = 254,
|
||||
.height = 169,
|
||||
},
|
||||
.delay = {
|
||||
.hpd_absent_delay = 200,
|
||||
.unprepare = 500,
|
||||
},
|
||||
};
|
||||
@@ -2588,8 +2599,8 @@ static const struct of_device_id platform_of_match[] = {
|
||||
.compatible = "innolux,n156bge-l21",
|
||||
.data = &innolux_n156bge_l21,
|
||||
}, {
|
||||
.compatible = "innolux,tv123wam",
|
||||
.data = &innolux_tv123wam,
|
||||
.compatible = "innolux,p120zdg-bf1",
|
||||
.data = &innolux_p120zdg_bf1,
|
||||
}, {
|
||||
.compatible = "innolux,zj070na-01p",
|
||||
.data = &innolux_zj070na_01p,
|
||||
|
Reference in New Issue
Block a user