Lines Matching refs:lvds_codec
18 struct lvds_codec {
27 static inline struct lvds_codec *to_lvds_codec(struct drm_bridge *bridge)
29 return container_of(bridge, struct lvds_codec, bridge);
35 struct lvds_codec *lvds_codec = to_lvds_codec(bridge);
37 return drm_bridge_attach(bridge->encoder, lvds_codec->panel_bridge,
43 struct lvds_codec *lvds_codec = to_lvds_codec(bridge);
46 ret = regulator_enable(lvds_codec->vcc);
48 dev_err(lvds_codec->dev,
53 if (lvds_codec->powerdown_gpio)
54 gpiod_set_value_cansleep(lvds_codec->powerdown_gpio, 0);
59 struct lvds_codec *lvds_codec = to_lvds_codec(bridge);
62 if (lvds_codec->powerdown_gpio)
63 gpiod_set_value_cansleep(lvds_codec->powerdown_gpio, 1);
65 ret = regulator_disable(lvds_codec->vcc);
67 dev_err(lvds_codec->dev,
82 struct lvds_codec *lvds_codec;
85 lvds_codec = devm_kzalloc(dev, sizeof(*lvds_codec), GFP_KERNEL);
86 if (!lvds_codec)
89 lvds_codec->dev = &pdev->dev;
90 lvds_codec->connector_type = (uintptr_t)of_device_get_match_data(dev);
92 lvds_codec->vcc = devm_regulator_get(lvds_codec->dev, "power");
93 if (IS_ERR(lvds_codec->vcc)) {
94 ret = PTR_ERR(lvds_codec->vcc);
96 dev_err(lvds_codec->dev,
101 lvds_codec->powerdown_gpio = devm_gpiod_get_optional(dev, "powerdown",
103 if (IS_ERR(lvds_codec->powerdown_gpio))
104 return dev_err_probe(dev, PTR_ERR(lvds_codec->powerdown_gpio),
121 lvds_codec->panel_bridge =
123 lvds_codec->connector_type);
124 if (IS_ERR(lvds_codec->panel_bridge))
125 return PTR_ERR(lvds_codec->panel_bridge);
132 lvds_codec->bridge.of_node = dev->of_node;
133 lvds_codec->bridge.funcs = &funcs;
134 drm_bridge_add(&lvds_codec->bridge);
136 platform_set_drvdata(pdev, lvds_codec);
143 struct lvds_codec *lvds_codec = platform_get_drvdata(pdev);
145 drm_bridge_remove(&lvds_codec->bridge);