Lines Matching refs:bu18tl82

33 struct bu18tl82 {  struct
53 static struct bu18tl82 *bridge_to_bu18tl82(struct drm_bridge *bridge) in bridge_to_bu18tl82()
55 return container_of(bridge, struct bu18tl82, base); in bridge_to_bu18tl82()
91 static int bu18tl82_get_init_seq(struct bu18tl82 *bu18tl82) in bu18tl82_get_init_seq() argument
93 struct device *dev = bu18tl82->dev; in bu18tl82_get_init_seq()
104 bu18tl82->serdes_init_seq = devm_kzalloc(dev, sizeof(*bu18tl82->serdes_init_seq), in bu18tl82_get_init_seq()
106 if (!bu18tl82->serdes_init_seq) in bu18tl82_get_init_seq()
109 err = bu18tl82_parse_init_seq(dev, data, len, bu18tl82->serdes_init_seq); in bu18tl82_get_init_seq()
121 struct bu18tl82 *bu18tl82 = bridge_to_bu18tl82(bridge); in bu18tl82_bridge_get_modes() local
123 return drm_bridge_get_modes(bu18tl82->bridge, connector); in bu18tl82_bridge_get_modes()
126 static struct mipi_dsi_device *bu18tl82_attach_dsi(struct bu18tl82 *bu18tl82, in bu18tl82_attach_dsi() argument
136 dev_err(bu18tl82->dev, "failed to find dsi host\n"); in bu18tl82_attach_dsi()
142 dev_err(bu18tl82->dev, "failed to create dsi device\n"); in bu18tl82_attach_dsi()
153 dev_err(bu18tl82->dev, "failed to attach dsi to host\n"); in bu18tl82_attach_dsi()
164 struct bu18tl82 *bu18tl82 = bridge_to_bu18tl82(bridge); in bu18tl82_bridge_attach() local
167 ret = drm_of_find_panel_or_bridge(bu18tl82->dev->of_node, 1, -1, in bu18tl82_bridge_attach()
168 NULL, &bu18tl82->bridge); in bu18tl82_bridge_attach()
172 if (bu18tl82->sel_mipi) { in bu18tl82_bridge_attach()
174 bu18tl82->dsi = bu18tl82_attach_dsi(bu18tl82, bu18tl82->dsi_node); in bu18tl82_bridge_attach()
175 if (IS_ERR(bu18tl82->dsi)) in bu18tl82_bridge_attach()
176 return PTR_ERR(bu18tl82->dsi); in bu18tl82_bridge_attach()
179 ret = drm_bridge_attach(bridge->encoder, bu18tl82->bridge, in bu18tl82_bridge_attach()
182 if (bu18tl82->sel_mipi) in bu18tl82_bridge_attach()
183 mipi_dsi_device_unregister(bu18tl82->dsi); in bu18tl82_bridge_attach()
185 dev_err(bu18tl82->dev, "failed to attach bridge\n"); in bu18tl82_bridge_attach()
194 struct bu18tl82 *bu18tl82 = bridge_to_bu18tl82(bridge); in bu18tl82_bridge_detach() local
196 if (bu18tl82->sel_mipi) { in bu18tl82_bridge_detach()
197 mipi_dsi_detach(bu18tl82->dsi); in bu18tl82_bridge_detach()
198 mipi_dsi_device_unregister(bu18tl82->dsi); in bu18tl82_bridge_detach()
212 struct bu18tl82 *bu18tl82 = bridge_to_bu18tl82(bridge); in bu18tl82_bridge_pre_enable() local
213 struct serdes_init_seq *init_seq = bu18tl82->serdes_init_seq; in bu18tl82_bridge_pre_enable()
216 if (bu18tl82->enable_gpio) { in bu18tl82_bridge_pre_enable()
217 gpiod_direction_output(bu18tl82->enable_gpio, 1); in bu18tl82_bridge_pre_enable()
221 if (bu18tl82->reset_gpio) { in bu18tl82_bridge_pre_enable()
222 gpiod_direction_output(bu18tl82->reset_gpio, 0); in bu18tl82_bridge_pre_enable()
226 ret = regmap_multi_reg_write(bu18tl82->regmap, init_seq->reg_sequence, in bu18tl82_bridge_pre_enable()
229 dev_err(bu18tl82->dev, "failed to set register setting: %d\n", ret); in bu18tl82_bridge_pre_enable()
237 struct bu18tl82 *bu18tl82 = bridge_to_bu18tl82(bridge); in bu18tl82_bridge_post_disable() local
239 if (bu18tl82->reset_gpio) in bu18tl82_bridge_post_disable()
240 gpiod_direction_output(bu18tl82->reset_gpio, 1); in bu18tl82_bridge_post_disable()
242 if (bu18tl82->enable_gpio) in bu18tl82_bridge_post_disable()
243 gpiod_direction_output(bu18tl82->enable_gpio, 0); in bu18tl82_bridge_post_disable()
260 struct bu18tl82 *bu18tl82; in bu18tl82_i2c_probe() local
263 bu18tl82 = devm_kzalloc(dev, sizeof(*bu18tl82), GFP_KERNEL); in bu18tl82_i2c_probe()
264 if (!bu18tl82) in bu18tl82_i2c_probe()
267 bu18tl82->dev = dev; in bu18tl82_i2c_probe()
268 i2c_set_clientdata(client, bu18tl82); in bu18tl82_i2c_probe()
270 bu18tl82->reset_gpio = devm_gpiod_get_optional(dev, "reset", GPIOD_ASIS); in bu18tl82_i2c_probe()
271 if (IS_ERR(bu18tl82->reset_gpio)) in bu18tl82_i2c_probe()
272 return dev_err_probe(dev, PTR_ERR(bu18tl82->reset_gpio), in bu18tl82_i2c_probe()
275 bu18tl82->enable_gpio = devm_gpiod_get_optional(dev, "enable", GPIOD_ASIS); in bu18tl82_i2c_probe()
276 if (IS_ERR(bu18tl82->enable_gpio)) in bu18tl82_i2c_probe()
277 return dev_err_probe(dev, PTR_ERR(bu18tl82->enable_gpio), in bu18tl82_i2c_probe()
280 bu18tl82->regmap = devm_regmap_init_i2c(client, &bu18tl82_regmap_config); in bu18tl82_i2c_probe()
281 if (IS_ERR(bu18tl82->regmap)) in bu18tl82_i2c_probe()
282 return dev_err_probe(dev, PTR_ERR(bu18tl82->regmap), in bu18tl82_i2c_probe()
285 bu18tl82->sel_mipi = of_property_read_bool(dev->of_node, "sel-mipi"); in bu18tl82_i2c_probe()
287 if (bu18tl82->sel_mipi) { in bu18tl82_i2c_probe()
288 bu18tl82->dsi_node = of_graph_get_remote_node(dev->of_node, 0, -1); in bu18tl82_i2c_probe()
289 if (!bu18tl82->dsi_node) in bu18tl82_i2c_probe()
294 ret = bu18tl82_get_init_seq(bu18tl82); in bu18tl82_i2c_probe()
298 bu18tl82->base.funcs = &bu18tl82_bridge_funcs; in bu18tl82_i2c_probe()
299 bu18tl82->base.of_node = dev->of_node; in bu18tl82_i2c_probe()
300 bu18tl82->base.ops = DRM_BRIDGE_OP_MODES; in bu18tl82_i2c_probe()
302 drm_bridge_add(&bu18tl82->base); in bu18tl82_i2c_probe()
309 struct bu18tl82 *bu18tl82 = i2c_get_clientdata(client); in bu18tl82_i2c_remove() local
311 drm_bridge_remove(&bu18tl82->base); in bu18tl82_i2c_remove()