Lines Matching refs:output
16 struct tegra_output *output = connector_to_output(connector); in tegra_output_connector_get_modes() local
24 if (output->panel) { in tegra_output_connector_get_modes()
25 err = output->panel->funcs->get_modes(output->panel); in tegra_output_connector_get_modes()
30 if (output->edid) in tegra_output_connector_get_modes()
31 edid = kmemdup(output->edid, sizeof(*edid), GFP_KERNEL); in tegra_output_connector_get_modes()
32 else if (output->ddc) in tegra_output_connector_get_modes()
33 edid = drm_get_edid(connector, output->ddc); in tegra_output_connector_get_modes()
48 struct tegra_output *output = connector_to_output(connector); in tegra_output_connector_best_encoder() local
50 return &output->encoder; in tegra_output_connector_best_encoder()
56 struct tegra_output *output = connector_to_output(connector); in tegra_output_connector_detect() local
59 if (gpio_is_valid(output->hpd_gpio)) { in tegra_output_connector_detect()
60 if (output->hpd_gpio_flags & OF_GPIO_ACTIVE_LOW) { in tegra_output_connector_detect()
61 if (gpio_get_value(output->hpd_gpio) != 0) in tegra_output_connector_detect()
66 if (gpio_get_value(output->hpd_gpio) == 0) in tegra_output_connector_detect()
72 if (!output->panel) in tegra_output_connector_detect()
94 struct tegra_output *output = data; in hpd_irq() local
96 if (output->connector.dev) in hpd_irq()
97 drm_helper_hpd_irq_event(output->connector.dev); in hpd_irq()
102 int tegra_output_probe(struct tegra_output *output) in tegra_output_probe() argument
107 if (!output->of_node) in tegra_output_probe()
108 output->of_node = output->dev->of_node; in tegra_output_probe()
110 panel = of_parse_phandle(output->of_node, "nvidia,panel", 0); in tegra_output_probe()
112 output->panel = of_drm_find_panel(panel); in tegra_output_probe()
113 if (!output->panel) in tegra_output_probe()
119 output->edid = of_get_property(output->of_node, "nvidia,edid", &size); in tegra_output_probe()
121 ddc = of_parse_phandle(output->of_node, "nvidia,ddc-i2c-bus", 0); in tegra_output_probe()
123 output->ddc = of_find_i2c_adapter_by_node(ddc); in tegra_output_probe()
124 if (!output->ddc) { in tegra_output_probe()
133 output->hpd_gpio = of_get_named_gpio_flags(output->of_node, in tegra_output_probe()
135 &output->hpd_gpio_flags); in tegra_output_probe()
136 if (gpio_is_valid(output->hpd_gpio)) { in tegra_output_probe()
139 err = gpio_request_one(output->hpd_gpio, GPIOF_DIR_IN, in tegra_output_probe()
142 dev_err(output->dev, "gpio_request_one(): %d\n", err); in tegra_output_probe()
146 err = gpio_to_irq(output->hpd_gpio); in tegra_output_probe()
148 dev_err(output->dev, "gpio_to_irq(): %d\n", err); in tegra_output_probe()
149 gpio_free(output->hpd_gpio); in tegra_output_probe()
153 output->hpd_irq = err; in tegra_output_probe()
158 err = request_threaded_irq(output->hpd_irq, NULL, hpd_irq, in tegra_output_probe()
159 flags, "hpd", output); in tegra_output_probe()
161 dev_err(output->dev, "failed to request IRQ#%u: %d\n", in tegra_output_probe()
162 output->hpd_irq, err); in tegra_output_probe()
163 gpio_free(output->hpd_gpio); in tegra_output_probe()
167 output->connector.polled = DRM_CONNECTOR_POLL_HPD; in tegra_output_probe()
174 disable_irq(output->hpd_irq); in tegra_output_probe()
180 void tegra_output_remove(struct tegra_output *output) in tegra_output_remove() argument
182 if (gpio_is_valid(output->hpd_gpio)) { in tegra_output_remove()
183 free_irq(output->hpd_irq, output); in tegra_output_remove()
184 gpio_free(output->hpd_gpio); in tegra_output_remove()
187 if (output->ddc) in tegra_output_remove()
188 put_device(&output->ddc->dev); in tegra_output_remove()
191 int tegra_output_init(struct drm_device *drm, struct tegra_output *output) in tegra_output_init() argument
195 if (output->panel) { in tegra_output_init()
196 err = drm_panel_attach(output->panel, &output->connector); in tegra_output_init()
205 if (gpio_is_valid(output->hpd_gpio)) in tegra_output_init()
206 enable_irq(output->hpd_irq); in tegra_output_init()
211 void tegra_output_exit(struct tegra_output *output) in tegra_output_exit() argument
217 if (gpio_is_valid(output->hpd_gpio)) in tegra_output_exit()
218 disable_irq(output->hpd_irq); in tegra_output_exit()
220 if (output->panel) in tegra_output_exit()
221 drm_panel_detach(output->panel); in tegra_output_exit()