Lines Matching +full:vga +full:- +full:connector
2 * Copyright (C) 2015-2016 Free Electrons
3 * Copyright (C) 2015-2016 NextThing Co
5 * Maxime Ripard <maxime.ripard@free-electrons.com>
25 struct drm_connector connector; member
38 drm_connector_to_dumb_vga(struct drm_connector *connector) in drm_connector_to_dumb_vga() argument
40 return container_of(connector, struct dumb_vga, connector); in drm_connector_to_dumb_vga()
43 static int dumb_vga_get_modes(struct drm_connector *connector) in dumb_vga_get_modes() argument
45 struct dumb_vga *vga = drm_connector_to_dumb_vga(connector); in dumb_vga_get_modes() local
49 if (IS_ERR(vga->ddc)) in dumb_vga_get_modes()
52 edid = drm_get_edid(connector, vga->ddc); in dumb_vga_get_modes()
58 drm_connector_update_edid_property(connector, edid); in dumb_vga_get_modes()
59 ret = drm_add_edid_modes(connector, edid); in dumb_vga_get_modes()
68 ret = drm_add_modes_noedid(connector, 1920, 1200); in dumb_vga_get_modes()
71 drm_set_preferred_mode(connector, 1024, 768); in dumb_vga_get_modes()
81 dumb_vga_connector_detect(struct drm_connector *connector, bool force) in dumb_vga_connector_detect() argument
83 struct dumb_vga *vga = drm_connector_to_dumb_vga(connector); in dumb_vga_connector_detect() local
91 if (!IS_ERR(vga->ddc) && drm_probe_ddc(vga->ddc)) in dumb_vga_connector_detect()
108 struct dumb_vga *vga = drm_bridge_to_dumb_vga(bridge); in dumb_vga_attach() local
111 if (!bridge->encoder) { in dumb_vga_attach()
113 return -ENODEV; in dumb_vga_attach()
116 drm_connector_helper_add(&vga->connector, in dumb_vga_attach()
118 ret = drm_connector_init(bridge->dev, &vga->connector, in dumb_vga_attach()
121 DRM_ERROR("Failed to initialize connector\n"); in dumb_vga_attach()
125 drm_connector_attach_encoder(&vga->connector, in dumb_vga_attach()
126 bridge->encoder); in dumb_vga_attach()
133 struct dumb_vga *vga = drm_bridge_to_dumb_vga(bridge); in dumb_vga_enable() local
136 if (vga->vdd) in dumb_vga_enable()
137 ret = regulator_enable(vga->vdd); in dumb_vga_enable()
145 struct dumb_vga *vga = drm_bridge_to_dumb_vga(bridge); in dumb_vga_disable() local
147 if (vga->vdd) in dumb_vga_disable()
148 regulator_disable(vga->vdd); in dumb_vga_disable()
162 remote = of_graph_get_remote_node(dev->of_node, 1, -1); in dumb_vga_retrieve_ddc()
164 return ERR_PTR(-EINVAL); in dumb_vga_retrieve_ddc()
166 phandle = of_parse_phandle(remote, "ddc-i2c-bus", 0); in dumb_vga_retrieve_ddc()
169 return ERR_PTR(-ENODEV); in dumb_vga_retrieve_ddc()
174 return ERR_PTR(-EPROBE_DEFER); in dumb_vga_retrieve_ddc()
181 struct dumb_vga *vga; in dumb_vga_probe() local
183 vga = devm_kzalloc(&pdev->dev, sizeof(*vga), GFP_KERNEL); in dumb_vga_probe()
184 if (!vga) in dumb_vga_probe()
185 return -ENOMEM; in dumb_vga_probe()
186 platform_set_drvdata(pdev, vga); in dumb_vga_probe()
188 vga->vdd = devm_regulator_get_optional(&pdev->dev, "vdd"); in dumb_vga_probe()
189 if (IS_ERR(vga->vdd)) { in dumb_vga_probe()
190 int ret = PTR_ERR(vga->vdd); in dumb_vga_probe()
191 if (ret == -EPROBE_DEFER) in dumb_vga_probe()
192 return -EPROBE_DEFER; in dumb_vga_probe()
193 vga->vdd = NULL; in dumb_vga_probe()
194 dev_dbg(&pdev->dev, "No vdd regulator found: %d\n", ret); in dumb_vga_probe()
197 vga->ddc = dumb_vga_retrieve_ddc(&pdev->dev); in dumb_vga_probe()
198 if (IS_ERR(vga->ddc)) { in dumb_vga_probe()
199 if (PTR_ERR(vga->ddc) == -ENODEV) { in dumb_vga_probe()
200 dev_dbg(&pdev->dev, in dumb_vga_probe()
203 dev_err(&pdev->dev, "Couldn't retrieve i2c bus\n"); in dumb_vga_probe()
204 return PTR_ERR(vga->ddc); in dumb_vga_probe()
208 vga->bridge.funcs = &dumb_vga_bridge_funcs; in dumb_vga_probe()
209 vga->bridge.of_node = pdev->dev.of_node; in dumb_vga_probe()
210 vga->bridge.timings = of_device_get_match_data(&pdev->dev); in dumb_vga_probe()
212 drm_bridge_add(&vga->bridge); in dumb_vga_probe()
219 struct dumb_vga *vga = platform_get_drvdata(pdev); in dumb_vga_remove() local
221 drm_bridge_remove(&vga->bridge); in dumb_vga_remove()
223 if (!IS_ERR(vga->ddc)) in dumb_vga_remove()
224 i2c_put_adapter(vga->ddc); in dumb_vga_remove()
269 .compatible = "dumb-vga-dac",
292 .name = "dumb-vga-dac",
298 MODULE_AUTHOR("Maxime Ripard <maxime.ripard@free-electrons.com>");
299 MODULE_DESCRIPTION("Dumb VGA DAC bridge driver");