thc63              47 drivers/gpu/drm/bridge/thc63lvd1024.c 	struct thc63_dev *thc63 = to_thc63(bridge);
thc63              49 drivers/gpu/drm/bridge/thc63lvd1024.c 	return drm_bridge_attach(bridge->encoder, thc63->next, bridge);
thc63              55 drivers/gpu/drm/bridge/thc63lvd1024.c 	struct thc63_dev *thc63 = to_thc63(bridge);
thc63              65 drivers/gpu/drm/bridge/thc63lvd1024.c 	if (thc63->timings.dual_link) {
thc63              84 drivers/gpu/drm/bridge/thc63lvd1024.c 	struct thc63_dev *thc63 = to_thc63(bridge);
thc63              87 drivers/gpu/drm/bridge/thc63lvd1024.c 	ret = regulator_enable(thc63->vcc);
thc63              89 drivers/gpu/drm/bridge/thc63lvd1024.c 		dev_err(thc63->dev,
thc63              94 drivers/gpu/drm/bridge/thc63lvd1024.c 	gpiod_set_value(thc63->pdwn, 0);
thc63              95 drivers/gpu/drm/bridge/thc63lvd1024.c 	gpiod_set_value(thc63->oe, 1);
thc63             100 drivers/gpu/drm/bridge/thc63lvd1024.c 	struct thc63_dev *thc63 = to_thc63(bridge);
thc63             103 drivers/gpu/drm/bridge/thc63lvd1024.c 	gpiod_set_value(thc63->oe, 0);
thc63             104 drivers/gpu/drm/bridge/thc63lvd1024.c 	gpiod_set_value(thc63->pdwn, 1);
thc63             106 drivers/gpu/drm/bridge/thc63lvd1024.c 	ret = regulator_disable(thc63->vcc);
thc63             108 drivers/gpu/drm/bridge/thc63lvd1024.c 		dev_err(thc63->dev,
thc63             119 drivers/gpu/drm/bridge/thc63lvd1024.c static int thc63_parse_dt(struct thc63_dev *thc63)
thc63             124 drivers/gpu/drm/bridge/thc63lvd1024.c 	endpoint = of_graph_get_endpoint_by_regs(thc63->dev->of_node,
thc63             127 drivers/gpu/drm/bridge/thc63lvd1024.c 		dev_err(thc63->dev, "Missing endpoint in port@%u\n",
thc63             135 drivers/gpu/drm/bridge/thc63lvd1024.c 		dev_err(thc63->dev, "Endpoint in port@%u unconnected\n",
thc63             141 drivers/gpu/drm/bridge/thc63lvd1024.c 		dev_err(thc63->dev, "port@%u remote endpoint is disabled\n",
thc63             147 drivers/gpu/drm/bridge/thc63lvd1024.c 	thc63->next = of_drm_find_bridge(remote);
thc63             149 drivers/gpu/drm/bridge/thc63lvd1024.c 	if (!thc63->next)
thc63             152 drivers/gpu/drm/bridge/thc63lvd1024.c 	endpoint = of_graph_get_endpoint_by_regs(thc63->dev->of_node,
thc63             160 drivers/gpu/drm/bridge/thc63lvd1024.c 				thc63->timings.dual_link = true;
thc63             165 drivers/gpu/drm/bridge/thc63lvd1024.c 	dev_dbg(thc63->dev, "operating in %s-link mode\n",
thc63             166 drivers/gpu/drm/bridge/thc63lvd1024.c 		thc63->timings.dual_link ? "dual" : "single");
thc63             171 drivers/gpu/drm/bridge/thc63lvd1024.c static int thc63_gpio_init(struct thc63_dev *thc63)
thc63             173 drivers/gpu/drm/bridge/thc63lvd1024.c 	thc63->oe = devm_gpiod_get_optional(thc63->dev, "oe", GPIOD_OUT_LOW);
thc63             174 drivers/gpu/drm/bridge/thc63lvd1024.c 	if (IS_ERR(thc63->oe)) {
thc63             175 drivers/gpu/drm/bridge/thc63lvd1024.c 		dev_err(thc63->dev, "Unable to get \"oe-gpios\": %ld\n",
thc63             176 drivers/gpu/drm/bridge/thc63lvd1024.c 			PTR_ERR(thc63->oe));
thc63             177 drivers/gpu/drm/bridge/thc63lvd1024.c 		return PTR_ERR(thc63->oe);
thc63             180 drivers/gpu/drm/bridge/thc63lvd1024.c 	thc63->pdwn = devm_gpiod_get_optional(thc63->dev, "powerdown",
thc63             182 drivers/gpu/drm/bridge/thc63lvd1024.c 	if (IS_ERR(thc63->pdwn)) {
thc63             183 drivers/gpu/drm/bridge/thc63lvd1024.c 		dev_err(thc63->dev, "Unable to get \"powerdown-gpios\": %ld\n",
thc63             184 drivers/gpu/drm/bridge/thc63lvd1024.c 			PTR_ERR(thc63->pdwn));
thc63             185 drivers/gpu/drm/bridge/thc63lvd1024.c 		return PTR_ERR(thc63->pdwn);
thc63             193 drivers/gpu/drm/bridge/thc63lvd1024.c 	struct thc63_dev *thc63;
thc63             196 drivers/gpu/drm/bridge/thc63lvd1024.c 	thc63 = devm_kzalloc(&pdev->dev, sizeof(*thc63), GFP_KERNEL);
thc63             197 drivers/gpu/drm/bridge/thc63lvd1024.c 	if (!thc63)
thc63             200 drivers/gpu/drm/bridge/thc63lvd1024.c 	thc63->dev = &pdev->dev;
thc63             201 drivers/gpu/drm/bridge/thc63lvd1024.c 	platform_set_drvdata(pdev, thc63);
thc63             203 drivers/gpu/drm/bridge/thc63lvd1024.c 	thc63->vcc = devm_regulator_get_optional(thc63->dev, "vcc");
thc63             204 drivers/gpu/drm/bridge/thc63lvd1024.c 	if (IS_ERR(thc63->vcc)) {
thc63             205 drivers/gpu/drm/bridge/thc63lvd1024.c 		if (PTR_ERR(thc63->vcc) == -EPROBE_DEFER)
thc63             208 drivers/gpu/drm/bridge/thc63lvd1024.c 		dev_err(thc63->dev, "Unable to get \"vcc\" supply: %ld\n",
thc63             209 drivers/gpu/drm/bridge/thc63lvd1024.c 			PTR_ERR(thc63->vcc));
thc63             210 drivers/gpu/drm/bridge/thc63lvd1024.c 		return PTR_ERR(thc63->vcc);
thc63             213 drivers/gpu/drm/bridge/thc63lvd1024.c 	ret = thc63_gpio_init(thc63);
thc63             217 drivers/gpu/drm/bridge/thc63lvd1024.c 	ret = thc63_parse_dt(thc63);
thc63             221 drivers/gpu/drm/bridge/thc63lvd1024.c 	thc63->bridge.driver_private = thc63;
thc63             222 drivers/gpu/drm/bridge/thc63lvd1024.c 	thc63->bridge.of_node = pdev->dev.of_node;
thc63             223 drivers/gpu/drm/bridge/thc63lvd1024.c 	thc63->bridge.funcs = &thc63_bridge_func;
thc63             224 drivers/gpu/drm/bridge/thc63lvd1024.c 	thc63->bridge.timings = &thc63->timings;
thc63             226 drivers/gpu/drm/bridge/thc63lvd1024.c 	drm_bridge_add(&thc63->bridge);
thc63             233 drivers/gpu/drm/bridge/thc63lvd1024.c 	struct thc63_dev *thc63 = platform_get_drvdata(pdev);
thc63             235 drivers/gpu/drm/bridge/thc63lvd1024.c 	drm_bridge_remove(&thc63->bridge);