[PATCH v2] drm/bridge: simple-bridge: Add support for TI TDP158

Dmitry Baryshkov dmitry.baryshkov at linaro.org
Thu Jun 13 10:25:38 UTC 2024


On Thu, Jun 13, 2024 at 04:12:22AM +0200, Marc Gonzalez wrote:
> On 28/05/2024 03:13, Dmitry Baryshkov wrote:
> 
> > Bindings please. Also, note that per the datasheet the bridge uses two
> > supplies, Vcc for 3.3V and Vdd for 1.1V, so it doesn't fully fit the
> > simple-bridge.c (which might need to be adjusted for the second supply).
> > Chapter 7.3.2 of the datasheet points out that Vcc should be brought up
> > before Vdd.
> 
> Is something simple like below acceptable?

Well, the question was about bindings, not for the driver snippet.
Anyway:

> 	err = devm_regulator_get_enable(dev, "Vcc"); // 3.3V

Usually all regulators are lowercase. so "vcc"

Nit: I think enabling regulators should be deferred to the enable (or
pre_enable) time.

> 	msleep(100);
> 	if (err)
> 		return dev_err_probe(dev, err, "Vcc");
> 
> 	err = devm_regulator_get_enable(dev, "Vdd"); // 1.1V

And here.

> 	msleep(100);
> 	if (err)
> 		return dev_err_probe(dev, err, "Vdd");
> 
> 	tdp158->OE = devm_gpiod_get(dev, "OE", GPIOD_OUT_LOW);
> 	if (IS_ERR(tdp158->OE))
> 		return dev_err_probe(dev, PTR_ERR(tdp158->OE), "OE pin");

"enable"

> 	gpiod_set_value_cansleep(tdp158->OE, 1);

Again, set it at runtime, please.

> 
> 	tdp158->bridge.of_node = dev->of_node;
> 
> 	return devm_drm_bridge_add(dev, &tdp158->bridge);
> }
> 
> static const struct of_device_id tdp158_match_table[] = {
> 	{ .compatible = "ti,tdp158" },
> 	{ }
> };
> MODULE_DEVICE_TABLE(of, tdp158_match_table);
> 
> static struct i2c_driver tdp158_driver = {
> 	.probe = tdp158_probe,
> 	.driver = {
> 		.name = "tdp158",
> 		.of_match_table = tdp158_match_table,
> 	},
> };
> 
> module_i2c_driver(tdp158_driver);
> 
> MODULE_DESCRIPTION("TI TDP158 driver");
> MODULE_LICENSE("GPL");
> 

-- 
With best wishes
Dmitry


More information about the dri-devel mailing list