From b2bc11d8fb3a5155da94decddbeda9db1d3d886a Mon Sep 17 00:00:00 2001 From: "charles.park" Date: Thu, 19 Jan 2017 16:12:44 +0900 Subject: [PATCH] ODROID-XU4: add odroid32 spi lcd driver.(CS-GPIO Error fix) Change-Id: I697ab4aa709637bb2bbccab5768798db639292c9 --- drivers/spi/spidev.c | 4 ++++ drivers/staging/fbtft/fbtft_device.c | 24 ++++++++++++++++++++++++ 2 files changed, 28 insertions(+) mode change 100644 => 100755 drivers/spi/spidev.c mode change 100644 => 100755 drivers/staging/fbtft/fbtft_device.c diff --git a/drivers/spi/spidev.c b/drivers/spi/spidev.c old mode 100644 new mode 100755 index d780491b8013..e8046878a92a --- a/drivers/spi/spidev.c +++ b/drivers/spi/spidev.c @@ -812,6 +812,10 @@ static int spidev_remove(struct spi_device *spi) /* make sure ops on existing fds can abort cleanly */ spin_lock_irq(&spidev->spi_lock); spidev->spi = NULL; + + if(spi->master->cleanup) + spi->master->cleanup(spi); + spin_unlock_irq(&spidev->spi_lock); /* prevent new opens */ diff --git a/drivers/staging/fbtft/fbtft_device.c b/drivers/staging/fbtft/fbtft_device.c old mode 100644 new mode 100755 index b5df220bf175..37cabda2e8fd --- a/drivers/staging/fbtft/fbtft_device.c +++ b/drivers/staging/fbtft/fbtft_device.c @@ -867,6 +867,25 @@ static struct fbtft_device_display displays[] = { }, } } + }, { + .name = "odroid32", + .spi = &(struct spi_board_info) { + .modalias = "fb_ili9340", + .max_speed_hz = 32000000, + .mode = SPI_MODE_0, + .controller_data = &hktft9340_controller_data, + .platform_data = &(struct fbtft_platform_data) { + .display = { + .buswidth = 8, + }, + .bgr = true, + .gpios = (const struct fbtft_gpio []) { + { "reset", 21 }, + { "dc", 22 }, + {}, + }, + } + } }, { .name = "piscreen", .spi = &(struct spi_board_info) { @@ -1606,6 +1625,11 @@ static int __init fbtft_device_init(void) static void __exit fbtft_device_exit(void) { if (spi_device) { + if (spi_device->controller_data) { + struct s3c64xx_spi_csinfo *cs = spi_device->controller_data; + if (cs->line) + gpio_free(cs->line); + } device_del(&spi_device->dev); kfree(spi_device); }