Lines Matching refs:output
18 struct tegra_output *output = connector_to_output(connector); in tegra_output_connector_get_modes() local
26 if (output->panel) { in tegra_output_connector_get_modes()
27 err = output->panel->funcs->get_modes(output->panel); in tegra_output_connector_get_modes()
32 if (output->edid) in tegra_output_connector_get_modes()
33 edid = kmemdup(output->edid, sizeof(*edid), GFP_KERNEL); in tegra_output_connector_get_modes()
34 else if (output->ddc) in tegra_output_connector_get_modes()
35 edid = drm_get_edid(connector, output->ddc); in tegra_output_connector_get_modes()
50 struct tegra_output *output = connector_to_output(connector); in tegra_output_connector_best_encoder() local
52 return &output->encoder; in tegra_output_connector_best_encoder()
58 struct tegra_output *output = connector_to_output(connector); in tegra_output_connector_detect() local
61 if (gpio_is_valid(output->hpd_gpio)) { in tegra_output_connector_detect()
62 if (gpio_get_value(output->hpd_gpio) == 0) in tegra_output_connector_detect()
67 if (!output->panel) in tegra_output_connector_detect()
89 struct tegra_output *output = data; in hpd_irq() local
91 if (output->connector.dev) in hpd_irq()
92 drm_helper_hpd_irq_event(output->connector.dev); in hpd_irq()
97 int tegra_output_probe(struct tegra_output *output) in tegra_output_probe() argument
103 if (!output->of_node) in tegra_output_probe()
104 output->of_node = output->dev->of_node; in tegra_output_probe()
106 panel = of_parse_phandle(output->of_node, "nvidia,panel", 0); in tegra_output_probe()
108 output->panel = of_drm_find_panel(panel); in tegra_output_probe()
109 if (!output->panel) in tegra_output_probe()
115 output->edid = of_get_property(output->of_node, "nvidia,edid", &size); in tegra_output_probe()
117 ddc = of_parse_phandle(output->of_node, "nvidia,ddc-i2c-bus", 0); in tegra_output_probe()
119 output->ddc = of_find_i2c_adapter_by_node(ddc); in tegra_output_probe()
120 if (!output->ddc) { in tegra_output_probe()
129 output->hpd_gpio = of_get_named_gpio_flags(output->of_node, in tegra_output_probe()
132 if (gpio_is_valid(output->hpd_gpio)) { in tegra_output_probe()
135 err = gpio_request_one(output->hpd_gpio, GPIOF_DIR_IN, in tegra_output_probe()
138 dev_err(output->dev, "gpio_request_one(): %d\n", err); in tegra_output_probe()
142 err = gpio_to_irq(output->hpd_gpio); in tegra_output_probe()
144 dev_err(output->dev, "gpio_to_irq(): %d\n", err); in tegra_output_probe()
145 gpio_free(output->hpd_gpio); in tegra_output_probe()
149 output->hpd_irq = err; in tegra_output_probe()
154 err = request_threaded_irq(output->hpd_irq, NULL, hpd_irq, in tegra_output_probe()
155 flags, "hpd", output); in tegra_output_probe()
157 dev_err(output->dev, "failed to request IRQ#%u: %d\n", in tegra_output_probe()
158 output->hpd_irq, err); in tegra_output_probe()
159 gpio_free(output->hpd_gpio); in tegra_output_probe()
163 output->connector.polled = DRM_CONNECTOR_POLL_HPD; in tegra_output_probe()
170 disable_irq(output->hpd_irq); in tegra_output_probe()
176 void tegra_output_remove(struct tegra_output *output) in tegra_output_remove() argument
178 if (gpio_is_valid(output->hpd_gpio)) { in tegra_output_remove()
179 free_irq(output->hpd_irq, output); in tegra_output_remove()
180 gpio_free(output->hpd_gpio); in tegra_output_remove()
183 if (output->ddc) in tegra_output_remove()
184 put_device(&output->ddc->dev); in tegra_output_remove()
187 int tegra_output_init(struct drm_device *drm, struct tegra_output *output) in tegra_output_init() argument
191 if (output->panel) { in tegra_output_init()
192 err = drm_panel_attach(output->panel, &output->connector); in tegra_output_init()
201 if (gpio_is_valid(output->hpd_gpio)) in tegra_output_init()
202 enable_irq(output->hpd_irq); in tegra_output_init()
207 void tegra_output_exit(struct tegra_output *output) in tegra_output_exit() argument
213 if (gpio_is_valid(output->hpd_gpio)) in tegra_output_exit()
214 disable_irq(output->hpd_irq); in tegra_output_exit()
216 if (output->panel) in tegra_output_exit()
217 drm_panel_detach(output->panel); in tegra_output_exit()