0073-spi-qup-Get-rid-of-using-struct-spi_qup_device.patch 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162
  1. From 3027505ab8c8cb17291e53bca1d7bd770539d468 Mon Sep 17 00:00:00 2001
  2. From: Axel Lin <[email protected]>
  3. Date: Mon, 24 Feb 2014 23:07:36 +0800
  4. Subject: [PATCH 073/182] spi: qup: Get rid of using struct spi_qup_device
  5. Current code uses struct spi_qup_device to store spi->mode and spi->chip_select
  6. settings. We can get these settings in spi_qup_transfer_one and spi_qup_set_cs
  7. without using struct spi_qup_device. Refactor the code a bit to remove
  8. spi_qup_setup(), spi_qup_cleanup(), and struct spi_qup_device.
  9. Signed-off-by: Axel Lin <[email protected]>
  10. Tested-by: Ivan T. Ivanov <[email protected]>
  11. Signed-off-by: Mark Brown <[email protected]>
  12. ---
  13. drivers/spi/spi-qup.c | 61 ++++++++-----------------------------------------
  14. 1 file changed, 9 insertions(+), 52 deletions(-)
  15. --- a/drivers/spi/spi-qup.c
  16. +++ b/drivers/spi/spi-qup.c
  17. @@ -123,11 +123,6 @@
  18. #define SPI_DELAY_THRESHOLD 1
  19. #define SPI_DELAY_RETRY 10
  20. -struct spi_qup_device {
  21. - int select;
  22. - u16 mode;
  23. -};
  24. -
  25. struct spi_qup {
  26. void __iomem *base;
  27. struct device *dev;
  28. @@ -338,14 +333,13 @@ static irqreturn_t spi_qup_qup_irq(int i
  29. /* set clock freq ... bits per word */
  30. -static int spi_qup_io_config(struct spi_qup *controller,
  31. - struct spi_qup_device *chip,
  32. - struct spi_transfer *xfer)
  33. +static int spi_qup_io_config(struct spi_device *spi, struct spi_transfer *xfer)
  34. {
  35. + struct spi_qup *controller = spi_master_get_devdata(spi->master);
  36. u32 config, iomode, mode;
  37. int ret, n_words, w_size;
  38. - if (chip->mode & SPI_LOOP && xfer->len > controller->in_fifo_sz) {
  39. + if (spi->mode & SPI_LOOP && xfer->len > controller->in_fifo_sz) {
  40. dev_err(controller->dev, "too big size for loopback %d > %d\n",
  41. xfer->len, controller->in_fifo_sz);
  42. return -EIO;
  43. @@ -399,12 +393,12 @@ static int spi_qup_io_config(struct spi_
  44. config = readl_relaxed(controller->base + SPI_CONFIG);
  45. - if (chip->mode & SPI_LOOP)
  46. + if (spi->mode & SPI_LOOP)
  47. config |= SPI_CONFIG_LOOPBACK;
  48. else
  49. config &= ~SPI_CONFIG_LOOPBACK;
  50. - if (chip->mode & SPI_CPHA)
  51. + if (spi->mode & SPI_CPHA)
  52. config &= ~SPI_CONFIG_INPUT_FIRST;
  53. else
  54. config |= SPI_CONFIG_INPUT_FIRST;
  55. @@ -413,7 +407,7 @@ static int spi_qup_io_config(struct spi_
  56. * HS_MODE improves signal stability for spi-clk high rates,
  57. * but is invalid in loop back mode.
  58. */
  59. - if ((xfer->speed_hz >= SPI_HS_MIN_RATE) && !(chip->mode & SPI_LOOP))
  60. + if ((xfer->speed_hz >= SPI_HS_MIN_RATE) && !(spi->mode & SPI_LOOP))
  61. config |= SPI_CONFIG_HS_MODE;
  62. else
  63. config &= ~SPI_CONFIG_HS_MODE;
  64. @@ -433,7 +427,6 @@ static int spi_qup_io_config(struct spi_
  65. static void spi_qup_set_cs(struct spi_device *spi, bool enable)
  66. {
  67. struct spi_qup *controller = spi_master_get_devdata(spi->master);
  68. - struct spi_qup_device *chip = spi_get_ctldata(spi);
  69. u32 iocontol, mask;
  70. @@ -444,9 +437,9 @@ static void spi_qup_set_cs(struct spi_de
  71. iocontol |= SPI_IO_C_FORCE_CS;
  72. iocontol &= ~SPI_IO_C_CS_SELECT_MASK;
  73. - iocontol |= SPI_IO_C_CS_SELECT(chip->select);
  74. + iocontol |= SPI_IO_C_CS_SELECT(spi->chip_select);
  75. - mask = SPI_IO_C_CS_N_POLARITY_0 << chip->select;
  76. + mask = SPI_IO_C_CS_N_POLARITY_0 << spi->chip_select;
  77. if (enable)
  78. iocontol |= mask;
  79. @@ -461,11 +454,10 @@ static int spi_qup_transfer_one(struct s
  80. struct spi_transfer *xfer)
  81. {
  82. struct spi_qup *controller = spi_master_get_devdata(master);
  83. - struct spi_qup_device *chip = spi_get_ctldata(spi);
  84. unsigned long timeout, flags;
  85. int ret = -EIO;
  86. - ret = spi_qup_io_config(controller, chip, xfer);
  87. + ret = spi_qup_io_config(spi, xfer);
  88. if (ret)
  89. return ret;
  90. @@ -511,38 +503,6 @@ exit:
  91. return ret;
  92. }
  93. -static int spi_qup_setup(struct spi_device *spi)
  94. -{
  95. - struct spi_qup *controller = spi_master_get_devdata(spi->master);
  96. - struct spi_qup_device *chip = spi_get_ctldata(spi);
  97. -
  98. - if (!chip) {
  99. - /* First setup */
  100. - chip = kzalloc(sizeof(*chip), GFP_KERNEL);
  101. - if (!chip) {
  102. - dev_err(controller->dev, "no memory for chip data\n");
  103. - return -ENOMEM;
  104. - }
  105. -
  106. - chip->mode = spi->mode;
  107. - chip->select = spi->chip_select;
  108. - spi_set_ctldata(spi, chip);
  109. - }
  110. -
  111. - return 0;
  112. -}
  113. -
  114. -static void spi_qup_cleanup(struct spi_device *spi)
  115. -{
  116. - struct spi_qup_device *chip = spi_get_ctldata(spi);
  117. -
  118. - if (!chip)
  119. - return;
  120. -
  121. - spi_set_ctldata(spi, NULL);
  122. - kfree(chip);
  123. -}
  124. -
  125. static int spi_qup_probe(struct platform_device *pdev)
  126. {
  127. struct spi_master *master;
  128. @@ -561,7 +521,6 @@ static int spi_qup_probe(struct platform
  129. return PTR_ERR(base);
  130. irq = platform_get_irq(pdev, 0);
  131. -
  132. if (irq < 0)
  133. return irq;
  134. @@ -617,8 +576,6 @@ static int spi_qup_probe(struct platform
  135. master->num_chipselect = SPI_NUM_CHIPSELECTS;
  136. master->bits_per_word_mask = SPI_BPW_RANGE_MASK(4, 32);
  137. master->max_speed_hz = max_freq;
  138. - master->setup = spi_qup_setup;
  139. - master->cleanup = spi_qup_cleanup;
  140. master->set_cs = spi_qup_set_cs;
  141. master->transfer_one = spi_qup_transfer_one;
  142. master->dev.of_node = pdev->dev.of_node;