diff options
author | Mark Brown <broonie@linaro.org> | 2013-09-27 13:58:55 -0400 |
---|---|---|
committer | Mark Brown <broonie@linaro.org> | 2013-09-30 07:53:37 -0400 |
commit | dd97e26849c16f484191f056b6e080cc30ebe98b (patch) | |
tree | 7b7044783b9c4e758f85e6726a067016f559db72 | |
parent | 64d930ac116db25db814f76c31bfd4a7ea428f74 (diff) |
spi/s3c64xx: Use core cs_gpio field
Rather than using the driver custom platform data to store the chip select
GPIO use the cs_gpio field provided by the SPI core, supporting future
refectoring.
Signed-off-by: Mark Brown <broonie@linaro.org>
-rw-r--r-- | drivers/spi/spi-s3c64xx.c | 24 |
1 files changed, 10 insertions, 14 deletions
diff --git a/drivers/spi/spi-s3c64xx.c b/drivers/spi/spi-s3c64xx.c index 7f960db66763..43caeee8641a 100644 --- a/drivers/spi/spi-s3c64xx.c +++ b/drivers/spi/spi-s3c64xx.c | |||
@@ -558,22 +558,18 @@ static void enable_datapath(struct s3c64xx_spi_driver_data *sdd, | |||
558 | static inline void enable_cs(struct s3c64xx_spi_driver_data *sdd, | 558 | static inline void enable_cs(struct s3c64xx_spi_driver_data *sdd, |
559 | struct spi_device *spi) | 559 | struct spi_device *spi) |
560 | { | 560 | { |
561 | struct s3c64xx_spi_csinfo *cs; | ||
562 | |||
563 | if (sdd->tgl_spi != NULL) { /* If last device toggled after mssg */ | 561 | if (sdd->tgl_spi != NULL) { /* If last device toggled after mssg */ |
564 | if (sdd->tgl_spi != spi) { /* if last mssg on diff device */ | 562 | if (sdd->tgl_spi != spi) { /* if last mssg on diff device */ |
565 | /* Deselect the last toggled device */ | 563 | /* Deselect the last toggled device */ |
566 | cs = sdd->tgl_spi->controller_data; | 564 | if (spi->cs_gpio >= 0) |
567 | if (sdd->cs_gpio) | 565 | gpio_set_value(spi->cs_gpio, |
568 | gpio_set_value(cs->line, | ||
569 | spi->mode & SPI_CS_HIGH ? 0 : 1); | 566 | spi->mode & SPI_CS_HIGH ? 0 : 1); |
570 | } | 567 | } |
571 | sdd->tgl_spi = NULL; | 568 | sdd->tgl_spi = NULL; |
572 | } | 569 | } |
573 | 570 | ||
574 | cs = spi->controller_data; | 571 | if (spi->cs_gpio >= 0) |
575 | if (sdd->cs_gpio) | 572 | gpio_set_value(spi->cs_gpio, spi->mode & SPI_CS_HIGH ? 1 : 0); |
576 | gpio_set_value(cs->line, spi->mode & SPI_CS_HIGH ? 1 : 0); | ||
577 | 573 | ||
578 | /* Start the signals */ | 574 | /* Start the signals */ |
579 | writel(0, sdd->regs + S3C64XX_SPI_SLAVE_SEL); | 575 | writel(0, sdd->regs + S3C64XX_SPI_SLAVE_SEL); |
@@ -701,13 +697,11 @@ static int wait_for_xfer(struct s3c64xx_spi_driver_data *sdd, | |||
701 | static inline void disable_cs(struct s3c64xx_spi_driver_data *sdd, | 697 | static inline void disable_cs(struct s3c64xx_spi_driver_data *sdd, |
702 | struct spi_device *spi) | 698 | struct spi_device *spi) |
703 | { | 699 | { |
704 | struct s3c64xx_spi_csinfo *cs = spi->controller_data; | ||
705 | |||
706 | if (sdd->tgl_spi == spi) | 700 | if (sdd->tgl_spi == spi) |
707 | sdd->tgl_spi = NULL; | 701 | sdd->tgl_spi = NULL; |
708 | 702 | ||
709 | if (sdd->cs_gpio) | 703 | if (spi->cs_gpio >= 0) |
710 | gpio_set_value(cs->line, spi->mode & SPI_CS_HIGH ? 0 : 1); | 704 | gpio_set_value(spi->cs_gpio, spi->mode & SPI_CS_HIGH ? 0 : 1); |
711 | 705 | ||
712 | /* Quiese the signals */ | 706 | /* Quiese the signals */ |
713 | writel(S3C64XX_SPI_SLAVE_SIG_INACT, sdd->regs + S3C64XX_SPI_SLAVE_SEL); | 707 | writel(S3C64XX_SPI_SLAVE_SIG_INACT, sdd->regs + S3C64XX_SPI_SLAVE_SEL); |
@@ -1070,6 +1064,8 @@ static int s3c64xx_spi_setup(struct spi_device *spi) | |||
1070 | cs->line, err); | 1064 | cs->line, err); |
1071 | goto err_gpio_req; | 1065 | goto err_gpio_req; |
1072 | } | 1066 | } |
1067 | |||
1068 | spi->cs_gpio = cs->line; | ||
1073 | } | 1069 | } |
1074 | 1070 | ||
1075 | spi_set_ctldata(spi, cs); | 1071 | spi_set_ctldata(spi, cs); |
@@ -1139,8 +1135,8 @@ static void s3c64xx_spi_cleanup(struct spi_device *spi) | |||
1139 | struct s3c64xx_spi_driver_data *sdd; | 1135 | struct s3c64xx_spi_driver_data *sdd; |
1140 | 1136 | ||
1141 | sdd = spi_master_get_devdata(spi->master); | 1137 | sdd = spi_master_get_devdata(spi->master); |
1142 | if (cs && sdd->cs_gpio) { | 1138 | if (spi->cs_gpio) { |
1143 | gpio_free(cs->line); | 1139 | gpio_free(spi->cs_gpio); |
1144 | if (spi->dev.of_node) | 1140 | if (spi->dev.of_node) |
1145 | kfree(cs); | 1141 | kfree(cs); |
1146 | } | 1142 | } |