From: Steve Longerbeam <slongerbeam@gmail.com>
To: dri-devel@lists.freedesktop.org
Subject: [PATCH 38/72] imx-drm: Crtcs moved to device tree
Date: Fri, 31 Oct 2014 15:54:21 -0700 [thread overview]
Message-ID: <1414796095-10107-39-git-send-email-steve_longerbeam@mentor.com> (raw)
In-Reply-To: <1414796095-10107-1-git-send-email-steve_longerbeam@mentor.com>
The crtcs are now nodes in the device tree, and the encoder endpoints
fall under the crtc port.
ipu_client_platformdata is no longer needed and is gone. The crtc
retrieves the following required parameters from its node:
- ipu phandle.
- di number.
- the port endpoints.
Optionally, "dual-plane" can be specified to configure the crtc device
with a foreground plane. If not given, the crtc will have only a
single plane.
The DC and IDMAC channels can be inferred from the dual-plane parameter.
In table form, the channel usage is:
Background Plane Foreground Plane Single Plane
---------------- ---------------- ------------
Flow Type IDMAC DC DP IDMAC DP IDMAC DC
--------- ----- --- --- ----- --- ----- ---
Sync 23 5 0 27 1 28 1
Async 24 6 2 29 3 41 2
Async flows are included in the above table but async displays are
not yet supported by the crtc and plane drivers.
Signed-off-by: Steve Longerbeam <steve_longerbeam@mentor.com>
---
drivers/staging/imx-drm/imx-drm-core.c | 28 +++--
drivers/staging/imx-drm/ipuv3-crtc.c | 204 +++++++++++++++++++++++---------
2 files changed, 162 insertions(+), 70 deletions(-)
diff --git a/drivers/staging/imx-drm/imx-drm-core.c b/drivers/staging/imx-drm/imx-drm-core.c
index 9cb222e..e5ec010 100644
--- a/drivers/staging/imx-drm/imx-drm-core.c
+++ b/drivers/staging/imx-drm/imx-drm-core.c
@@ -591,37 +591,43 @@ static const struct component_master_ops imx_drm_ops = {
static int imx_drm_platform_probe(struct platform_device *pdev)
{
- struct device_node *ep, *port, *remote;
+ struct device_node *ep, *crtc, *port, *remote;
struct component_match *match = NULL;
int ret;
int i;
/*
- * Bind the IPU display interface ports first, so that
- * imx_drm_encoder_parse_of called from encoder .bind callbacks
- * works as expected.
+ * Bind the crtcs first, so that imx_drm_encoder_parse_of called
+ * from encoder .bind callbacks works as expected.
*/
for (i = 0; ; i++) {
- port = of_parse_phandle(pdev->dev.of_node, "ports", i);
- if (!port)
+ crtc = of_parse_phandle(pdev->dev.of_node, "crtcs", i);
+ if (!crtc)
break;
- component_match_add(&pdev->dev, &match, compare_of, port);
+ component_match_add(&pdev->dev, &match, compare_of, crtc);
}
if (i == 0) {
- dev_err(&pdev->dev, "missing 'ports' property\n");
+ dev_err(&pdev->dev, "missing 'crtcs' property\n");
return -ENODEV;
}
/* Then bind all encoders */
for (i = 0; ; i++) {
- port = of_parse_phandle(pdev->dev.of_node, "ports", i);
- if (!port)
+ crtc = of_parse_phandle(pdev->dev.of_node, "crtcs", i);
+ if (!crtc)
break;
+ port = of_get_child_by_name(crtc, "port");
+ if (!port) {
+ dev_warn(&pdev->dev, "%s has no port\n", crtc->name);
+ continue;
+ }
+
for_each_child_of_node(port, ep) {
remote = of_graph_get_remote_port_parent(ep);
+
if (!remote || !of_device_is_available(remote)) {
of_node_put(remote);
continue;
@@ -635,7 +641,7 @@ static int imx_drm_platform_probe(struct platform_device *pdev)
component_match_add(&pdev->dev, &match, compare_of, remote);
of_node_put(remote);
}
- of_node_put(port);
+ of_node_put(crtc);
}
ret = dma_set_coherent_mask(&pdev->dev, DMA_BIT_MASK(32));
diff --git a/drivers/staging/imx-drm/ipuv3-crtc.c b/drivers/staging/imx-drm/ipuv3-crtc.c
index 8b4440a..5a60017 100644
--- a/drivers/staging/imx-drm/ipuv3-crtc.c
+++ b/drivers/staging/imx-drm/ipuv3-crtc.c
@@ -36,10 +36,52 @@
#define DRIVER_DESC "i.MX IPUv3 Graphics"
+struct ipu_channels {
+ int dma[2]; /* BG, FG */
+ int dp[2]; /* BG, FG */
+ int dc;
+};
+
+#define NO_DP -1
+
+static const struct ipu_channels sync_dual_plane = {
+ .dma = { IPUV3_CHANNEL_MEM_BG_SYNC, IPUV3_CHANNEL_MEM_FG_SYNC },
+ .dp = { IPU_DP_FLOW_SYNC_BG, IPU_DP_FLOW_SYNC_FG },
+ .dc = IPU_DC_CHANNEL_DP_SYNC,
+};
+static const struct ipu_channels sync_single_plane = {
+ .dma = { IPUV3_CHANNEL_MEM_DC_SYNC, },
+ .dp = { NO_DP, NO_DP },
+ .dc = IPU_DC_CHANNEL_SYNC,
+};
+
+/*
+ * This driver does not yet support async flows for "smart" displays,
+ * but keep this around for future reference. The crtc nodes could in
+ * future add an "async" property.
+ */
+#if 0
+static const struct ipu_channels async_dual_plane = {
+ .dma = { IPUV3_CHANNEL_MEM_BG_ASYNC, IPUV3_CHANNEL_MEM_FG_ASYNC },
+ .dp = { IPU_DP_FLOW_ASYNC0_BG, IPU_DP_FLOW_ASYNC0_FG },
+ .dc = IPU_DC_CHANNEL_DP_ASYNC,
+};
+static const struct ipu_channels async_single_plane = {
+ .dma = { IPUV3_CHANNEL_MEM_DC_ASYNC, },
+ .dp = { NO_DP, NO_DP },
+ .dc = IPU_DC_CHANNEL_ASYNC,
+};
+#endif
+
struct ipu_crtc {
struct device *dev;
struct drm_crtc base;
struct imx_drm_crtc *imx_crtc;
+ struct device *ipu_dev; /* our ipu */
+ struct ipu_soc *ipu;
+ struct device_node *port; /* our port */
+
+ const struct ipu_channels *ch;
/* plane[0] is the full plane, plane[1] is the partial plane */
struct ipu_plane *plane[2];
@@ -311,32 +353,106 @@ static const struct imx_drm_crtc_helper_funcs ipu_crtc_helper_funcs = {
.crtc_helper_funcs = &ipu_helper_funcs,
};
+static int of_dev_node_match(struct device *dev, void *data)
+{
+ return dev->of_node == data;
+}
+
+static int get_ipu(struct ipu_crtc *ipu_crtc, struct device_node *node)
+{
+ struct device_node *ipu_node;
+ struct device *ipu_dev;
+ int ret;
+
+ ipu_node = of_parse_phandle(node, "ipu", 0);
+ if (!ipu_node) {
+ dev_err(ipu_crtc->dev, "missing ipu phandle!\n");
+ return -ENODEV;
+ }
+
+ ipu_dev = bus_find_device(&platform_bus_type, NULL,
+ ipu_node, of_dev_node_match);
+ of_node_put(ipu_node);
+
+ if (!ipu_dev) {
+ dev_err(ipu_crtc->dev, "failed to find ipu device!\n");
+ return -ENODEV;
+ }
+
+ device_lock(ipu_dev);
+
+ if (!ipu_dev->driver || !try_module_get(ipu_dev->driver->owner)) {
+ ret = -EPROBE_DEFER;
+ dev_warn(ipu_crtc->dev, "IPU driver not loaded\n");
+ device_unlock(ipu_dev);
+ goto dev_put;
+ }
+
+ ipu_crtc->ipu_dev = ipu_dev;
+ ipu_crtc->ipu = dev_get_drvdata(ipu_dev);
+
+ device_unlock(ipu_dev);
+ return 0;
+dev_put:
+ put_device(ipu_dev);
+ return ret;
+}
+
static void ipu_put_resources(struct ipu_crtc *ipu_crtc)
{
if (!IS_ERR_OR_NULL(ipu_crtc->dc))
ipu_dc_put(ipu_crtc->dc);
if (!IS_ERR_OR_NULL(ipu_crtc->di))
ipu_di_put(ipu_crtc->di);
+ if (!IS_ERR_OR_NULL(ipu_crtc->ipu_dev)) {
+ module_put(ipu_crtc->ipu_dev->driver->owner);
+ put_device(ipu_crtc->ipu_dev);
+ }
}
static int ipu_get_resources(struct ipu_crtc *ipu_crtc,
- struct ipu_client_platformdata *pdata)
+ struct device_node *np)
{
- struct ipu_soc *ipu = dev_get_drvdata(ipu_crtc->dev->parent);
+ u32 di;
int ret;
- ipu_crtc->dc = ipu_dc_get(ipu, pdata->dc);
- if (IS_ERR(ipu_crtc->dc)) {
- ret = PTR_ERR(ipu_crtc->dc);
- goto err_out;
+ ret = get_ipu(ipu_crtc, np);
+ if (ret) {
+ dev_warn(ipu_crtc->dev, "could not get ipu\n");
+ return ret;
+ }
+
+ /* get our port */
+ ipu_crtc->port = of_get_child_by_name(np, "port");
+ if (!ipu_crtc->port) {
+ dev_err(ipu_crtc->dev, "could not get port\n");
+ return -ENODEV;
}
- ipu_crtc->di = ipu_di_get(ipu, pdata->di);
+ ret = of_property_read_u32(np, "di", &di);
+ if (ret < 0)
+ goto err_out;
+
+ ipu_crtc->di = ipu_di_get(ipu_crtc->ipu, di);
if (IS_ERR(ipu_crtc->di)) {
ret = PTR_ERR(ipu_crtc->di);
goto err_out;
}
+ if (!of_find_property(np, "dual-plane", NULL)) {
+ dev_info(ipu_crtc->dev, "single plane mode\n");
+ ipu_crtc->ch = &sync_single_plane;
+ } else {
+ dev_info(ipu_crtc->dev, "dual plane mode\n");
+ ipu_crtc->ch = &sync_dual_plane;
+ }
+
+ ipu_crtc->dc = ipu_dc_get(ipu_crtc->ipu, ipu_crtc->ch->dc);
+ if (IS_ERR(ipu_crtc->dc)) {
+ ret = PTR_ERR(ipu_crtc->dc);
+ goto err_out;
+ }
+
return 0;
err_out:
ipu_put_resources(ipu_crtc);
@@ -345,14 +461,13 @@ err_out:
}
static int ipu_crtc_init(struct ipu_crtc *ipu_crtc,
- struct ipu_client_platformdata *pdata, struct drm_device *drm)
+ struct drm_device *drm)
{
- struct ipu_soc *ipu = dev_get_drvdata(ipu_crtc->dev->parent);
- int dp = -EINVAL;
+ struct device_node *np = ipu_crtc->dev->of_node;
int ret;
int id;
- ret = ipu_get_resources(ipu_crtc, pdata);
+ ret = ipu_get_resources(ipu_crtc, np);
if (ret) {
dev_err(ipu_crtc->dev, "getting resources failed with %d.\n",
ret);
@@ -360,17 +475,18 @@ static int ipu_crtc_init(struct ipu_crtc *ipu_crtc,
}
ret = imx_drm_add_crtc(drm, &ipu_crtc->base, &ipu_crtc->imx_crtc,
- &ipu_crtc_helper_funcs, ipu_crtc->dev->of_node);
+ &ipu_crtc_helper_funcs, ipu_crtc->port);
if (ret) {
dev_err(ipu_crtc->dev, "adding crtc failed with %d.\n", ret);
goto err_put_resources;
}
- if (pdata->dp >= 0)
- dp = IPU_DP_FLOW_SYNC_BG;
id = imx_drm_crtc_id(ipu_crtc->imx_crtc);
- ipu_crtc->plane[0] = ipu_plane_init(ipu_crtc->base.dev, ipu,
- pdata->dma[0], dp, BIT(id), true);
+ ipu_crtc->plane[0] = ipu_plane_init(ipu_crtc->base.dev,
+ ipu_crtc->ipu,
+ ipu_crtc->ch->dma[0],
+ ipu_crtc->ch->dp[0],
+ BIT(id), true);
ret = ipu_plane_get_resources(ipu_crtc->plane[0]);
if (ret) {
dev_err(ipu_crtc->dev, "getting plane 0 resources failed with %d.\n",
@@ -379,10 +495,11 @@ static int ipu_crtc_init(struct ipu_crtc *ipu_crtc,
}
/* If this crtc is using the DP, add an overlay plane */
- if (pdata->dp >= 0 && pdata->dma[1] > 0) {
- ipu_crtc->plane[1] = ipu_plane_init(ipu_crtc->base.dev, ipu,
- pdata->dma[1],
- IPU_DP_FLOW_SYNC_FG,
+ if (ipu_crtc->ch->dp[1] >= 0) {
+ ipu_crtc->plane[1] = ipu_plane_init(ipu_crtc->base.dev,
+ ipu_crtc->ipu,
+ ipu_crtc->ch->dma[1],
+ ipu_crtc->ch->dp[1],
BIT(id), false);
if (IS_ERR(ipu_crtc->plane[1]))
ipu_crtc->plane[1] = NULL;
@@ -408,31 +525,8 @@ err_put_resources:
return ret;
}
-static struct device_node *ipu_drm_get_port_by_id(struct device_node *parent,
- int port_id)
-{
- struct device_node *port;
- int id, ret;
-
- port = of_get_child_by_name(parent, "port");
- while (port) {
- ret = of_property_read_u32(port, "reg", &id);
- if (!ret && id == port_id)
- return port;
-
- do {
- port = of_get_next_child(parent, port);
- if (!port)
- return NULL;
- } while (of_node_cmp(port->name, "port"));
- }
-
- return NULL;
-}
-
static int ipu_drm_bind(struct device *dev, struct device *master, void *data)
{
- struct ipu_client_platformdata *pdata = dev->platform_data;
struct drm_device *drm = data;
struct ipu_crtc *ipu_crtc;
int ret;
@@ -443,7 +537,7 @@ static int ipu_drm_bind(struct device *dev, struct device *master, void *data)
ipu_crtc->dev = dev;
- ret = ipu_crtc_init(ipu_crtc, pdata, drm);
+ ret = ipu_crtc_init(ipu_crtc, drm);
if (ret)
return ret;
@@ -471,23 +565,8 @@ static const struct component_ops ipu_crtc_ops = {
static int ipu_drm_probe(struct platform_device *pdev)
{
struct device *dev = &pdev->dev;
- struct ipu_client_platformdata *pdata = dev->platform_data;
int ret;
- if (!dev->platform_data)
- return -EINVAL;
-
- if (!dev->of_node) {
- /* Associate crtc device with the corresponding DI port node */
- dev->of_node = ipu_drm_get_port_by_id(dev->parent->of_node,
- pdata->di + 2);
- if (!dev->of_node) {
- dev_err(dev, "missing port@%d node in %s\n",
- pdata->di + 2, dev->parent->of_node->full_name);
- return -ENODEV;
- }
- }
-
ret = dma_set_coherent_mask(dev, DMA_BIT_MASK(32));
if (ret)
return ret;
@@ -501,9 +580,16 @@ static int ipu_drm_remove(struct platform_device *pdev)
return 0;
}
+static struct of_device_id ipu_drm_dt_ids[] = {
+ { .compatible = "fsl,imx-ipuv3-crtc" },
+ { /* sentinel */ }
+};
+MODULE_DEVICE_TABLE(of, ipu_drm_dt_ids);
+
static struct platform_driver ipu_drm_driver = {
.driver = {
.name = "imx-ipuv3-crtc",
+ .of_match_table = ipu_drm_dt_ids,
},
.probe = ipu_drm_probe,
.remove = ipu_drm_remove,
--
1.7.9.5
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/dri-devel
next prev parent reply other threads:[~2014-10-31 22:57 UTC|newest]
Thread overview: 115+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-10-31 22:53 [PATCH 00/72] staging imx-drm new features and fixes Steve Longerbeam
2014-10-31 22:53 ` [PATCH 01/72] ARM: dts: imx6qdl-sabrelite: Add HDMI device Steve Longerbeam
2014-10-31 22:53 ` [PATCH 02/72] ARM: dts: imx6qdl-sabreauto: " Steve Longerbeam
2014-10-31 22:53 ` [PATCH 03/72] ARM: dts: imx6qdl: Create imx-drm crtc nodes Steve Longerbeam
2014-11-03 12:31 ` Philipp Zabel
2014-11-03 17:09 ` Steve Longerbeam
2014-10-31 22:53 ` [PATCH 04/72] ARM: i.MX6: use pll2_pfd0_352m as clock root of ipu_di Steve Longerbeam
2014-11-03 12:30 ` Philipp Zabel
2014-11-03 19:10 ` Steve Longerbeam
2014-10-31 22:53 ` [PATCH 05/72] ARM: i.MX6: select pll3_usb_otg for ldb_di for rev 1.0 chip Steve Longerbeam
2014-11-03 12:30 ` Philipp Zabel
2014-11-03 19:17 ` Steve Longerbeam
2014-11-03 20:06 ` Fabio Estevam
2014-11-04 2:38 ` Steve Longerbeam
2014-10-31 22:53 ` [PATCH 06/72] gpu: ipu-cpmem: Add ipu_cpmem_set_uv_offset() Steve Longerbeam
2014-11-03 12:30 ` Philipp Zabel
2014-11-03 22:52 ` Steve Longerbeam
2014-10-31 22:53 ` [PATCH 07/72] gpu: ipu-v3: Add ipu_dp_set_chroma_key() Steve Longerbeam
2014-11-03 12:31 ` Philipp Zabel
2014-11-04 1:55 ` Steve Longerbeam
2014-10-31 22:53 ` [PATCH 08/72] gpu: ipu-v3: Add ipu_dp_set_gamma_correction() Steve Longerbeam
2014-10-31 22:53 ` [PATCH 09/72] gpu: ipu-v3: Add support for dynamic DC interface pixel maps Steve Longerbeam
2014-10-31 22:53 ` [PATCH 10/72] gpu: ipu-v3: Add ipu_dc_uninit_sync() Steve Longerbeam
2014-10-31 22:53 ` [PATCH 11/72] gpu: ipu-v3: Pass struct ipu_dc to enable/disable Steve Longerbeam
2014-10-31 22:53 ` [PATCH 12/72] gpu: ipu-v3: Add ipu_dp_uninit_channel() Steve Longerbeam
2014-10-31 22:53 ` [PATCH 13/72] gpu: ipu-v3: Pass struct ipu_dp to enable/disable Steve Longerbeam
2014-10-31 22:53 ` [PATCH 14/72] gpu: ipu-v3: Implement use counter for ipu_dc_enable(), ipu_dc_disable() Steve Longerbeam
2014-10-31 22:53 ` [PATCH 15/72] gpu: ipu-v3: fix HDMI timing issues Steve Longerbeam
2014-10-31 22:53 ` [PATCH 16/72] gpu: ipu-v3: Add DMFC/DP/DC/DI module enable/disable debug Steve Longerbeam
2014-10-31 22:54 ` [PATCH 17/72] gpu: ipu-v3: Add ipu_di_uninit_sync_panel() Steve Longerbeam
2014-10-31 22:54 ` [PATCH 18/72] gpu: ipu-v3: Split out DI clock enable/disable Steve Longerbeam
2014-10-31 22:54 ` [PATCH 19/72] gpu: ipu-v3: Protect more CM reg access with IPU lock Steve Longerbeam
2014-11-04 17:51 ` Philipp Zabel
2014-11-05 1:54 ` Steve Longerbeam
2014-11-05 1:55 ` Steve Longerbeam
2014-10-31 22:54 ` [PATCH 20/72] gpu: ipu-v3: Move DI waveform counter enable/disable to ipu-di Steve Longerbeam
2014-10-31 22:54 ` [PATCH 21/72] gpu: ipu-v3: Update DP sync SRM always in ipu_dp_enable_channel() Steve Longerbeam
2014-10-31 22:54 ` [PATCH 22/72] gpu: ipu-v3: Fix indent/ws in ipu-dmfc Steve Longerbeam
2014-10-31 22:54 ` [PATCH 23/72] gpu: ipu-v3: Allow burstsize of 20 in ipu_dmfc_setup_channel() Steve Longerbeam
2014-10-31 22:54 ` [PATCH 24/72] gpu: ipu-v3: Remove ipu_dmfc_init_channel() Steve Longerbeam
2014-10-31 22:54 ` [PATCH 25/72] gpu: ipu-v3: Consolidate mutex lock in ipu_dmfc_alloc_bandwidth() Steve Longerbeam
2014-10-31 22:54 ` [PATCH 26/72] gpu: ipu-v3: Enumerate the DC channel names Steve Longerbeam
2014-10-31 22:54 ` [PATCH 27/72] gpu: ipu-di: Move ipu pointer init Steve Longerbeam
2014-10-31 22:54 ` [PATCH 28/72] gpu: ipu-di: Add and improve debug/error messages Steve Longerbeam
2014-10-31 22:54 ` [PATCH 29/72] gpu: ipu-v3: Change signal names in struct ipu_di_signal_cfg Steve Longerbeam
2014-10-31 22:54 ` [PATCH 30/72] gpu: ipu-v3: Remove IPU client registration Steve Longerbeam
2014-10-31 22:54 ` [PATCH 31/72] gpu: ipu-di: Set rate of DI pre clock Steve Longerbeam
2014-10-31 22:54 ` [PATCH 32/72] gpu: ipu-v3: Add RGB666 interface pixel map Steve Longerbeam
2014-10-31 22:54 ` [PATCH 33/72] gpu: ipu-cpmem: Pass drm fourcc to ipu_cpmem_set_yuv_* Steve Longerbeam
2014-10-31 22:54 ` [PATCH 34/72] gpu: ipu-v3: Add ipu_drm_fourcc_is_planar() Steve Longerbeam
2014-10-31 22:54 ` [PATCH 35/72] gpu: ipu-v3: Add IDMA channel linking support Steve Longerbeam
2014-10-31 22:54 ` [PATCH 36/72] gpu: ipu-cpmem: Support YVU422 Steve Longerbeam
2014-10-31 22:54 ` [PATCH 37/72] gpu: ipu-cpmem: Add ipu_cpmem_get_burstsize() Steve Longerbeam
2014-10-31 22:54 ` Steve Longerbeam [this message]
2014-10-31 22:54 ` [PATCH 39/72] imx-drm: hdmi: optimize i2c write wait Steve Longerbeam
2014-10-31 22:54 ` [PATCH 40/72] imx-drm: parallel-display: Support RGB666 pixel fmt Steve Longerbeam
2014-10-31 22:54 ` [PATCH 41/72] imx-drm: imx-ldb: Add debug to connector/encoder entry points Steve Longerbeam
2014-10-31 22:54 ` [PATCH 42/72] imx-drm: imx-ldb: Implement imx_ldb_encoder_dpms() Steve Longerbeam
2014-10-31 22:54 ` [PATCH 43/72] imx-drm: parallel-display: Fix typo when setting mode type Steve Longerbeam
2014-10-31 22:54 ` [PATCH 44/72] imx-drm: ipuv3-plane: Fix planar formats Steve Longerbeam
2014-10-31 22:54 ` [PATCH 45/72] imx-drm: ipuv3-plane: Allow YUV space for background plane Steve Longerbeam
2014-10-31 22:54 ` [PATCH 46/72] imx-drm: ipuv3-plane: Add more supported pixel formats Steve Longerbeam
2014-10-31 22:54 ` [PATCH 47/72] imx-drm: ipuv3-plane: Implement global alpha and colorkey properties Steve Longerbeam
2014-10-31 22:54 ` [PATCH 48/72] imx-drm: hdmi: rework irq request/free Steve Longerbeam
2014-10-31 22:54 ` [PATCH 49/72] imx-drm: imx-ldb: Add DDC support Steve Longerbeam
2014-11-04 17:52 ` Philipp Zabel
2014-10-31 22:54 ` [PATCH 50/72] imx-drm: Fix separate primary plane objects Steve Longerbeam
2014-10-31 22:54 ` [PATCH 51/72] imx-drm: Move page flip handling to plane driver Steve Longerbeam
2014-10-31 22:54 ` [PATCH 52/72] imx-drm: Reset ipu unit pointers to NULL on errors Steve Longerbeam
2014-10-31 22:54 ` [PATCH 53/72] drm: implement page flipping support for planes Steve Longerbeam
2014-11-01 13:25 ` Rob Clark
2014-10-31 22:54 ` [PATCH 54/72] imx-drm: ipuv3-plane: Assign page_flip method to drm_plane_funcs Steve Longerbeam
2014-10-31 22:54 ` [PATCH 55/72] imx-drm: Implement DRM gamma set Steve Longerbeam
2014-10-31 22:54 ` [PATCH 56/72] imx-drm: Implement custom ioctl to set gamma Steve Longerbeam
2014-10-31 22:54 ` [PATCH 57/72] imx-drm: Add support for interface pixel maps Steve Longerbeam
2014-10-31 22:54 ` [PATCH 58/72] imx-drm: parallel-display: Add interface-pix-map DT property Steve Longerbeam
2014-10-31 22:54 ` [PATCH 59/72] imx-drm: hdmi: set DI clock source to DI pre clock Steve Longerbeam
2014-10-31 22:54 ` [PATCH 60/72] imx-drm: ipuv3-crtc: Set the crtc device name Steve Longerbeam
2014-10-31 22:54 ` [PATCH 61/72] imx-drm: hdmi: Save ipu/di mux for later iomux setup Steve Longerbeam
2014-10-31 22:54 ` [PATCH 62/72] imx-drm: ipuv3-plane: Assign correct dmfc burst size Steve Longerbeam
2014-10-31 22:54 ` [PATCH 63/72] drm_modes: videomode: add pos/neg pixel clock polarity flag Steve Longerbeam
2014-10-31 22:54 ` [PATCH 64/72] imx-drm: ipuv3-crtc: Use DRM mode flags to configure pixel clock polarity Steve Longerbeam
2014-10-31 22:54 ` [PATCH 65/72] imx-drm: imx-ldb: Add all defined of video modes Steve Longerbeam
2014-10-31 22:54 ` [PATCH 66/72] imx-drm: parallel-display: " Steve Longerbeam
2014-10-31 22:54 ` [PATCH 67/72] imx-drm: ipuv3-crtc: Disable fb on crtc unbind Steve Longerbeam
2014-10-31 22:54 ` [PATCH 68/72] imx-drm: imx-ldb: Use DDC probe as connection detect Steve Longerbeam
2014-11-04 17:57 ` Philipp Zabel
2014-10-31 22:54 ` [PATCH 69/72] imx-drm: ipuv3-crtc: Implement mode_set_base Steve Longerbeam
2014-10-31 22:54 ` [PATCH 70/72] imx-drm: Cancel pending page flip events at preclose Steve Longerbeam
2014-10-31 22:54 ` [PATCH 71/72] imx-drm: ipuv3-crtc: Disable overlay plane during crtc disable Steve Longerbeam
2014-10-31 22:54 ` [PATCH 72/72] imx-drm: ipuv3-plane: Enable 8 burst locking Steve Longerbeam
2014-11-01 0:09 ` [PATCH 00/72] staging imx-drm new features and fixes Fabio Estevam
2014-11-01 0:19 ` Steve Longerbeam
2014-11-03 13:12 ` Fabio Estevam
2014-11-03 13:17 ` Fabio Estevam
2014-11-03 13:20 ` Fabio Estevam
2014-11-03 14:13 ` Fabio Estevam
2014-11-03 22:41 ` Steve Longerbeam
2014-11-04 15:15 ` Fabio Estevam
2014-11-02 3:03 ` Steve Longerbeam
2014-11-03 11:17 ` Zubair Lutfullah Kakakhel
2014-11-03 16:04 ` Rob Clark
2014-11-03 16:12 ` Daniel Vetter
2014-11-03 16:14 ` Greg KH
2014-11-03 17:17 ` Daniel Vetter
2014-11-03 17:48 ` Greg KH
2014-11-03 18:58 ` Steve Longerbeam
2014-11-04 2:32 ` Alex Deucher
2014-11-03 18:59 ` Steve Longerbeam
2014-11-03 20:00 ` Fabio Estevam
2014-11-03 22:11 ` Steve Longerbeam
2014-11-04 9:35 ` Philipp Zabel
2014-11-05 1:20 ` Steve Longerbeam
2015-01-17 19:45 ` Fabio Estevam
2015-01-21 17:22 ` Rob Clark
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1414796095-10107-39-git-send-email-steve_longerbeam@mentor.com \
--to=slongerbeam@gmail.com \
--cc=dri-devel@lists.freedesktop.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox