Lines Matching refs:output
17 struct tegra_output *output = connector_to_output(connector); in tegra_connector_get_modes() local
25 if (output->panel) { in tegra_connector_get_modes()
26 err = output->panel->funcs->get_modes(output->panel); in tegra_connector_get_modes()
31 if (output->edid) in tegra_connector_get_modes()
32 edid = kmemdup(output->edid, sizeof(*edid), GFP_KERNEL); in tegra_connector_get_modes()
33 else if (output->ddc) in tegra_connector_get_modes()
34 edid = drm_get_edid(connector, output->ddc); in tegra_connector_get_modes()
49 struct tegra_output *output = connector_to_output(connector); in tegra_connector_mode_valid() local
53 err = tegra_output_check_mode(output, mode, &status); in tegra_connector_mode_valid()
63 struct tegra_output *output = connector_to_output(connector); in tegra_connector_best_encoder() local
65 return &output->encoder; in tegra_connector_best_encoder()
77 struct tegra_output *output = connector_to_output(connector); in tegra_connector_detect() local
80 if (output->ops->detect) in tegra_connector_detect()
81 return output->ops->detect(output); in tegra_connector_detect()
83 if (gpio_is_valid(output->hpd_gpio)) { in tegra_connector_detect()
84 if (gpio_get_value(output->hpd_gpio) == 0) in tegra_connector_detect()
89 if (!output->panel) in tegra_connector_detect()
137 struct tegra_output *output = encoder_to_output(encoder); in tegra_encoder_dpms() local
138 struct drm_panel *panel = output->panel; in tegra_encoder_dpms()
142 tegra_output_disable(output); in tegra_encoder_dpms()
146 tegra_output_enable(output); in tegra_encoder_dpms()
170 struct tegra_output *output = encoder_to_output(encoder); in tegra_encoder_mode_set() local
173 err = tegra_output_enable(output); in tegra_encoder_mode_set()
188 struct tegra_output *output = data; in hpd_irq() local
190 drm_helper_hpd_irq_event(output->connector.dev); in hpd_irq()
195 int tegra_output_probe(struct tegra_output *output) in tegra_output_probe() argument
201 if (!output->of_node) in tegra_output_probe()
202 output->of_node = output->dev->of_node; in tegra_output_probe()
204 panel = of_parse_phandle(output->of_node, "nvidia,panel", 0); in tegra_output_probe()
206 output->panel = of_drm_find_panel(panel); in tegra_output_probe()
207 if (!output->panel) in tegra_output_probe()
213 output->edid = of_get_property(output->of_node, "nvidia,edid", &size); in tegra_output_probe()
215 ddc = of_parse_phandle(output->of_node, "nvidia,ddc-i2c-bus", 0); in tegra_output_probe()
217 output->ddc = of_find_i2c_adapter_by_node(ddc); in tegra_output_probe()
218 if (!output->ddc) { in tegra_output_probe()
227 output->hpd_gpio = of_get_named_gpio_flags(output->of_node, in tegra_output_probe()
230 if (gpio_is_valid(output->hpd_gpio)) { in tegra_output_probe()
233 err = gpio_request_one(output->hpd_gpio, GPIOF_DIR_IN, in tegra_output_probe()
236 dev_err(output->dev, "gpio_request_one(): %d\n", err); in tegra_output_probe()
240 err = gpio_to_irq(output->hpd_gpio); in tegra_output_probe()
242 dev_err(output->dev, "gpio_to_irq(): %d\n", err); in tegra_output_probe()
243 gpio_free(output->hpd_gpio); in tegra_output_probe()
247 output->hpd_irq = err; in tegra_output_probe()
252 err = request_threaded_irq(output->hpd_irq, NULL, hpd_irq, in tegra_output_probe()
253 flags, "hpd", output); in tegra_output_probe()
255 dev_err(output->dev, "failed to request IRQ#%u: %d\n", in tegra_output_probe()
256 output->hpd_irq, err); in tegra_output_probe()
257 gpio_free(output->hpd_gpio); in tegra_output_probe()
261 output->connector.polled = DRM_CONNECTOR_POLL_HPD; in tegra_output_probe()
267 int tegra_output_remove(struct tegra_output *output) in tegra_output_remove() argument
269 if (gpio_is_valid(output->hpd_gpio)) { in tegra_output_remove()
270 free_irq(output->hpd_irq, output); in tegra_output_remove()
271 gpio_free(output->hpd_gpio); in tegra_output_remove()
274 if (output->ddc) in tegra_output_remove()
275 put_device(&output->ddc->dev); in tegra_output_remove()
280 int tegra_output_init(struct drm_device *drm, struct tegra_output *output) in tegra_output_init() argument
284 switch (output->type) { in tegra_output_init()
311 drm_connector_init(drm, &output->connector, &connector_funcs, in tegra_output_init()
313 drm_connector_helper_add(&output->connector, &connector_helper_funcs); in tegra_output_init()
314 output->connector.dpms = DRM_MODE_DPMS_OFF; in tegra_output_init()
316 if (output->panel) in tegra_output_init()
317 drm_panel_attach(output->panel, &output->connector); in tegra_output_init()
319 drm_encoder_init(drm, &output->encoder, &encoder_funcs, encoder); in tegra_output_init()
320 drm_encoder_helper_add(&output->encoder, &encoder_helper_funcs); in tegra_output_init()
322 drm_mode_connector_attach_encoder(&output->connector, &output->encoder); in tegra_output_init()
323 drm_connector_register(&output->connector); in tegra_output_init()
325 output->encoder.possible_crtcs = 0x3; in tegra_output_init()
330 int tegra_output_exit(struct tegra_output *output) in tegra_output_exit() argument