diff options
author | Leilk Liu <leilk.liu@mediatek.com> | 2015-10-26 04:09:43 -0400 |
---|---|---|
committer | Mark Brown <broonie@kernel.org> | 2015-10-27 00:33:42 -0400 |
commit | 58a984c79a68d508ccfccf4b82c0eaf7f487c399 (patch) | |
tree | 777864ad776c5d422e66a6b816591cbc1ec6a8f5 | |
parent | 79b5d3f24dcec547ea5db7d2e0b557a36f92b16b (diff) |
spi: mediatek: handle controller_data in mtk_spi_setup
controller_data is related with device, so move to master->setup
function.
Signed-off-by: Leilk Liu <leilk.liu@mediatek.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
-rw-r--r-- | drivers/spi/spi-mt65xx.c | 19 |
1 files changed, 12 insertions, 7 deletions
diff --git a/drivers/spi/spi-mt65xx.c b/drivers/spi/spi-mt65xx.c index 7bd84c8061c6..406695a42e19 100644 --- a/drivers/spi/spi-mt65xx.c +++ b/drivers/spi/spi-mt65xx.c | |||
@@ -136,19 +136,13 @@ static int mtk_spi_prepare_message(struct spi_master *master, | |||
136 | { | 136 | { |
137 | u16 cpha, cpol; | 137 | u16 cpha, cpol; |
138 | u32 reg_val; | 138 | u32 reg_val; |
139 | struct mtk_chip_config *chip_config; | ||
140 | struct spi_device *spi = msg->spi; | 139 | struct spi_device *spi = msg->spi; |
140 | struct mtk_chip_config *chip_config = spi->controller_data; | ||
141 | struct mtk_spi *mdata = spi_master_get_devdata(master); | 141 | struct mtk_spi *mdata = spi_master_get_devdata(master); |
142 | 142 | ||
143 | cpha = spi->mode & SPI_CPHA ? 1 : 0; | 143 | cpha = spi->mode & SPI_CPHA ? 1 : 0; |
144 | cpol = spi->mode & SPI_CPOL ? 1 : 0; | 144 | cpol = spi->mode & SPI_CPOL ? 1 : 0; |
145 | 145 | ||
146 | chip_config = spi->controller_data; | ||
147 | if (!chip_config) { | ||
148 | chip_config = (void *)&mtk_default_chip_info; | ||
149 | spi->controller_data = chip_config; | ||
150 | } | ||
151 | |||
152 | reg_val = readl(mdata->base + SPI_CMD_REG); | 146 | reg_val = readl(mdata->base + SPI_CMD_REG); |
153 | if (cpha) | 147 | if (cpha) |
154 | reg_val |= SPI_CMD_CPHA; | 148 | reg_val |= SPI_CMD_CPHA; |
@@ -406,6 +400,16 @@ static bool mtk_spi_can_dma(struct spi_master *master, | |||
406 | return xfer->len > MTK_SPI_MAX_FIFO_SIZE; | 400 | return xfer->len > MTK_SPI_MAX_FIFO_SIZE; |
407 | } | 401 | } |
408 | 402 | ||
403 | static int mtk_spi_setup(struct spi_device *spi) | ||
404 | { | ||
405 | struct mtk_spi *mdata = spi_master_get_devdata(spi->master); | ||
406 | |||
407 | if (!spi->controller_data) | ||
408 | spi->controller_data = (void *)&mtk_default_chip_info; | ||
409 | |||
410 | return 0; | ||
411 | } | ||
412 | |||
409 | static irqreturn_t mtk_spi_interrupt(int irq, void *dev_id) | 413 | static irqreturn_t mtk_spi_interrupt(int irq, void *dev_id) |
410 | { | 414 | { |
411 | u32 cmd, reg_val, cnt; | 415 | u32 cmd, reg_val, cnt; |
@@ -493,6 +497,7 @@ static int mtk_spi_probe(struct platform_device *pdev) | |||
493 | master->prepare_message = mtk_spi_prepare_message; | 497 | master->prepare_message = mtk_spi_prepare_message; |
494 | master->transfer_one = mtk_spi_transfer_one; | 498 | master->transfer_one = mtk_spi_transfer_one; |
495 | master->can_dma = mtk_spi_can_dma; | 499 | master->can_dma = mtk_spi_can_dma; |
500 | master->setup = mtk_spi_setup; | ||
496 | 501 | ||
497 | of_id = of_match_node(mtk_spi_of_match, pdev->dev.of_node); | 502 | of_id = of_match_node(mtk_spi_of_match, pdev->dev.of_node); |
498 | if (!of_id) { | 503 | if (!of_id) { |