Lines Matching refs:ps8622
102 static int ps8622_send_config(struct ps8622_bridge *ps8622) in ps8622_send_config() argument
104 struct i2c_client *cl = ps8622->client; in ps8622_send_config()
197 err = ps8622_set(cl, 0x01, 0x02, 0x80 | ps8622->max_lane_count); in ps8622_send_config()
202 err = ps8622_set(cl, 0x01, 0x21, 0x80 | ps8622->lane_count); in ps8622_send_config()
290 if (ps8622->bl) { in ps8622_send_config()
298 ps8622->bl->props.brightness); in ps8622_send_config()
343 struct ps8622_bridge *ps8622 = dev_get_drvdata(&bl->dev); in ps8622_backlight_update() local
350 if (!ps8622->enabled) in ps8622_backlight_update()
353 ret = ps8622_set(ps8622->client, 0x01, 0xa7, brightness); in ps8622_backlight_update()
364 struct ps8622_bridge *ps8622 = bridge_to_ps8622(bridge); in ps8622_pre_enable() local
367 if (ps8622->enabled) in ps8622_pre_enable()
370 gpiod_set_value(ps8622->gpio_rst, 0); in ps8622_pre_enable()
372 if (ps8622->v12) { in ps8622_pre_enable()
373 ret = regulator_enable(ps8622->v12); in ps8622_pre_enable()
378 if (drm_panel_prepare(ps8622->panel)) { in ps8622_pre_enable()
383 gpiod_set_value(ps8622->gpio_slp, 1); in ps8622_pre_enable()
398 gpiod_set_value(ps8622->gpio_rst, 1); in ps8622_pre_enable()
403 ret = ps8622_send_config(ps8622); in ps8622_pre_enable()
409 ps8622->enabled = true; in ps8622_pre_enable()
414 struct ps8622_bridge *ps8622 = bridge_to_ps8622(bridge); in ps8622_enable() local
416 if (drm_panel_enable(ps8622->panel)) { in ps8622_enable()
424 struct ps8622_bridge *ps8622 = bridge_to_ps8622(bridge); in ps8622_disable() local
426 if (drm_panel_disable(ps8622->panel)) { in ps8622_disable()
435 struct ps8622_bridge *ps8622 = bridge_to_ps8622(bridge); in ps8622_post_disable() local
437 if (!ps8622->enabled) in ps8622_post_disable()
440 ps8622->enabled = false; in ps8622_post_disable()
447 gpiod_set_value(ps8622->gpio_slp, 0); in ps8622_post_disable()
449 if (drm_panel_unprepare(ps8622->panel)) { in ps8622_post_disable()
454 if (ps8622->v12) in ps8622_post_disable()
455 regulator_disable(ps8622->v12); in ps8622_post_disable()
463 gpiod_set_value(ps8622->gpio_rst, 0); in ps8622_post_disable()
470 struct ps8622_bridge *ps8622; in ps8622_get_modes() local
472 ps8622 = connector_to_ps8622(connector); in ps8622_get_modes()
474 return drm_panel_get_modes(ps8622->panel); in ps8622_get_modes()
479 struct ps8622_bridge *ps8622; in ps8622_best_encoder() local
481 ps8622 = connector_to_ps8622(connector); in ps8622_best_encoder()
483 return ps8622->bridge.encoder; in ps8622_best_encoder()
514 struct ps8622_bridge *ps8622 = bridge_to_ps8622(bridge); in ps8622_attach() local
522 ps8622->connector.polled = DRM_CONNECTOR_POLL_HPD; in ps8622_attach()
523 ret = drm_connector_init(bridge->dev, &ps8622->connector, in ps8622_attach()
529 drm_connector_helper_add(&ps8622->connector, in ps8622_attach()
531 drm_connector_register(&ps8622->connector); in ps8622_attach()
532 drm_mode_connector_attach_encoder(&ps8622->connector, in ps8622_attach()
535 if (ps8622->panel) in ps8622_attach()
536 drm_panel_attach(ps8622->panel, &ps8622->connector); in ps8622_attach()
538 drm_helper_hpd_irq_event(ps8622->connector.dev); in ps8622_attach()
563 struct ps8622_bridge *ps8622; in ps8622_probe() local
566 ps8622 = devm_kzalloc(dev, sizeof(*ps8622), GFP_KERNEL); in ps8622_probe()
567 if (!ps8622) in ps8622_probe()
574 ps8622->panel = of_drm_find_panel(panel_node); in ps8622_probe()
576 if (!ps8622->panel) in ps8622_probe()
581 ps8622->client = client; in ps8622_probe()
583 ps8622->v12 = devm_regulator_get(dev, "vdd12"); in ps8622_probe()
584 if (IS_ERR(ps8622->v12)) { in ps8622_probe()
586 ps8622->v12 = NULL; in ps8622_probe()
589 ps8622->gpio_slp = devm_gpiod_get(dev, "sleep", GPIOD_OUT_HIGH); in ps8622_probe()
590 if (IS_ERR(ps8622->gpio_slp)) { in ps8622_probe()
591 ret = PTR_ERR(ps8622->gpio_slp); in ps8622_probe()
600 ps8622->gpio_rst = devm_gpiod_get(dev, "reset", GPIOD_OUT_HIGH); in ps8622_probe()
601 if (IS_ERR(ps8622->gpio_rst)) { in ps8622_probe()
602 ret = PTR_ERR(ps8622->gpio_rst); in ps8622_probe()
607 ps8622->max_lane_count = id->driver_data; in ps8622_probe()
610 &ps8622->lane_count)) { in ps8622_probe()
611 ps8622->lane_count = ps8622->max_lane_count; in ps8622_probe()
612 } else if (ps8622->lane_count > ps8622->max_lane_count) { in ps8622_probe()
615 ps8622->lane_count = ps8622->max_lane_count; in ps8622_probe()
619 ps8622->bl = backlight_device_register("ps8622-backlight", in ps8622_probe()
620 dev, ps8622, &ps8622_backlight_ops, in ps8622_probe()
622 if (IS_ERR(ps8622->bl)) { in ps8622_probe()
624 ret = PTR_ERR(ps8622->bl); in ps8622_probe()
625 ps8622->bl = NULL; in ps8622_probe()
628 ps8622->bl->props.max_brightness = PS8622_MAX_BRIGHTNESS; in ps8622_probe()
629 ps8622->bl->props.brightness = PS8622_MAX_BRIGHTNESS; in ps8622_probe()
632 ps8622->bridge.funcs = &ps8622_bridge_funcs; in ps8622_probe()
633 ps8622->bridge.of_node = dev->of_node; in ps8622_probe()
634 ret = drm_bridge_add(&ps8622->bridge); in ps8622_probe()
640 i2c_set_clientdata(client, ps8622); in ps8622_probe()
647 struct ps8622_bridge *ps8622 = i2c_get_clientdata(client); in ps8622_remove() local
649 if (ps8622->bl) in ps8622_remove()
650 backlight_device_unregister(ps8622->bl); in ps8622_remove()
652 drm_bridge_remove(&ps8622->bridge); in ps8622_remove()