Lines Matching refs:lvds_codec
20 struct lvds_codec { struct
31 static inline struct lvds_codec *to_lvds_codec(struct drm_bridge *bridge) in to_lvds_codec() argument
33 return container_of(bridge, struct lvds_codec, bridge); in to_lvds_codec()
40 struct lvds_codec *lvds_codec = to_lvds_codec(bridge); in lvds_codec_attach() local
42 return drm_bridge_attach(encoder, lvds_codec->panel_bridge, in lvds_codec_attach()
48 struct lvds_codec *lvds_codec = to_lvds_codec(bridge); in lvds_codec_enable() local
51 ret = regulator_enable(lvds_codec->vcc); in lvds_codec_enable()
53 dev_err(lvds_codec->dev, in lvds_codec_enable()
58 if (lvds_codec->powerdown_gpio) in lvds_codec_enable()
59 gpiod_set_value_cansleep(lvds_codec->powerdown_gpio, 0); in lvds_codec_enable()
64 struct lvds_codec *lvds_codec = to_lvds_codec(bridge); in lvds_codec_disable() local
67 if (lvds_codec->powerdown_gpio) in lvds_codec_disable()
68 gpiod_set_value_cansleep(lvds_codec->powerdown_gpio, 1); in lvds_codec_disable()
70 ret = regulator_disable(lvds_codec->vcc); in lvds_codec_disable()
72 dev_err(lvds_codec->dev, in lvds_codec_disable()
85 struct lvds_codec *lvds_codec = to_lvds_codec(bridge); in lvds_codec_atomic_get_input_bus_fmts() local
95 input_fmts[0] = lvds_codec->bus_format; in lvds_codec_atomic_get_input_bus_fmts()
117 struct lvds_codec *lvds_codec; in lvds_codec_probe() local
121 lvds_codec = devm_drm_bridge_alloc(dev, struct lvds_codec, bridge, in lvds_codec_probe()
123 if (IS_ERR(lvds_codec)) in lvds_codec_probe()
124 return PTR_ERR(lvds_codec); in lvds_codec_probe()
126 lvds_codec->dev = &pdev->dev; in lvds_codec_probe()
127 lvds_codec->connector_type = (uintptr_t)of_device_get_match_data(dev); in lvds_codec_probe()
129 lvds_codec->vcc = devm_regulator_get(lvds_codec->dev, "power"); in lvds_codec_probe()
130 if (IS_ERR(lvds_codec->vcc)) in lvds_codec_probe()
131 return dev_err_probe(dev, PTR_ERR(lvds_codec->vcc), in lvds_codec_probe()
134 lvds_codec->powerdown_gpio = devm_gpiod_get_optional(dev, "powerdown", in lvds_codec_probe()
136 if (IS_ERR(lvds_codec->powerdown_gpio)) in lvds_codec_probe()
137 return dev_err_probe(dev, PTR_ERR(lvds_codec->powerdown_gpio), in lvds_codec_probe()
154 lvds_codec->panel_bridge = in lvds_codec_probe()
156 lvds_codec->connector_type); in lvds_codec_probe()
157 if (IS_ERR(lvds_codec->panel_bridge)) in lvds_codec_probe()
158 return PTR_ERR(lvds_codec->panel_bridge); in lvds_codec_probe()
166 if (lvds_codec->connector_type != DRM_MODE_CONNECTOR_LVDS) { in lvds_codec_probe()
181 lvds_codec->bus_format = ret; in lvds_codec_probe()
184 lvds_codec->bus_format = MEDIA_BUS_FMT_RGB888_1X24; in lvds_codec_probe()
192 if (lvds_codec->connector_type == DRM_MODE_CONNECTOR_LVDS && in lvds_codec_probe()
194 lvds_codec->timings.input_bus_flags = val ? in lvds_codec_probe()
204 lvds_codec->bridge.of_node = dev->of_node; in lvds_codec_probe()
205 lvds_codec->bridge.timings = &lvds_codec->timings; in lvds_codec_probe()
206 drm_bridge_add(&lvds_codec->bridge); in lvds_codec_probe()
208 platform_set_drvdata(pdev, lvds_codec); in lvds_codec_probe()
215 struct lvds_codec *lvds_codec = platform_get_drvdata(pdev); in lvds_codec_remove() local
217 drm_bridge_remove(&lvds_codec->bridge); in lvds_codec_remove()