struct device *dev;
        struct drm_bridge bridge;
        struct drm_bridge *panel_bridge;
+       struct drm_bridge_timings timings;
        struct regulator *vcc;
        struct gpio_desc *powerdown_gpio;
        u32 connector_type;
        struct device_node *bus_node;
        struct drm_panel *panel;
        struct lvds_codec *lvds_codec;
+       u32 val;
        int ret;
 
        lvds_codec = devm_kzalloc(dev, sizeof(*lvds_codec), GFP_KERNEL);
                }
        }
 
+       /*
+        * Encoder might sample data on different clock edge than the display,
+        * for example OnSemi FIN3385 has a dedicated strapping pin to select
+        * the sampling edge.
+        */
+       if (lvds_codec->connector_type == DRM_MODE_CONNECTOR_LVDS &&
+           !of_property_read_u32(dev->of_node, "pclk-sample", &val)) {
+               lvds_codec->timings.input_bus_flags = val ?
+                       DRM_BUS_FLAG_PIXDATA_SAMPLE_POSEDGE :
+                       DRM_BUS_FLAG_PIXDATA_SAMPLE_NEGEDGE;
+       }
+
        /*
         * The panel_bridge bridge is attached to the panel's of_node,
         * but we need a bridge attached to our of_node for our user
         * to look up.
         */
        lvds_codec->bridge.of_node = dev->of_node;
+       lvds_codec->bridge.timings = &lvds_codec->timings;
        drm_bridge_add(&lvds_codec->bridge);
 
        platform_set_drvdata(pdev, lvds_codec);