Lines Matching defs:ps_bridge
76 static int ps8640_bridge_vdo_control(struct ps8640 *ps_bridge,
79 struct i2c_client *client = ps_bridge->page[PAGE3_DSI_CNTL1];
95 static void ps8640_bridge_poweron(struct ps8640 *ps_bridge)
97 struct i2c_client *client = ps_bridge->page[PAGE2_TOP_CNTL];
101 if (ps_bridge->powered)
104 ret = regulator_bulk_enable(ARRAY_SIZE(ps_bridge->supplies),
105 ps_bridge->supplies);
111 gpiod_set_value(ps_bridge->gpio_powerdown, 0);
112 gpiod_set_value(ps_bridge->gpio_reset, 1);
114 gpiod_set_value(ps_bridge->gpio_reset, 0);
166 ps_bridge->powered = true;
171 regulator_bulk_disable(ARRAY_SIZE(ps_bridge->supplies),
172 ps_bridge->supplies);
175 static void ps8640_bridge_poweroff(struct ps8640 *ps_bridge)
179 if (!ps_bridge->powered)
182 gpiod_set_value(ps_bridge->gpio_reset, 1);
183 gpiod_set_value(ps_bridge->gpio_powerdown, 1);
184 ret = regulator_bulk_disable(ARRAY_SIZE(ps_bridge->supplies),
185 ps_bridge->supplies);
189 ps_bridge->powered = false;
194 struct ps8640 *ps_bridge = bridge_to_ps8640(bridge);
197 ps8640_bridge_poweron(ps_bridge);
199 ret = ps8640_bridge_vdo_control(ps_bridge, ENABLE);
201 ps8640_bridge_poweroff(ps_bridge);
206 struct ps8640 *ps_bridge = bridge_to_ps8640(bridge);
208 ps8640_bridge_vdo_control(ps_bridge, DISABLE);
209 ps8640_bridge_poweroff(ps_bridge);
215 struct ps8640 *ps_bridge = bridge_to_ps8640(bridge);
216 struct device *dev = &ps_bridge->page[0]->dev;
251 ps_bridge->dsi = dsi;
263 return drm_bridge_attach(bridge->encoder, ps_bridge->panel_bridge,
264 &ps_bridge->bridge, flags);
274 struct ps8640 *ps_bridge = bridge_to_ps8640(bridge);
275 bool poweroff = !ps_bridge->powered;
293 ps_bridge->page[PAGE0_DP_CNTL]->adapter);
316 struct ps8640 *ps_bridge;
321 ps_bridge = devm_kzalloc(dev, sizeof(*ps_bridge), GFP_KERNEL);
322 if (!ps_bridge)
332 ps_bridge->panel_bridge = devm_drm_panel_bridge_add(dev, panel);
333 if (IS_ERR(ps_bridge->panel_bridge))
334 return PTR_ERR(ps_bridge->panel_bridge);
336 ps_bridge->supplies[0].supply = "vdd12";
337 ps_bridge->supplies[1].supply = "vdd33";
338 ret = devm_regulator_bulk_get(dev, ARRAY_SIZE(ps_bridge->supplies),
339 ps_bridge->supplies);
343 ps_bridge->gpio_powerdown = devm_gpiod_get(&client->dev, "powerdown",
345 if (IS_ERR(ps_bridge->gpio_powerdown))
346 return PTR_ERR(ps_bridge->gpio_powerdown);
351 ps_bridge->gpio_reset = devm_gpiod_get(&client->dev, "reset",
353 if (IS_ERR(ps_bridge->gpio_reset))
354 return PTR_ERR(ps_bridge->gpio_reset);
356 ps_bridge->bridge.funcs = &ps8640_bridge_funcs;
357 ps_bridge->bridge.of_node = dev->of_node;
358 ps_bridge->bridge.ops = DRM_BRIDGE_OP_EDID;
359 ps_bridge->bridge.type = DRM_MODE_CONNECTOR_eDP;
361 ps_bridge->page[PAGE0_DP_CNTL] = client;
363 for (i = 1; i < ARRAY_SIZE(ps_bridge->page); i++) {
364 ps_bridge->page[i] = devm_i2c_new_dummy_device(&client->dev,
367 if (IS_ERR(ps_bridge->page[i])) {
370 return PTR_ERR(ps_bridge->page[i]);
374 i2c_set_clientdata(client, ps_bridge);
376 drm_bridge_add(&ps_bridge->bridge);
383 struct ps8640 *ps_bridge = i2c_get_clientdata(client);
385 drm_bridge_remove(&ps_bridge->bridge);