Skip to content

Commit

Permalink
drm/tinydrm: Drop using tinydrm_device
Browse files Browse the repository at this point in the history
Use devm_drm_dev_init() and drop using tinydrm_device.

v2: devm_drm_dev_register() was dropped so add driver release callbacks.

Signed-off-by: Noralf Trønnes <noralf@tronnes.org>
Acked-by: Gerd Hoffmann <kraxel@redhat.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20190225144232.20761-6-noralf@tronnes.org
  • Loading branch information
Noralf Trønnes committed Mar 4, 2019
1 parent ec33f1d commit 3eba392
Show file tree
Hide file tree
Showing 8 changed files with 294 additions and 104 deletions.
40 changes: 35 additions & 5 deletions drivers/gpu/drm/tinydrm/hx8357d.c
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@

#include <drm/drm_atomic_helper.h>
#include <drm/drm_drv.h>
#include <drm/drm_fb_helper.h>
#include <drm/drm_gem_cma_helper.h>
#include <drm/drm_gem_framebuffer_helper.h>
#include <drm/drm_modeset_helper.h>
Expand Down Expand Up @@ -189,6 +190,7 @@ DEFINE_DRM_GEM_CMA_FOPS(hx8357d_fops);
static struct drm_driver hx8357d_driver = {
.driver_features = DRIVER_GEM | DRIVER_MODESET | DRIVER_PRIME | DRIVER_ATOMIC,
.fops = &hx8357d_fops,
.release = mipi_dbi_release,
DRM_GEM_CMA_VMAP_DRIVER_OPS,
.debugfs_init = mipi_dbi_debugfs_init,
.name = "hx8357d",
Expand All @@ -213,15 +215,25 @@ MODULE_DEVICE_TABLE(spi, hx8357d_id);
static int hx8357d_probe(struct spi_device *spi)
{
struct device *dev = &spi->dev;
struct drm_device *drm;
struct mipi_dbi *mipi;
struct gpio_desc *dc;
u32 rotation = 0;
int ret;

mipi = devm_kzalloc(dev, sizeof(*mipi), GFP_KERNEL);
mipi = kzalloc(sizeof(*mipi), GFP_KERNEL);
if (!mipi)
return -ENOMEM;

drm = &mipi->drm;
ret = devm_drm_dev_init(dev, drm, &hx8357d_driver);
if (ret) {
kfree(mipi);
return ret;
}

drm_mode_config_init(drm);

dc = devm_gpiod_get(dev, "dc", GPIOD_OUT_LOW);
if (IS_ERR(dc)) {
DRM_DEV_ERROR(dev, "Failed to get gpio 'dc'\n");
Expand All @@ -238,14 +250,31 @@ static int hx8357d_probe(struct spi_device *spi)
if (ret)
return ret;

ret = mipi_dbi_init(&spi->dev, mipi, &hx8357d_pipe_funcs,
&hx8357d_driver, &yx350hv15_mode, rotation);
ret = mipi_dbi_init(mipi, &hx8357d_pipe_funcs, &yx350hv15_mode, rotation);
if (ret)
return ret;

drm_mode_config_reset(drm);

ret = drm_dev_register(drm, 0);
if (ret)
return ret;

spi_set_drvdata(spi, mipi->tinydrm.drm);
spi_set_drvdata(spi, drm);

drm_fbdev_generic_setup(drm, 32);

return 0;
}

static int hx8357d_remove(struct spi_device *spi)
{
struct drm_device *drm = spi_get_drvdata(spi);

drm_dev_unplug(drm);
drm_atomic_helper_shutdown(drm);

return devm_tinydrm_register(&mipi->tinydrm);
return 0;
}

static void hx8357d_shutdown(struct spi_device *spi)
Expand All @@ -260,6 +289,7 @@ static struct spi_driver hx8357d_spi_driver = {
},
.id_table = hx8357d_id,
.probe = hx8357d_probe,
.remove = hx8357d_remove,
.shutdown = hx8357d_shutdown,
};
module_spi_driver(hx8357d_spi_driver);
Expand Down
40 changes: 35 additions & 5 deletions drivers/gpu/drm/tinydrm/ili9225.c
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@
#include <drm/drm_damage_helper.h>
#include <drm/drm_drv.h>
#include <drm/drm_fb_cma_helper.h>
#include <drm/drm_fb_helper.h>
#include <drm/drm_fourcc.h>
#include <drm/drm_gem_cma_helper.h>
#include <drm/drm_gem_framebuffer_helper.h>
Expand Down Expand Up @@ -339,6 +340,7 @@ static struct drm_driver ili9225_driver = {
.driver_features = DRIVER_GEM | DRIVER_MODESET | DRIVER_PRIME |
DRIVER_ATOMIC,
.fops = &ili9225_fops,
.release = mipi_dbi_release,
DRM_GEM_CMA_VMAP_DRIVER_OPS,
.name = "ili9225",
.desc = "Ilitek ILI9225",
Expand All @@ -362,15 +364,25 @@ MODULE_DEVICE_TABLE(spi, ili9225_id);
static int ili9225_probe(struct spi_device *spi)
{
struct device *dev = &spi->dev;
struct drm_device *drm;
struct mipi_dbi *mipi;
struct gpio_desc *rs;
u32 rotation = 0;
int ret;

mipi = devm_kzalloc(dev, sizeof(*mipi), GFP_KERNEL);
mipi = kzalloc(sizeof(*mipi), GFP_KERNEL);
if (!mipi)
return -ENOMEM;

drm = &mipi->drm;
ret = devm_drm_dev_init(dev, drm, &ili9225_driver);
if (ret) {
kfree(mipi);
return ret;
}

drm_mode_config_init(drm);

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");
Expand All @@ -392,14 +404,31 @@ static int ili9225_probe(struct spi_device *spi)
/* override the command function set in mipi_dbi_spi_init() */
mipi->command = ili9225_dbi_command;

ret = mipi_dbi_init(&spi->dev, mipi, &ili9225_pipe_funcs,
&ili9225_driver, &ili9225_mode, rotation);
ret = mipi_dbi_init(mipi, &ili9225_pipe_funcs, &ili9225_mode, rotation);
if (ret)
return ret;

spi_set_drvdata(spi, mipi->tinydrm.drm);
drm_mode_config_reset(drm);

ret = drm_dev_register(drm, 0);
if (ret)
return ret;

spi_set_drvdata(spi, drm);

drm_fbdev_generic_setup(drm, 32);

return 0;
}

static int ili9225_remove(struct spi_device *spi)
{
struct drm_device *drm = spi_get_drvdata(spi);

drm_dev_unplug(drm);
drm_atomic_helper_shutdown(drm);

return devm_tinydrm_register(&mipi->tinydrm);
return 0;
}

static void ili9225_shutdown(struct spi_device *spi)
Expand All @@ -415,6 +444,7 @@ static struct spi_driver ili9225_spi_driver = {
},
.id_table = ili9225_id,
.probe = ili9225_probe,
.remove = ili9225_remove,
.shutdown = ili9225_shutdown,
};
module_spi_driver(ili9225_spi_driver);
Expand Down
40 changes: 35 additions & 5 deletions drivers/gpu/drm/tinydrm/ili9341.c
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@

#include <drm/drm_atomic_helper.h>
#include <drm/drm_drv.h>
#include <drm/drm_fb_helper.h>
#include <drm/drm_gem_cma_helper.h>
#include <drm/drm_gem_framebuffer_helper.h>
#include <drm/drm_modeset_helper.h>
Expand Down Expand Up @@ -145,6 +146,7 @@ DEFINE_DRM_GEM_CMA_FOPS(ili9341_fops);
static struct drm_driver ili9341_driver = {
.driver_features = DRIVER_GEM | DRIVER_MODESET | DRIVER_PRIME | DRIVER_ATOMIC,
.fops = &ili9341_fops,
.release = mipi_dbi_release,
DRM_GEM_CMA_VMAP_DRIVER_OPS,
.debugfs_init = mipi_dbi_debugfs_init,
.name = "ili9341",
Expand All @@ -169,15 +171,25 @@ MODULE_DEVICE_TABLE(spi, ili9341_id);
static int ili9341_probe(struct spi_device *spi)
{
struct device *dev = &spi->dev;
struct drm_device *drm;
struct mipi_dbi *mipi;
struct gpio_desc *dc;
u32 rotation = 0;
int ret;

mipi = devm_kzalloc(dev, sizeof(*mipi), GFP_KERNEL);
mipi = kzalloc(sizeof(*mipi), GFP_KERNEL);
if (!mipi)
return -ENOMEM;

drm = &mipi->drm;
ret = devm_drm_dev_init(dev, drm, &ili9341_driver);
if (ret) {
kfree(mipi);
return ret;
}

drm_mode_config_init(drm);

mipi->reset = devm_gpiod_get_optional(dev, "reset", GPIOD_OUT_HIGH);
if (IS_ERR(mipi->reset)) {
DRM_DEV_ERROR(dev, "Failed to get gpio 'reset'\n");
Expand All @@ -200,14 +212,31 @@ static int ili9341_probe(struct spi_device *spi)
if (ret)
return ret;

ret = mipi_dbi_init(&spi->dev, mipi, &ili9341_pipe_funcs,
&ili9341_driver, &yx240qv29_mode, rotation);
ret = mipi_dbi_init(mipi, &ili9341_pipe_funcs, &yx240qv29_mode, rotation);
if (ret)
return ret;

drm_mode_config_reset(drm);

ret = drm_dev_register(drm, 0);
if (ret)
return ret;

spi_set_drvdata(spi, mipi->tinydrm.drm);
spi_set_drvdata(spi, drm);

drm_fbdev_generic_setup(drm, 32);

return 0;
}

static int ili9341_remove(struct spi_device *spi)
{
struct drm_device *drm = spi_get_drvdata(spi);

drm_dev_unplug(drm);
drm_atomic_helper_shutdown(drm);

return devm_tinydrm_register(&mipi->tinydrm);
return 0;
}

static void ili9341_shutdown(struct spi_device *spi)
Expand All @@ -222,6 +251,7 @@ static struct spi_driver ili9341_spi_driver = {
},
.id_table = ili9341_id,
.probe = ili9341_probe,
.remove = ili9341_remove,
.shutdown = ili9341_shutdown,
};
module_spi_driver(ili9341_spi_driver);
Expand Down
40 changes: 35 additions & 5 deletions drivers/gpu/drm/tinydrm/mi0283qt.c
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@

#include <drm/drm_atomic_helper.h>
#include <drm/drm_drv.h>
#include <drm/drm_fb_helper.h>
#include <drm/drm_gem_cma_helper.h>
#include <drm/drm_gem_framebuffer_helper.h>
#include <drm/drm_modeset_helper.h>
Expand Down Expand Up @@ -154,6 +155,7 @@ static struct drm_driver mi0283qt_driver = {
.driver_features = DRIVER_GEM | DRIVER_MODESET | DRIVER_PRIME |
DRIVER_ATOMIC,
.fops = &mi0283qt_fops,
.release = mipi_dbi_release,
DRM_GEM_CMA_VMAP_DRIVER_OPS,
.debugfs_init = mipi_dbi_debugfs_init,
.name = "mi0283qt",
Expand All @@ -178,15 +180,25 @@ MODULE_DEVICE_TABLE(spi, mi0283qt_id);
static int mi0283qt_probe(struct spi_device *spi)
{
struct device *dev = &spi->dev;
struct drm_device *drm;
struct mipi_dbi *mipi;
struct gpio_desc *dc;
u32 rotation = 0;
int ret;

mipi = devm_kzalloc(dev, sizeof(*mipi), GFP_KERNEL);
mipi = kzalloc(sizeof(*mipi), GFP_KERNEL);
if (!mipi)
return -ENOMEM;

drm = &mipi->drm;
ret = devm_drm_dev_init(dev, drm, &mi0283qt_driver);
if (ret) {
kfree(mipi);
return ret;
}

drm_mode_config_init(drm);

mipi->reset = devm_gpiod_get_optional(dev, "reset", GPIOD_OUT_HIGH);
if (IS_ERR(mipi->reset)) {
DRM_DEV_ERROR(dev, "Failed to get gpio 'reset'\n");
Expand All @@ -213,14 +225,31 @@ static int mi0283qt_probe(struct spi_device *spi)
if (ret)
return ret;

ret = mipi_dbi_init(&spi->dev, mipi, &mi0283qt_pipe_funcs,
&mi0283qt_driver, &mi0283qt_mode, rotation);
ret = mipi_dbi_init(mipi, &mi0283qt_pipe_funcs, &mi0283qt_mode, rotation);
if (ret)
return ret;

drm_mode_config_reset(drm);

ret = drm_dev_register(drm, 0);
if (ret)
return ret;

spi_set_drvdata(spi, mipi->tinydrm.drm);
spi_set_drvdata(spi, drm);

return devm_tinydrm_register(&mipi->tinydrm);
drm_fbdev_generic_setup(drm, 32);

return 0;
}

static int mi0283qt_remove(struct spi_device *spi)
{
struct drm_device *drm = spi_get_drvdata(spi);

drm_dev_unplug(drm);
drm_atomic_helper_shutdown(drm);

return 0;
}

static void mi0283qt_shutdown(struct spi_device *spi)
Expand Down Expand Up @@ -253,6 +282,7 @@ static struct spi_driver mi0283qt_spi_driver = {
},
.id_table = mi0283qt_id,
.probe = mi0283qt_probe,
.remove = mi0283qt_remove,
.shutdown = mi0283qt_shutdown,
};
module_spi_driver(mi0283qt_spi_driver);
Expand Down
Loading

0 comments on commit 3eba392

Please sign in to comment.