]> git.karo-electronics.de Git - karo-tx-linux.git/commitdiff
Merge tag 'drm-vc4-fixes-2016-06-06' into drm-vc4-next
authorEric Anholt <eric@anholt.net>
Fri, 8 Jul 2016 01:53:53 +0000 (18:53 -0700)
committerEric Anholt <eric@anholt.net>
Fri, 8 Jul 2016 01:53:53 +0000 (18:53 -0700)
Merge Mario's get_vblank_counter fix forward to prevent conflicts with
his followon patch to add precise vblank timestamping.

drivers/gpu/drm/vc4/vc4_dpi.c
drivers/gpu/drm/vc4/vc4_hdmi.c
drivers/gpu/drm/vc4/vc4_plane.c

index 9817dbfa4ac315b76538b9dc2bace8a86b8a9419..9cb2d3e6e1c08f1f2c5af1a44272924c9d00b4ce 100644 (file)
@@ -236,14 +236,12 @@ static struct drm_connector *vc4_dpi_connector_init(struct drm_device *dev,
 {
        struct drm_connector *connector = NULL;
        struct vc4_dpi_connector *dpi_connector;
-       int ret = 0;
 
        dpi_connector = devm_kzalloc(dev->dev, sizeof(*dpi_connector),
                                     GFP_KERNEL);
-       if (!dpi_connector) {
-               ret = -ENOMEM;
-               goto fail;
-       }
+       if (!dpi_connector)
+               return ERR_PTR(-ENOMEM);
+
        connector = &dpi_connector->base;
 
        dpi_connector->encoder = dpi->encoder;
@@ -260,12 +258,6 @@ static struct drm_connector *vc4_dpi_connector_init(struct drm_device *dev,
        drm_mode_connector_attach_encoder(connector, dpi->encoder);
 
        return connector;
-
- fail:
-       if (connector)
-               vc4_dpi_connector_destroy(connector);
-
-       return ERR_PTR(ret);
 }
 
 static const struct drm_encoder_funcs vc4_dpi_encoder_funcs = {
index fd2644d231ff867a4409840eba7f8234a4a1faba..26b6b067567c72d68814816339dd1714b54fdd09 100644 (file)
@@ -465,12 +465,6 @@ static int vc4_hdmi_bind(struct device *dev, struct device *master, void *data)
        if (IS_ERR(hdmi->hd_regs))
                return PTR_ERR(hdmi->hd_regs);
 
-       ddc_node = of_parse_phandle(dev->of_node, "ddc", 0);
-       if (!ddc_node) {
-               DRM_ERROR("Failed to find ddc node in device tree\n");
-               return -ENODEV;
-       }
-
        hdmi->pixel_clock = devm_clk_get(dev, "pixel");
        if (IS_ERR(hdmi->pixel_clock)) {
                DRM_ERROR("Failed to get pixel clock\n");
@@ -482,7 +476,14 @@ static int vc4_hdmi_bind(struct device *dev, struct device *master, void *data)
                return PTR_ERR(hdmi->hsm_clock);
        }
 
+       ddc_node = of_parse_phandle(dev->of_node, "ddc", 0);
+       if (!ddc_node) {
+               DRM_ERROR("Failed to find ddc node in device tree\n");
+               return -ENODEV;
+       }
+
        hdmi->ddc = of_find_i2c_adapter_by_node(ddc_node);
+       of_node_put(ddc_node);
        if (!hdmi->ddc) {
                DRM_DEBUG("Failed to get ddc i2c adapter by node\n");
                return -EPROBE_DEFER;
index 4037b52fde31a2dbe4dec8c477751900d17411f2..b12deef2527d7d30f8bcdd85cd5c426b6ee37a02 100644 (file)
@@ -93,6 +93,14 @@ static const struct hvs_format {
                .drm = DRM_FORMAT_ARGB8888, .hvs = HVS_PIXEL_FORMAT_RGBA8888,
                .pixel_order = HVS_PIXEL_ORDER_ABGR, .has_alpha = true,
        },
+       {
+               .drm = DRM_FORMAT_ABGR8888, .hvs = HVS_PIXEL_FORMAT_RGBA8888,
+               .pixel_order = HVS_PIXEL_ORDER_ARGB, .has_alpha = true,
+       },
+       {
+               .drm = DRM_FORMAT_XBGR8888, .hvs = HVS_PIXEL_FORMAT_RGBA8888,
+               .pixel_order = HVS_PIXEL_ORDER_ARGB, .has_alpha = false,
+       },
        {
                .drm = DRM_FORMAT_RGB565, .hvs = HVS_PIXEL_FORMAT_RGB565,
                .pixel_order = HVS_PIXEL_ORDER_XRGB, .has_alpha = false,