[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <523fd532-3302-4a43-c28d-89fbe75de599@tronnes.org>
Date: Fri, 8 Dec 2017 15:11:05 +0100
From: Noralf Trønnes <noralf@...nnes.org>
To: David Lechner <david@...hnology.com>,
dri-devel@...ts.freedesktop.org, devicetree@...r.kernel.org
Cc: Mark Rutland <mark.rutland@....com>, limor@...yada.net,
linux-kernel@...r.kernel.org, Rob Herring <robh+dt@...nel.org>
Subject: Re: [PATCH v1 2/2] drm/tinydrm: add driver for ST7735R panels
Den 06.12.2017 19.27, skrev Noralf Trønnes:
>
> Den 29.11.2017 04.01, skrev David Lechner:
>> This adds a new driver for Sitronix ST7735R display panels.
>>
>> This has been tested using an Adafruit 1.8" TFT.
>>
>> Signed-off-by: David Lechner <david@...hnology.com>
>> ---
<snip>
>> diff --git a/drivers/gpu/drm/tinydrm/st7735r.c
>> b/drivers/gpu/drm/tinydrm/st7735r.c
<snip>
>> +static struct drm_driver st7735r_driver = {
>> + .driver_features = DRIVER_GEM | DRIVER_MODESET | DRIVER_PRIME |
>> + DRIVER_ATOMIC,
>> + .fops = &st7735r_fops,
>> + TINYDRM_GEM_DRIVER_OPS,
>> + .lastclose = tinydrm_lastclose,
tinydrm_lastclose() is going away, please use:
.lastclose = drm_fb_helper_lastclose,
Noralf.
>> + .name = "st7735r",
>> + .desc = "Sitronix ST7735R",
>> + .date = "20171128",
>> + .major = 1,
>> + .minor = 0,
>> +};
>> +
>> +static const struct of_device_id st7735r_of_match[] = {
>> + { .compatible = "sitronix,st7735r-jd-t18003-t01" },
>> + {},
>> +};
>> +MODULE_DEVICE_TABLE(of, st7735r_of_match);
>> +
>> +static const struct spi_device_id st7735r_id[] = {
>> + { "st7735r-jd-t18003-t01", 0 },
>> + { },
>> +};
>> +MODULE_DEVICE_TABLE(spi, st7735r_id);
>> +
>> +static int st7735r_probe(struct spi_device *spi)
>> +{
>> + struct device *dev = &spi->dev;
>> + struct mipi_dbi *mipi;
>> + struct gpio_desc *dc;
>> + u32 rotation = 0;
>> + int ret;
>> +
>> + mipi = devm_kzalloc(dev, sizeof(*mipi), GFP_KERNEL);
>> + if (!mipi)
>> + return -ENOMEM;
>> +
>> + mipi->reset = devm_gpiod_get(dev, "reset", GPIOD_OUT_HIGH);
>> + if (IS_ERR(mipi->reset)) {
>> + DRM_DEV_ERROR(dev, "Failed to get gpio 'reset'\n");
>> + return PTR_ERR(mipi->reset);
>> + }
>> +
>> + dc = devm_gpiod_get(dev, "dc", GPIOD_OUT_LOW);
>> + if (IS_ERR(dc)) {
>> + DRM_DEV_ERROR(dev, "Failed to get gpio 'dc'\n");
>> + return PTR_ERR(dc);
>> + }
>> +
>> + mipi->backlight = tinydrm_of_find_backlight(dev);
>> + if (IS_ERR(mipi->backlight))
>> + return PTR_ERR(mipi->backlight);
>> +
>> + device_property_read_u32(dev, "rotation", &rotation);
>> +
>> + ret = mipi_dbi_spi_init(spi, mipi, dc);
>> + if (ret)
>> + return ret;
>> +
>> + ret = mipi_dbi_init(&spi->dev, mipi, &st7735r_pipe_funcs,
>> + &st7735r_driver, &st7735r_mode, rotation);
>> + if (ret)
>> + return ret;
>> +
>> + spi_set_drvdata(spi, mipi);
>> +
>> + return devm_tinydrm_register(&mipi->tinydrm);
>> +}
>> +
>> +static void st7735r_shutdown(struct spi_device *spi)
>> +{
>> + struct mipi_dbi *mipi = spi_get_drvdata(spi);
>> +
>> + tinydrm_shutdown(&mipi->tinydrm);
>> +}
>> +
>> +static struct spi_driver st7735r_spi_driver = {
>> + .driver = {
>> + .name = "st7735r",
>> + .owner = THIS_MODULE,
>> + .of_match_table = st7735r_of_match,
>> + },
>> + .id_table = st7735r_id,
>> + .probe = st7735r_probe,
>> + .shutdown = st7735r_shutdown,
>> +};
>> +module_spi_driver(st7735r_spi_driver);
>> +
>> +MODULE_DESCRIPTION("Sitronix ST7735R DRM driver");
>> +MODULE_AUTHOR("David Lechner <david@...hnology.com>");
>> +MODULE_LICENSE("GPL");
>
> _______________________________________________
> dri-devel mailing list
> dri-devel@...ts.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/dri-devel
>
Powered by blists - more mailing lists