diff options
Diffstat (limited to 'drivers/video/omap2/displays/panel-tpo-td043mtea1.c')
| -rw-r--r-- | drivers/video/omap2/displays/panel-tpo-td043mtea1.c | 13 |
1 files changed, 11 insertions, 2 deletions
diff --git a/drivers/video/omap2/displays/panel-tpo-td043mtea1.c b/drivers/video/omap2/displays/panel-tpo-td043mtea1.c index 6b6643911d29..048c98381ef6 100644 --- a/drivers/video/omap2/displays/panel-tpo-td043mtea1.c +++ b/drivers/video/omap2/displays/panel-tpo-td043mtea1.c | |||
| @@ -63,6 +63,9 @@ struct tpo_td043_device { | |||
| 63 | u32 power_on_resume:1; | 63 | u32 power_on_resume:1; |
| 64 | }; | 64 | }; |
| 65 | 65 | ||
| 66 | /* used to pass spi_device from SPI to DSS portion of the driver */ | ||
| 67 | static struct tpo_td043_device *g_tpo_td043; | ||
| 68 | |||
| 66 | static int tpo_td043_write(struct spi_device *spi, u8 addr, u8 data) | 69 | static int tpo_td043_write(struct spi_device *spi, u8 addr, u8 data) |
| 67 | { | 70 | { |
| 68 | struct spi_message m; | 71 | struct spi_message m; |
| @@ -403,7 +406,7 @@ static void tpo_td043_disable(struct omap_dss_device *dssdev) | |||
| 403 | 406 | ||
| 404 | static int tpo_td043_probe(struct omap_dss_device *dssdev) | 407 | static int tpo_td043_probe(struct omap_dss_device *dssdev) |
| 405 | { | 408 | { |
| 406 | struct tpo_td043_device *tpo_td043 = dev_get_drvdata(&dssdev->dev); | 409 | struct tpo_td043_device *tpo_td043 = g_tpo_td043; |
| 407 | int nreset_gpio = dssdev->reset_gpio; | 410 | int nreset_gpio = dssdev->reset_gpio; |
| 408 | int ret = 0; | 411 | int ret = 0; |
| 409 | 412 | ||
| @@ -440,6 +443,8 @@ static int tpo_td043_probe(struct omap_dss_device *dssdev) | |||
| 440 | if (ret) | 443 | if (ret) |
| 441 | dev_warn(&dssdev->dev, "failed to create sysfs files\n"); | 444 | dev_warn(&dssdev->dev, "failed to create sysfs files\n"); |
| 442 | 445 | ||
| 446 | dev_set_drvdata(&dssdev->dev, tpo_td043); | ||
| 447 | |||
| 443 | return 0; | 448 | return 0; |
| 444 | 449 | ||
| 445 | fail_gpio_req: | 450 | fail_gpio_req: |
| @@ -505,6 +510,9 @@ static int tpo_td043_spi_probe(struct spi_device *spi) | |||
| 505 | return -ENODEV; | 510 | return -ENODEV; |
| 506 | } | 511 | } |
| 507 | 512 | ||
| 513 | if (g_tpo_td043 != NULL) | ||
| 514 | return -EBUSY; | ||
| 515 | |||
| 508 | spi->bits_per_word = 16; | 516 | spi->bits_per_word = 16; |
| 509 | spi->mode = SPI_MODE_0; | 517 | spi->mode = SPI_MODE_0; |
| 510 | 518 | ||
| @@ -521,7 +529,7 @@ static int tpo_td043_spi_probe(struct spi_device *spi) | |||
| 521 | tpo_td043->spi = spi; | 529 | tpo_td043->spi = spi; |
| 522 | tpo_td043->nreset_gpio = dssdev->reset_gpio; | 530 | tpo_td043->nreset_gpio = dssdev->reset_gpio; |
| 523 | dev_set_drvdata(&spi->dev, tpo_td043); | 531 | dev_set_drvdata(&spi->dev, tpo_td043); |
| 524 | dev_set_drvdata(&dssdev->dev, tpo_td043); | 532 | g_tpo_td043 = tpo_td043; |
| 525 | 533 | ||
| 526 | omap_dss_register_driver(&tpo_td043_driver); | 534 | omap_dss_register_driver(&tpo_td043_driver); |
| 527 | 535 | ||
| @@ -534,6 +542,7 @@ static int tpo_td043_spi_remove(struct spi_device *spi) | |||
| 534 | 542 | ||
| 535 | omap_dss_unregister_driver(&tpo_td043_driver); | 543 | omap_dss_unregister_driver(&tpo_td043_driver); |
| 536 | kfree(tpo_td043); | 544 | kfree(tpo_td043); |
| 545 | g_tpo_td043 = NULL; | ||
| 537 | 546 | ||
| 538 | return 0; | 547 | return 0; |
| 539 | } | 548 | } |
